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

シェルは、Unixのコマンドラインインターフェイスです。シェルにインタラクティブにコマンドを入力するか、スクリプトを記述してタスクを自動化できます。/ bin / shおよび最も互換性のあるシェル(ash、bash、ksh、zshなど)に適用される質問には、このタグを使用します。エラーのあるシェルスクリプトについては、ここに投稿する前にhttp://shellcheck.netで確認してください。

5
ファイル名の代わりにダッシュ(-)を使用
コマンドの場合-、ファイル名の代わりに引数として使用すると、STDINまたはSTDOUTを意味します。 ただし、この例では、次の名前のファイルを作成します-。 echo hello > - -この例でどのようにSTDOUTを意味させることができますか? 逆に、次のような例で-名前が付けられたファイルをどのように意味することができますか?- cat -

4
「catファイル| ./binary」および「./binary <file」?
バイナリ(変更できない)があり、次のことができます。 ./binary &lt; file 私もできる: ./binary &lt;&lt; EOF &gt; "line 1 of file" &gt; "line 2 of file" ... &gt; "last line of file" &gt; EOF しかし cat file | ./binary エラーが発生します。パイプで動作しない理由がわかりません。3つの場合すべてで、ファイルのコンテンツはバイナリの標準入力に(さまざまな方法で)与えられます。 bashはファイルを読み取り、バイナリの標準入力に渡します bashはstdinから(EOFまで)行を読み取り、それをバイナリの stdinに渡します catはファイルの行を読み取ってstdoutに書き込み、bashはそれらをバイナリの stdinにリダイレクトします 私が理解している限り、バイナリはこれら3つの違いに気付かないはずです。3番目のケースが機能しない理由を誰かが説明できますか? ところで:バイナリによって与えられるエラーは次のとおりです。 20170116 / 125624.689-U3000011スクリプトファイル ''を読み取れませんでした、エラーコード '14'。 しかし、私の主な質問は、その3つのオプションを持つプログラムにどのような違いがあるのかということです。 ここではいくつかの詳細については、以下のとおりです。私は再びそれを試してみましたstraceの 多少の誤差は、実際にあったESPIPE(不正がシーク)からのlseek 続く(不良アドレス)EFAULTから読み込む右のエラーメッセージの前に。 私は(一時ファイルを使用せずに)Rubyスクリプトでコントロールしようとしたバイナリはの一部であるcallapiからAutomic(UC4) 。

10
Linuxでプロセスが持つすべてのスレッドの詳細を表示する方法はありますか?
Windowsの場合、Process Explorerはプロセスの下のすべてのスレッドを表示すると思います。 特定のプロセスが生成するすべてのスレッドに関する詳細を表示できる、Linux用の同様のコマンドラインユーティリティはありますか? 自分をもっと明確にすべきだったと思う。プロセス階層を表示したくないが、特定のプロセスによって生成されたすべてのスレッドのリスト このスクリーンショットを見る Linuxでこれをどのように実現できますか?ありがとう!


4
Debian Squeezeのシェルを介してUnixドメインソケットと通信するにはどうすればよいですか?
Debian Squeeze Webサーバーを実行しています。memcachedをインストール/tmp/memcached.sockし、同じサーバー上にあるWebサイトからメッセージを受信するだけでよいため、memcachedがUnixドメインソケット(で)をリッスンするように構成しました。 それはうまく機能しているようですが、シェルを介してmemcachedと通信し、私が思っていることを実行していることを確認したいと思います。 memcachedは、単純なASCIIプロトコルを介してメッセージを受け入れます(正しく理解している場合)。TCP / IPでリッスンしている場合、たとえばnc次のようにメッセージを送信できます。 $ echo "stats settings" | nc localhost 11211 しかし、代わりにそのテキストをドメインソケットに送信する方法がわかりません。 私のラップトップ(OS X Lionを実行)では、両方ncとドメインソケットを使用するtelnetオプション(-Uおよび-uそれぞれ)があります。ただし、私のDebian Squeeze Webサーバーには、これらのオプションはありません。
99 shell  debian  socket  telnet 

3
最後のコマンドのすべてのインスタンスに対する^ x ^ y unixトリック?
私のお気に入りのUnixのトリックの1つは、^x^y最後のコマンドを受け取り、「x」の最初のインスタンスを「y」に置き換えることです。しかし、最後のコマンドで「x」のすべてのインスタンスを「y」に置き換えるために同様のトリックが機能するかどうか疑問に思っていますか?

5
「関数foo(){}」と「foo(){}」の違い
キーワードbashを使用または省略して、関数を定義できますfunction。違いはありますか? #!/bin/bash function foo() { echo "foo" } bar() { echo "bar" } foo bar 関数の呼び出しfooとbar成功の両方で、違いは見当たりません。だから、読みやすさを改善するだけなのか、それとも私が見逃しているものがあるのか​​疑問に思っています... BTW dash(debian / ubuntuに/bin/shシンボリックリンクさdashれています)などの他のシェルでは、functionキーワードを使用すると失敗します。
96 bash  shell  function  posix 



6
&&および||の混乱した使用 オペレーター
私は流し読みました/etc/rc.d/init.d/sendmail(私はこれはめったに使用されているけど、私は受験のために勉強しています)ファイル、および私は約少し混乱になった&amp;&amp;と||演算子。次のようなステートメントでそれらを使用できる場所を読みました。 if [ test1 ] &amp;&amp; [ test2 ]; then echo "both tests are true" elif [ test1 ] || [ test2 ]; then echo "one test is true" fi ただし、このスクリプトは次のような単一行のステートメントを示します。 [ -z "$SMQUEUE" ] &amp;&amp; SMQUEUE="QUEUE" [ -f /usr/sbin/sendmail ] || exit 0 これらは&amp;&amp;and ||演算子を使用してテストに基づいて応答を引き出しているように見えますが、これらの演算子のこの特定の使用に関する説明を掘り下げることはできませんでした。誰もがこれらがこの特定のコンテキストで何をするのか説明できますか?

13
シェルで2つの日付を比較する方法は?
シェルで2つの日付をどのように比較できますか? そのままでは機能しませんが、これをどのように使用したいかの例を次に示します。 todate=2013-07-18 cond=2013-07-15 if [ $todate -ge $cond ]; then break fi 望ましい結果を得るにはどうすればよいですか?


4
すでに実行中のprog1に「&& prog2」を何らかの方法で追加できますか?
ほとんどのシェルは次のような機能を提供&amp;&amp;し、;特定の方法でのコマンドの実行チェーンに。しかし、コマンドが既に実行されている場合、最初のコマンドの結果に応じて、どうにかして実行する別のコマンドを追加できますか? 私が走ったと言う $ /bin/myprog some output... でも本当に欲しかった/bin/myprog &amp;&amp; /usr/bin/mycleanup。myprogあまりにも多くの時間が失われるため、すべてを強制終了して再起動することはできません。必要に応じてCtrl+ Zとfg/ を使用できbgます。これにより、別のコマンドにチェーンできますか? 私はほとんどbashに興味がありますが、すべての一般的なシェルの答えは大歓迎です!
87 bash  shell  process  exit 

4
SIGTERMをBashの子に転送する
次のようなBashスクリプトがあります。 #!/bin/bash echo "Doing some initial work...."; /bin/start/main/server --nodaemon これで、スクリプトを実行しているbashシェルがSIGTERMシグナルを受信した場合、実行中のサーバーにSIGTERMも送信する必要があります(ブロックされるため、トラップは不可能です)。それは可能ですか?
86 bash  shell  signals  docker 

5
プロセス置換とパイプ
私は次を理解する方法を疑問に思っていました: コマンドのstdoutを別のコマンドのstdinにパイプすることは強力な手法です。しかし、複数のコマンドの標準出力をパイプする必要がある場合はどうでしょうか?これがプロセス置換の出番です。 言い換えると、プロセス置換はパイプでできることは何でもできますか? プロセス置換は何ができますが、パイプはできませんか?

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