linux多行命令重定向 linux中重定向有几种?分别是干什么的

&1'>Linux 重定向符号以及2>&1 一个进程默认会打开标准输入、标准输出、错误输出三个文件描述符
文件描述符为0,小于号表示数据由文件流入命令
usage:
命令file
#加入输入重定向,对输入文件进行计数
wc -l/etc/passwd
文件描述符为1,大于号表述数据由命令流入文件
所以: echo "hello"t.log 也可以写成 echo "hello" 1t.log
会把文件的内容清空,再输入到新的文件
会把当前内容保持不变,然后在下一行进行追加
2错误重定向,如果当前命令产生了错误 , 会把错误重定向到文件中,而不会打印到屏幕
无论内容正确还是错误都会把文件输出到文件中 。
stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息 。
默认情况下,commandfile 将stdout 重定向到 file, commandfile 将stdin 重定向到 file 。
如果希望 stderr 重定向到 file,可以这样写:
$ command 2file
如果希望 stderr 追加到 file 文件末尾,可以这样写:
$ command 2file2 表示标准错误文件(stderr)
如果希望将 stdout 和 stderr 合并后重定向到 file , 可以这样写:
$ commandfile 21 或者 $ commandfile 21
如果希望对 stdin 和 stdout 都重定向,可以这样写:
$ commandfile1 file2
command 命令将 stdin 重定向到 file1,将 stdout 重定向到 file2 。
含义:将标准错误输出 重定向到 标准输出 。
符号是一个整体,不可分开,分开后就不是上述含义了 。
比如有些人可能会这么想:2是标准错误输入 , 1是标准输出,是重定向符号,那么"将标准错误输出重定向到标准输出"是不是就应该写成"21"就行了?是这样吗? 如果是尝试过,你就知道21的写法其实是将标准错误输出重定向到名为"1"的文件里去了
linux bash的重定向 关于linux bash的重定向
所谓I/O重定向简单来说就是一个过程,这个过程捕捉一个文件,或者命令,程序,脚本,甚至脚本中的代码块(code block)的输出 , 然后把捕捉到的输出,作为输入发送给另外一个文件,命令 , 程序 , 或者脚本 。
如果谈到I/O重定向,就涉及到文件标识符(File Descriptor)的概念, 在Linux系统中,系统为每一个打开的文件指定一个文件标识符以便系统对文件进行跟踪 , 这里有些和C语言编程里的文件句柄相似,文件标识符是一个数字,不同数字代表不同的含义 , 默认情况下,系统占用了3个,分别是0标准输入(stdin),1标准输出(stdout), 2标准错误(stderr), 另外3-9是保留的标识符 , 可以把这些标识符指定成标准输入,输出或者错误作为临时连接 。通常这样可以解决很多复杂的重定向请求 。
标准输入通常指键盘的输入
标准输出通常指显示器的输出
标准错误通常也是定向到显示器
请看以下例子,来描述一下他们的关系
#ls /dev
这个命令列出/dev目录下的所有文件,在屏幕上输出结果 。
这里 /dev 就是作为命令ls的标准输入(从键盘输入),而打印在屏幕的结果就是标准输出(/dev目录中的内容)
还是回到标题,重定向就是把标准的`输入或者输出更改成其他的方式 , 请参看如下例子
或者等同于
#ls /dev 1filename #注意:"1"和""中间没有空格
以上命令会把命令的标准输出重新定向到一个文件filename,而不是显示到屏幕上,如果不指明文件标识符,系统默认的就是1, 因此1可以省略
如果把上面例子重的""改成""则表示把输出追加到filename文件的末尾,如果文件不存在则创建它 。如下
#ls /dev filename
也可以把标准错误重新定向到文件
#ls -qw /dev 2filename
显然 -qw是一个错误参数,通常会在显示器上报告一个错误信息 , 但由于把2标准错误(stderr)重新定向到了文件filename,因此显示器没有错误信息,而信息写到了文件里面
以下命令是把标准输出和错误都定向到文件
#ls /dev filename
""在这里代表标准输出和标准错误,这里无论是正常输出还是错误信息都写到filename中了 。
重新定义标准输入,输出,和错误的文件标识符
重新定义文件标识符可以用ij命令 , 表示把文件标识符i重新定向到j,你可以把""理解为"取地址"
请看以下例子
#exec 51
表示把文件标识符5定向到标准输出,这个命令通常用来临时保存标准输入 。
同样标准输入也是可以重新定向的 , 请参考下面例子
# grep search-word
一般来说grep命令在给定文件中搜索字符串,以上命令把文件filename作为grep命令的标准输入 , 而不是从键盘输入 。
前面曾经提到,系统为每一个打开的文件指定一个文件标识符以便系统对文件进行跟踪,那么默认的文件标识符是什么呢?答案是0,也就是标准输入,或者可以说从键盘输入 。当然这个文件标识符也可以自己指定,请参考下面例子
#echo 123456789 filename 把字符串写到文件filename中 #exec 3filename 把文件filename打开,并指定文件标识符为3 #read -n 4 3 从文件中读4个字符 , 句柄已经指到第四个字符末尾 #echo -n . 3 在第5个字符处写一个点 , 覆盖第5个字符 , -n表示不换行 #exec 3- 关闭文件标识符3
现在cat filename文件的结果就成了1234.6789
命令jfilename表示把文件打开 , 并指明文件标识符为j
"-"表示关闭文件标识符
有关关闭文件标识符的操作请参考下面
n- 关闭输入文件标识符n 0-或- 关闭标准输入stdin n- 关闭输出文件标识符n 1-或-关闭标准输出stdout
另外还有一些其他命令,如下参考
2. : filename 或者filename
表示把文件filename设置成空,也就是清空文件内容,如果文件不存在,则创建一个空文件,(等同于touch命令) :表示一个空输出,两个命令的唯一区别就是filename不是在所有shell都可以正常工作的 。
;
简述linux系统中有哪些重定向的方式重定向能够实现Linux命令linux多行命令重定向的输入输出与文件之间重定向linux多行命令重定向,以及实现将多个命令组合起来实现更加强大的命令 。这部分涉及到的比较多的命令主要有:
cat:连接文件sort:排序文本行uniq:忽略或者报告重复行
wc:统计文件的行数、词数、字节数
grep:打印匹配制定模式的行
head:输出文件的头部tail:输出文件的尾部
tee:从标准输入读,并往标准输出或者文件写
重定向标准输出
使用可以将本来出现在屏幕的标准输出信息重定向到一个文件中 。
使用可以在实现重定向时不覆盖原有内容,而是在文件末尾追加内容 。
重定向标准错误信息到文件
使用文件描述符,在shell中 , 默认用数字0,1,2分别代表标准输入、标准输出、标准错误 。
屏蔽不想看到的信息
Linux中有一个特殊的文件/dev/null,这个文件叫做bit bucket,可以接受输入信息但是什么都不做 。例如:ls /usr//dev/null
重定向标准输入
cat命令可以接受一组文件为参数,将这些文件复制到标准输出 。我们前面的例子中已经多次使用到cat命令来将文本文件的内容读取到屏幕上 。cat还有一个很重要的功能:接受一组文件,然后通过重定向将他们重新组合到一个文件中 。
cat ls1 ls2ls这个命令将ls1和ls2文件中的内容合并到ls文件中linux多行命令重定向了 。cat命令的这种功能不仅仅适用于文本文件,同样对二进制文件有效 。这个场景主要在将多个压缩包文件合并到一个压缩包中用到 。
cat也可以不传递参数 , 这种情况下,cat会重定向标准输入到标准输出 。
管道
Linux提供|操作符,该操作符可以将一个命令的输出作为另一个命令的输入,这样通过多个命令的协作来完成一些比较复杂的内容 。比如,我们可以通过uniq命令来排除重复的行 。但是uniq命令往往需要和sort命令配合使用 。因为uniq接收一组排好序的文本,而刚好sort可以将文本行排序 。
linux中怎么实现重定向2?在您实现输出的那行命令后面加上、、、、2、2来实现重定向 。
是每一次重定向时将原先的内容先删除然后写入新的数据 。
是每一次重定向时将新的内容加入到就内容的后面 。
是将指定文件内容重定向到相关命令或者文件中 , 同时每次执行时先删除旧的再加入新的 。
作用同上,只是将新的信息加到旧的信息后面 。
2是将命令执行报错时,将错误信息重定向至指定文件 , 并且每次执行都会先删除旧的再加入新的 。
2和上面一条命里作用一样,只是将新的错误信息加到原来信息的后面
举例:
1.ls /etc/passwduser
2.ls /etc/passwduser
3.ls idjsoigjstest
4.ls idjsoigjstest
5. mail 用户名 -s "邮件题目"file (file是你建的一个文件,里面内容随意自己定)
然后输入 mail 可以看到自己有封邮件题目为(您自定义的名字),输入相应的数字 , 您可以按到信件内容为file内容 , 这就是利用重定向直接将已写好的信件内容发送出去 。
至于1-4的结果,楼主可在输入完后自行查看user和test的变化来进行对比 。
对照刘遄老师的《Linux就该这么学》
linux重定向命令应用及语法1.
标准输入的控制
语法:命令
文件将命令的执行结果送至指定的文件中 。
例如:
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
中 。
3.
命令语法
【linux多行命令重定向 linux中重定向有几种?分别是干什么的】linux多行命令重定向的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux中重定向有几种?分别是干什么的、linux多行命令重定向的信息别忘了在本站进行查找喔 。

    推荐阅读