输入重定向来讲,用到的符号及其作用如表3-1所示。
表3-1 输入重定向中用到的符号及其作用
符号 | 作用 |
---|---|
命令 < 文件 | 将文件作为命令的标准输入 |
命令 << 分界符 | 从标准输入中读入,直到遇见分界符才停止 |
命令 < 文件1 > 文件2 | 将文件1作为命令的标准输入并将标准输出到文件2 |
对于输出重定向来讲,用到的符号及其作用如表3-2所示。
表3-2 输出重定向中用到的符号及其作用
符号 | 作用 |
---|---|
命令 > 文件 | 将标准输出重定向到一个文件中(清空原有文件的数据) |
命令 2> 文件 | 将错误输出重定向到一个文件中(清空原有文件的数据) |
命令 >> 文件 | 将标准输出重定向到一个文件中(追加到原有内容的后面) |
命令 2>> 文件 | 将错误输出重定向到一个文件中(追加到原有内容的后面) |
命令 >> 文件 2>&1或命令 &>> 文件 | 将标准输出与错误输出共同写入到文件中(追加到原有内容的后面) |
[root@rhel ~]# mkdir /test
[root@rhel ~]# echo 123456789 >> /tmp/num.txt
[root@rhel ~]# cat /tmp/num.txt
123456789
[root@rhel ~]# mv /tmp/num.txt /test
[root@rhel ~]# cat /test/num.txt
123456789
[root@rhel ~]# man bash > readme.txt
[root@rhel ~]# mv readme.txt /test
[root@rhel ~]# cat /test/readme.txt
[root@rhel test]# echo "Welcome to LinuxProbe.Com" > readme.txt
[root@rhel test]# cat readme.txt
Welcome to LinuxProbe.Com
[root@rhel test]# echo "Quality linux learning materials" >> readme.txt
[root@rhel test]# cat readme.txt
Welcome to LinuxProbe.Com
Quality linux learning materials
Linux系统中的通配符及含义
通配符 | 含义 |
---|---|
* | 任意字符 |
? | 单个任意字符 |
[a-z] | 单个小写字母 |
[A-Z] | 单个大写字母 |
[a-Z] | 单个字母 |
[0-9] | 单个数字 |
[[:alpha:]] | 任意字母 |
[[:upper:]] | 任意大写字母 |
[[:lower:]] | 任意小写字母 |
[[:digit:]] | 所有数字 |
[[:alnum:]] | 任意字母加数字 |
[[:punct:]] | 标点符号 |
[root@rhel test]# ls -l /etc/*.conf //------*/
[root@rhel test]# ls -l /dev/sda*
brw-rw----. 1 root disk 8, 0 Oct 23 09:29 /dev/sda
brw-rw----. 1 root disk 8, 1 Oct 23 09:29 /dev/sda1
brw-rw----. 1 root disk 8, 2 Oct 23 09:29 /dev/sda2
[root@rhel test]# ls -l /dev/sda?
brw-rw----. 1 root disk 8, 1 Oct 23 09:29 /dev/sda1
brw-rw----. 1 root disk 8, 2 Oct 23 09:29 /dev/sda2
[root@rhel test]# ls -l /dev/sda[0-9]
brw-rw----. 1 root disk 8, 1 Oct 23 09:29 /dev/sda1
brw-rw----. 1 root disk 8, 2 Oct 23 09:29 /dev/sda2
通配符不仅可用于搜索文件或代替被通配的字符,还可以与创建文件的命令相结合,一口气创建出好多个文件。不过在创建多个文件时,需要使用大括号,并且字段之间用逗号间隔:
代码语言:javascript复制[root@rhel test]# touch {AA,BB,CC}.conf
[root@rhel test]# ls
AA.conf BB.conf CC.conf num.txt readme.txt stderr.txt
[root@rhel test]# echo file{1,2,3,4,5}
file1 file2 file3 file4 file5
[root@rhel test]# ll
total 8
-rw-r--r--. 1 root root 0 Oct 23 15:58 AA.conf
-rw-r--r--. 1 root root 0 Oct 23 15:58 BB.conf
-rw-r--r--. 1 root root 0 Oct 23 15:58 CC.conf
-rw-r--r--. 1 root root 10 Oct 23 15:23 num.txt
-rw-r--r--. 1 root root 59 Oct 23 15:29 readme.txt
-rw-r--r--. 1 root root 0 Oct 23 15:32 stderr.txt
常用的转义字符
为了能够更好地理解用户的表达,Shell解释器还提供了特别丰富的转义字符来处理输入的特殊数据。
4个最常用的转义字符如下所示。
代码语言:javascript复制反斜杠():使反斜杠后面的一个变量变为单纯的字符。 单引号(' '):转义其中所有的变量为单纯的字符串。 双引号(" "):保留其中的变量属性,不进行转义处理。 反引号(` `):把其中的命令执行后返回结果。
[root@rhel test]# PRICE=5
[root@rhel test]# echo "Price is $PRICE"
Price is 5
[root@rhel test]# echo "Price is $$PRICE"
Price is $5
[root@rhel test]# echo `uname -a`
Linux rhel 3.10.0-1160.el7.x86_64 #1 SMP Tue Aug 18 14:50:17 EDT 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@rhel test]# echo 'uname -a'
uname -a
3.5 重要的环境变量
变量是计算机系统用于保存可变值的数据类型。在Linux系统中,变量名称一般都是大写的,命令则都是小写的,这是一种约定俗成的规范。Linux系统中的环境变量是用来定义系统运行环境的一些参数,比如每个用户不同的家目录、邮件存放位置等。可以直接通过变量名称来提取到对应的变量值。
PATH是由多个路径值组成的变量,每个路径值之间用冒号间隔,对这些路径的增加和删除操作将影响到Bash解释器对Linux命令的查找。
代码语言:javascript复制[root@rhel test]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
表3-4 Linux系统中最重要的10个环境变量
变量名称 | 作用 |
---|---|
HOME | 用户的主目录(即家目录) |
SHELL | 用户在使用的Shell解释器名称 |
HISTSIZE | 输出的历史命令记录条数 |
HISTFILESIZE | 保存的历史命令记录条数 |
邮件保存路径 | |
LANG | 系统语言、语系名称 |
RANDOM | 生成一个随机数字 |
PS1 | Bash解释器的提示符 |
PATH | 定义解释器搜索用户执行命令的路径 |
EDITOR | 用户默认的文本编辑器 |
Tips
直接在终端设置的变量能够立即生效,但在重启服务器后就会失效,因此我们需要将变量和变量值写入到.bashrc或者.bash_profile文件中