echo "gnome-terminal "commands" " >> /dev/pts/1 ?
创建两个空文件file1、file2,使用vi编辑器给file1和file2添加文本内容并保存,利用重定向功能实现将文件file1与file2的内容写到文件file3命令该怎么打啊 求帮忙
B. 管道命令(pipe)使用及与shell重定向区别
管道命令是用来定位输出,也就是查询到很多信息只需要其中个别然后可以切割输出,而重定向是输出位置不一样,可以把查询到的信息输出到屏幕或者文本或者其他。
C. 系统linux 下的 管道 和 重定向 这两个概念怎么理解
管道是一个先进先出的特殊文件,一方只能依次写进去,另一方也只能依次读出来
理解管道符前先要知道一个进程运行后有3个最基本的文件,标准输入(0表示),标准输出(1表示),错误输出(2表示)
通过命令查看当前3个基本文件,ls-l/proc/$$/fd/
shell中的管道符做了3件事,
1,先创建一个管道文件pipe
2,将管道符前面的一个命令的标准输出替换为pipe
2,将管道符后面的一个命令的标准输入替换为pipe
例子
echotest>/tmp/test
tail-f/tmp/test|cat&
查看tail命令3个基本文件
ls-l/proc/`pidoftail`/fd
查看cat命令3个基本文件
ls-l/proc/`pidofcat`/fd
shell重定向本身从编程角度理解就是赋值语句,0,1,2本身理解为3个变量,
<和>表示赋值符号,变量名只能用数字表示,变量只能在/proc/进程pid/fd/下查看
<以只读方式打开一个文件,然后把打开的文件赋值给变量
>以只写方式打开一个文件,然后把打开的文件赋值给变量
<>以读写方式打开一个文件,然后把打开的文件赋值给变量
exec1<>/tmp/info表示读写打开/tmp/info,然后赋值给变量1,执行后其他命令打印的信息都会输入到/tmp/info里,默认所有的打印信息(echoaaaaaa)都会获取变量1里面打开的文件,然后把要打印的信息写到这个文件里面
如果写成exec1</tmp/info这种方式,那么打印的信息就没法写进去了,因为是只读方式打开的
ls-l/dev/fd/或者ls-l/proc/$$/fd/查看
cat/proc/cmdline>/tmp/cmd通常啥这种写法,赋值符号前面没写具体的变量名,默认就是1,也就是cat/proc/cmdline1>/tmp/cmd
echor>/tmp/r&&exec6</tmp/r
lsof|grep/tmp/r可以查看到6r属性,文件以读方式开打,并且复制给变量6