欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

必知的Linux符号,让你轻松应对日常操作

最编程 2024-02-14 14:35:30
...
  • ~波浪号,家目录

    [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
    
    +:对两个变量做加法。
    -:对两个变量做减法。
    *:对两个变量做乘法。
    /:对两个变量做除法。
    **:对两个变量做幂运算。
    %:取模运算,第一个变量除以第二个变量求余数。
    
    +=:加等于,在自身基础上加第二个变量。
    -=:减等于,在第一个变量的基础上减去第二个变量。
    *=:乘等于,在第一个变量的基础上乘以第二个变量。
    /=:除等于,在第一个变量的基础上除以第二个变量。
    %=:取模赋值,第一个变量对第二个变量取模运算,再赋值给第一个变量。
    
    • 四则运算优先级(自先而后)
      • - + 负,正
      • ! ~ 取反.逻辑非
      • * / % 乘除取模数
      • + - 加减
      • << >> 按位左移,右移
      • <= >= < > 小于或等于,大于或等于,小于,大于
      • == != 等于 不等于
      • & 按位与
      • ^ 按位异或
      • ! 按位或
      • && 逻辑与
      • || 逻辑或
      • = += -= *= /= %= ^= |= <<= >>= 赋值 运算.