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

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

2
プロセスを強制終了した後、bashに「終了」と表示されるのはなぜですか?
理解したい動作を次に示します。 $ ps PID TTY TIME CMD 392 ttys000 0:00.20 -bash 4268 ttys000 0:00.00 xargs $ kill 4268 $ ps PID TTY TIME CMD 392 ttys000 0:00.20 -bash [1]+ Terminated: 15 xargs $ ps PID TTY TIME CMD 392 ttys000 0:00.21 -bash [1]+ Terminated: 15 xargsプロセスを強制終了しただけで表示するのではなく、プロセスを強制終了した後に表示されるのはなぜですか? Mac OS X 10.7.5でbashを使用しています。
17 bash  process  kill 

2
パターンに従って、bashスクリプトで文字列を抽出する
bashで、文字列があると仮定しますstrname: strname="ph7go04325r" 私は間の文字を抽出したい最初 "3"の文字と最後 "r"の文字strname列に結果を保存し、strresult。上記の例では、結果strresultは次のようになります。 strresult="25" 最初の"3"文字は、必ずしも8の文字列位置にあるとは限りませんstrname。同様に、最後の文字列は必ずしも文字列位置11にあると"r"は限りません。したがって、次の文字列strnameは両方とも次のようになりますstrresult="25"。 strname="ph11go04325raa" strname="325r" strname="rgo04325raa" また、strname=ph12go04330raa"を生成する必要がありstrresult="30"ます。 私はbashスクリプトの初心者であり、このような文字列パターンマッチングをどこから始めればよいのかわかりません。何か提案はありますか?


2
「セグメンテーション違反」メッセージはSTDERRの下にありますか?
で実行可能ファイルを実行しました bash ./code > log すべてのprintfステートメントがログファイルに記録されるのに対し、ターミナルには時折エラーメッセージが表示されます。以下のように再実行します ./code >& log 現在、時折発生するエラーメッセージもログに記録されます。ただし、セグメンテーションフォールトがある場合、端末には引き続き表示されます。どうして?メッセージをSegmentation fault (core dumped)ログファイルに記録する方法は? user $ bash --version GNU bash、バージョン4.2.24(1)-release(i686-pc-linux-gnu)


3
私の `which`コマンドは間違っているかもしれません(時々)?
私のマシンにインストールされているバージョンは(非常に)古い(v21.3)ため、ソースコード(v24.2)から最後のemacsバージョンをコンパイルしました。私はいつもやった: $configure --prefix=$HOME make make install 今、私はemacsをテストしており、以前のバージョンをまだ起動していることに気付きました...私の$HOME/binパスはシステムのものをオーバーライドすることになっています(.bashrcファイルの$ PATHに追加されているため)。 私の最初の考えは、whichコマンドの出力を見ることでした。そして驚いたことに、これは新しいemacsへのパスを提供します。ここで矛盾がどこにあるか理解できません。同じセッションでの出力は次のとおりです。 $ emacs --version GNU Emacs 21.3.1 $ `which emacs` --version GNU Emacs 24.2.1 emacsに関係するエイリアスはありません。まったく。 $ alias | grep emacs $ 何が起こっているのでしょうか?
17 bash  emacs  path  which 

2
findコマンドを使用して、マークダウンファイルをhtmlに変換します
拡張子がのハードディスク上にファイルがあるとします.md。 これらすべてのファイルを.htmlスルーfindおよび-execオプションに変換したい。 マークダウンファイルをhtmlに変換するコマンドは markdown readme.md > readme.html 私は次のようなものを使用しようとしています: find / -name "*.md" -type f -exec markdown {} > {}.html \; もちろん、上記は機能しません。だから、どうやってfindand だけを使ってそれを行うのexecですか?
17 bash  find 

5
bash:変数を使用してstderr | stdoutリダイレクトを格納します
スクリプトにコマンドオプションを追加するような変数を介してstdoutとstderrをリダイレクトする方法はありますか? たとえば、スクリプトがあります: #!/bin/bash -x TEST=">/dev/null 2>&1" OPT='-p -v' mkdir $OPT 123/123/123 $TEST OPTは-p問題なく置き換えられ、bashはそれをオプションとして解釈することがわかります。ただし、リダイレクトはディレクトリ名として解釈されます。 $ ./test.sh + TEST='>/dev/null 2>&1' + OPT='-p -v' + mkdir -p -v 123/123/123 '>/dev/null' '2>&1' mkdir: created directory `123/123' mkdir: created directory `123/123/123' mkdir: created directory `>/dev' mkdir: created directory `>/dev/null' mkdir: created directory `2>&1' bashと言う方法はありますか。$ VARはリダイレクト名であり、dirs名ではありません。 …


2
cdを入力せずにディレクトリを変更しますか?
コマンドラインでbashにディレクトリを入力するだけで、次のようなコマンドなしでディレクトリを変更することは可能cdですか? たとえば、これを書く代わりに可能です: $ cd /tmp 私はこれだけを書きたいです: $ /tmp 言い換えれば、ディレクトリをアプリケーションとして呼び出す場合、そのディレクトリを機能するディレクトリとして設定する必要があります。

3
特定の引数を持つプロセスを見つけて強制終了するBashスクリプト?
ssh-D引数(ローカルプロキシのセットアップ)を使用して実行されるインスタンスを強制終了するスクリプトが必要です。 手動で、ps -A | grep -i ssh-Dを使用してインスタンスを検索し、各インスタンスを検索しますkill -9 {id}。 しかし、bashスクリプト形式ではどのように見えますか? (私はMac OS Xを使用していますが、必要なコマンドはを介してインストールしますport)
17 bash  process 

4
パイプの優先順位(|)およびbashの論理および(&&)
演算子の優先順位を持つ古典的なシナリオには、次のような行があります。 (cd ~/screenshots/ && ls screenshot* | head -n 5) そして、それが解析されているの((A && B) | C)か、それとも(A && B | C)... ここにあるほぼ公式のドキュメントでは、リストにパイプがリストされていないため、単純にテーブルをチェックインすることはできません。 さらに、bashでは、(操作の順序を変更するだけでなく、サブシェルを作成するため、この行が前の行と同等であることを100%確信していません: ((cd ~/screenshots/ && ls screenshot*) | head -n 5) より一般的には、bash行のASTを知る方法は?pythonには、操作の順序を簡単に再確認できるように、ツリーを提供する関数があります。
17 bash 

3
純粋なBashでプログラムをどの程度複雑に書くことができますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 閉じた3年前。 いくつかの非常に迅速な調査の後、Bash はチューリング完全言語であるようです。 なぜBashは、比較的単純なスクリプトを書くためにほぼ排他的に使用されるのでしょうか?BashシェルにはLinuxが付属しているため、他の一般的なコンピューター言語に必要な外部インタープリターまたはコンパイラーなしでシェルスクリプトを実行できます。これは大きな利点であり、場合によっては言語自体の平凡さを補うことができます。 それで、そのようなプログラムがどれだけ複雑になるか制限はありますか?純粋なBashは複雑なプログラムの作成に使用されますか?たとえば、純粋なBashでファイルコンプレッサ/デコンプレッサを作成することはできますか?コンパイラ?シンプルなビデオゲーム? デバッグツールが非常に限られているという理由だけで、あまり使用されていませんか?

1
変数に格納された複数行の文字列を反復処理する
のようなものを書くのは悪いことだと読んでいfor line in $(command)ますが、代わりに正しい方法のようです: command | while IFS= read -r line; do echo $line; done これはうまく機能します。しかし、私が繰り返したいのは、コマンドの直接の結果ではなく、変数の内容だとしたらどうでしょうか? たとえば、次のファイルを作成するとしますquickfox。 The quick brown foxjumps\ over - the lazy , dog. 私はこのようなことをしたいと思います: # This is just for the example, # I could of course stream the contents to `read` variable=$(cat quickfox); while IFS= read …
17 bash  read 


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