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

stdoutは、プロセスのデフォルトの出力ファイル記述子の名前です。`stdout`について特別なことは何もないので、このタグは*使用しないでください*。出力のリダイレクト方法に関する質問には[io-redirection]タグを使用し、ファイル記述子の管理方法に関する質問には[file-descriptors]を使用し、ファイルロックの質問には[lock]を使用し、一般的な質問には[files]を使用しますファイル操作。

2
すべてのキーボードキーをすばやくテストするスクリプト
キーボードのキーが間違っていないかノートブックを確認する必要があるので、できる限り高速化したいと思います。 この特定のタスクには何も見つかりませんでしたので、私のアイデアは、押されたキーを読み取り、すべてのキーボードのキーを知っているスクリプトです。showkeyまたはのどちらかxevで出力を達成できると思います: xev | grep keysym サンプル出力: state 0x10, keycode 46 (keysym 0x6c, l), same_screen YES, state 0x10, keycode 33 (keysym 0x70, p), same_screen YES, state 0x11, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES, state 0x10, keycode 51 (keysym 0x5d, bracketright), same_screen YES, state 0x10, keycode 36 (keysym 0xff0d, Return), …
14 bash  grep  awk  keyboard  stdout 

2
すでに実行中のスクリプトからstderrをリダイレクトします
私は数日前からスクリプトを実行しています。stdoutをにリダイレクトしましたが$HOME/mylog、stderrには何もないと思ったため、stderrをリダイレクトしませんでした。突然何千もの行がstderrで出てきたので、私は仕事を中断しました。$HOME/myerrスクリプトを再起動することなく、これからstderrにリダイレクトできる方法はありますか? ボックスにsudoアクセスがあり、それはOS Xです。 おそらくdtoolsトラップを使用しているものでしょうか? スクリプトがこれまでに行った作業を失い、最初からやり直すことはできません。ディスク上の「メモリ内オブジェクトをダンプ」し、プログラムをフリーズし、変数(ファイル記述子など)を編集し、新しいコンテキストで再開する方法はありますか?

3
パイプと標準出力への直接出力
コマンドの出力をパイプしてstdoutに送る方法があるかどうか疑問に思っていました。したがって、たとえば、fortuneフォーチュンクッキーを出力し、クリップボードにコピーします。 $ fortune | tee >(?stdout?) | pbcopy "...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and the Ugly)." (By Matt Welsh)
14 bash  pipe  stdout  tee 

2
stdout / stderrのインターリーブを妨げるものは何ですか?
いくつかのプロセスを実行するとします。 #!/usr/bin/env bash foo & bar & baz & wait; 上記のスクリプトを次のように実行します。 foobarbaz | cat 私の知る限り、プロセスのいずれかがstdout / stderrに書き込むとき、それらの出力はインターリーブしません-stdioの各行はアトミックであるようです。それはどのように機能しますか?各行のアトミック性を制御するユーティリティは何ですか?
13 shell  osx  stdout  output  stderr 


6
しばらくしてから何かを実行します(コンソールに結果を表示することもあります)
Ubuntuサーバー16.04を使用atし、現在のセッションでユーティリティを使用しechoて、特定の日時を指定せずに、今から1分後(たとえば)に何かを行うことを望んでいます。 これは失敗しました: echo 'hi' | at 1m 私が選択atした理由sleepは、スリープが現在のセッションをハンディキャップし、そのため、ほとんどの時間で作業しているセッションよりも、別のセッションのコマンドを遅延させるのにより適しているためです。AFAIRは、atこのように動作せず、私のセッションをハンディキャップしません。 Update_1 Pied Piperの答えで、私は試しました: (sleep 1m; echo 'hi') & この方法には問題があります。「hi」ストリームがプライマリプロンプト内に出力され、_それを含むプライマリプロンプトのすぐ下に空のセカンダリプロンプト()が追加されます。 USER@:~# (sleep 1m; echo 'hi') & [1] 22731 USER@:~# hi ^C [1]+ Done Update_2 ピーター・コーデの答えで私は試しました: (sleep 2 && echo -e '\nhi' && kill -WINCH $$ &) これはBash 4.4では正常に動作しますが、一部の古いバージョンでは動作しないようです(回答のコメントを参照)。私は自分の環境で個人的にBash 4.3を使用しています。
12 console  stdout  at  sleep  delay 


6
stdinまたはファイルをバッファリングできるプログラム
一時ファイルを使用する以外に、プログラムが入力をバッファリングできる方法stdinがありますが、を取得するまでコンテンツを出力しませんEOF。シェル変数も使用したくありません(例:)buffer=$(cat)。 このプログラムは次のように動作するはずです(プログラム名はであると想定buffered-cat): $ buffered-cat line 1 line 2 line 3 ^D # Ctr-D here(End of Line) プログラムが受け取った^Dので、buffered-cat出力は内容を出力します line 1 line 2 line 3
12 shell  stdout  buffer 

1
同じコマンドを発行すると、pts / gnome-terminalよりもttyでより多くの出力が作成されるのはなぜですか?
gnome-terminal: $ sudo update-grub [sudo] password for user: Generating grub configuration file ... Found background image: .background_cache.png Found linux image: /boot/vmlinuz-3.16.0-4-amd64 Found initrd image: /boot/initrd.img-3.16.0-4-amd64 done Ctrl+ Alt+ によってアクセスされるtty1 F1: $ sudo update-grub [sudo] password for user: Generating grub configuration file ... Found background image: .background_cache.png Found linux image: /boot/vmlinuz-3.16.0-4-amd64 …

4
コマンドの出力がbashで利用できる行数を制限する方法は?
私はバックグラウンドで大きなファイルをダウンロードし始めました $ nohup wget http://example.tld/big.iso & これによりnohup.out、の出力を含むファイルも得られますwget。 これで、後でダウンロードプロセスを確認したい場合は使用できます$ tail -f nohup.outが、ターミナルウィンドウが思ったより早くいっぱいになります。私が見たいのは、最後の行が絶えず更新されていることです(wget単独で使用する場合と同じです)。 私は試しました$ tail -n 1 -f nohup.outが、それは最初のテイルのみに影響するようです。 一般的に言えば、コマンドの出力が利用できる/表示できる行数を制限する(この場合は1にする)ことが可能であれば、この問題は解決します。出力をCircularバッファに入れるようなものです。通常のプログレスバー$ wget example.tld/big.isoが印刷されると考えてください。 そのような解決策はありますか? または私は木を間違った方法で登っていますか?(意味、nohupの出力を制限したり、他のことをしたりする方が簡単でしょうか?)
11 bash  tail  nohup  stdout 

5
grep一致しないファイルの表示を抑制する方法は?
を使用して特定の単語を含むファイルを検索しようとしていますgrep。ディレクトリに多くのファイルがあります(> 500) 実行するコマンド $ grep 'delete' * 出力 validate_data_stage1:0 validate_data_stage2:0 validate_data_stage3:0 validate_data_stage4:0 validate_data_stage5:0 validate_input_stage1:0 validate_input_stage2:0 validate_input_stage3:0 validate_input_stage4:0 .... and hundred of such lines これらは、指定された一致を含まないファイルです。それらの行がstdoutに表示されないようにしたい。私は-qスイッチを知っていますが、それは完全な出力を抑制します。 それ、どうやったら出来るの?


2
リモートのアクティブな端末でコマンドを実行する
6350のPIDで開いているターミナルエミュレータ(T1)があるとします。 別の端末から、次のコマンドを入力します(C1)。 echo "ls\n" > /proc/6350/fd/0 これによりls、T1に新しい行が書き込まれますが、実行されません。どうして? 私もcat|bashwith を使ってみましたecho "ls\n" > /proc/catid/fd/0が、まだ実行されていません。 コマンドを別の端末にエコーして、コマンドを実行するにはどうすればよいですか? 可能な答え: $ mkfifo toto; $ bash < toto; $ echo "ls" > toto; この場合、端末に直接直接書き込むことはできません(すべてが、この端末でコマンド(C1)が表示したものと同じように表示されます。

2
STDOUTとSTDINを接続するとはどういう意味ですか?
私は本を​​読んでいます、それは言います: すべてのプロセスには、「標準入力」(STDIN)、「標準出力」(STDOUT)、および「標準エラー」(STDERR)の少なくとも3つの通信チャネルを使用できます。 ほとんどのコマンドは、STDINからの入力を受け入れ、出力をSTDOUTに書き込みます。エラーメッセージはSTDERRに書き込まれます。この規則により、ビルディングパイプラインのようにコマンドを連結して、複合パイプラインを作成できます。 シェルは、シンボルを解釈し<、>し、>>命令としてまたはファイルからのコマンドの入力または出力を再ルーティングします。 1つのコマンドのSTDOUTを別のコマンドのSTDINに接続するには| 、一般にパイプと呼ばれる記号を使用します。 ps -ef | grep httpd つまり、これは基本的に、標準入力はユーザーがファイルに書き込むことができるコマンドであり、標準出力はbashシェルがシェルに出力を書き込むコマンドであり、標準エラーは出力に似ていますが、ファイルシステムにエラーがある場合に呼び出されます。次に、STDOUTとSTDINを接続する部分に行き、私は迷っています。

1
`ドッカーはfooを記録します| less`は検索もスクロールもできませんが、 `docker logs foo 2>&1 | less`は
どちらかを使用すると、読みやすいテキストが得られます。ただし、stderrリダイレクトを使用する場合にのみ、1つのスクロールまたは/ somepatternと入力して一致を取得できます。 検索を行わないと、「検索するものは何もありません(RETURNを押す)」と〜の列が表示されます。 与えられた、stderrとstdoutは同じではありませんが、なぜlessで何かを始めるまで、lessがそれらを同じように表示しないのですか? これは多分私が理解していないいくつかの奇妙なマルチウィンドウvimです。考え?
10 pipe  less  stdout  stderr 

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