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

他のBourne / POSIXシェルとは対照的に、GNUのBourne Again SHellに固有の質問。Unixシェル全般に関する質問については、代わりに/ shellタグを使用してください。

4
後知恵でコマンド実行時間を見つける
bashプロンプトから実行時間の長いプロセスを実行しました。後知恵で、私timeはそれを実行したい、または私がそれを開始した時間を書き留めたいと思います。 この情報を遡及的に取得する方法はありますか?.bash_historyタイムスタンプを含めるようには見えません。 私の場合はMac OS Xですが、一般的なUnix / Linuxソリューションに興味があります。 明確にするために、プロセスは完了しました。どうしても必要な場合を除き、再度実行しないことをお勧めします。




5
env変数をエクスポートして、すべてのサブシェルで使用可能にし、変更できるようにしますか?
私が持っていると仮定します export MY_VAR=0 で~/.bashrc。 開いたgnomeターミナルがあり、このターミナルで$MY_VAR値をに変更します200。だから、私がやったら echo $MY_VAR この端末で200は、表示されます。 今、私は私のgnomeターミナルで別のタブを開いて、 echo $MY_VAR ...そして代わりに200、私は持ってい0ます。 端末が環境変数を変更し、この変更(200に設定)を後続のすべてのサブシェルなどで使用できるようにした場合、200の値を保持するにはどうすればよいですか?これは可能ですか?


3
スクリプトを実行する最速の方法は何ですか?
私はスクリプトを実行する最速の方法は何だろうと思っていました、私は端末でスクリプトの出力を表示するか、ファイルにリダイレクトするか、または場合によっては速度が異なることを読んでいます/dev/null。 したがって、出力が重要でない場合、スクリプトが最小であっても、スクリプトをより速く動作させるための最速の方法は何ですか? bash ./myscript.sh -or- bash ./myscript.sh > myfile.log -or- bash ./myscript.sh > /dev/null
22 linux  bash 

2
bashスクリプトの最後の終了コード
bashスクリプトの最後にある終了コードの意味について混乱しています:終了コード0は正常に終了したことを意味し、終了コード番号(もっと間違えなければ127)があることを知っています。 私の質問は、スクリプトの最後に終了コード0が表示される場合、スクリプトが失敗した場合や別の意味がある場合でも、終了コードを強制的に0に設定することです。

5
bashシェルスクリプトでの実行とソースの区別
私がここで求めているのは、非常に非正統的/型破り/危険であるか、または、Google-fuのスキルがちょうどいいものではありません... でbashシェルスクリプト、それは別のシェルスクリプトによってソース取得された場合に伝えるの方法のいずれかの簡単な存在である、またはそれ自体で実行されていますか?つまり、次の2つの動作を区別することはできますか? # from another shell script source myScript.sh # from command prompt, or another shell script ./myScript.sh 私が考えているのはbash、ソース化されたときに利用できる機能を含むユーティリティのようなシェルスクリプトを作成することです。ただし、このスクリプトが単独で実行されている場合は、定義された関数にも基づいて特定の操作を実行するようにします。このシェルスクリプトが取得できる環境変数のようなものはありますか、例えば some_function() { # ... } if [ -z "$IS_SOURCED" ]; then some_function; fi できれば、フラグ変数を設定するために呼び出し元スクリプトを必要としないソリューションを探しています。 編集:スクリプトのソースと実行の違い、使用されているスクリプトの違い(両方の方法で)を伝えることができるかどうかをここで見つけようとしていることを知っています。

3
空のシェル変数を使用するとエラーが発生します
時々$PROJECT_HOME/*、プロジェクト内のすべてのファイルを削除するために使用します。環境変数PROJECT_HOMEが設定されていない場合(私が設定suし、新しいユーザーがこの環境変数を設定していないため)、ルートフォルダーからすべてのファイルの削除が開始されます。これは終末論的です。 bashシェルで未定義の環境変数を使用する場合、エラーをスローするように構成するにはどうすればよいですか?

2
'bash -c'に引数を追加します
次のようにBashを介してコマンドを実行するとします。 /bin/bash -c "ls -l" Bashのマニュアルページによると、次のように実行することもできます。 # don't process arguments after this one # | pass all unprocessed arguments to command # | | # V V /bin/bash -c ls -- -l 動作していないように見えます(無視されているようです)。私は何か間違ったことをしているのですか、それともmanページを間違って解釈していますか? 男性からの関連する引用: -cオプションが存在する場合、コマンドはstringから読み取られます。文字列の後に引数がある場合、$ 0から始まる位置パラメータに割り当てられます。 そして A-オプションの終了を通知し、さらにオプション処理を無効にします。-の後の引数は、ファイル名と引数として扱われます。

2
通常のファイルとシンボリックリンクを区別する
通常のファイルとシンボリックリンクを区別する必要があるbashスクリプトを書いています。if / test式でこれを行うことができると思ったが、期待どおりに機能しません: $ touch regular_file $ test -f regular_file; echo $? 0 $ test -h regular_file; echo $? 1 $ ln -s regular_file symlink $ test -h symlink; echo $? 0 $ test -f symlink; echo $? 0 何故ですか?そして、どうすればこれを適切に行うことができますか?
22 bash 

2
コマンドラインでforループを作成する方法は?
簡単に見てみましょう for loop #!/bin/bash for i in `seq 1 10`; do echo $i done bashスクリプトのAFAIKセミコロンは、シェルに現在のコマンドを同期的に実行させてから、次のコマンドに進みます。Enterキーを押すと文字通り同じことを行いますが、次のコマンドを入力できず、バッファーをすぐにフラッシュできます。 シェルが次の行を解釈できない理由 for i in `seq 1 10`; do; echo $i; done これはfor loop実際にどのように機能しますか?
22 bash  shell 

2
bashでは、パイプが値を設定していない後に読み取られます
編集:元のタイトルは「bashで読み取りに失敗しました」 kshでは、値を区切る便利な方法としてreadを使用しています。 $ echo 1 2 3 4 5 | read a b dump $ echo $b $a 2 1 $ しかし、それはbashで失敗します: $ echo 1 2 3 4 5 | read a b dump $ echo $b $a $ 失敗した理由は、manページで見つけられませんでした。
22 bash  shell  pipe  read 


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