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

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

4
Bash:インタラクティブなリモートプロンプト
リモートサーバーに接続し、パッケージがインストールされているかどうかを確認するスクリプトがあります。 ssh root@server 'bash -s' < myscript.sh myscript.sh: OUT=`rpm -qa | grep ntpdate` if [ "$OUT" != "" ] ; then echo "ntpdate already installed" else yum install $1 fi この例は単純化できます。myscript2.shこれには同じ問題があります: read -p "Package is not installed. Do you want to install it (y/n)?" choise 私の問題は、bashが私の答えをインタラクティブに読むことができないことです。 ユーザーにプロンプ​​トを表示する機能を失うことなく、ローカルスクリプトをリモートで実行する方法はありますか?
16 bash  shell-script  ssh  stdin  read 

1
ファイルの代わりに出力を比較するvimdiff
2つのコマンド出力(ファイルなし)を比較しようとしています vimdiff "$(tail /tmp/cachain.pem)" "$(tail /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem)" リダイレクト、パイプで遊んでみましたが、vim - -c何かが足りないはずです。誰でも助けてくれますか?
15 vim  stdout  stdin  vimdiff 

4
文字列をttyに入れてコマンドを作成します
私はこれをどうにかして echo -n " command "> / dev / tty1 文字は表示され、カーソルは移動しますが、それらは「ゴースト」です。ヒットするとEnter、何も起こりません(標準入力ではありません)。 編集: 下のスクリーンショットの真ん中に、私がこれを使用する理由がわかります。(赤いキャプションが付いた行、黄色のキャプションが付いた行のすぐ下。)今のままでは、実際にはノートテキストを「編集」していません。新しいテキストを書くように求められます。これは、編集中の(実際には)ノートのテキストを置き換えます。したがって、古いテキストをttyに貼り付けるだけで改善できると考えました。ユーザーがEnterキーを押しても、変更は行われません。(このプログラムはPerl / MySQLにありますが、「Perlでこれを行う方法」よりも一般的な解決策を求める方が面白いと思いました。) 編集2: 以下は、以下のCコード(意図したとおりに動作します)を使用するPerlコードと、新しいスクリーンショットです。これにより、疑いの余地がないことがわかります。ノートテキストに-今回は古いテキストがあります。たとえば、タイプミスを修正したいだけの場合、ノートテキスト全体を再入力する必要はありません。 my $edit_note_text = $edit_note_data[2]; print BOLD, RED, " new text: ", RESET; system("writevt /dev/tty \"$edit_note_text\""); my $new_text = <$in>; $new_text = fix_input($new_text); my $set_text = "UPDATE notes SET note = \"$new_text\" WHERE id …
15 tty  io  stdin 


2
Bash:プロセス置換と標準入力
次の行は明らかです。 echo "bla" | foo | bar しかし、以下のものは同じことをしますか? echo "bla" | bar <(foo) echo "bla" | bar < <(foo) どれが標準入力から「bla」fooをbar読み、なぜですか? もちろん、コーディングして確認することはできますが、動作が定義されているのか、信頼すべきではない機能を利用しているのかはわかりません。

3
エコーまたは印刷/ dev / stdin / dev / stdout / dev / stderr
/ dev / stdin、/ dev / stdout、/ dev / stderrの値を出力したい。 これが私の簡単なスクリプトです: #!/bin/bash echo your stdin is : $(</dev/stdin) echo your stdout is : $(</dev/stdout) echo your stderr is : $(</dev/stderr) 私は次のパイプを使用します: [root@localhost home]# ls | ./myscript.sh [root@localhost home]# testerr | ./myscript.sh 唯一の$(</dev/stdin)私はまた質問の人々が使用していくつかの他に見つけた、仕事に思える:"${1-/dev/stdin}"成功せず、それを試してみました。

1
どうやってhtmlをlynxにパイプするのですか?
コンソールからいくつかのajax呼び出しをテストしています。私はhtmlマークアップであるメタ情報ノイズを取り除き、コンテンツを読み取るのが好きなので、それをlynxなどのターミナルブラウザーにパイプします。 まだ: curl www.google.de | lynx lynxの新しいインスタンスを開くだけです。 したくない: curl www.google.de > someFile.html && lynx someFile.html
11 pipe  curl  html  stdin  lynx 

4
名前付きパイプから標準入力を取得する
私がしようとしていることは、ターミナルウィンドウでpythonを実行し、名前付きパイプからstdinにリダイレクトすることです。次に、別のターミナルで名前付きパイプに書き込み、そのコマンドをpythonで実行します。 ターミナル1: mkfifo p1 python < p1 ターミナル2: echo -n "print \"Hello World\"" > p1 何が起こるか-pythonが印刷Hello Worldして終了します。私がやりたいことは、次のコマンドを実行するためにpythonを実行し続けることです。シェルでこれを行うにはどうすればよいですか?

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

2
パラメータまたはパイプからの入力を受け入れるBash関数
次のbash関数を、引数またはパイプから入力を受け入れることができるように記述したいと思います。 b64decode() { echo "$1" | base64 --decode; echo } 望ましい使用法: $ b64decode "QWxhZGRpbjpvcGVuIHNlc2FtZQ=" $ b64decode < file.txt $ b64decode <<< "QWxhZGRpbjpvcGVuIHNlc2FtZQ=" $ echo "QWxhZGRpbjpvcGVuIHNlc2FtZQ=" | b64decode
10 bash  pipe  function  stdin 

2
stdinとstdoutをポートにリダイレクトする
Pから読み取りstdinと書き込みを行うプログラムを使用したいのですが、特定のポートから読み取って別のポートに出力するようなプログラムにstdout接続しncます。 # The reading is easy, here P reads from port 50505 nc -l 50505 | P ポート60606と書き戻すにはどうすればよいですか?

2
Linuxでの標準へのbashファイルのリダイレクトはシェル( `sh`)とどう違うのですか?
実行中にユーザーを切り替えるスクリプトを作成し、標準のファイルリダイレクトを使用して実行しました。そうuser-switch.shです... #!/bin/bash whoami sudo su -l root whoami で実行するとbash、期待した動作が得られます $ bash < user-switch.sh vagrant root ただし、スクリプトをshで実行すると、異なる出力が得られます $ sh < user-switch.sh vagrant vagrant なぜbash < user-switch.sh出力が異なるのsh < user-switch.shですか? ノート: Debian Jessieを実行している2つの異なるボックスで発生します

2
nanoへのパイプ入力
ls | nano -Ubuntuでエディターを開き、-.saveCentOSでエディターを閉じてファイルを保存するのはなぜですか? stdinを読み取るときに、CentOSでnanoを開いたままにするにはどうすればよいですか?
9 ubuntu  centos  stdin  nano 

3
シェルからstdinが/ dev / nullかどうかを確認する方法は?
Linuxでは、シェルスクリプトが標準入力がnullデバイス(1、3)*からリダイレクトされているかどうか、理想的には何も読み取らないかどうかを確認する方法はありますか? 予想される動作は次のとおりです。 ./checkstdinnull -> no ./checkstdinnull < /dev/null -> yes echo -n | ./checkstdinnull -> no EDIT mknod secretunknownname c 1 3 exec 6<secretunknownname rm secretunknownname ./checkstdinnull <&6 -> yes 私は、入力デバイスの maj / min数を読み取る必要があるだけだと思います。しかし、シェルからそれを行う方法を見つけることができません。 *は必要ありません/dev/nullが、で手動で作成した場合でも nullデバイスがありますmknod。
9 linux  shell  devices  stdin 

4
stdinのサイズを取得するにはどうすればよいですか?
大きなディレクトリを圧縮しようとしていますが、結果のファイルのサイズを正確に知りたいです。 私は使ってみましたdu: $ tar -cv dir | du -h - du: cannot access '-': No such file or directory 次に、「-」のファイルバージョンを使用してみました。 $ tar -cv dir | du -h /dev/stdin 1.0K この数値は正確ではないと確信しています。stdinのサイズを取得するにはどうすればよいですか?

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