上文已经讲过$开头部分符号用法。本文将详细解读其余符号用法。本文符号未做说明都是英文符号。` `通常位于键盘上~符号下面。正则表达式
[root@promote ~]# echo `date` 2019年 03月 31日 星期日 21:02:51 CST [root@promote ~]#
首先讲解;和:。vim
:表示“不执行任何命令”,同时也用于时间分隔等。bash
;表示顺序地独立执行各条命令, 彼此之间不关心是否失败, 全部命令都会执行。 文件内分号用于代码块分隔,命令窗口用于分隔不一样命令。;;本文不讲。ssh
[root@promote ~]# ls ; date anaconda-ks.cfg 2019年 03月 31日 星期日 20:59:13 CST #mkdir test;cd test;mkdir dir;cd dir 等价于mkdir -p test/dir;cd dir [root@promote test]# pwd /root [root@promote ~]# mkdir test;cd test;mkdir dir;cd dir #注意三者/root pwd 命令输出结果区别 [root@promote ~]# mkdir -p ./test/dir #递归建立目录 [root@promote ~]# mkdir -p test/dir [root@promote ~]# mkdir -p /test/dir
"" '' 用于字符串,通常成对出现。`(反引号,Tab和数字1旁边)较少见。spa
| 表示管道,用于隔离不一样命令,||表示上一个命令执行成功后执行后续命令。code
#执行成功再也不执行后续语句,失败提示出错缘由 [root@promote ~]# ls || pwd anaconda-ks.cfg test [root@promote ~]# ldd || pwd ldd: 缺乏文件参数 试用“ldd --help”以获取更多信息。 /root [root@promote ~]# now || pwd -bash: now: 未找到命令 /root [root@promote ~]#
\放在自定义命令前取消命令执行结果返回错误。放在特殊符号前,则该特殊符号的做用消失;转义符有\t (水平制表符)、\c(取消当前输入)、 \r(回车)、 \b(退格)、 \v(纵向制表符)等。\c 用法见代码。递归
[root@promote ~]# echo 'alias now="date"' >.bashrc [root@promote ~]# vim .bashrc [root@promote ~]# source .bashrc [root@promote ~]# now 2019年 03月 31日 星期日 19:53:16 CST [root@promote ~]# \now -bash: now: 未找到命令 [root@promote ~]# [root@promote ~]# touch test.log [root@promote ~]# ls test.log anaconda-ks.cfg test [root@promote ~]# rm ./*.log rm:是否删除普通空文件 "./test.log"?y [root@promote ~]# ls anaconda-ks.cfg test [root@promote ~]# #\用法 echo #!/bin/sh echo "OK! \c" echo "It is a test text." >testc.sh [root@promote ~]# echo "OK! \c" OK! \c [root@promote ~]# echo "It is a test text." >testc.sh [root@promote ~]# [root@promote ~]# ls anaconda-ks.cfg test testc.sh [root@promote ~]# cat testc.sh It is a test text. [root@promote ~]# [root@promote ~]# echo '\@' \@ [root@promote ~]# echo '\\' \\ [root@promote ~]# echo "\'" \' [root@promote ~]# echo '\^' \^
<>通常成对出现。< 表示输入重定向,> 表示输出重定向,覆盖内容,>> 输出重定向,追加内容<<表示标准输入。字符串
,和.都有分隔做用,.表示当前目录,..表示上一级目录,.还有区分文件类型最用,例如test.txt。.开头文件(夹)为隐藏文件(夹)。数学
[root@promote ~]# cd / [root@promote /]# cd . [root@promote /]# cd /usr/bin/ [root@promote bin]# cd .. [root@promote usr]# ls bin etc games include lib lib64 libexec local sbin share src tmp [root@promote usr]# pwd /usr [root@promote usr]# ls . bin etc games include lib lib64 libexec local sbin share src tmp [root@promote usr]# ls .. bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys test tmp usr var [root@promote usr]# #注意对比隐藏文件和文件夹 [root@promote ~]# ls anaconda-ks.cfg test testc.sh testname.sh test.sh [root@promote ~]# ls -a . anaconda-ks.cfg .bash_logout .bashrc .pki .tcshrc testc.sh test.sh .viminfo .. .bash_history .bash_profile .cshrc .ssh test testname.sh .test.txt [root@promote ~]#
/表示文件夹分隔符,同时表示根目录。test
?表示匹配一个字符。
[root@promote ~]# cd / [root@promote /]# [root@promote ~]# touch test.tex [root@promote ~]# ls anaconda-ks.cfg test test.tex test.txt [root@promote ~]# ls tes?.t?? test.tex test.txt [root@promote ~]#
~表示用户文件夹。
[root@promote ~]#
!表示取反。例如!=表示不等于,ls a[!0-2]txt表示仅显示a接0-9文件名。
[root@promote ~]# ls a1.txt a2.txt a3.txt a8.txt aa.txt ab.txt ac.txt anaconda-ks.cfg test testc.sh test.sh [root@promote ~]# ls a[1-2].txt a1.txt a2.txt [root@promote ~]#
@通常和其余符号一块儿使用,也用于ssh登陆,例如ssh root@192.168.100.100 。
#用于脚本注释。
%用于正则表达式和部分其余符号混用。
^用于匹配字符。
&用于将指令放入后台运行。&&表示当前语句执行成功继续执行后续语句,不然报错。
*用于表示任意字符或文件。
()通常成对出现,用于语句块。
+-*/=还有数学运算符号做用。==表示相等。
{}[]用于语句块流程控制等。[]同时用于匹配字符等。[[]]符号与 [] 符号做用基本相同,前者容许在其中直接使用 || 与&& 逻辑等符号。
\< \>用于字符精细匹配。例如<the>没法匹配there。