常用元字符:
- Linux中的元字符分为两种:
- 一种是shell元字符.由Linux Shell进行解析.
- 另一种是正则表达式元字符,由grep/sed/awk等文本处理工具进行解析.
- 以下介绍以shell中为主,有少量穿插.
- 总表
命令 解释 ~ 1. 波浪号,家目录 . 2. 点号,多种用途 * 3. 星号,任意个数的任意字符 ? 4. 问号,一个任意字符 ; 5. 分号,连续指令 : 6. 冒号,bash的内建指令 / 7. 斜杠,目录符号 \ 8. 反斜杠,屏蔽后面一个字符的特殊意义 | 9. 管道符,连结上个指令的标准输出,做为下个指令的标准输入 ! 10. 感叹号,通常它代表反逻辑的作用,反表达式 ^ 11. 尖括号,行首符,但在[]内同!类似,反表达式 $ 12.美元符,变量引用 & 13.并且符,后台工作 # 14.井字符,文本文件中的注释符 = 15.等号,表达式赋值 ( ) 16. ( )中间的内容当作一个整体来看,但不代表优先执行 ' ' 17. 单引号,通常成对出现,强引用 " " 18. 双引号,通常成对出现,弱引用 ` ` 19. 反引号(1旁边的字符),中间的内容当作shell命令 { } 20. 花括号,范围字符及多种判断式,中间会放在shell中执行 [ ] 21. 中括号,范围字符及多种判断式 || 22. 逻辑符号,相当于or,(双|中间不能有空格) && 23. 逻辑符号,相当于and,(双&中间不能有空格) > 24. 大于号,输出重定向符 < 25. 小于号,输入重定向符 + - * / 26. 数学计算符
-
~波浪号,家目录
[xzt7566@centos7-test Downloads]$ echo ~ 表示用户的家目录 /home/xzt7566 [root@centos7-test Downloads]# echo ~ root用户的家目录 /root [xzt7566@centos7-test Downloads]$ echo ~+ 同pwd效果一样,显示当前路径. /home/xzt7566/Downloads
-
. 点号,多种用途.正则中表示一个任意字符
[xzt7566@centos7-test Downloads]$ ls 13 [xzt7566@centos7-test Downloads]$ ls . 一个点表示当前目录 [xzt7566@centos7-test Downloads]$ cd .. 两个点表示上一级目录 [xzt7566@centos7-test ~]$ [xzt7566@centos7-test ~]$ ll .. 不用退到上一层目录,直接查看属性 total 4 drwx------. 16 xzt7566 xzt7566 4096 Apr 30 10:20 xzt7566 cat 1.txt 同 cat ./1.txt 效果一样/表示根目录 而./表示当前目录(通常省略) t7566@centos7-test Downloads]$ ll -A 以.开头的均为隐藏文件或目录. total 4 -rw-rw-r--. 1 xzt7566 xzt7566 54 Apr 30 10:39 13 drwxrwxr-x. 2 xzt7566 xzt7566 6 Apr 30 13:35 .13 隐藏目录
-
*星号,任意个数的任意字符,正则中仅表示任意次数
[xzt7566@centos7-test Downloads]$ ls 12a.list 13 3.1 34b.ptp 4.a 5.cad 8.9 9.txt [xzt7566@centos7-test Downloads]$ ls *.* .表示有前后缀 12a.list 3.1 34b.ptp 4.a 5.cad 8.9 9.txt [xzt7566@centos7-test Downloads]$ ls 12a.list 13 3.1 34b.ptp 4.a 5.cad 8.9 9.txt [xzt7566@centos7-test Downloads]$ ls *2* 含有2的选项 12a.list
-
?问号,一个任意字符
[xzt7566@centos7-test Downloads]$ ls 12a.list 13 3.1 34b.ptp 4.a 5.cad 8.9 9.txt [xzt7566@centos7-test Downloads]$ ls *.? 有后缀.后缀一位字符的选项 3.1 4.a 8.9
-
;分号,连续指令,双;;表cast
[xzt7566@centos7-test ~]$ pwd /home/xzt7566 [xzt7566@centos7-test ~]$ cd Downloads/ ; ls ; pwd 连续依次执行.有错误跳过. 33.txt /home/xzt7566/Downloads
-
:冒号,bash内建指令,什么事都不干,但返回值是0
[xzt7566@centos7-test ~]$ echo $PATH 特例.在环境路径中,冒号是分隔符. /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/xzt7566/.local/bin:/home/xzt7566/bin PATH=$PATH:/home/xzt7566/Downloads 增加PATH变量路径.(这里的路径不能写相对路径) [xzt7566@centos7-test ~]$ : ${HOSTNAME?} 简洁的判断变量是否存在 [xzt7566@centos7-test ~]$ : ${TEST?} bash: TEST: parameter null or not set
-
/斜杠,目录符,唯一不能出现在文件名里的字符
[xzt7566@centos7-test Downloads]$ pwd /home/xzt7566/Downloads [xzt7566@centos7-test Downloads]$ cd ../../.. 返回上第三层目录 [xzt7566@centos7-test /]$ pwd / [xzt7566@centos7-test Downloads]$ cd / 单独/表示绝对目录. [xzt7566@centos7-test /]$ pwd / ./ 开头表示相对于当前目录 / 开头表示绝对目录
-
\反斜杠,屏蔽后面一个特殊符号及转义符
[xzt7566@centos7-test /]$ echo $HOSTNAME 这儿的$表示引用变量 centos7-test [xzt7566@centos7-test /]$ echo \$HOSTNAME 这儿的$被转义成符号本身了. $HOSTNAME [xzt7566@centos7-test Downloads]$ echo $PATH /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/xzt7566/.local/bin:/home/xzt7566/bin [xzt7566@centos7-test Downloads]$ echo $PATH | tr : "\n" 这儿的将:代替成回车换行 /usr/local/bin /usr/local/sbin /usr/bin /usr/sbin /bin /sbin /home/xzt7566/.local/bin /home/xzt7566/bin 常用的转义符: \t Tab制表符 \a 发出警告声 \b 删除前一个字符 \c 最后不加上换行符号 \f 换行但光标仍旧停留在原来的位置 \n 换行且光标移至行首 \r 光标移至行首,但不换行
-
|管道符,常用符号之一,表示将前一个命令的结果用作后一个命令的参数
[xzt7566@centos7-test /]$ who xzt7566 :0 2019-04-30 10:20 (:0) xzt7566 pts/0 2019-04-30 10:20 (:0) [xzt7566@centos7-test /]$ who | wc -l 2 将who的内容当作wc的参数. [xzt7566@centos7-test Downloads]$ echo $PATH | tr : "\n" | wc -l 8 将上例中的命令加入wc -l后统计共有8条PATH路径.
-
!感叹号,反表达式,反逻辑.通常用"反选"比"正选"更不容易遗漏
[xzt7566@centos7-test Downloads]$ touch {1..4}{a..c}test.txt [xzt7566@centos7-test Downloads]$ ls 1atest.txt 1ctest.txt 2btest.txt 3atest.txt 3ctest.txt 4btest.txt 1btest.txt 2atest.txt 2ctest.txt 3btest.txt 4atest.txt 4ctest.txt [xzt7566@centos7-test Downloads]$ ls [!1-3]* 排除1到3开头的选项 4atest.txt 4btest.txt 4ctest.txt [xzt7566@centos7-test Downloads]$ ls ?[!b]* 排除第二个字符是b的选项 1atest.txt 1ctest.txt 2atest.txt 2ctest.txt 3atest.txt 3ctest.txt 4atest.txt 4ctest.txt find ./ ! -name '*.txt' 找出不是以txt后缀结尾的文件. != 表示不等于,常用于判断式.
-
^尖括号,同!有一样的作用.也表示行首符
[xzt7566@centos7-test Downloads]$ ls ?[^b]* 同!作用一样 1atest.txt 1ctest.txt 2atest.txt 2ctest.txt 3atest.txt 3ctest.txt 4atest.txt 4ctest.txt [xzt7566@centos7-test Downloads]$ ls [^1-3]* 同!号作用一样 4atest.txt 4btest.txt 4ctest.txt 下面这个表示行首为b .为任意一个字符 *表示任意次数 n$表示以n结尾 [xzt7566@centos7-test Downloads]$ grep "^b.*n$" /etc/passwd bin:x:1:1:bin:/bin:/sbin/nologin ^b表示行首为b n$表示行尾为n [xzt7566@centos7-test Downloads]$ cp /usr/share/dict/words ./test.txt 复制这个文本过来做测试 [xzt7566@centos7-test Downloads]$ cat test.txt | grep "^z[a-e].*l$" zeal 以小写z为行首开头,第二个字符是a到e,并以l结尾的选项. zealful zealotical zel zenithal zenographical zeroaxial zero-dimensional zestful 如 "^[^a-c].*" 排除以a到c为行首开头的所有选项 如"^$" 表示空白行 [xzt7566@centos7-test Downloads]$ ls -d */ 显示所有目录 1/ 2/ 3/ [xzt7566@centos7-test Downloads]$ ll | grep "^d" 显示所有目录 drwxrwxr-x. 2 xzt7566 xzt7566 6 Apr 30 17:24 1 drwxrwxr-x. 2 xzt7566 xzt7566 6 Apr 30 17:24 2 drwxrwxr-x. 2 xzt7566 xzt7566 6 Apr 30 17:24 3
-
$美元符,变量引用符.也表示行尾符.(11例中有行尾符的用法)
[xzt7566@centos7-test Downloads]$ echo $SHELL 显示当前shell变量 /bin/bash [xzt7566@centos7-test ~]$ pwd /home/xzt7566 [xzt7566@centos7-test ~]$ WORKDIR=/home/xzt7566/Downloads/workdir/ [xzt7566@centos7-test ~]$ cd $WORKDIR [xzt7566@centos7-test workdir]$ pwd /home/xzt7566/Downloads/workdir [xzt7566@centos7-test Downloads]$ touch $(date -d "-2 day" +%F).log [xzt7566@centos7-test Downloads]$ ls $( ),括号中的当作一个命令来看待 2019-05-02.log 2019-05-03.log hosts 常用的系统变量: PATH 决定了shell将到哪些目录中寻找命令或程序 HOME 当前用户主目录 HISTSIZE 历史记录数 HISTFILESIZE 历史记录条数 EDITOR 默认文本编辑器 LOGNAME 当前用户的登录名 HOSTNAME 指主机的名称 SHELL 当前用户Shell类型 RANDOM 生成一个随机数字 LANG 语言相关的环境变量,多语言可以修改此环境变量 LANG=zh_CN.UTF-8 中文 LANG=en_US.UTF-8 英文 MAIL 当前用户的邮件存放目录 PS1 基本提示符,对于root用户是#,对于普通用户是$
-
&并且符,单个使用表示后台工作符,通常用于大文件备份、压缩等转入后台完成
[xzt7566@centos7-test ~]$ jobs 目前无后台进度 [xzt7566@centos7-test ~]$ [xzt7566@centos7-test ~]$ sleep 100 & 创建了一个后台进度 [1] 18364 [xzt7566@centos7-test ~]$ jobs [1]+ Running sleep 100 & xzt7566@centos7-test ~]$ fg 1 可再使用fg调到前台. sleep 100 [xzt7566@centos7-test ~]$ jobs [xzt7566@centos7-test ~]$
#井字符,在文本文件中表示注释
-
=等号,常用于变量或表达式赋值
[xzt7566@centos7-test ~]$ WORKDIR=/home/xzt7566/Downloads/workdir/ [xzt7566@centos7-test ~]$ cd $WORKDIR 赋值的=号前后不能有空格. [xzt7566@centos7-test workdir]$ pwd /home/xzt7566/Downloads/workdir
-
( )括号,通常成对出现,中间的内容表示一个整体来运行,但不表示优先权
[xzt7566@centos7-english test]$ ping 192.168.2.108 -c3>/dev/null || (echo "host is lost" |tee network_info;mail -s "host is lost" root < network_info;rm -rf network_info) ping主机,成功了不执行( )里的。失败了则执行( ) 里的内容,并将( )里视为一条整体命令
-
' '单引号,通常成对出现,除一些特殊格式,中间的内容全部视为文本,所见即所得,强引用
[xzt7566@centos7-test Downloads]$ echo "$HOME" 双引号属弱引用 /home/xzt7566 [xzt7566@centos7-test Downloads]$ echo '$HOME' 单引号属强引用 $HOME 强引用比较类似转义符\,不过\只转义后面紧跟的一个,而在两个单引号中间全部无条件转义
-
" "双引号,通常成对出现,中间的内容除了$美元符 '单引号 `反引号及\反斜线外,其他的按字符对待,弱引用
[xzt7566@centos7-test Downloads]$ ls 123aabbc.1 124abc32 124abc34 124abc37 124abc3ab 3.? 124abc312 124abc33 124abc35 124abc39 124abc3as [xzt7566@centos7-test Downloads]$ ls *."?" 这儿的问号被当成了字符 3.? [xzt7566@centos7-test Downloads]$ ls *.? 这儿的问题代表一个任意字符 123aabbc.1 3.? [xzt7566@centos7-test Downloads]$ echo "$HOME" 双引号属弱引用 /home/xzt7566 [xzt7566@centos7-test Downloads]$ awk 'BEGIN{system("date +'%Y%m%d%t%T'")}' 20190430 21:43:15 因为不允许双引号或单引号嵌套自己,所以只有双引号套单引号,一层双外必是一层单 [xzt7566@centos7-test Downloads]$ echo "ls -la" ls -la [xzt7566@centos7-test Downloads]$ echo "`ls -la`" 在` `中间的表示命令 总用量 4 drwxr-xr-x. 2 xzt7566 xzt7566 20 4月 30 21:48 . drwx------. 16 xzt7566 xzt7566 4096 4月 30 20:26 .. -rw-rw-r--. 1 xzt7566 xzt7566 0 4月 30 21:48 1.list
-
` `反引号,通常成对出现,中间的表示命令(1按键旁边的符号),可读些较差,通常用$( )
[xzt7566@centos7-test Downloads]$ ls 1.list 2.list a.list b.list k.list l.list p.list test [xzt7566@centos7-test Downloads]$ mv `ls [a-e].list` test 将ls [a-e].list执行的结果给mv执行 [xzt7566@centos7-test Downloads]$ ls 1.list 2.list k.list l.list p.list test mv $(ls 1*.txt) test 等于 mv `ls 1*.txt` test touch `date -d "-1 day" +%F`.log 创建一个昨天的名字命名的日志文件 touch $(date -d "-1 day" +%F).log 效果一样,可读性好
-
{ }花括号,通常成对出现,中间的在bash中计算.属字符串匹配
[xzt7566@centos7-test Downloads]$ awk 'BEGIN{system("date +'%Y%m%d%t%T'")}' 20190430 21:43:15 [xzt7566@centos7-test Downloads]$ touch {1..5}{a..c}{d..f}.txt [xzt7566@centos7-test Downloads]$ ls 1ad.txt 1bf.txt 2ae.txt 2cd.txt 3af.txt 3ce.txt 4bd.txt 4cf.txt 5be.txt 1ae.txt 1cd.txt 2af.txt 2ce.txt 3bd.txt 3cf.txt 4be.txt 5ad.txt 5bf.txt 1af.txt 1ce.txt 2bd.txt 2cf.txt 3be.txt 4ad.txt 4bf.txt 5ae.txt 5cd.txt 1bd.txt 1cf.txt 2be.txt 3ad.txt 3bf.txt 4ae.txt 4cd.txt 5af.txt 5ce.txt 1be.txt 2ad.txt 2bf.txt 3ae.txt 3cd.txt 4af.txt 4ce.txt 5bd.txt 5cf.txt {1..3}表示从1到3,上例中花括号间是相乘的关系 [xzt7566@centos7-test Downloads]$ ls {1a,1c,2a}[de].txt 1ad.txt 1ae.txt 1cd.txt 1ce.txt 2ad.txt 2ae.txt {1a,1c,2a}表示将1a等这3个当字符串处理. [xzt7566@centos7-test Downloads]$ mkdir -p testdir/dir1/{x,y}/{a,b} [xzt7566@centos7-test Downloads]$ tree -d . └── testdir └── dir1 ├── x │ ├── a │ └── b └── y ├── a └── b [xzt7566@centos7-test Downloads]$ mkdir -p testdir/dir2/{x/{a,b},y} [xzt7566@centos7-test Downloads]$ tree -d . └── testdir └── dir2 ├── x │ ├── a │ └── b └── y [xzt7566@centos7-test Downloads]$ mkdir -p testdir/dir{3,4,5/dir{6,7}} [xzt7566@centos7-test Downloads]$ tree -d . └── testdir ├── dir3 ├── dir4 └── dir5 ├── dir6 └── dir7 [xzt7566@centos7-test Downloads]$ ls test.txt [xzt7566@centos7-test Downloads]$ cp ./test.txt{,.bak} [xzt7566@centos7-test Downloads]$ ls test.txt test.txt.bak [xzt7566@centos7-test Downloads]$ echo ./test.txt{,.bak} ./test.txt ./test.txt.bak [xzt7566@centos7-test Downloads]$ echo file{a,b} filea fileb [xzt7566@centos7-test Downloads]$ echo file{,b} 可用于备份 file
-
[ ]中括号,通常成对出现,中间的内容属字符匹配
[xzt7566@centos7-test Downloads]$ ls 1ad.txt 1bf.txt 2ae.txt 2cd.txt 3af.txt 3ce.txt 4bd.txt 4cf.txt 5be.txt 1ae.txt 1cd.txt 2af.txt 2ce.txt 3bd.txt 3cf.txt 4be.txt 5ad.txt 5bf.txt 1af.txt 1ce.txt 2bd.txt 2cf.txt 3be.txt 4ad.txt 4bf.txt 5ae.txt 5cd.txt 1bd.txt 1cf.txt 2be.txt 3ad.txt 3bf.txt 4ae.txt 4cd.txt 5af.txt 5ce.txt 1be.txt 2ad.txt 2bf.txt 3ae.txt 3cd.txt 4af.txt 4ce.txt 5bd.txt 5cf.txt [xzt7566@centos7-test Downloads]$ ls [13][ac]f.txt []中间的当字符处理 1af.txt 1cf.txt 3af.txt 3cf.txt [ ]中间的内容-表示范围,变量及常会引入作字符串处理,其他的当字符 [xzt7566@centos7-test Downloads]$ LI=12 [xzt7566@centos7-test Downloads]$ ls [$LI]*.* 1ad.txt 1af.txt 1be.txt 1cd.txt 1cf.txt 2ae.txt 2bd.txt 2bf.txt 2ce.txt 1ae.txt 1bd.txt 1bf.txt 1ce.txt 2ad.txt 2af.txt 2be.txt 2cd.txt 2cf.txt [ ]中间的如有变量,将变量结果引入,再当作字符串处理 a[!bc] 表示a开头第二个字符不是b和c的选项. 在这儿!同^效果一样 [xzt7566@centos7-test Downloads]$ ll -a total 4 drwxr-xr-x. 7 xzt7566 xzt7566 116 May 1 13:29 . drwx------. 16 xzt7566 xzt7566 4096 May 1 13:12 .. -rw-rw-r--. 1 xzt7566 xzt7566 0 May 1 13:25 .1 -rw-rw-r--. 1 xzt7566 xzt7566 0 May 1 13:25 1.1 -rw-rw-r--. 1 xzt7566 xzt7566 0 May 1 13:25 .2 -rw-rw-r--. 1 xzt7566 xzt7566 0 May 1 13:25 2.1 -rw-rw-r--. 1 xzt7566 xzt7566 0 May 1 13:25 .3 -rw-rw-r--. 1 xzt7566 xzt7566 0 May 1 13:25 3.1 drwxrwxr-x. 2 xzt7566 xzt7566 6 May 1 13:25 .7 drwxrwxr-x. 2 xzt7566 xzt7566 6 May 1 13:25 .8 drwxrwxr-x. 2 xzt7566 xzt7566 6 May 1 13:26 a drwxrwxr-x. 2 xzt7566 xzt7566 6 May 1 13:26 b drwxrwxr-x. 2 xzt7566 xzt7566 6 May 1 13:26 c [xzt7566@centos7-test Downloads]$ ls -d */ 只显示普通目录 a/ b/ c/ [xzt7566@centos7-test Downloads]$ ls -d .[^.]*/ 只显示隐藏目录,不显示.和.. .7/ .8/ [xzt7566@centos7-test Downloads]$ ls -d .[^.]*/ */ 显示所有目录 .7/ .8/ a/ b/ c/ 特殊字符表示法. [:digit:] 任意数字 0-9 等于[0-9] [:lower:] 任意小写字母 [:upper:] 任意大写字母 [:alpha:] 任意大小写字母 等于[a-Z] [:blank:] 水平空白字符 [:space:] 水平或垂直空白字符 [:punct:] 标点符号 [:cntrl:] 控制(非打印)字符 [:graph:] 圆形字符 [:xdigit:] 十六进制字符 例: ls [0-9]*[^[:digit:]] 以数字开头,非数字结尾,等于ls [0-9]*[^0-9] ls [^[:alpha:]][[:alpha:]]* 以非字母开头.后面跟一个任意字母的文件. ls l*[[:digit:]]*[[:lower:]] 以l开头.中间含有一个数字.以小写字母结尾的
-
|| 逻辑或(双管道符,中间不能有空格)
command1 || command2 如果1不成功就执行2,1执行成功了就不执行2 [xzt7566@centos7-test Downloads]$ ls test.txt [xzt7566@centos7-test Downloads]$ rm test.txt || echo "前面失败了就会显示" [xzt7566@centos7-test Downloads]$ ls rm这行指令执行成了,||后面的就没显示 [xzt7566@centos7-test Downloads]$ rm test.txt || echo "前面失败了就会显示" rm: 无法删除"test.txt": 没有那个文件或目录 前面失败了就会显示 rm这行指令失败了.||后面的就显示了. [xzt7566@centos7-test ~]$ echo $[0||1] 1 [xzt7566@centos7-test ~]$ echo $[1||0] 1 [xzt7566@centos7-test ~]$ echo $[1||1] 1 [xzt7566@centos7-test ~]$ echo $[0||0] 0
-
&& 逻辑与(双并且符,中间不能有空格)
command1 && command2 1执行成功了再执行2,1不成功不执行2. [xzt7566@centos7-english test]$ ls aa ab aba abb abc abd ac ad ae [xzt7566@centos7-english test]$ rm aa && echo "文件已经删除" 文件已删除 rm执行成功,显示了中文字样 [xzt7566@centos7-english test]$ rm aa && echo "文件已经删除" rm: cannot remove ‘aa’: No such file or directory rm执行失败,不显示后面的字样 [xzt7566@centos7-test ~]$ echo $[1&&1] 1 [xzt7566@centos7-test ~]$ echo $[1&&0] 0 [xzt7566@centos7-test ~]$ echo $[0&&1] 0
-
>及>> ,大于号>为覆盖重定向,双大于号>>为追加重定向.常用符号之一
[xzt7566@centos7-test Downloads]$ echo $PATH > 1.txt [xzt7566@centos7-test Downloads]$ cat 1.txt /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/xzt7566/.local/bin:/home/xzt7566/bin 将echo的结果覆盖定向输出到1.txt中. 0 代表输入设备 STDIN 默认接受来自键盘的输入. 1 标准输出 STDOUT 默认输出到终端窗口 2 默认错误输出 STDERR 默认输出到终端窗口. >同1> 表示将正确结果重定向 2> 表示错误结果重定向 &> 表示正确错误全部重定向 [xzt7566@centos7-test ~]$ who xzt7566 :0 2019-04-30 20:26 (:0) xzt7566 pts/0 2019-04-30 23:30 (:0) xzt7566 pts/2 2019-04-30 23:48 (192.168.1.106) [xzt7566@centos7-test ~]$ tty /dev/pts/2 [xzt7566@centos7-test ~]$ echo "test" > /dev/pts/0 从远程终端向本地终端发送消息. [xzt7566@centos7-test Downloads]$ tty /dev/pts/0 [xzt7566@centos7-test Downloads]$ test 从本地端收到远程转义的内容 >1.txt 表示清空1.txt的内容,对着软链接会清空源文件的内容.(隔山打牛) ls >| 1.log 这个很难解释.... echo xxxx |passwd --stdin wang &>/dev/null 特例,将用户wang的密码改了,且不让人看到
-
<及<< ,输入重定向,<表示指向文件等.<<表示输入后遇到表示结束的字符串
[xzt7566@centos7-test Downloads]$ cat << end 这是测试内容 > ... > end 遇到了end表示结束输入了. end前面不能有内容. 这是测试内容 ... [xzt7566@centos7-test Downloads]$ cat 1.txt 321 123 [xzt7566@centos7-test Downloads]$ tee < 1.txt 将屏幕输入定义成文件输入 321 123 [xzt7566@centos7-test Downloads]$ mail -s root "test" < 1.txt 上一行将屏幕输入邮件内容,改成1.txt的内容发送邮件.
-
+ - * / 四则运算符号,可使用help let查看相关
[xzt7566@centos7-test ~]$ let i=2*7 [xzt7566@centos7-test ~]$ echo $i 14 [xzt7566@centos7-test ~]$ echo $[(3+2)*2] 有括号的先运算 10 [xzt7566@centos7-test ~]$ echo $((6/2)) 3 [xzt7566@centos7-test ~]$ echo $((10%3)) 取余数 1 +:对两个变量做加法。 -:对两个变量做减法。 *:对两个变量做乘法。 /:对两个变量做除法。 **:对两个变量做幂运算。 %:取模运算,第一个变量除以第二个变量求余数。 +=:加等于,在自身基础上加第二个变量。 -=:减等于,在第一个变量的基础上减去第二个变量。 *=:乘等于,在第一个变量的基础上乘以第二个变量。 /=:除等于,在第一个变量的基础上除以第二个变量。 %=:取模赋值,第一个变量对第二个变量取模运算,再赋值给第一个变量。
- 四则运算优先级(自先而后)
- - + 负,正
- ! ~ 取反.逻辑非
- * / % 乘除取模数
- + - 加减
- << >> 按位左移,右移
- <= >= < > 小于或等于,大于或等于,小于,大于
- == != 等于 不等于
- & 按位与
- ^ 按位异或
- ! 按位或
- && 逻辑与
- || 逻辑或
- = += -= *= /= %= ^= |= <<= >>= 赋值 运算.
- 四则运算优先级(自先而后)