上文已经讲过$开头部分符号用法。本文将详细解读其他符号用法。本文符号未作说明都是英文符号。` `一般位于键盘上~符号下面。
[root@promote ~]# echo `date`
2019年 03月 31日 星期日 21:02:51 CST
[root@promote ~]#
首先讲解;和:。
:表示“不执行任何命令”,同时也用于时间分隔等。
;表示顺序地独立执行各条命令, 彼此之间不关心是否失败, 所有命令都会执行。 文件内分号用于代码块分隔,命令窗口用于分隔不同命令。;;本文不讲。
[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
"" '' 用于字符串,一般成对出现。`(反引号)较少见。
| 表示管道,用于隔离不同命令,||表示上一个命令执行成功后执行后续命令。
#执行成功不再执行后续语句,失败提示出错原因
[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 ~]#
/表示文件夹分隔符,同时表示根目录。
[root@promote ~]# cd /
[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 [email protected] 。
#用于脚本注释。
%用于正则表达式和部分其他符号混用。
^用于匹配字符。
&用于将指令放入后台运行。&&表示当前语句执行成功继续执行后续语句,否则报错。
*用于表示任意字符或文件。
()一般成对出现,用于语句块。
+-*/=还有数学运算符号作用。==表示相等。
{}[]用于语句块流程控制等。[]同时用于匹配字符等。[[]]符号与 [] 符号作用基本相同,前者允许在其中直接使用 || 与&& 逻辑等符号。
\< \>用于字符精细匹配。例如<the>无法匹配there。