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

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

1
**ログイン**シェルが**非ログイン**シェルよりも優れているのはなぜですか?
* nixシステムのドットファイルの基本的な理解があります。しかし、ログインシェルと非ログインシェルのこの違いについて、私はまだかなり混乱していますか? 多数の異なる回答(複数の重複を含む)は、すでに次の箇条書きに対処しています。 どのようにするために呼び出すログインまたは非ログインシェルを ログインまたは非ログインシェルを検出する方法 どのようなファイルが起動によって消費される、ログインまたは非ログインシェル man bash詳細については、ドキュメントを参照(例:) 答えが教えてくれなかったのは(そして、私もまだ混乱していることです): 何がユースケースのログインまたは非ログインシェルは?(たとえば、ほとんどの個人的な開発要件に合わせて設定zshrcするzshだけで十分であり、何vimrcをするほど単純ではないことがわかりますvim) (異なるスタートアップファイルとライフサイクルを消費する以外に)非ログインシェルでログインを使用する理由は何ですか?

5
[[]]テストで二重引用符を使用する理由
bashスクリプトに2つの整数があるとします。 value1=5 value2=3 次に、テストの場合に二重引用符を使用する必要があるのはなぜですか?例えば: if [[ "$value1" -eq "$value2" ]] なぜ次のものを使用しないのですか? if [[ $value1 -eq $value2 ]] 私にとって、二重引用符は意味をなさない。
23 bash  shell  quoting  variable  test 


6
プログラムがPOSIXのコマンドライン引数の間にスペースの数を取得することは可能ですか?
次の行を使用してプログラムを作成したとしましょう。 int main(int argc, char** argv) これで、の内容を確認することで、どのコマンドライン引数が渡されるかがわかりargvます。 プログラムは引数間のスペースをいくつ検出できますか?これらをbashで入力したときのように: ibug@linux:~ $ ./myprog aaa bbb ibug@linux:~ $ ./myprog aaa bbb 環境は最新のLinux(Ubuntu 16.04など)ですが、その答えはPOSIX準拠のシステムすべてに当てはまると思います。

4
一定の時間が経過した後にコマンドを実行しますか?
長いプロセスを実行している場合、時間ベースのコマンドを実行する方法はありますか? たとえば、約10分間実行される非常に長いプロセスを実行しています。 5分後、別のコマンドを実行したいと思います。例として、個別のコマンドは次のようになります。echo 5 minutes complete (注:コマンドの完了に向けて進行するのではなく、指定された間隔の後に実行されたコマンドのみが必要です。) 出来ますか?

1
スクロールバックとスクロールバックバッファーとは正確には何ですか?
やなどのプログラムの「スクロールバック」や「スクロールバッファ」とは何ですか?bashまたscreen、tty、実行中のプログラム、stdin / stdout / stderrとはどのように関係していますか? これが私がこれまでに見つけた「scrollback」の唯一の定義です(archlinux wikiで): スクロールバックは、テキストコンソールに実装されている機能であり、ユーザーが戻って画面からスクロールしたテキストの行を表示できるようにします。これは、ビデオアダプタとディスプレイデバイスの間にこの目的のために作成されたバッファによって可能になります。スクロールバックバッファ。 しかし、これは私にとってより多くの質問を提起します: 「サブルーチン」や「機能」などの「機能」を意味しますか? このスクロールバックバッファ用のUnix標準またはAPIはありますか? 以下のようなプログラムの「スタック」でvimに発売screenに発売bashに発売されssh、これらのプログラムのスクロールバックバッファを制御している端末エミュレータ、に発売? また、スクロールバックをファイルscreenにダンプするのに使用しました。このファイルの上部には多くの空白があり、ターミナルエミュレータが表示する「ビュー」は、バッファの最後の数行にすぎないようです。 これはvim、親シェルのスクロールバックバッファに一時的にアクセスするため、プログラムがターミナルウィンドウ全体を「クリア」できるのはなぜですか? またはvim、親スクロールバックバッファーの上に何らかの方法でオーバーレイされる独自のスクロールバックバッファーを使用しますか?

3
ユーザーログオン時にコマンドを実行する
Linuxデスクトップシステムでは、ユーザーがログインしたときにコマンドを実行します。 他の投稿を読んだ後、コマンドを挿入しようとしました~/.bashrcが、失敗しました。さらに、システムはユーザーログインにグラフィックインターフェイスを使用するため、コマンドはシェルの起動に関連してはいけません。 また、含まれ/etc/profile.dているスクリプトの1つにコマンドを追加しようとしましたが、結果はありませんでした。 これを行う別の方法はありますか?ログイン後にシステムが読み取るファイルはありますか?
23 shell  scripting  login 



2
疑問符で始まるすべてのファイルを削除します
約4kのファイルがあるフォルダーがあります。これらのファイルの一部は、aa ?または!文字で始まります。それらを削除する必要がありますが、削除する式が見つかりません。 rm -f ./?* すべてを削除するだけです。おそらくgreplsで使用し、パイプを使用してxargsファイルを別のフォルダーに移動できますが、これを行う適切な方法があることを望んでいました。?と!ファイルの両方でヘルプが必要です。

3
bashシェル-sshリモートスクリプトは出力とキャプチャコードをキャプチャしますか?
シェルを使用して、リモートサーバーでスクリプトを呼び出したい。そのスクリプトの出力(ログメッセージ)とそれが返す終了コードをキャプチャしたいと思います。 これを行う場合: ssh user@server /usr/local/scripts/test_ping.sh echo "$?" 終了コードを取得しましたが、リモートログメッセージをキャプチャできません。 これを行う場合: local RESULTS=$(ssh user@server /usr/local/scripts/test_ping.sh) echo "$?" LOG "${RESULTS}"; LOG関数を使用して出力をログに記録できますが、正しい終了コードを取得できないようです。取得したコードは可変割り当てからのコードであると想定しています。 LOG関数を引き続き使用して、すべての出力をフォーマットし、ファイル、syslog、および画面に送信します。 結果を変数にキャプチャし、リモートスクリプトから正しい終了コードを取得するにはどうすればよいですか?
23 bash  shell  ssh  remote 


4
4つのタスクを並行して…どうすればいいですか?
ディレクトリに多数のPNGイメージがあります。これらの画像を圧縮するために実行するpngoutというアプリケーションがあります。このアプリケーションは、私がやったスクリプトによって呼び出されます。問題は、このスクリプトが次のように一度に1つずつ実行することです。 FILES=(./*.png) for f in "${FILES[@]}" do echo "Processing $f file..." # take action on each file. $f store current file name ./pngout -s0 $f R${f/\.\//} done 一度に1つのファイルのみを処理するには、多くの時間がかかります。このアプリを実行した後、CPUがわずか10%であることがわかります。そのため、これらのファイルを4つのバッチに分割し、各バッチをディレクトリに入れて、4つのターミナルウィンドウ、4つのプロセスから4を起動できることを発見しました。ジョブは時間の1/4かかります。 2番目の問題は、イメージとバッチを分割し、スクリプトを4つのディレクトリにコピーして、4つのターミナルウィンドウを開き、bla bla ... 何も分割せずに、1つのスクリプトでそれをどのように行いますか? 私は2つのことを意味します:最初にbashスクリプトからどのようにバックグラウンドにプロセスを起動しますか?(最後に追加するだけですか?)2番目:4番目のタスクを送信した後、バックグラウンドへのタスクの送信を停止し、タスクが終了するまでスクリプトを待機させるにはどうすればよいですか?つまり、1つのタスクが終了すると新しいタスクをバックグラウンドに送信するだけで、常に4つのタスクを並行して保持しますか?そうしないと、ループは何十億ものタスクをバックグラウンドで起動し、CPUが詰まります。

5
ルートのシェルを不良ファイルに設定することからの回復
たとえば、「chsh」を使用してrootユーザーのシェルを不正なファイルパスに変更するなど、愚かなことをしたとしましょう。ルートアカウントへの今後のログインは、/ bin / whateverが見つからないことを引用して突然失敗し、ログイン画面に戻ります。/ etc / passwdを編集するためにリカバリモードを禁止するか、LiveCDを挿入する場合、システムを元に戻すためのオプションは何ですか?また、(楽しみのために)wheelに他のユーザーはいないと仮定しましょう。考え?
23 shell  users  login 

8
あるプロセスから別のプロセスに出力をパイプし、最初のプロセスに出力がある場合にのみ実行する方法は?
からの出力がある場合、このコマンドを電子メールのみに書き換えるにはどうすればよいmailq | grepですか? mailq | egrep 'rejected|refused' -A 5 -B 5 | mail -s 'dd' email@email これは1行でも可能ですか? パイプが空かどうかを確認し、電子メールの送信よりも一般的なケースでない場合は、データに対してコマンドを実行するをご覧ください。
23 shell  pipe 

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