shell(外壳)与内核(Kernel)相对,一内一外构成完整的系统...............
Redhat/CentOS系统默认安装的shell叫做bash,即Bourne Again Shell,它是sh(Bourne Shell)的增强版本。Bourn Shell 是最早行起来的一个shell,创始人叫Steven Bourne,为了纪念他所以叫做Bourn Shell,简称sh。
1.历史命令记录
我们知道敲过的命令,linux是会有记录的,history预设可以记录1000条历史命令。这些命令保存在用户的家目录中的.bash_history文件中(只有当用户正常退出当前shell时,在当前shell中运行的命令才会保存至.bash_history文件中)
!就是一个与历史有关的非常有意思的字符
1. !! 连续两个 ‘!’, 表示执行上一条指令;
1 [root@izgt88z6l1kvd7z ~]# echo $? 2 0 3 [root@izgt88z6l1kvd7z ~]# !! 4 echo $? 5 0 6 [root@izgt88z6l1kvd7z ~]#
2. !n 这里的n是数字,表示执行命令历史中第n条指令。例如 !52
表示执行命令历史中第52条命令;
1 [root@izgt88z6l1kvd7z ~]# history |grep 25 2 25 ls 3 110 history |grep 25 4 [root@izgt88z6l1kvd7z ~]# !25 5 ls 6 administration docker install.sh t1.txt test web
3.!字符 字符大于等于1,例如!mk表示执行最近一次以mk开头的命令(报错是因为目录已经存在)
1 [root@izgt88z6l1kvd7z ~]# !mk 2 mkdir administration 3 mkdir: cannot create directory ‘administration’: File exists
2.别名
我们可以通过alias把一个常用的并且很长的指令别名一个简洁易记的指令。如果不想用了,还可以用unalias解除别名功能。直接敲alias会看到目前系统预设的alias
1 [root@izgt88z6l1kvd7z ~]# alias ?='echo $?' 2 [root@izgt88z6l1kvd7z ~]# ? 3 0 4 [root@izgt88z6l1kvd7z ~]# unalias ? 5 [root@izgt88z6l1kvd7z ~]# ? 6 -bash: ?: command not found
3.通配符
*匹配0或多个字符,?匹配一个字符。
1 [root@izgt88z6l1kvd7z ~]# ls tes* 2 test: 3 t1.txt 4 5 test1,test2,tesa,tesb: 6 [root@izgt88z6l1kvd7z ~]# ls tes? 7 t1.txt
4.输入,输出重定向及管道符
>输出重定向 ,错误重定向2> >>追加重定向 <输入重定向 |管道符
5.进程控制快捷键
ctrl+z暂停进程
例如:我们打开了tcpdump来抓包,然后ctrl+z暂停
1 [root@izgt88z6l1kvd7z ~]# tcpdump 2 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode 3 listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 4 23:58:23.268094 IP izgt88z6l1kvd7z.ssh > 116.209.213.92.62076: Flags [P.], seq 3428140470:3428140658, ack 434735173, win 251, length 188 5 23:58:23.268372 IP izgt88z6l1kvd7z.36751 > 100.100.2.136.domain: 5794+ PTR? 92.213.209.116.in-addr.arpa. (45) 6 23:58:23.296464 IP 100.100.2.136.domain > izgt88z6l1kvd7z.36751: 5794 NXDomain 0/1/0 (103) 7 23:58:23.297201 IP izgt88z6l1kvd7z.50902 > 100.100.2.138.domain: 53930+ PTR? 185.96.26.172.in-addr.arpa. (44) 8 23:58:23.297435 IP 100.100.2.138.domain > izgt88z6l1kvd7z.50902: 53930 NXDomain* 0/1/0 (98) 9 23:58:23.297563 IP izgt88z6l1kvd7z.46290 > 100.100.2.136.domain: 56500+ PTR? 136.2.100.100.in-addr.arpa. (44) 10 23:58:23.297620 IP izgt88z6l1kvd7z.ssh > 116.209.213.92.62076: Flags [P.], seq 188:360, ack 1, win 251, length 172 11 23:58:23.298287 IP 100.100.2.136.domain > izgt88z6l1kvd7z.46290: 56500 NXDomain* 0/1/0 (99) 12 23:58:23.298428 IP izgt88z6l1kvd7z.60977 > 100.100.2.138.domain: 65211+ PTR? 138.2.100.100.in-addr.arpa. (44) 13 23:58:23.298458 IP izgt88z6l1kvd7z.ssh > 116.209.213.92.62076: Flags [P.], seq 360:604, ack 1, win 251, length 244 14 23:58:23.298713 IP 100.100.2.138.domain > izgt88z6l1kvd7z.60977: 65211 NXDomain* 0/1/0 (99) 15 23:58:23.298844 IP izgt88z6l1kvd7z.ssh > 116.209.213.92.62076: Flags [P.], seq 604:1488, ack 1, win 251, length 884 16 23:58:23.420263 IP izgt88z6l1kvd7z.ssh > 116.209.213.92.62076: Flags [P.], seq 1488:1644, ack 1, win 251, length 156 17 ^Z 18 [1]+ Stopped tcpdump
第十八行我们可以看到已经停了,我们可以用jobs查看停掉的任务,fg在前台跑,bg在后台跑
ctrl+c关闭进程......不用赘述