上文已经讲过$开头部分符号用法。本文将详细解读其他符号用法。本文符号未作说明都是英文符号。` `一般位于键盘上~符号下面。

[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 root@192.168.100.100 。

#用于脚本注释。

%用于正则表达式和部分其他符号混用。

^用于匹配字符。

&用于将指令放入后台运行。&&表示当前语句执行成功继续执行后续语句,否则报错。

*用于表示任意字符或文件。

()一般成对出现,用于语句块。

+-*/=还有数学运算符号作用。==表示相等。

{}[]用于语句块流程控制等。[]同时用于匹配字符等。[[]]符号与 [] 符号作用基本相同,前者允许在其中直接使用 || 与&& 逻辑等符号。

\< \>用于字符精细匹配。例如<the>无法匹配there。

04-01 02:27