(一)对Shell的理解
1、Shell是系统跟计算机硬件交互的媒介。
我们把指令告诉Shell,Shell将指令传达给系统内核再运行。
2、记录命令历史
预设可记录1000条命令,命令保存在用户家目录的.bash_history文件中。
!!——执行上一条命令
!n——执行命令历史中的第n条命令
3、命令和文件名补全
tab可以帮我们补全一个指令、一个路径或一个文件名。
连续按两次tab键,系统会把所有的命令或文件名列出来。
4、别名
alias [命令别名]=[‘具体的命令’]
eg:alias vi='vim'
5、通配符
*来匹配零个或多个字符,?来匹配一个字符
6、输入输出重定向
主要介绍一些输出重定向
输出重定向命令>
追加重定向命令>>
eg:
#mkdir /tmp/10
#cd /tmp/10
#echo"123">1.txt
#cat 1.txt
123
#echo"123">>1.txt
#cat 1.txt
123
123
7、管道符
管道符 | 用于将前一个指令的输出作为后一个指令的输入
eg:
#cat /etc/passwd/wc -l
8、作业控制
运行进程时
暂停它——ctrl+z
恢复它——输入命令fg
使它后台运行——bg
终止它——ctrl+c
(二)变量
1、env命令
2、set命令
(三)系统环境变量与个人环境变量的配置文件
/etc/profile
/etc/bashrc
.bash_profile
.bashrc
.bash_history
.bash_logout
(四)Linux shell中的特殊符号
1、* 代表零个或多个任意字符
2、?代表一个任意字符
3、#注释符号
4、脱义字符
这个字符会将后面的特殊字符还原为普通字符
5、管道符 |
将前一个命令的输出作为后面命令的输入。
这里后面的命令不是所有的命令都可以,一般针对文档操作的命令比较常用。
如 cat、less、head、tail、grep、cut、sort、wc、uniq、tee、tr、split、sed、awk等
简要介绍几个命令
(1)cut命令——截取某段文字
(2)sort命令——排序
(3)wc命令——统计文档的行数、字符数或词数
(4)uniq命令——删除重复的行
(5)tee命令——类似于重定向命令,但比重定向命令多一个功能,即在把文件写入后面所跟文件的同时,还将其显示在屏幕上。
(6)tr命令——用于替换字符
(7)split命令——用于切割文档
6、$
用作变量前面的标识符。
!$表示上条命令中的最后一个变量。
7、~——表示用户的家目录
8、&——如果想把命令放在后台执行,需要加符号&
eg:
#sleep 30 &
8、重定向符号——>、>>、2>、2>>
9、[ ]——中括号内为字符,代表字符组合中的任意一个,也可以是一个范围。
10、&&——与,||——或
二、正则表达式1、grep、egrap工具的使用
2、sed工具的使用
3、awk工具的使用
三、shell脚本(一)什么是shell脚本
简单说,shell脚本就是一些命令的合集。
1、shell脚本的创建和执行
创建:第一行以#!/bin/bash开头
#表示注释
eg:
#cd /usr/local/sbin/
#vim first.sh
#!/bin/bash
#This is my first shell scrip.
#Writen by susu.
echo "hello word!"
执行:
法1:
#sh first.sh
hello word!
法2:
#chmod +x first.sh
#. /first.sh
hello word!
2、date命令
(二)shell脚本中的变量
1、数学计算
eg:
#vim sum.sh
#!/bin/bash
a=1
b=2
sum=$[$a+$b]
echo "$a+$b=$sum"
数学计算要用[ ]括起来,并且前面要加符号$。
2、和用户交互
read命令用于和用户交互,它把用户输入的字符串作为变量值。
eg:
read -p "Please input a number : " x
3、shell脚本预设变量
eg:
脚本
#!/bin/bash
echo "$1 $2"
执行
#sh option.sh 1 2
1 2
三、shell脚本中的逻辑判断——if1、不带else
语法:
if 判断语句;then
command
fi
2、带有else
语法:
if 判断语句;then
command
else
command
fi
3、带有elif
语法:
if 判断语句1;then
command
elif 判断语句2;then
commamd
else
command
fi
4、if的常用选项(与文件相关)
-e:判断文件或目录是否存在
-d:判断是不是目录以及目录是否存在
-f:判断是不是普通文件以及普通文件是否存在
-r:判断是否有读权限
-w:判断是否有写权限
-x:判断是否可执行
5、case逻辑判断
语法:
case 变量 in
value1)
command
;;
value1)
command
;;
value2)
command
;;
value3)
command
;;
*)
command
;;
esac
不限制value个数,*代表其它值。
四、shell脚本中的循环1、for循环
语法:
for 变量名 in 循环的条件;do
command
done
“循环条件”:可以是一组字符串或者数字,用空格分开;也可以是一条命令的执行结果,但该命令必须用反引号括起来。
2、while循环
语法:
while 条件;do
command
done
另外,可以用一个冒号代替循环条件,做到死循环。
while :; do
command
sleep 3
done
五、shell脚本的函数语法:
function 函数名()
{
command1
command2
}
六、shell脚本中的中断和继续1、break
退出该层循环
2、continue
结束本层循环
3、exit
直接退出整个shell脚本。



