bash 学习

学习bash shell 第一天

在百度百科上找的解释

BashUnix shell的一种,在1987年由布莱恩·福克斯为了GNU计划而编写。1989年发布第一个正式版本,原先是计划用在GNU操作系统上,但能运行于大多数类Unix系统的操作系统之上,包括Linux与Mac OS X v10.4都将它作为默认shell。
Bash是Bourne shell的后继兼容版本与开放源代码版本,它的名称来自Bourne shell(sh)的一个双关语(Bourne again / born again):Bourne-Again SHell。
Bash是一个命令处理器,通常运行于文本窗口中,并能执行用户直接输入的命令。Bash还能从文件中读取命令,这样的文件称为脚本。和其他Unix shell 一样,它支持文件名替换(通配符匹配)、管道here文档、命令替换、变量,以及条件判断和循环遍历的结构控制语句。包括关键字、语法在内的基本特性全部是从sh借鉴过来的。其他特性,例如历史命令,是从cshksh借鉴而来。总的来说,Bash虽然是一个满足POSIX规范的shell,但有很多扩展

笨办法bash shell  ---- 离开舒适区,刻意练习

为什么使用shell编程 ----可以把一些复杂的命令简单化,自动的实现默些功能,有规律的可以用shell来做

不适合使用shell编程

学习bash shell 网站https://wangdoc.com/bash/

实验准备

[root@bash ~]# uname -a
Linux bash 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@bash ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

vim的配置文件

系统级/etc/vimrc

用户级$HOME/.vimrc

对比vi和vim差异

[root@bash ~]# ll /usr/bin/vi
-rwxr-xr-x. 1 root root 928056 Oct 14  2020 /usr/bin/vi
[root@bash ~]# ll /usr/bin/vim
-rwxr-xr-x. 1 root root 2337208 Dec 16  2020 /usr/bin/vim
[root@bash ~]# rpm -qf /usr/bin/vi
vim-minimal-7.4.629-7.el7.x86_64
[root@bash ~]# rpm -qf /usr/bin/vim
vim-enhanced-7.4.629-8.el7_9.x86_64

也可以查看vi或vim的版本来对比差异

[root@bash ~]# vim --version | more      # +syntax
[root@bash ~]# vi --version | more       # -syntax

配置vim 语法高亮 显示行号

语法高亮    # export $TERM=xterm

[root@bash ~]# echo $TERM         #在putty中
xterm

显示行号  :set number

[root@bash ~]# vi /etc/vimrc        #在全局下设置 加上 set number

配色方案

[root@bash ~]# ls /usr/share//vim/vim74/colors/
blue.vim      delek.vim    evening.vim  murphy.vim     README.txt  slate.vim
darkblue.vim  desert.vim   koehler.vim  pablo.vim      ron.vim     torte.vim
default.vim   elflord.vim  morning.vim  peachpuff.vim  shine.vim   zellner.vim

字体颜色

[root@bash ~]# vi /etc/vimrc        #在全局下设置 加上colorscheme evening

第一个练习

[root@bash ~]# touch 05-30-01.sh
[root@bash ~]# vim 05-30-01.sh
  1 # 清除
  2 # 以root身份运行
  3
  4 cd /var/log
  5 cat /dev/null > messages       # null 类似与黑洞 进去了出不来
  6 cat /dev/null > wtmp           # 日志文件
  7 echo "log 清除成功!"
[root@bash ~]# chmod +rx 05-30-01.sh
[root@bash ~]# ./05-30-01.sh
log 清除成功!

第二个练习

[root@bash ~]# vim 05-30-3.sh
  1 #!/bin/bash
  2 #一个bash脚本的正确开头部分
  3
  4 #当然要以root身份运行这个脚本
  5
  6 # 如果使用变量,这样更加灵活,优雅
  7 LOG_DIR=/var/log
  8
  9 cd $LOG_DIR
 10
 11 cat /dev/null > messages
 12 cat /dev/null > wtmp
 13 echo "清除成功"
 14 exit # 这个命令是一个正确,合适的退出的办法
 15      #不带任何参数的exit,将返回退出的状态码
[root@bash ~]# chmod +rx 05-30-3.sh
[root@bash ~]# ./05-30-3.sh
清除成功

练习代码

[root@bash ~]# vim 05-30-2.sh
  1 #!/bin/bash
  2 #联系:显示时间和日期,列出所有登录的用户,系统运行时间
  3 #并将上述信息保存到一个log file中
  4
  5 LOG_FILE=/temp/02-lab1.log
  6 date
  7 w
  8 uptime
  9
 10 echo "" >> $LOG_FILE
 11 date >> $LOG_FILE
 12 w >> $LOG_FILE
 13 uptime >> $LOG_FILE
 14[root@bash ~]# ./05-30-2.sh
Mon May 30 18:17:28 CST 2022
 18:17:28 up  5:52,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1                      10:04    6:44m  0.30s  0.30s -bash
root     pts/0    192.168.114.1    14:38    0.00s  0.31s  0.00s /bin/bash ./05-
 18:17:28 up  5:52,  2 users,  load average: 0.00, 0.01, 0.05
#!/bin/bash
# 说明:这是一个联系date的脚本

echo "The number of days since the year's beginning is `date +%j`."
# +%j 用给出今年是本年的第几天
# 注意不要少了+号

echo "THE number of seconds elconds since 1970/07/01 is `date +%s`."
# +%s 将输出从UNIX元年到现在为止的秒数

PREFIX=temp
SUFFIX=$(date +%s)
FILENAME=$PREFIX.$SUFFIX

echo $FILENAME
#这是一种常用的非常好的办法来生成的“唯一”临时文件的方法
#拍砖:但是,如果在一秒内需要有多个临时文件呢?
#但是,总是要比$$要一些

exit 0

 

posted @   Sailing-101  阅读(43)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示