Linux Shell(bash) 重定向技巧

合集下载

shell常用重定向实例讲解

shell常用重定向实例讲解

shell常⽤重定向实例讲解每个打开的⽂件都会被分配⼀个⽂件描述符.stdin (键盘), stdout (屏幕), 和 stderr (错误消息输出到屏幕上)的⽂件描述符分别是0, 1, 和 2. 对于正在打开的额外⽂件, 保留了描述符3到9.⽂件描述符是⽂件系统为了跟踪这个打开的⽂件⽽分配给它的⼀个数字。

下⾯以实例说明1,>的⽤法复制代码代码如下:[zhangy@localhost ~]$ echo "11111" > 1.txt[zhangy@localhost ~]$ cat 1.txt11111[zhangy@localhost ~]$ echo "11111" 1> 1.txt //这个⽤法和上⾯的⽤法是⼀样[zhangy@localhost ~]$ cat 1.txt11111[zhangy@localhost ~]$ echo "22222" >1.txt[zhangy@localhost ~]$ cat 1.txt22222这种⽤法我想⼤家都⾮常的熟悉,因为这是我经常会⽤到的。

echo "11111" > 1.txt 时,>前⾯是有⼀个1的,是默认的。

>重定向到⽂件时,会将⽂件清空,在写⼊。

复制代码代码如下:[zhangy@localhost ~]$ > 1.txt[zhangy@localhost ~]$ :> 1.txt上⾯的这个例⼦,可以把1.txt⽂件中的内容清空,其实也很好理解,清空后,不输⼊内容当然为空了。

2,>>的⽤法复制代码代码如下:[zhangy@localhost ~]$ echo "2222" >> 2.txt[zhangy@localhost ~]$ cat 2.txt2222[zhangy@localhost ~]$ echo "2222" >> 2.txt[zhangy@localhost ~]$ cat 2.txt22222222从上⾯的这个例⼦我们可以看出,>>重定向到⽂件时,会将输出写到⽂件的结尾。

linux的标准输入重定向例子

linux的标准输入重定向例子

linux的标准输入重定向例子
标准输入重定向是将命令的输入从键盘转向其他来源,例如文件或其他命令的输出。

以下是Linux中的标准输入重定向的几个例子:
1. 从文件中读取输入:
```shell
$ command < file.txt
```
这个命令将会将`file.txt`的内容作为`command`命令的输入。

2. 通过管道将命令的输出作为输入:
```shell
$ command1 | command2
```
这个命令将会将`command1`的输出作为`command2`的输入。

3. 结合使用管道和重定向:
```shell
$ command1 | command2 < file.txt
```
这个命令将会将`command1`的输出作为`command2`的输入,而且`command2`的输入还会从
`file.txt`中读取。

4. 使用here文档:
```shell
$ command <<EOF
> input text
> input text
> more input text
> EOF
```
这个命令将会将`input text`作为输入传递给`command`命令。

`<<EOF`表示输入将从当前行延续到文件结尾的`EOF`行。

这些例子展示了如何使用标准输入重定向来改变命令的输入来源。

请注意,标准输入重定向使用`<`符号来指定重定向来源。

linuxshell之终端读写文件数据流和重定向,,《,》

linuxshell之终端读写文件数据流和重定向,,《,》

linuxshell之终端读写⽂件数据流和重定向,,《,》终端实现⽂件中数据流的读写;重定向命令列表如下:命令说明command > file将输出重定向到 file。

将终端数据写到⽂件file中command < file将输⼊重定向到 file。

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

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

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

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

n <& m将输⼊⽂件 m 和 n 合并。

<< tag将开始标记 tag 和结束标记 tag 之间的内容作为输⼊。

需要注意的是⽂件描述符 0 通常是标准输⼊(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)。

这⾥可以⽤于⽇志打印到⽂件;输出重定向重定向⼀般通过在命令间插⼊特定的符号来实现。

特别的,这些符号的语法如下所⽰:command1 > file1上⾯这个命令执⾏command1然后将输出的内容存⼊file1。

注意任何file1内的已经存在的内容将被新内容替代。

如果要将新内容添加在⽂件末尾,请使⽤>>操作符。

实例执⾏下⾯的 who 命令,它将命令的完整的输出重定向在⽤户⽂件中(users):$ who > users执⾏后,并没有在终端输出信息,这是因为输出已被从默认的标准输出设备(终端)重定向到指定的⽂件。

你可以使⽤ cat 命令查看⽂件内容:$ cat users_mbsetupuser console Oct 31 17:35tianqixin console Oct 31 17:35tianqixin ttys000 Dec 1 11:33输出重定向会覆盖⽂件内容,请看下⾯的例⼦:$ echo "菜鸟教程:" > users$ cat users菜鸟教程:$如果不希望⽂件内容被覆盖,可以使⽤ >> 追加到⽂件末尾,例如:$ echo "菜鸟教程:" >> users$ cat users菜鸟教程:菜鸟教程:$输⼊重定向和输出重定向⼀样,Unix 命令也可以从⽂件获取输⼊,语法为:command1 < file1这样,本来需要从键盘获取输⼊的命令会转移到⽂件读取内容。

Shell脚本中的日志记录和日志分析技巧

Shell脚本中的日志记录和日志分析技巧

Shell脚本中的日志记录和日志分析技巧在Shell脚本编程中,日志记录和日志分析是非常重要的一部分。

通过记录和分析日志,可以方便开发人员进行错误排查、性能优化和系统监控。

本文将介绍一些Shell脚本中常用的日志记录和分析技巧。

一、日志记录在Shell脚本中,可以使用echo命令将输出信息打印到屏幕上。

然而,如果需要将重要的输出信息记录到日志文件中,可以通过重定向将echo的输出写入到文件中。

1.创建日志文件在Shell脚本中,可以使用touch命令创建一个新的日志文件。

例如:```#!/bin/bashLOG_FILE="/var/log/my_script.log"touch $LOG_FILE```2.记录日志在Shell脚本中,可以使用重定向符号(>>)将输出信息追加到日志文件中。

例如:```#!/bin/bashLOG_FILE="/var/log/my_script.log"echo "Start script" >> $LOG_FILEecho "Doing something..." >> $LOG_FILEecho "Script completed" >> $LOG_FILE```以上代码会将"Start script"、"Doing something..."和"Script completed"这三行文本追加到日志文件中。

二、日志分析日志分析是指对日志文件中的内容进行统计和分析,以便获取有用的信息。

下面介绍两种常见的日志分析技巧:关键字搜索和日志分析工具的使用。

1.关键字搜索在Shell脚本中,可以使用grep命令对日志文件进行关键字搜索。

grep命令可以根据指定的关键字过滤出包含该关键字的行。

BASH命令详解

BASH命令详解

history [-r|w|a|n] [filename]
这种形式中,-r 选项告诉 history 命令读命令历史列表文件的内容并且把它们当作当前的命令历史列表。-w 选项将把当前的命令历史记录写入文件中并覆盖文件原来的内容。-a 选项把当前的命令历史记录追加到文件中。-n 选项将读取文件中的内容并加入到当前历史命令列表中。如果 filename 选项没有被指定,history 命令将用变量HISTFILE 的值来代替。
help: 显示bash内部命令的帮助信息。
kill: 终止某个进程。
pwd: 显示当前工作目录。
unalias: 删除已定义的别名。
bash 还有许多命令,但这些是最常用的,想了解更详细的情况,请参考bash的手册--在提示符下键入 man bash。
bash 变量
bash 把你先前输入的命令文本保存在一个历史列表中。当你用你的帐号登录后历史列表将根据一个历史文件被初始化。历史文件的文件名被一个叫 HISTFILE 的 bash变量指定。历史文件的缺省名字是 .bash_history。这个文件通常在你的用户目录中。(注意该文件的文件名以一个句号开头,这意味着它是隐含的,仅当你带 -a 或 -A参数的 ls 命令列目录时才可见)
另外你还可以用特殊的字符来定义你的提示符,下面的列表列出了最常用的特殊字符。
字符
含义
!
显示该命令的历史记录编号。
# 显示当前命令的命令编号。
$ 显示$符作为提示符,如果用户是root的话,则显示#号。
显示反斜杠。
d 显示当前日期。
10. 用户化配置bash
为了保存这些用户化配置,必须把它们保存到一个bash的初始化文件里。 你能把任何想每次进入bash都执行的命令放到初始化文件里。这个文件里最常见到的命令通常是alias和变量的初始化。bash的初始化文件叫做 profile。每个使用bash的用户都有一个 .profile文件在他的用户目录里。bash在每次启动时都读取这个文件,并执行所有包含的命令。

bash 教程

bash 教程

bash 教程Bash是一个常用的Shell脚本语言,被广泛用于Linux和Unix 系统中。

它是Bourne Shell的改进版,具有更多的功能和更强大的功能。

Bash的优势之一是其简洁性和易用性。

Bash脚本由一系列命令构成,通过这些命令和操作符可以完成各种任务。

它可以用于编写脚本程序,实现自动化任务和批量处理。

Bash脚本以文本文件形式保存,并以`.sh`为文件扩展名。

可以使用文本编辑器创建和编辑Bash脚本。

在Linux系统中,可以使用`vi`或`nano`等编辑器来进行编辑。

Bash脚本中的命令可以是系统命令、自定义命令或其他脚本文件。

脚本文件以`#!/bin/bash`作为开头,这是告诉系统使用Bash解释器来运行脚本的命令。

Bash脚本具有以下特性:1. 变量:可以使用变量来存储和操作数据。

Bash脚本中的变量以`$`符号开头,没有数据类型的限制。

可以通过赋值来创建变量,并在脚本中使用它们。

2. 条件语句:可以使用if语句来进行条件判断和分支控制。

根据条件的结果,可以执行不同的命令或操作。

3. 循环:可以使用不同类型的循环,如for循环、while循环和until循环。

循环可用于重复执行相同的命令或操作。

4. 输入输出重定向:可以使用输入输出重定向来控制命令的输入和输出。

例如,可以将命令的输出保存到文件中,或从文件中读取输入。

5. 函数:可以定义和使用函数来封装和重用一部分代码。

函数可以传递参数,并返回结果。

Bash脚本还支持各种其他功能,如字符串操作、数组、文件和目录处理、正则表达式等。

可以使用这些功能来完成复杂的任务。

总而言之,Bash是一种强大而灵活的Shell脚本语言,通过编写Bash脚本,可以实现各种自动化任务和系统管理操作。

使用Bash脚本,可以提高工作效率,并减少重复性的工作。

它是Linux和Unix系统中不可或缺的一部分。

Linux之重定向

Linux之重定向

Linux之重定向1,Linux中的重定向到底是个什么呢?Linux中的重定向就是将原本要输出到屏幕中的数据信息,重新指向某个特定的⽂件中,或者定向到⿊洞(/dev/null)中。

1.2重定向有什么⽤呢?1,当程序执⾏输出的信息⽐较多时,需要保存下来在进⾏分页查看。

2,后台执⾏的程序⼀般都会有输出,不希望它输出⼲扰到终端。

3,执⾏定时的备份任务,希望备份的结果保留下来时。

4,当重复创建⽤户,会提⽰⼀些错误信息,可以直接将信息丢弃。

5,希望将错误⽇志与正确⽇志,分别输出保存到不同⽂件时。

1.3 标准输⼊与输出当进程操作⼀个⽂件时:1,⾸先进程是⽆法直接访问硬件的,需要借助内核来访问⽂件2,⽽内核kernel需要利⽤⽂件描述符(file descriptor)来访问⽂件。

总结:进程---通过--->⽂件描述符(⾮负整数)--访问---》⽂件名称;进程使⽤⽂件描述符来管理打开的⽂件对应关系。

第⼀步:运⾏ tail -f /etc/passwd第⼆部:通过⽂件描述符3--->/etc/passwd-->inode-->block第三步:正确输出--->默认情况下通过⽂件描述符1--->当前终端 1>(改变输出的位置,⽂件,⿊洞)第四步:错误输出--->默认情况下通过⽂件描述符2---》当前终端 2>(错误输出)通常程序访问⼀个⽂件⾄少会打开三个标准⽂件,分别是标准输⼊,标准输出,错误输出。

进程将从标准输⼊中得到数据,将正常输出打印⾄屏幕终端,将错误的输出信息也打印⾄屏幕终端。

名称⽂件描述符作⽤标准输⼊(STDIN)0默认是键盘,也可以是⽂件或其他命令的输出标准输出(STDOUT)1默认输出到屏幕。

错误输出(STDERR)2默认输出到屏幕⽂件名称(filename)3+2,输出重定向案例输出重定向,改变输出内容的位置。

输出重定向有如下⼏种⽅式,如表格所⽰:类型操作符⽤途标准覆盖输出重定向1>将程序输出的正确结果输出到指定到⽂件中,会覆盖⽂件原有的内容标准追加输出重定向1>>将程序输出的正确结果以追加的⽅式输出到指定⽂件错误覆盖输出重定向2>将程序的错误结果输出到执⾏的⽂件中,会覆盖⽂件原有的内容错误追加输出重定向2>>将程序输出的错误结果以追加的⽅式输出到执⾏的⽂件2.1,案例1,-标准输出重定向标准输出重定向⽰例1,如果⽂件不存在则创建2,如果⽂件存在则清空内容[root@: ~]#> text.txt[root@: ~]#ifconfig echo > edu.txt2.2案例-标准追加输出重定向标准追加输出重定向⽰例1,如果⽂件不存在则创建2,如果⽂件存在则在⽂件尾部添加内容[root@: ~]#echo "hello linux" >>if2.3案例3-错误输出重定向错误输出重定向1,正确输出及错误输出⾄相同⽂件2,正确输出及错误输出⾄不同的⽂件[root@: ~]#find /etc -name "*.conf" 1>ok 2>ok[root@: ~]#find /etc -name "*.conf" 1>ok 2>error2.4案例4-混合和输出重定向混合输出重定向1,将正确输出和错误输出混合⾄同⼀⽂件2,将两个⽂件内容组合为⼀个⽂件[root@: ~]#find /etc/ -name "*.conf" &>ab[root@: ~]#cat ab >c*正确和错误都输⼊到相同位置[root@: ~]#ls /root/ /error >ab 2>&12.5,案例5-将内容输出⾄⿊洞[root@: ~]#ls /root/ /error >ab 2>/dev/null[root@: ~]#ls /root/ /error >ab &>/dev/null3,输⼊重定向案例输⼊重定向:指的是"重新指定设备"来"代替键盘"作为新的输⼊设备;3.1输⼊重定向⽰例1,通过输⼊重定向读取⽂件内容;[root@: ~]#cat < /etc/hosts2,通过输⼊重定向读⼊多⾏内容;[root@: ~]# cat <<EOF[root@: ~]#cat <<EOF> 1> 2> 3> 4> 5> EOF #只要不出现EOF则可以⼀直输⼊3,通过输⼊重定向数据导⼊⾄数据库中;[root@: ~]#mysql -uroot -p < /opt/wordpress.sql3.2脚本输⼊重定向使⽤输⼊重定向打印安装服务的菜单导航栏;[root@: ~]# cat install.sh#!/usr/bin/bashcat <<-EOF-----------主菜单---------| 1)安装nginx || 2)安装php || 3)退出 |-----------------------EOFread -p "请选择你要安装的软件编号[1|2|3]:"3.3输⼊重定向场景1,恢复数据时2,脚本打印菜单3,cat写⼊⽂件时;vim输出重定向正确输出:1>:覆盖(先清空,后写⼊)1>>:直接写⼊⽂件的尾部(末尾)错误输出2>:覆盖(先清空,后写⼊)2>>:直接写⼊⽂件的尾部(末尾)混合输出&>/dev/null&>>/dev/null1>/dev/null 2>&14,进程管道技术4.1 什么是管道管道操作符合"|",主要⽤来链接左右两个命令,将左侧命令的【标准输出】,交给右侧命令的【标准输⼊】⽆法传递错误的标准输出给后者命令管道命令符可以让⼤家进⼀步掌握命令之间的搭配使⽤⽅法,进⼀步提⾼命令输出值的处理效率4.2管道流程⽰意图格式:cmd1 | cmd2 [...|cndn]4.3管道使⽤案例案例1:将/etc/passwd中的⽤户按UID⼤⼩排序[root@: ~]#sort -t ":" -k3 -n /etc/passwd[root@: ~]#sort -t ":" -k3 -n /etc/passwd -r[root@: ~]#sort -t ":" -k3 -n /etc/passwd |head案例2:统计当前/etc/passwd中⽤户使⽤的shell类型#取出第七列(shell)|排序(相同的归类)|去重[root@: ~]#awk -F:`{pint $7}` /etc/passwd |sort |uniq -c案例3:打印并输出当前所有主机⽹卡的IP地址[root@: ~]#ip addr |grep 'inet' |awk '{print $2}' |awk -F "/" '{print $1}'4.4.1,tee与xargs[root@: ~]#ip addr |grep 'inet' |tee ip.txt |awk -F "/" '{print $1}' |awk '{print $2}'[root@: ~]#cat ip.txt4.4.2,管道中使⽤xargsxargs参数传递,主要让⼀些不⽀持管道的命令可以使⽤管道技术[root@: ~]#which cat |xargs ls -l-rwxr-xr-x. 1 root root 54080 Apr 11 2018 /usr/bin/cat[root@: ~]# xargs rm -fv。

Shell脚本中的性能优化技巧减少资源占用和提高执行速度

Shell脚本中的性能优化技巧减少资源占用和提高执行速度

Shell脚本中的性能优化技巧减少资源占用和提高执行速度Shell脚本中的性能优化技巧——减少资源占用和提高执行速度Shell脚本是一种运行在Unix和Linux系统上的脚本语言,它可以通过命令行界面执行一系列的Shell命令来完成特定的任务。

然而,在编写Shell脚本时,我们往往需要考虑如何优化脚本的性能,以减少资源占用和提高执行速度。

本文将介绍一些Shell脚本中的性能优化技巧,帮助您编写更高效的脚本。

一、使用合适的Shell解释器在编写Shell脚本时,我们可以选择不同的Shell解释器来执行脚本。

常见的Shell解释器有Bash、Sh、Ksh等。

这些解释器在性能上有所差异,选择合适的解释器能够提高脚本的执行效率。

一般来说,Bash是性能最好的Shell解释器,因此建议优先选择Bash作为默认解释器。

二、避免频繁的文件读写操作在Shell脚本中,频繁的文件读写操作会占用大量的系统资源,因此我们应该尽量避免不必要的文件读写操作。

可以通过使用变量来代替文件操作的结果,减少文件读写的次数。

另外,可以合并多次读写操作,减少系统调用的开销,从而提高脚本的执行速度。

三、合理使用管道和重定向管道和重定向是Shell脚本中非常实用的功能,可以将一个命令的输出作为另一个命令的输入,或者将命令的输出重定向到文件中。

然而,不当使用管道和重定向会导致额外的系统开销,降低脚本的性能。

因此,我们应该合理使用管道和重定向,避免不必要的数据传输和重定向操作。

四、减少循环和条件判断次数循环和条件判断是Shell脚本中常用的控制结构,但是频繁的循环和条件判断会消耗大量的时间和资源。

为了提高脚本的执行速度,我们可以考虑减少循环和条件判断的次数。

可以通过优化算法和数据结构,减少无谓的判断或者循环,从而降低系统资源的占用。

五、使用并行执行来提高效率在一些需要处理大量数据的任务中,可以通过并行执行来提高脚本的效率。

可以使用Shell的后台执行功能,同时运行多个任务,以减少总的执行时间。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Linux Shell(bash) 重定向技巧
linux 环境中支持输入输出重定向,用符号<和>来表示。

0、1和2分别表示标准输入、标准输出和标准错误信息输出,
可以用来指定需要重定向的标准输入或输出,比如2>a.txt 表示将错误信息输出到文件a.txt中。

同时,还可以在这三个标准输入输出之间实现重定向,比如将错误信息重定向到标准输出,可以用2>&1来实现。

Linux下还有一个特殊的文件/dev/null,它就像一个无底洞,所有重定向到它的信息都会消失得无影无踪。

这一点非常有用,当我们不需要回显程序的所有信息时,就可以将输出重定向到/dev/null。

如果想要正常输出和错误信息都不显示,则要把标准输出和标准错误都重定向到/dev/null,例如:
# ls 1>/dev/null 2>/dev/null
还有一种做法是将错误重定向到标准输出,然后再重定向到/dev/null,例如:
# ls >/dev/null 2>&1
注意:此处的顺序不能更改,否则达不到想要的效果,此时先将标准输出重定向到/dev/null,然后将标准错误重定向到标准输出,由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null.
1. 标准输入的控制
语法:命令< 文件将文件做为命令的输入。

例如:
mail -s “mail test” wesongzhou@ < file1 将文件file1 当做信件的内容,主
题名称为mail test,送给收信人。

2. 标准输出的控制
语法:命令> 文件将命令的执行结果送至指定的文件中。

例如:
ls -l > list 将执行“ls -l” 命令的结果写入文件list 中。

语法:命令>! 文件将命令的执行结果送至指定的文件中,若文件已经存在,则覆盖。

例如:
ls -lg >! list 将执行“ls - lg” 命令的结果覆盖写入文件list 中。

语法:命令>& 文件将命令执行时屏幕上所产生的任何信息写入指定的文件中。

例如:
cc file1.c >& error 将编译file1.c 文件时所产生的任何信息写入文件error 中。

语法:命令>> 文件将命令执行的结果附加到指定的文件中。

例如:
ls - lag >> list 将执行“ls - lag” 命令的结果附加到文件list 中。

语法:命令>>& 文件将命令执行时屏幕上所产生的任何信息附加到指定的文件中。

例如:
cc file2.c >>& error 将编译file2.c 文件时屏幕所产生的任何信息附加到文件error 中。

关于输入、输出和错误输出
在字符终端环境中,标准输入/标准输出的概念很好理解。

输入即指对一个应用程序或命令的输入,无论是从键盘输入还是从别的文件输入;输出即指应用程序或命令产生的一些信息;与Windows系统下不同的是,Linux系统下还有一个标准错误输出的概念,这个概念主要是为程序调试和系统维护目的而设置的,错误输出于标准输出分开可以让一些高级的错误信息不干扰正常的输出信息,从而方便一般用户的使用。

在Linux 系统中:标准输入(stdin)默认为键盘输入;标准输出(stdout)默认为屏幕输出;标准错误输出(stderr)默认也是输出到屏幕(上面的std 表示standard)。

在BASH 中使用这些概念时一般将标准输出表示为1,将标准错误输出表示为2。

下面我们举例来说明如何使用他们,特别是标准输出和标准错误输出。

输入、输出及标准错误输出主要用于I/O 的重定向,就是说需要改变他们的默认设置。

先看这个例子:
$ ls > ls_result
$ ls -l >> ls_result
上面这两个命令分别将ls 命令的结果输出重定向到ls_result 文件中和追加到ls_result 文件中,而不是输出到屏幕上。

">"就是输出(标准输出和标准错误输出)重定向的代表符号,连续两个">" 符号,即">>" 则表示不清除原来的而追加输出。

下面再来看一个稍微复杂的例子:
$ find /home -name lost* 2> err_result
这个命令在">" 符号之前多了一个"2","2>" 表示将标准错误输出重定向。

由于/home 目录下有些目录由于权限限制不能访问,因此会产生一些标准错误输出被存放在err_result 文件中。

大家可以设想一下find /home -name lost* 2>>err_result 命令会产生什么结果?
如果直接执行find /home -name lost* > all_result ,其结果是只有标准输出被存入all_result 文件中,要想让标准错误输出和标准输入一样都被存入到文件中,那该怎么办呢?看下面这个例子:
$ find /home -name lost* > all_result 2>& 1
上面这个例子中将首先将标准错误输出也重定向到标准输出中,再将标准输出重定向到all_result 这个文件中。

这样我们就可以将所有的输出都存储到文件中了。

为实现上述功能,还有一种简便的写法如下:
$ find /home -name lost* >& all_result
如果那些出错信息并不重要,下面这个命令可以让你避开众多无用出错信息的干扰:
$ find /home -name lost* 2> /dev/null
同学们回去后还可以再试验一下如下几种重定向方式,看看会出什么结果,为什么?
$ find /home -name lost* > all_result 1>& 2
$ find /home -name lost* 2> all_result 1>& 2
$ find /home -name lost* 2>& 1 > all_result
另外一个非常有用的重定向操作符是"-",请看下面这个例子:
$ (cd /source/Directory && tar cf - . ) | (cd /dest/directory && tar xvfp -)
该命令表示把/source/directory 目录下的所有文件通过压缩和解压,快速的全部移动到/dest/directory 目录下去,这个命令在/source/directory 和/dest/directory 不处在同一个文件系统下时将显示出特别的优势。

下面还几种不常见的用法:
n<&- 表示将n 号输入关闭
<&- 表示关闭标准输入(键盘)n>&- 表示将n 号输出关闭
>&- 表示将标准输出关闭。

相关文档
最新文档