LINUX里写命令的快捷方式,Linux基础命令(6)重定向、特殊符、快捷键

释放双眼,带上耳机,听听看~!

输入/输出重定向

大多数 Linux 系统命令从你的终端接受输入并将所产生的输出发送回​​到您的终端。一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端。同样,一个命令通常将其输出写入到标准输出,默认情况下,这也是你的终端。

重定向命令列表如下:

命令说明

command > file将输出重定向到 file。

command < file将输入重定向到 file。

command >> file将输出以追加的方式重定向到 file。

n > file将文件描述符为 n 的文件重定向到 file。

n >> file将文件描述符为 n 的文件以追加的方式重定向到 file。

n >& m将输出文件 m 和 n 合并。

n

<< tag将开始标记 tag 和结束标记 tag 之间的内容作为输入。注意:若file(文件)不存在,则直接创建一个。

文件描述符

当执行shell命令时,会默认打开3个文件,每个文件有对应的文件描述符来方便我们使用:

类型文件描述符默认情况对应文件句柄位置标准输入(standard input)0从键盘获得输入/proc/self/fd/0

标准输出(standard output)1输出到屏幕(即控制台)/proc/self/fd/1

错误输出(error output)2输出到屏幕(即控制台)/proc/self/fd/2

所以我们平时在执行shell命令中,都默认是从键盘获得输入,并且将结果输出到控制台上。但是我们可以通过更改文件描述符默认的指向,从而实现输入输出的重定向。比如我们将1指向文件,那么标准的输出就会输出到文件中。

示例:在我们执行ls a.txt b.txt之后,一共有两种输出,其中ls:无法访问b.txt: 没有那个文件或目录是错误输出,a.txt是标准输出。

%E9%87%8D%E5%AE%9A%E5%90%911.png

我们使用>或者>>对输出进行重定向。符号的左边表示文件描述符,如果没有的话表示1,也就是标准输出,符号的右边可以是一个文件,也可以是一个输出设备。当使用>时,会判断右边的文件存不存在,如果存在的话就先删除,然后创建一个新的文件,不存在的话则直接创建。但是当使用>>进行追加时,则不会删除原来已经存在的文件。

>/dev/null

这条命令的作用是将标准输出1重定向到/dev/null中。 /dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”。那么执行了>/dev/null之后,标准输出就会不再存在,没有任何地方能够找到输出的内容。

2>&1

这条命令用到了重定向绑定,采用&可以将两个输出绑定在一起。这条命令的作用是错误输出将和标准输出同用一个文件描述符,说人话就是错误输出将会和标准输出输出到同一个地方。

Linux在执行shell命令之前,就会确定好所有的输入输出位置,并且从左到右依次执行重定向的命令,所以>/dev/null 2>&1的作用就是让标准输出重定向到/dev/null中(丢弃标准输出),然后错误输出由于重用了标准输出的描述符,所以错误输出也被定向到了/dev/null中,错误输出同样也被丢弃了。执行了这条命令之后,该条shell命令将不会输出任何信息到控制台,也不会有任何信息输出到文件中。

常用重定向示例:

将ls a.txt b.txt中的错误输出丢入黑洞:ls a.txt b.txt 2>/dev/null

%E9%87%8D%E5%AE%9A%E5%90%912.png

将cat test1.txt的输出追加到test2.txt: cat test1.txt >> test2.txt(若是cat test1.txt > test2.txt则test2.txt的内容会被test1.txt覆盖)

%E9%87%8D%E5%AE%9A%E5%90%913.png

清空test2.txt的内容:cat /dev/null > test2.txt

%E9%87%8D%E5%AE%9A%E5%90%914.png

将cat test1.txt的标准输入重定向到a.txt,标准输出重定向到test2.txt: cat test1.txt test2.txt

%E9%87%8D%E5%AE%9A%E5%90%915.png

管道符、特殊符号

1、管道符:

linux中管道符“|”的作用

命令格式:命令A|命令B,即命令A的正确输出作为命令B的操作对象例如:

ps aux | grep “test” 在 ps aux中的結果中查找test。

find -name “*.txt” | xargs grep “good” 把find的结果当成参数传入到grep中,即在那些文件内部查找good关键字。

cat *.dat|grep 2018 显示dat文件里的信息,在dat文件里显示条件带有2018的信息。

2、多命令符:

; 多个命令互相不影响,命令之间没有任何逻辑联系

例:touch 11.txt; rm -rf test1.txt(新建11.txt文件,删除test.txt文件)

a && b a命令执行成功才执行b命令,a命令不成功则不执行b

例:touch 11.txt&& rm -rf 11.txt(先建立新文件11.txt,然后删除11.txt)

a || b a成功不执行b a失败才执行b

例:touch 11.txt|| rm -rf test1.txt(如果建立11.txt成功,则不删除test1.txt)

ifconfig && echo “成功” || echo “失败” 可用来判断第一个命令是否成功

3、后台执行: “&”

用户有时候执行命令要花很长时间,可能会影响做其他事情。最好的方法是将它放在后台执行。后台运行的程序在用户注销后系统还可以继续执行。当要把命令放在后台执行时,在命令的后面加上“&”

4、斜线: /

在路径表示中代表目录

cd /data1/conf/

单一的/,代表root根目录

在运算中,代表除法

a=10/2

5、反斜线: \

放在指令前,有取消 aliases的作用;放在特殊符号前,该特殊符号的作用消失,;放在指令的最末端,表示指令连接下一行。

$cat data2

the cost is $4.00

$sed -n ‘/ \ $ /p’data2

the cost is $4.00

6、井号:

#:管理员

$:普通用户

脚本中的:#号是注释

如果被用在指令中,或者引号双引号括住的话,或者在倒斜线的后面,那他就变成一般符号,不具上述的特殊功能。

7、星号: *

常用的符号,在文件名扩展上,用来代表任何字元,包含null字元

例:rm *.txt(删除所有以“.txt”结尾的文件)

rm -rf *a*(删除所有含有字符“a”的文件和目录)

在运算时。它代表“乘法”:let “aa=2*3”

除了内建指令let,还有一个关于运算的指令expr,星号在这里也担任“乘法”的角色。

8、问号: ?

问号表明前面的字符可以出现0次或1次,不包含null字元

ls da?ta

常用快捷键

[tab] 键

在linux所有的shell中,[tab]是最常用的也是linux的bash  shell中最棒的功能;它具有命令补全和档案补全的功能。

举例1:命令补全(只需要输入pw,再按两下tab键,就会出现所有可能的命令)

tab%E9%94%AE.png

举例2:文件名和目录名补全(只需要输入te,再按两下tab键,就会出现所有可能的文件,如果只有一个符合的,则按一下tab键会直接补全)

tab%E9%94%AE2.png

Ctrl+c:这个键可不是用来复制的,在中端下,按下Ctrl+C就代表结速当前终端执行的程序,按下的时候一定要慎重。

Ctrl+a:将光标移动到命令行的开始处。 Ctrl+E:将光标移动到命行令的结尾处。

Ctrl+u:删除行首到光标出的字符。

Ctrl+d:退出,相当于logout。

Ctrl+u:剪切,可是说是删除也不为过(Ctrl+y可粘贴回来)。

Ctrl+k:删除光标以后的。

Ctrl+z:把当前进程送到后台处理。

Ctrl+r:搜索历史命令。(输入后显示历史命令)。

Ctrl + l:清除屏幕输出(清屏)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值