CentOS 7 特殊符号
介绍在 CentOS 7 系统中的一些特殊符号,并且如何使用它们。包括重定向符号、通配符、点符号等。
1. 重定向符号
符号 | 名称 | 描述 |
---|---|---|
> 或 1> |
标准输出重定向 | 先清空文件已有内容,然后把新内容写入文件。表示当命令执行正确时内容才会写入到文件。 |
>> 或 1>> |
标准输出追加重定向 | 把内容追加到文件最后一行。表示当命令执行正确时内容才会写入到文件。 |
2> |
标准错误输出重定向 | 先清空文件已有内容,然后把新内容写入文件。表示当命令执行错误时,将错误信息写入到文件。 |
2>> |
追加标准错误输出重定向 | 把内容追加到文件最后一行。表示当命令执行错误时,将错误信息写入到文件。 |
< 或 0< |
标准输入重定向 | 把文件内容输出。 |
<< 或 0<< |
追加输入重定向 | 追加到文件底部。 |
例子 1,使用重定向符号>
,单行写入,先清空文件内容,然后写入。
# 先查看文件内容
[root@centos7 ~]# cat /data/test.txt
Hello world !
Hello sophia
Hello
World
!
# 把内容 Hello sophia ! 写入文件
[root@centos7 ~]# echo Hello sophia ! >/data/test.txt
# 再次查看文件内容
[root@centos7 ~]# cat /data/test.txt
Hello sophia !
[root@centos7 ~]#
例子 2,使用重定向符号>
和<<
,多行写入,先清空文件内容,然后写入。
# 先查看文件内容
[root@centos7 ~]# cat /data/test.txt
Hello sophia !
# 多行写入文件
[root@centos7 ~]# cat >/data/test.txt<<EOF
> Hello
> World
> !
> EOF
# 再次查看文件内容
[root@centos7 ~]# cat /data/test.txt
Hello
World
!
[root@centos7 ~]#
例子 3,使用重定向符号2>>
,将错误信息,追加到文件最后一行。
# 查看文件内容
[root@centos7 ~]# cat /data/test.txt
Hello sophia !
# ech 是错误命令,将错误信息追加到 test.txt 文件
[root@centos7 ~]# ech Hello world ! 2>>/data/test.txt
# 再次查看文件内容
[root@centos7 ~]# cat /data/test.txt
Hello sophia !
-bash: ech: command not found
[root@centos7 ~]#
例子 4,使用重定向符合,同时收集正确和错误 2 种信息。
第一种,方法:
# 查看文件内容
[root@centos7 ~]# cat /data/test.txt
Hello sophia !
# 正确执行命令写入 Hello abc!
[root@centos7 ~]# echo Hello abc! >>/data/test.txt 2>>/data/test.txt
[root@centos7 ~]# cat /data/test.txt
Hello sophia !
Hello abc!
# 错误执行命令写入 Hello abc!
[root@centos7 ~]# ech Hello abc! >>/data/test.txt 2>>/data/test.txt
[root@centos7 ~]# cat /data/test.txt
Hello 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.txt
Hello sophia !
Hello abc!
-bash: ech: command not found
Hello 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.txt
1 2 3 4 5
# 把 num.txt 文件内容分组输出
[root@centos7 ~]# xargs -n2 </data/num.txt
1 2
3 4
5
[root@centos7 ~]#
2. 通配符
星号*
为通配符,表示所有任何东西。
例如,显示/root/
目录下的,所有以da
开头的文件夹。
[root@centos7 ~]# ls -l /root/
total 16
-rw-------. 1 root root 1707 Apr 10 20:32 anaconda-ks.cfg
drwxr-xr-x. 2 root root 4096 Apr 18 11:40 data
drwxr-xr-x. 2 root root 4096 Apr 18 14:01 data2
drwxr-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 -l
total 20
drwxr-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 .cshrc
drwxr-xr-x. 3 root root 4096 Apr 28 18:24 data
drwxr-xr-x. 2 root root 4096 Apr 18 14:01 data2
drwxr-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.txt
hello!
# 执行 !echo 命令
[root@centos7 ~]# !echo
echo hello! >> test-3.txt
[root@centos7 ~]# cat test-3.txt
hello!
hello!
由此可见,当执行!echo
命令时,是比较危险的,除非你记得最近一条命令是做了什么。
还可以使用history
命令,查找执行命令记录,这种是比较安全的,它只是显示记录并不会执行。
[root@centos7 ~]# history | grep echo
...
1006 echo hello! >> test-3.txt
1009 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}-str
01-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.txt
Hello!
# 把 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.bak
Hello!
原理是,执行了拼接后的命令,类似这样的cp test.txt test.txt.bak
。
[root@centos7 ~]# echo A{,C}
A AC
注意,逗号前面为空。并且,只适用备份一个文件的时候。
(完)