linux 管道符重定向

2022-10-23 16:26:19 浏览数 (1)

输入重定向来讲,用到的符号及其作用如表3-1所示。

表3-1                                         输入重定向中用到的符号及其作用

符号

作用

命令 < 文件

将文件作为命令的标准输入

命令 << 分界符

从标准输入中读入,直到遇见分界符才停止

命令 < 文件1 > 文件2

将文件1作为命令的标准输入并将标准输出到文件2

对于输出重定向来讲,用到的符号及其作用如表3-2所示。

表3-2                                         输出重定向中用到的符号及其作用

符号

作用

命令 > 文件

将标准输出重定向到一个文件中(清空原有文件的数据)

命令 2> 文件

将错误输出重定向到一个文件中(清空原有文件的数据)

命令 >> 文件

将标准输出重定向到一个文件中(追加到原有内容的后面)

命令 2>> 文件

将错误输出重定向到一个文件中(追加到原有内容的后面)

命令 >> 文件 2>&1或命令 &>> 文件

将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)

代码语言:javascript复制
[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:]]

标点符号

代码语言:javascript复制
[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

保存的历史命令记录条数

MAIL

邮件保存路径

LANG

系统语言、语系名称

RANDOM

生成一个随机数字

PS1

Bash解释器的提示符

PATH

定义解释器搜索用户执行命令的路径

EDITOR

用户默认的文本编辑器

Tips

直接在终端设置的变量能够立即生效,但在重启服务器后就会失效,因此我们需要将变量和变量值写入到.bashrc或者.bash_profile文件中

0 人点赞