タグ付けされた質問 「pipe」

パイプは、あるプログラムの出力を別のプログラムの入力に接続します。これは特にシェルの実装に使用されます| オペレーター。

8
「リダイレクト」と「パイプ」の違いは何ですか?
この質問は少しばかげているように聞こえるかもしれませんが、リダイレクトとパイプの違いを実際に見ることはできません。 リダイレクトは、stdout / stdin / stderrのリダイレクトに使用されます(例:)ls > log.txt。 パイプは、コマンドの出力を別のコマンドへの入力として与えるために使用されますls | grep file.txt。 しかし、同じことに対して2つの演算子があるのはなぜですか? 単にls > grep出力を渡すために書くのではなく、これも一種のリダイレクトではありませんか?私は何が欠けていますか?
204 pipe  redirect 

2
ターミナルの標準出力(stdout)をクリップボードにパイプするにはどうすればよいですか?
例えば、 フォルダーの内容を一覧表示して、チャットウィンドウに直接貼り付けて、友人が見たいとします。 ls > filename.txtこれらのコンテンツを含むファイル(filename.txt)を作成することができると思います。その後、ファイルを開いたり印刷したり、手動でテキストブロックを選択してコピーする必要があります(これは迷惑/退屈になる可能性があります)ls。 単に標準出力をクリップボードにパイプする方がはるかに高速/簡単です。 どの端末コマンドでこれを行うことができますか?

4
ファイルの代わりに名前付きパイプを使用する理由
名前付きパイプについて最近読んだのですが、なぜ存在するのか理解できませんでした。 名前付きパイプを使用すると、ファイルを使用するよりも時間がかかりません。 これはなぜですか? 名前付きパイプもメモリに保存する必要があります(ファイルと同様にスワップすることもできます)。 私が見る限り、ファイルと同様に、現在のディレクトリによって参照されるiノードを取得する必要があります。また、ファイルと同様に、プログラマーによって削除する必要があります。 では、利点はどこにあるのでしょうか?
42 files  pipe 

8
なぜコマンド「ls | ファイル」の動作?
私はコマンドラインについて研究してきましたが、|(パイプライン)はコマンドからの出力を別のコマンドの入力にリダイレクトすることを意味しています。では、なぜコマンドls | fileが機能しないのですか? file 入力は次のようなファイル名の1つです file filename1 filename2 ls出力はフォルダ上のディレクトリとファイルのリストなのでls | file、フォルダ上のすべてのファイルのファイルタイプを表示することになっていると思いました。 ただし、使用すると、出力は次のようになります。 Usage: file [-bcEhikLlNnprsvz0] [--apple] [--mime-encoding] [--mime-type] [-e testname] [-F separator] [-f namefile] [-m magicfiles] file ... file -C [-m magicfiles] file [--help] fileコマンドの使用に何らかのエラーがあったため

4
Javaプロセスを強制終了する
私は計算量の多いコードに取り組んでいます-今のところ-多くのクラッシュがありますが、私はまだそれに取り組んでいます:)クラッシュすると、GUIウィンドウを閉じることができません。シェルを開いてプロセスを強制終了する必要があります。 これはJavaプロセスであり、簡単に見つけることができます。 nkint@zefiro:~$ ps aux | grep java nkint 2705 16.6 1.0 460928 43680 ? Sl 12:23 0:08 /usr/lib/jvm/java-6-sun-1.6.0.26/bin/java -Djava.library.path=something something nkint 2809 0.0 0.0 4012 776 pts/0 S+ 12:24 0:00 grep --color=auto java nkint@zefiro:~$ kill -9 2705 今では簡単ですが、非常に機械的な作業です。したがって、通常、約7〜8個のプロセスがクラッシュするのを待ってから、kill -9各プロセスをクラッシュさせます。 これを自動的に行いたいです。いくつかのコマンドをパイプして(n-1)個の結果のIDを取得し、それを強制終了することは簡単だと思いますが、ps aux | grep javaどこから始めればよいのかわかりません。 誰も私にヒントを与えることができますか?
25 process  kill  pipe 


5
FTPコマンドを1行で実行するにはどうすればよいですか?
これは私がFTPにログインするときにやっていることです: ftp user:password@server ftp: user:password@server: Unknown host ftp> echo HELLO WORLD! ftp> quit 1行のFTPコマンドを実行したい... ftp user:password@server -command "echo HELLO WORLD" または "echo HELLO WORLD" | ftp user:password@server 似たような...私が作成しようとしているスクリプトの一部として。何も転送されません。いくつかの指示をエコーするだけでよく、これが2つのシステム間で行うのが最も簡単な方法です。
18 10.10  command-line  ftp  pipe 

3
パイプコマンド「l | grep” 1””は間違った結果を得る?
図が示すようlに、現在のフォルダー内のファイルを取得するために使用します。そして、番号付きのファイルを取得したい1ので、pipeとを使用しgrepます。 しかし、なぜ2and 22ファイルが表示されるのでしょうか?そして何1;34mですか? $ l ./ ../ 1 11 2 22 $ l | grep "1" 1;34m./ 1;32m../ 1 11 2 22 更新 l私のzshrcファイルにはすでにコマンドのエイリアスがあります。 alias lsp="ls" alias ll='ls -alF' alias la='ls -A' alias l='ls -CF' alias ls="ls -alh --color" typeコマンドの結果は次のとおりです。 >$ type ls ls is an alias for ls -alh …
13 command-line  grep  ls  pipe 

2
curl .gzファイルとそれを解凍のためにパイプする
特定のURLからいくつかの.gzファイル(NBではありません.tar.gz)をダウンロードし、それらを解凍して既存のファイルがある場合は上書きしようとしています。 個々のダウンロードごとに、次のことを試しました。 curl -O $URL | gunzip -f ただし、次の場合に失敗したため、これは機能しませんでしたgzip: stdin: unexpected end of file。この一連のコマンドをbashシェルスクリプト内で実行しました。 コマンドを2つの明示的なステップ、つまり最初にファイルをダウンロードし、次に.gzファイルを解凍するステップに分割した場合、機能します。 パイプバージョンが機能しないのはなぜですか?
13 bash  scripts  curl  pipe  gzip 

4
bashで文字列を連結してビルドコマンド
一度に実行する前に、いくつかのパラメーターに基づいて文字列にコマンドラインを作成するbashスクリプトがあります。コマンド文字列に連結される部分は、各コンポーネントを介したデータの「ストリーミング」を容易にするために、パイプで区切られることになっています。 非常に簡単な例: #!/bin/bash part1=gzip -c part2=some_other_command cmd="cat infile" if [ ! "$part1" = "" ] then cmd+=" | $part1" fi if [ ! "$part2" = "" ] then cmd+=" | $part2" fi cmd+="> outfile" #show command. It looks ok echo $cmd #run the command. fails with pipes $cmd 何らかの理由で、パイプが機能していないようです。このスクリプトを実行すると、通常はコマンドの最初の部分(最初のパイプの前)に関連するさまざまなエラーメッセージが表示されます。 だから私の質問は、この方法でコマンドを作成することが可能かどうか、そしてそれを行うための最良の方法は何ですか?
13 bash  pipe 

3
Locateによって返されるすべてのファイルを削除する方法
現時点では、彼は私がやっていることです。 ステップ1: locate fooBar /home/abc/fooBar /home/abc/Music/fooBar ステップ2: 各行をコピーして貼り付けて、手動で削除を実行します。 rm /home/abc/fooBar rm /home/abc/Music/fooBar これを1ステップで行うにはどうすればよいですか?何かのようなもの fooBarを見つける> rm ありがとう。

1
出力を圧縮解除してスクリプトにパイプする
-iフラグ付きの入力を受け取るスクリプトがあります。私が持っている入力ファイルは圧縮されています(.gz)。私がやりたいこと(それが可能かどうかわからない)、ファイルが大きいため、次のようなことをしてください: gunzip -c myfile.gz | myScript.pl -i STDIN -o myoutfile.txt したがって、解凍の出力をスクリプトの入力フラグにパイプします。
13 pipe  gzip 

4
catコマンドでファイルに行を追加しますか?
cat file.txtファイルの内容を取得することはできますが、自分で選択した最後の行に取り組むこともできます。 パイピングを試しました(cat file.txt ; echo "My final line") |が、最終ラインのみがパイプを通過しています。猫と最終ラインに参加するにはどうすればよいですか? 明確化のために編集:ファイル自体を変更したくありません。これが可能な場合は、echo "My final line" >> file.txtまたはecho "My final line" | tee -a file.txtこの特定のコマンドのコンテキスト内でのみ追加しようとしているので、file.txtとの連結をパイプできることを認識しています"My final line"。
11 command-line  pipe  cat  echo 

3
出力を生成するコマンドに影響を与えずに、以下の出力を停止する方法を教えてください。
私はサーバーを実行しており、このサーバーのログはファイルではなくターミナルにログインします。このログを表示するために使用量を減らしたいと思います。 node server.js | less ログを確認したいだけの場合は、Shift+キーを使用してFファイルの終わりに到達し、ログを監視し続けます。止めたいときはCTRL+ を使いますC。 残念ながら、これによりサーバーも停止します。サーバーを停止することなく、ログの最後の監視を停止したいだけです。 これを行う方法?

2
Tシャツがパイプから出力全体を取得しない
次のようなコマンドを実行するスクリプトがあります。 export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH;./some_app -i $INDEX | tee $LOG echo "Number of errors: $(grep "ERROR" $LOG | wc -l)" 問題はおそらくへのパイプにありteeます。出力全体が得られていないようです。アプリケーションが終了すると、出力の最後の数行(通常、致命的なエラーを含む行)が失われます。パイプなしでアプリを実行teeすると、出力に表示されます。 スクリプトでT型がすべての出力の処理を完了するまで待機させるにはどうすればよいですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.