CentOS 7 特殊符号
介绍在 CentOS 7 系统中的一些特殊符号,并且如何使用它们。包括重定向符号、通配符、点符号等。
1. 重定向符号
| 符号 | 名称 | 描述 |
|---|---|---|
> 或 1> |
标准输出重定向 | 先清空文件已有内容,然后把新内容写入文件。表示当命令执行正确时内容才会写入到文件。 |
>> 或 1>> |
标准输出追加重定向 | 把内容追加到文件最后一行。表示当命令执行正确时内容才会写入到文件。 |
2> |
标准错误输出重定向 | 先清空文件已有内容,然后把新内容写入文件。表示当命令执行错误时,将错误信息写入到文件。 |
2>> |
追加标准错误输出重定向 | 把内容追加到文件最后一行。表示当命令执行错误时,将错误信息写入到文件。 |
< 或 0< |
标准输入重定向 | 把文件内容输出。 |
<< 或 0<< |
追加输入重定向 | 追加到文件底部。 |
例子 1,使用重定向符号>,单行写入,先清空文件内容,然后写入。
# 先查看文件内容[root@centos7 ~]# cat /data/test.txtHello world !Hello sophiaHelloWorld!# 把内容 Hello sophia ! 写入文件[root@centos7 ~]# echo Hello sophia ! >/data/test.txt# 再次查看文件内容[root@centos7 ~]# cat /data/test.txtHello sophia ![root@centos7 ~]#
例子 2,使用重定向符号>和<<,多行写入,先清空文件内容,然后写入。
# 先查看文件内容[root@centos7 ~]# cat /data/test.txtHello sophia !# 多行写入文件[root@centos7 ~]# cat >/data/test.txt<<EOF> Hello> World> !> EOF# 再次查看文件内容[root@centos7 ~]# cat /data/test.txtHelloWorld![root@centos7 ~]#
例子 3,使用重定向符号2>>,将错误信息,追加到文件最后一行。
# 查看文件内容[root@centos7 ~]# cat /data/test.txtHello sophia !# ech 是错误命令,将错误信息追加到 test.txt 文件[root@centos7 ~]# ech Hello world ! 2>>/data/test.txt# 再次查看文件内容[root@centos7 ~]# cat /data/test.txtHello sophia !-bash: ech: command not found[root@centos7 ~]#
例子 4,使用重定向符合,同时收集正确和错误 2 种信息。
第一种,方法:
# 查看文件内容[root@centos7 ~]# cat /data/test.txtHello sophia !# 正确执行命令写入 Hello abc![root@centos7 ~]# echo Hello abc! >>/data/test.txt 2>>/data/test.txt[root@centos7 ~]# cat /data/test.txtHello sophia !Hello abc!# 错误执行命令写入 Hello abc![root@centos7 ~]# ech Hello abc! >>/data/test.txt 2>>/data/test.txt[root@centos7 ~]# cat /data/test.txtHello sophia !Hello abc!-bash: ech: command not found[root@centos7 ~]#
第二种,方法:
[root@centos7 ~]# echo Hello abc! >>/data/test.txt 2>&1[root@centos7 ~]# cat /data/test.txtHello sophia !Hello abc!-bash: ech: command not foundHello abc![root@centos7 ~]#
例子 5,使用重定向符号<,把文件内容输出。
# 把 1 2 3 4 5 写入 num.txt 文件[root@centos7 ~]# echo 1 2 3 4 5 >/data/num.txt[root@centos7 ~]# cat /data/num.txt1 2 3 4 5# 把 num.txt 文件内容分组输出[root@centos7 ~]# xargs -n2 </data/num.txt1 23 45[root@centos7 ~]#
2. 通配符
星号*为通配符,表示所有任何东西。
例如,显示/root/目录下的,所有以da开头的文件夹。
[root@centos7 ~]# ls -l /root/total 16-rw-------. 1 root root 1707 Apr 10 20:32 anaconda-ks.cfgdrwxr-xr-x. 2 root root 4096 Apr 18 11:40 datadrwxr-xr-x. 2 root root 4096 Apr 18 14:01 data2drwxr-xr-x. 2 root root 4096 Apr 18 14:03 data3# 使用通配符[root@centos7 ~]# ls -l /root/da*/root/data:total 4-rw-r--r--. 1 root root 37 Apr 18 19:22 test.txt/root/data2:total 0/root/data3:total 0[root@centos7 ~]#
3. 点符号
符号
..表示当前目录上一级目录。例如,返回上一级目录,使用命令
cd ..。符号
.表示当前目录。例如,复制
/data/目录里的test.txt文件到当前目录,使用命令cp data/test.txt .[root@centos7 ~]# cp /root/data/test.txt .[root@centos7 ~]# ls -ltotal 20drwxr-xr-x. 2 root root 4096 Apr 18 11:40 data-rw-r--r--. 1 root root 37 Apr 18 20:18 test.txt[root@centos7 ~]#
4. 波浪号 ~
波浪号~表示当前用户的家目录。
例如,当使用 root 用户登陆系统:
[root@centos7 ~]# pwd/root
此时 root 用户的家目录为
/root。例如,当使用其他普通用户 sophia 登陆系统:
[root@centos7 ~]# su - sophia[sophia@centos7 ~]$ pwd/home/sophia
此时 sophia 用户的家目录为
/home/sophia。例如,列出用户家目录下的全部文件。
[root@centos7 tmp]# ll -A ~total 60-rw-------. 1 root root 1707 Apr 10 20:32 anaconda-ks.cfg-rw-------. 1 root root 15860 May 6 09:24 .bash_history-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile-rw-r--r--. 1 root root 176 Apr 19 14:38 .bashrc-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrcdrwxr-xr-x. 3 root root 4096 Apr 28 18:24 datadrwxr-xr-x. 2 root root 4096 Apr 18 14:01 data2drwxr-xr-x. 2 root root 4096 Apr 18 14:03 data3-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc-rw-r--r--. 1 root root 37 Apr 18 20:23 test.txt-rw------- 1 root root 3318 Apr 28 19:53 .viminfo[root@centos7 tmp]#
例如,在任意目录下,直接回到用户家目录。
[root@centos7 tmp]# cd ~[root@centos7 ~]# pwd/root[root@centos7 ~]#
或者,不使用波浪号
~,直接输入cd回车,也可以回到用户家目录。[root@centos7 tmp]# pwd/tmp[root@centos7 tmp]# cd[root@centos7 ~]# pwd/root[root@centos7 ~]#
5. 减号 -
单独的减号-是无意义的,它只能与其它命令一起使用。
减号与
cd一起使用cd -命令,用于返回上一次所在目录。# 进入 /tmp/ 目录[root@centos7 ~]# cd /tmp/[root@centos7 tmp]# pwd/tmp# 返回 /root/ 目录[root@centos7 tmp]# cd -/root[root@centos7 ~]# pwd/root[root@centos7 ~]#
减号
-参数相当于环境变量$OLDPWD,使用cd -命令等于使用cd $OLDPWD命令。# 当前所在目录为 /tmp[root@centos7 tmp]# pwd/tmp# 返回上一次所在目录 /root[root@centos7 tmp]# cd $OLDPWD[root@centos7 ~]# pwd/root[root@centos7 ~]# cd $OLDPWD[root@centos7 tmp]# pwd/tmp[root@centos7 tmp]#
6. 叹号 !
叹号!用于查找并运行历史命令。
例如,执行!echo命令。在命令的历史记录中,找到最近一条包含echo的命令,并且,执行该命令。
# 当第一次 cat 时,文件内无任何内容。[root@centos7 ~]# cat test-3.txt# 使用 echo 添加一行内容。[root@centos7 ~]# echo hello! >> test-3.txt# 第二次 cat 时,文件只有一行内容。[root@centos7 ~]# cat test-3.txthello!# 执行 !echo 命令[root@centos7 ~]# !echoecho hello! >> test-3.txt[root@centos7 ~]# cat test-3.txthello!hello!
由此可见,当执行!echo命令时,是比较危险的,除非你记得最近一条命令是做了什么。
还可以使用history命令,查找执行命令记录,这种是比较安全的,它只是显示记录并不会执行。
[root@centos7 ~]# history | grep echo...1006 echo hello! >> test-3.txt1009 history | grep echo...
7. 大括号 {}
大括号{}用于生成序列。
例 1,在命令行中打印 1-10 数字。
[root@centos7 ~]# echo {1..10}1 2 3 4 5 6 7 8 9 10# 数字前面补零,统一占位。[root@centos7 ~]# echo {01..10}01 02 03 04 05 06 07 08 09 10
例 2,在命令行中打印 a-z 字母。
[root@centos7 ~]# echo {a..z}a b c d e f g h i j k l m n o p q r s t u v w x y z
例 3,在命令行打印指定多个字符。
[root@centos7 ~]# echo {a,b,c,2019,2020,2021}a b c 2019 2020 2021
例 4,添加前缀或后缀。
[root@centos7 ~]# echo number:{01..10}number:01 number:02 number:03 number:04 number:05 number:06 number:07 number:08 number:09 number:10[root@centos7 ~]# echo {01..10}-str01-str 02-str 03-str 04-str 05-str 06-str 07-str 08-str 09-str 10-str
例 5,通过大括号{}备份一个文件。
[root@centos7 ~]# echo Hello! > test.txt[root@centos7 ~]# cat test.txtHello!# 把 test.txt 文件,备份为 test.txt.bak[root@centos7 ~]# cp test.txt{,.bak}[root@centos7 ~]# find . -type f -name "test.txt*"./test.txt.bak./test.txt[root@centos7 ~]# cat test.txt.bakHello!
原理是,执行了拼接后的命令,类似这样的cp test.txt test.txt.bak。
[root@centos7 ~]# echo A{,C}A AC
注意,逗号前面为空。并且,只适用备份一个文件的时候。
(完)