Linuxのコマンド - grepを、リダイレクト、エコー、1>&2を導入し、2>&1

次のように書かれたが、最近のLinuxのコマンドについての質問に遭遇し、トピックがあります

次の2つのコマンドが出力されますどのようなもの

こんにちは、エコー1>&2 | grepのAAAの

こんにちは、エコー2>&1 | grepのAAAの

、Bハロー出力は、出力なし、第二の出力Cハロー、ハロー第一の出力、第2のD出力なし最初の2つである、2つの出力はハローであります

数分間考えて、彼はC.を選びました この知識ブロガーのCを選択することが混在いわゆる、実際にブラインド選挙、1をemmm>&2を忘れて、そう、今日のレビュー

エコー

機能:通常、プロンプトの役割を果たし、モニターにテキストを表示します。

参数:-b 前のスペースを削除することを意味し
   -n 、新たなラインの
   -t 水平タブのための
   -v 垂直タブを表す
   文字の後ろに-cが出力と同じ時間がないので、出力はそれが折り返されません完了する
   -r の前でR \出力キャリッジリターン(しかし、あなたが見つけることができますない文字)
   -a 警報音の出力を表し、

[localhostのメディア@陳] $エコーハロー
ハロー
[陳localhostのメディア@] $エコー$のPATHの
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/chen/.local/bin:/home/chen/bin

グレップ

機能:テキストフィルタリングツールは、Linuxシステムの中で最も重要なコマンドの一つであり、その機能は、テキストファイルやデータストリームパイプラインとデータから試合をフィルタリングすることです

パラメータ:-n:一致する行番号と行を表示
       -iを:大文字と小文字を区別しない
       -cを:のみ出力一致する行番号
       -h:複数のファイルを照会するときにファイル名を表示しない
       -l:複数ファイルのクエリを、出力のみを含みますファイル名の文字と一致  
       -vを:表示され、すべての行がテキストに一致するが含まれていません

[陳@ localhostのメディア] $ grepのint型new1.c 
	int型のデータ。
INT比較(CONSTボイド* pを、CONSTボイド* Q){ 
	int型のconst * A =(int型のconst *)P。
	INTのCONST * B =(int型のconst *)Q。
INTショー(int型* pを、INT n)が{ 
	0 = I int型。
		printf( "%dの"、P [I])。
INT入力(int型* pを、INT n)が{ 
	0 = I int型。
メインINT()
	のint P [100] = {0}。
[陳@ localhostのメディア] $はgrep -n INT new1.c 
8:intデータ。
13:INT(CONSTボイド* P、CONSTボイド* Q){比較
14:INT CONST * A =(int型のconst *)Pを、
15:INT CONST * B =(int型のconst *)Q。
25:INTショー(int型* pを、int型N){ 
26:I 0 = int型。
28:のprintf( "%dの"、P [I])。
33:INT入力(int型* pを、int型N){
34:0 = I int型。
42:int型のmain()
44:INT P [100] = {0}。
[陳@ localhostのメディア] $はgrep -c int型new1.c 
11 

リダイレクト

定義:Linuxのリダイレクションは、元のデフォルトの何かを変更し、元のシステムコマンドのデフォルトの実装を変更、例えば、私は単純に出力表示で見たいと思っていませんが、Linuxによって、それ上のファイルに出力したいことを意味この作業を実行するためにリダイレクトします。

リダイレクションプログラムを入力する代わりに入力するキーボードのファイルを利用することで、出力のリダイレクトではなく、画面のファイルにプログラムの出力をさせることです 

I / OリダイレクションはFDは、一般的に シェル一般FD 10、すなわち0〜9は、 -関連しました。

キー:共通FDは、3である 0(STDIN、標準入力),. 1(STDOUT、標準出力)、2(標準エラー、標準誤差)

指定されたファイルから読み取るように<、リードデータチャネル(STDIN)に変更と

>と、送信チャンネルデータ(標準出力、標準エラー出力)を変更するように指定されたファイルに出力します。

0は、したがって、デフォルト値<<0であり、<同じであり、同様に> 1>が同じです。

[chen@localhost media]$ vim  file.c//创建一个空文件
[chen@localhost media]$ echo  hello >  file.c //输出hello到空文件中
[chen@localhost media]$ cat file.c //文件就存了hello
hello
[chen@localhost media]$ > file.c //快速清空文件内容的快捷键就是基于这个输出重定向来完成的 1> file.c 也是同样的作用
[chen@localhost media]$ cat file.c //文件里的hello已经被清空
[chen@localhost media]$    

FD 2 错误输出,就是当输出错误时,用 2>  可以输出错误的返回值 

[chen@localhost media]$ cat file.c 
[chen@localhost media]$ hello 2> file.c //将错误信息重定向输出到file.c文件,而不是显示在屏幕上
[chen@localhost media]$ cat file.c 
bash: hello: 未找到命令...
[chen@localhost media]$ 

&是文件描述符,&2 表示错误通道2,echo  hello 1>&2 表示hello 重定向输出到错误通道2

回忆一下,我们在终端敲命令错误屏幕就会报错,我们把屏幕报错显示的地方当成错误通道2就容易理解了

如果不加&2 直接 echo  hello 1>2  就变成hello 重定向输出到2这个文件里去了,如果没有2,系统就自动创建一个2

[chen@localhost file]$ ls
file.c
[chen@localhost file]$ echo  hello 1>&2     //hello 重定向输出到错误通道2,也就是终端屏幕
hello
[chen@localhost file]$ echo  hello 1>2    //hello 重定向输出到2这个文件中去
[chen@localhost file]$ ls 
2 file.c 
[chen@localhost file]$ cat 2 
hello
[chen@localhost file]$

讲到这里相信对重定向也有一定的理解了吧,下面回到开头那道题

下面两条命令分别会有怎样的输出

echo  hello 1>&2 |grep aaa

echo  hello 2>&1 |grep aaa

答:第一个输出hello,第二个无输出

1>&2  将正确输出重定向到标准错误

2>&1  将错误输出重定向到标准输出,由于没有错误,所以没有输出

后面那个grep aaa 我猜可能是为了混淆题意吧hh

这就是我对重定向  ,1>&2 , 2>&1 的理解,有什么不对的大家也可以提出来一起讨论

转载请注明出处、作者 ,谢谢

 

おすすめ

転載: www.cnblogs.com/cyyz-le/p/11305004.html