Linux 命令-符号及重定向

本文详细介绍了Linux系统中的符号如分隔符、管道、重定向符号等,包括输入重定向(如`<`和`<<`)、输出重定向(如`>`、`>>>`和`2>&1`),以及标准输入、输出和错误的使用,以及特殊文件/dev/null的应用实例。
摘要由CSDN通过智能技术生成

Linux 符号

普通符号

参数:

符号含义
;多个命令的分隔符
/根或者路径的分隔符
..上一级目录
.当前目录
~用户的家目录
|管道,通过管道把前一个命令的输出交给后一个命令继续处理
{}可以配合echo打印序列 echo {1…6},用途比较广泛

示例:

[root@localhost ~]# cat anaconda-ks.cfg | grep Root
# Root password
[root@localhost ~]# echo {1..6}
1 2 3 4 5 6
# ; 会将两个命令都执行一遍,即打印两次内容
[root@localhost ~]# ll; cat anaconda-ks.cfg

重定向符号

输入重定向

功能:标准输入/输入重定向:输入重定向用于改变命令的输出,指定输出内容,后跟文件名.
参数:

符号含义
命令 < 文件将制定文件作为命令的输入设备
命令 << 分解符表示从标准输入设备中读入,直到遇到分解符才停止(读入的数据不包括分解符) ,这里的分解符其实就是自定义的字符串
命令 < 文件1 > 文件2将文件1作为命令的输入设备,该命令的执行结果输出到文件2中

示例:
以/etc/passwd 文件为例,执行如下命令:

[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

# 加入 < 
[root@localhost ~]# cat < /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
# 输出结果同上面命令相同

/*注意,虽然执行结果相同,但第一行代表是以键盘作为输入设备,而第二行代码 是以/etc/passwd 文件作为输出设备*/

示例2:<< 分解符

[root@localhost ~]# cat << EOF
> 1
> 2
> 3
> 4
> EOF
/ 当指定了EOF为分解符后,只要不输入EOF分解符,就一直可以输出数据/

示例3:<>

[root@localhost test]# touch a.txt
[root@localhost test]# cat </etc/passwd> a.txt
[root@localhost test]# cat a.txt 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
/ 通过重定向 /etc/passwd 作为输入设备,并将/etc/passwd 文件中的内容 输出重定向到a.txt中,最终实现了将 /etc/passwd 文件中的内容复制到了 a.txt文件中/

输出重定向

备注:相较于输入重定向,使用输出重定向的频率更高,并且和输入重定向不同的是,输出重定向还可以细分为标准输出重定向和错误输出重定向两种。
参数:

符号含义
命令 > 文件将命令执行的标准输出结果重定向输出到指定的文件中,如果该文件已包含数据,则会清空原有数据,再写入新数据
命令 >> 文件将命令执行的标准输出结果重定向输出追加到指定的文件中,如果该文件已包含数据,则在文件的最后面写入新数据
命令 n >& m将输出文件n和m合并

示例:

[root@localhost test]# echo "Thisi is new file" > b.txt 
[root@localhost test]# cat b.txt 
Thisi is new file

# >> 追加
[root@localhost test]# echo "Add a content" >> b.txt 
[root@localhost test]# cat b.txt 
Thisi is new file
Add a content

# 输入并输出重定向
[root@localhost test]# cat b.txt 
root:x:0:0:root:/root:/bin/bash
[root@localhost test]# cat < b.txt > c.txt 
[root@localhost test]# cat c.txt 
root:x:0:0:root:/root:/bin/bash

深入了解重定向

一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件:

  1. 标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。
  2. 标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。
  3. 标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。

参数:

符号含义
命令 2> 文件将命令执行的标准错误输出结果重定向输出到指定的文件中,如果该文件已包含数据,则会清空原有数据,再写入新数据
命令 2>> 文件将命令执行的标准错误输出结果重定向输出追加到指定的文件中,如果该文件已包含数据,则在文件的最后面写入新数据
命令 >> 文件 2>&1将标准输出或错误输出写入到指定文件,如果该文件中已包含数据,新数据将写入到原有内容的后面,注意,第一种格式中,最后的2>&1是一体的,可以认为是固定写法
/dev/null如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到 /dev/null

/dev/null 是一个特殊的文件,写入到它的内容都会被丢弃;如果尝试从该文件读取内容,那么什么也读不到。但是 /dev/null 文件非常有用,将命令的输出重定向到它,会起到"禁止输出"的效果。
示例:

[root@localhost test]# cat b.txt  >> c.txt 2>&1
# /dev/null
[root@localhost test]# cat b.txt >> c.txt 2>&1 /dev/null
  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

现实与梦·

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值