特殊符号 $
符号 $ 可以用作变量前面的标识符,还可以和 !结合起来使用。
!$:表示上一次使用的路径
[root@evan-01 ~]# ls
11.txt 3.txt a.txt test test2.txt.bak testdir
1.txt anaconda-ks.cfg bb.txt test2 test3_soft.txt txtdir
2.txt anaconda-ks.cfg.bak ojbk.txt test2_heard.txt test3.txt.bak
[root@evan-01 ~]# cat 2.txt
123
456
123
456
abc
1
2
1
abc
[root@evan-01 ~]# ls -l !$
ls -l 2.txt
-rw-r--r--. 1 root root 30 Oct 21 10:22 2.txt
[root@evan-01 ~]#
特殊符号 ;
通常我们都是在一行中输入一个命令,然后按回车就运行了。如果想在一行中运行两个或两个以上的命令,需要在命令之间加符号 ; 。
[root@evan-01 ~]# ls 2.txt ; wc -l 2.txt ; cat 2.txt
2.txt
9 2.txt
123
456
123
456
abc
1
2
1
abc
[root@evan-01 ~]#
特殊符号 ~
符号 ~ 表示用户的家目录,root 用户的家目录是 /root ,普通用户则是 /home/username。
[root@evan-01 ~]# cd ~
[root@evan-01 ~]# pwd
/root
[root@evan-01 ~]#
[root@evan-01 ~]# su evan1
[evan1@evan-01 root]$ cd ~
[evan1@evan-01 ~]$ pwd
/home/evan1
[evan1@evan-01 ~]$
特殊符号 &
如果想把一条命令放到后台执行,则需要加上符号 &,它通常用于命令运行时间较长的情况。比如,可以用在 sleep 后。
[root@evan-01 ~]$ sleep 30 &
[1] 1510
[root@evan-01 ~]$ jobs
[1]+ Running sleep 30 &
[root@evan-01 ~]$
重定向符号 >、>>、2>、2>>、&>
> 重定向
[root@evan-01 ~]$ echo "666" > 2.txt
[root@evan-01 ~]$ cat 2.txt
666
[root@evan-01 ~]$
>> 追加重定向
[root@evan-01 ~]$ echo "777" >> 2.txt
[root@evan-01 ~]$ cat 2.txt
666
777
[root@evan-01 ~]$
2> 错误重定向
[root@evan-01 ~]$ cat 2.txt
666
777
[root@evan-01 ~]$ lsascasc 2> 2.txt
[root@evan-01 ~]$ cat 2.txt
bash: lsascasc: command not found
[root@evan-01 ~]$
2>> 追加错误重定向
[root@evan-01 ~]$ cat 2.txt
bash: lsascasc: command not found
[root@evan-01 ~]$ lsbbbb 2>> 2.txt
[root@evan-01 ~]$ cat 2.txt
bash: lsascasc: command not found
bash: lsbbbb: command not found
[root@evan-01 ~]$
&> 正确、错误重定向到一个文件里
[root@evan-01 ~]$ ls
2.txt big2.txt.zip big3.zip big.txt.bz2 testdir2 testdir.tar.bz2 testdir.tar.xz
big2.txt big3.txt big4.txt testdir testdir.tar testdir.tar.gz
[root@evan-01 ~]$ ls 2.txt abcd.txt &> 2.txt
[root@evan-01 ~]$ cat 2.txt
ls: cannot access abcd.txt: No such file or directory
2.txt
[root@evan-01 ~]$
中括号 [ ]
中括号内为字符组合,代表字符组合中的任意一个,可以是一个范围(1-3,a-z)
[1-3]
[root@evan-01 ~]# ls -d *.txt
11.txt 1.txt 2.txt 3.txt a.txt bb.txt ojbk.txt test2_heard.txt test3_soft.txt
[root@evan-01 ~]# ls -d [1-3].txt
1.txt 2.txt 3.txt
[root@evan-01 ~]#
[12a]
[root@evan-01 ~]# ls -d *.txt
11.txt 1.txt 2.txt 3.txt a.txt bb.txt ojbk.txt test2_heard.txt test3_soft.txt
[root@evan-01 ~]# ls -d [12a].txt
1.txt 2.txt a.txt
[root@evan-01 ~]#
[1-3a-z]
[root@evan-01 ~]# ls -d *.txt
11.txt 1.txt 2.txt 3.txt a.txt bb.txt ojbk.txt test2_heard.txt test3_soft.txt
[root@evan-01 ~]# ls -d [1-3a-z].txt
1.txt 2.txt 3.txt a.txt
[root@evan-01 ~]#
特殊符号 && 和 ||
前面提到的分号可作多条命令间的分隔符,其实还有两个可以用于多条命令中间的特殊符号,那就是 && 和 || 。
|| 或者
第一条命令执行成功后就不再往后执行了,如果第一条命令失败了,那接着往下执行第二条
之前用 ; 分隔的,同时执行两条命令
[root@evan-01 ~]# ls la.txt ; wc -l 2.txt
ls: cannot access la.txt: No such file or directory
9 2.txt
[root@evan-01 ~]#
|| 或者(当第一条命令执行失败后,还会接着往后执行)
[root@evan-01 ~]# ls la.txt || wc -l 2.txt
ls: cannot access la.txt: No such file or directory
9 2.txt
[root@evan-01 ~]#
看起来和上面用 ; 分隔的结果一样,实际不是。当第一条命令执行失败后,还会接着往后执行。
|| 或者(当第一条命令执行成功后,就不再往后执行了。)
[root@evan-01 ~]# ls 1.txt || wc -l 2.txt
1.txt
[root@evan-01 ~]#
当第一条命令执行成功后,就不再往后执行了。
&& 并且
当第一条命令执行成功后,才会接着往下执行,如果第一条就失败的话,就不再往下执行了
[root@evan-01 ~]# ls 1.txt && wc -l 2.txt
1.txt
9 2.txt
[root@evan-01 ~]#
[root@evan-01 ~]# ls la.txt && wc -l 2.txt
ls: cannot access la.txt: No such file or directory
[root@evan-01 ~]#