博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通配符及输入输出重定向、管道符和作业控制
阅读量:6067 次
发布时间:2019-06-20

本文共 2488 字,大约阅读时间需要 8 分钟。

hot3.png

43ae21cd4f4da596b44ae6ef8b4e09fd6d7.jpg

 

1、通配符 *

 

“ * ”表示通配,见下图,

cc82a9cc4bc647c916b3995cadb27075814.jpg

当前目录下有5个 txt 文件。也有其他写法,结果也是不一样,见下图,

1d2a4ed4b19a87978d19c17ec52826390de.jpg

以上就是 * ,和 * 有对比的字符是 ? 。见下图,

f1cedbb75ca41fe45e0845e13adf7f8edeb.jpg

?表示一个任意的字符,数字和英文字母都可以。接着做对比,见下图,

5c6137c257068bfa83a76f365c5cddfa69d.jpg

 

还有一种用法是使用中括号,见下图,

5df4b7e59917c70c0bf34d86eaf6fff7eea.jpg

 

还有花括号的用法,见下图,

7e684c259bff19462925b592730b3bfa3d1.jpg

与中括号不同的是,花括号里面的字符需要用“,”号隔开。

 

2、输入输出重定向

 

> 表示输入输出重定向,举个例子,见下图,

c852957d4afb55fb6bc90fe398ac25b93aa.jpg

查看 1.txt 和 2.txt 文件,里面没有内容,使用 vi 命令在里面写上一串数字。从上图中可以看出, cat 1.txt > 2.txt 这个命令表示将 1.txt 的内容重定向到 2.txt ,就是将 2.txt 的内容删除掉,将 1.txt 的内容重写到 2.txt 。

 

>> 表示追加内容,举个例子,见下图,

243e8979bb00b6600b45499c20ece260e8a.jpg

为了将 1.txt 和 2.txt 文件区别开,编辑更改一下 2.txt 里面的内容,然后输入命令 cat 1.txt >> 2.txt ,可以看到,1.txt 里的内容追加到 2.txt 上了。

 

2> 会把这个命令产生的错误信息,指定输入到一个文件里,表示错误的输出。举个例子,见下图,

feb518432c4a31771fc5a40f331d1a1e587.jpg

运行一个有问题的命令 lsaaa ,提示未找到命令。这时候可以把这个错误信息定向到文件 a.txt 里去。然后用命令 cat a.txt 查看,里面的文件内容就是刚才的错误信息“-bash: lsaaa: 未找到命令”。上图中的 2>> 表示追加重定向。

 

总结一下:

>       表示输出,输出到指定的文件

>>    表示追加重定向

2>     表示错误的重定向

2>>  表示错误的追加重定向

 

那么,我们也可以把 > 和 2> 结合起来,写成 &> ,表示正确和错误的输出信息全部定向到一个文件里去。举个例子,见下图,

2ca506d95e8f65d216c31df66cd006ab483.jpg

同样也支持追加,表示为 &>> ,见下图,

059c5f55419bf21d72914426ca93d0d1717.jpg

还有一种方法,把正确和错误的输出区分开,见下图,

18e5cfa5a530e0be2ff8ccb76a371498d11.jpg

表示正确的输出到 1.txt 文件,错误的输出到 a.txt 文件。这个以后写 shell 脚本的时候,用的比较多。

 

< 表示为输入重定向。举个例子,见下图,

d2ade4c490c690ad066f4bfd985cbcd8722.jpg

wc -l 为查看文本文档行数的命令,< 输入重定向的左边一定是一条命令,右边是文件。上图第二条命令里面,尝试左边为文件的时候,出现报错。

输入重定向做个了解即可,一般工作中用不到。

 

管道符和作业控制

80cc4e13a0d8490f0d33e5a79f0fb2a6ee9.jpg

 

3、管道符

 

管道符之前介绍过,它表示把一个文件的输出内容传递给后面的命令。举个例子,见下图,

3c7726bccc16e4f42c55c32a5098f3b9523.jpg

关于管道符,有很多命令是可以用的,就是把前面命令输出的结果,交给后面的命令。后面会经常用到。

 

4、作业控制

 

之前说过一个快捷键,ctrl + z ,表示暂停一个任务。见下图,

61fc0feaff8907c42c7dbcaa1e86326af2e.jpg

输入命令 vim 1.txt ,回车,进入文件 1.txt 编辑。这时候想暂时退出来做其他事情的话,就可以使用 ctrl +z 命令来停止,这时候就可以退出来回到命令窗口,做其他的事情。那么 vim 这个命令其实还在后台,怎么再调出来呢?输入命令 fg ,回车,见下图,

b3cee92c28a245d7e7a71195d892d53960a.jpg

又进入 vim 1.txt 这个页面里。fg 就是 front ground ,到前面来的意思。

4c3c22ed1be62a67a712d85bd12b3927e5e.jpg

后台的运行文件可以有多个,注意上图中的数字序号,命令 jobs 可以列出后台运行的任务信息。现在要把后台运行的任务调出来的话,命令 fg 后面就要加上 id 号,例如 fg 1 或是 fg 2 。若直接输入 fg 的话,默认是跳出最后执行的一个任务。

 

既然有 front ground ,也就有 back ground ,命令为 bg ,调到后台去。见下图,

5adc010526d46274cd1caddb5cbb3a240ff.jpg

将 vim a.txt 任务调到后台去,就变成上图红色框框的内容,相当于在后台运行。一般使用 vim 命令是达不到这种效果的,

现在运行命令 vmstat 1 ,这个命令后面会讲到,它会自带的显示系统的状态,而且是不停的显示。按住 ctrl + z ,就可以停止命令,然后输入 fg 命令,就可以把它调回来,接着按住 ctrl + z ,就可以停止命令,再输入 bg ,

f4cebfeed8d9ce6488fb70f2db7032b49b1.jpg

就可以让它在后台运行,在运行的过程中,也可以运行其他命令,命令输入正确即可,即使被打断了也没有关系。见下图,

da9a636ec37b80f167b2499b880b1c4de75.jpg

可以看到 vmstat 1 在运行中。接着见下图,

bd77b0848a9ea490a581da73affa3c3d23c.jpg

输入 fg ,可以进入 vim 1.txt ,进去之后,vmstat 1 还在一直运行,输入 :q! ,强制退出,然后输入 jobs ,可以看到,只有一个任务运行。

808ad7b9beb89eea436de3839591f15a7d6.jpg

目前为止, vmstat 1 还在后台运行,把它调到前台,输入 fg 命令,回车,就进入前台执行命令。这时候,输入其他命令就不管用了。可以按住 ctrl + c ,直接结束命令。执行命令 jobs ,就可以看到没有任务了。

a4d624ce5880028cd1b614554205d3bca2e.jpg

 

刚才说到一个观点,运行一条像 vmstat 1 这样的命令时,使用 bg 命令把它调到后台去,显示成运行中,还是会运行的。但是这边 vim 的命令是不算的,因为停止一条 vim 命令,不管是在前台还是后台,都是不会运行、停止的状态。

 

接着介绍一个命令 sleep ,sleep 1000 表示暂停1000秒,整个工作暂停运行,1000秒之后才会恢复。见下图,

742d5c5f82783eba90bfcf01ddddc164fcc.jpg

bg 就是把一条命令调到后台去运行。还有一个命令,可以不用先运行命令,就能直接在后台运行,加一个 & ,见下图,

83adc881c0a126e3a720e22c09c3279f37a.jpg

这边说一下 xshell ,如果另外打开一个终端,运行 jobs 命令,是看不到命令的。意思就是这个终端看不到另外一个终端后台运行的命令,但是可以看到进程,输入命令 ps aux |grep sleep ,回车,

关于 ps 命令,后面还会说到。

 

总结:

ctrl + z             暂停一个命令

fg                     调出一个命令到前台

bg                    将一个命令调到后台并运行

&                     在一条命令后面加上这个符号,可以直接将命令调到后台运行

sleep +时间      暂停系统多少秒

vmstat 1           不停的显示系统状态命令

 

转载于:https://my.oschina.net/u/3867265/blog/1836212

你可能感兴趣的文章
反射操作公共成员变量
查看>>
linux在文件中查找指定字符串,然后根据查找结果来做进一步的处理
查看>>
小孩的linux
查看>>
CSS3 transforms 3D翻开
查看>>
java基础---->正则表达式
查看>>
2.2013/06/13_log(n)+1
查看>>
关于加载iframe时进度条不消失的问题
查看>>
poj 3984迷宫问题【广搜】
查看>>
oracle ORA-01840:输入值对于日期格式不够长
查看>>
python基础知识~logger模块
查看>>
SIP入门(二):建立SIPserver
查看>>
Servlet3.0的异步
查看>>
WebService连接postgresql( 失败尝试)
查看>>
从头认识java-13.11 对照数组与泛型容器,观察类型擦除给泛型容器带来什么问题?...
查看>>
Python-MacOSX下SIP引起的pip权限问题解决方案(非取消SIP机制)
查看>>
从MFQ方法到需求分析
查看>>
android.view.WindowManager$BadTokenException: Unable to add window
查看>>
HDU5012:Dice(bfs模板)
查看>>
iphone openssh
查看>>
Linux下MEncoder的编译
查看>>