bash 学习
学习bash shell 第一天
在百度百科上找的解释
Bash,Unix 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借鉴过来的。其他特性,例如历史命令,是从csh和ksh借鉴而来。总的来说,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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)