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

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

2
いくつかの同時コマンドの後にbashコマンドを実行しますか?
いくつかのコマンドを並行して実行したい。これらのコマンドがすべて終了したら、次のコマンドを開始します。私は次のアプローチがうまくいくと思いますが #!/bin/bash command1 & command2 & command3 && command4 しかし、そうではなかった。command4最初の3つのコマンドすべてが完全に終了したときに実行する必要があります。

2
Ctrl-R逆方向検索の後に前方検索する単一のショートカット
私は常にCtrl+ を使用しますRが、非常に速く押しているので、私はしばしば私が望んでいるコマンドを過ぎてしまいます。 前方検索には、最初に端末を使用していなければCtrl+ Sを使用できます(私の場合はコンソールstty -ixonを~/.bashrc修正します)。 ただし、2回押す必要があります。1回i-searchはreverse-i-searchモードに入ってから入り、2回目は実際に後退するようです。 ショートカットを2回押す必要をなくす方法はありますか?

6
実行前のコマンドバイナリの検証
bashスクリプトから実際に実行していることを確認する方法はありますか? (例えば:あなたのbashスクリプトは、いくつかのコマンドを呼び出していると言うtar、mail、scp、mysqldump)、あなたはそのことを確認して喜んでいるtar本当の、実際にあるtarことによって決定された、rootファイルおよび親ディレクトリの所有者と書き込み権限を持つ唯一の一つであるユーザー所有者/tmp/surprise/tarであるwww-dataかapache2所有者ではない人もいます。 確かに私PATHは環境について知っていますが、これを実行中のbashスクリプトからさらにチェックできるかどうか、そしてそうであれば、どのくらい正確に知りたいですか? 例:(擬似コード) tarfile=$(which tar) isroot=$(ls -l "$tarfile") | grep "root root" #and so on...

8
単語による変数の内容の反転
だから変数を持っているなら VAR='10 20 30 40 50 60 70 80 90 100' エコーします echo "$VAR" 10 20 30 40 50 60 70 80 90 100 ただし、スクリプトをさらに下に移動すると、この変数の順序が逆になり、次のように表示されます。 echo "$VAR" | <code to reverse it> 100 90 80 70 60 50 40 30 20 10 revを使用してみましたが、文字通りすべてが逆転したため、 echo "$VAR" | rev 001 09 08 …
13 linux  bash  shell  variable 

3
`set -e`を指定したbashスクリプトは`…&&… `コマンドで停止しません
最初のエラーでbashスクリプトset -eを停止するために使用します。 次のコマンドを使用しない限り、すべて正常に動作し&&ます。 $ cat script set -e cd not_existing_dir && echo 123 echo "I'm running! =P" $ $ ./script ./script: line 2: cd: not_existing_dir: No such file or directory I'm running! =P $ と比べて: $ cat script set -e cd not_existing_dir echo "I'm running! =P" $ $ ./script ./script: …

2
このBashスクリプトを呼び出すときに、ファイル引数に引用符が必要なのはなぜですか?
私は、Bashスクリプトを作成するのは初めてです。私は、より高度で便利なスクリプトの基礎として使用した「テストスクリプト」を持っています。 #!/bin/bash files=$1 for a in $files do echo "$a" done 引用符なしでこれを呼び出すと、ディレクトリ内の1つのファイルが選択されます。 testscript *.txt しかし、引用符で呼び出すと、正しく動作し、すべてのテキストファイルが選択されます。 testscript '*.txt' ここで何が起こっていますか?


4
{a、b、c}がbashで展開されるのはいつですか?
を含むbashスクリプト for i in {a,b}-{1,2}; do echo $i; done プリント a-1 a-2 b-1 b-2 実行されたとき。これは私が期待したものです- {a,b}構造が拡張されているため。 ただし、(別の)スクリプトに次が含まれる場合 v={a,b}-{1,2} echo $v 印刷する {a,b}-{1,2} それは私が期待したものではありません。私はそれが印刷されると思ったa-1 a-2 b-1 b-2。明らかに、{a,b}コンストラクトは展開されません。 私はそれをそのように拡張させることができます v=$(echo {a,b}-{1,2}) これらの観察に基づいて、2つの質問があります。1){a,b}コンストラクトはいつ拡張されますか?2)$(echo {a,b}-{1,2})必要に応じて拡張をトリガーするのに好ましい方法はありますか?

1
フォルダーに入るときに一時bashエイリアスを設定する
時々、非常にカスタマイズされたbashエイリアスが必要な場合があります。また、フォルダーに入ったときにキーバインドが必要な場合もあります(CLIから多くのコマンドを入力するのに使用されるプロジェクトになる場合があります)。 "projectAlpha /"のようなフォルダに入ると、次のようなカスタムエイリアスが期待できます。 alias doTaskX='./app arg1 arg2...|filter arg1 arg2...' ... それ以上に私は考えていました: エイリアスと一般的なコマンドを示す有用なメッセージを表示する プロジェクトの一般的なカスタムキーバインドを表示する しかし、プロジェクトのルートを離れるとすぐに、これらの設定は使用できなくなります。 今日それを行うための最良のアプローチは何ですか?
13 bash  shell  alias 

2
bashの「<Esc> Kv」とは
bashでEsc、Shift+ K、+ を押すとV、bashが次のよう$EDITORなファイル名で起動します/tmp/bash-fc-186566385。 それはなぜであり、その目的は何ですか? おそらくbashを実行していることを言及する必要がありset -o viます。

4
カラーフィルターを介したコマンドのパイピング
Unixにはこのようなものがありますか? $ echo "this should show in red" | red $ echo "this should show in green" | green $ echo "this should show in blue" | blue ここでは、リテラルカラーコードテキストが表示されることを意味しません(たとえば、ファイルに貼り付けられる)。テキストが実際にターミナルにその色として表示されることを意味します。これは可能ですか?
13 bash  terminal  colors 

1
bashの算術展開の評価
次の行は作成しますfile_c-6.txtが出力します5: $ i=5; ls file_a-${i}.txt file_b-${i}.txt &gt; file_c-$(( ++i )).txt; echo $i 5 $ cat file_c-6.txt file_a-5.txt file_b-5.txt 削除&gt;すると、リストされfile_c-6.txtて出力されます5: i最初の例の価値を維持できない理由を理解できません。 $ i=5; ls file_a-${i}.txt file_b-${i}.txt file_c-$(( ++i )).txt; echo $i file_a-5.txt file_b-5.txt file_c-6.txt 6
13 bash 

2
「bash -x」がこのスクリプトを壊すのはなぜですか?
コマンドの実行時間を測定するスクリプトがあります。 「bash-built-inにはフラグがないため」などの「実際の」timeコマンド、つまりバイナリが必要です。/usr/bin/time-f 以下に、デバッグ可能な簡略化されたスクリプトを示します。 #!/bin/bash TIMESEC=$(echo blah | ( /usr/bin/time -f %e grep blah &gt;/dev/null ) 2&gt;&amp;1 | awk -F. '{print $1}') echo ABC--$TIMESEC--DEF if [ "$TIMESEC" -eq 0 ] ; then echo "we are here!" fi 「test.sh」として保存して実行します。 $ bash test.sh ABC--0--DEF we are here! それでうまくいきました。 それでは、bashコマンドラインに「-x」を追加して、これをデバッグしてみましょう。 $ bash -x test.sh …

5
forループの結果に基づいてこのスクリプトをエラー終了させるにはどうすればよいですか?
set -o errexitエラーが発生するとスクリプト全体が失敗した時点で終了するように使用するbashスクリプトがあります。 スクリプトはcurl、意図したファイルの取得に失敗することがあるコマンドを実行します-ただし、これが発生しても、スクリプトは終了をエラーにしません。 にforループを追加しました 数秒間停止してからcurlコマンドを再試行します falseforループの下部で使用して、デフォルトの非ゼロの終了ステータスを定義します-curlコマンドが成功した場合-ループが中断し、最後のコマンドの終了ステータスはゼロになります。 #! /bin/bash set -o errexit # ... for (( i=1; i&lt;5; i++ )) do echo "attempt number: "$i curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim if [ -f ~/.vim/autoload/pathogen.vim ] then echo "file has been retrieved by curl, so breaking now..." break; fi echo "curl'ed file …

2
シェルで異なる制御文字(^ C、^ D、^ [、…)を表示する方法
シェルに制御文字を入力すると、「キャレット表記」と呼ばれるものを使用して表示されます。たとえば、エスケープ^[はキャレット表記のように記述されます。 bashシェルをカスタマイズして、見栄えを良くしたいです。たとえば、私は自分PS1を変えて、PS2色付けされました。私は今、普通のキャラクターと区別しやすくするために、コントロールキャラクターにもユニークな外観を持たせたいと思っています。 $ # Here I type CTRL-C to abort the command. $ blahblah^C ^^ I want these two characters to be displayed differently シェルで制御文字を異なる方法で強調表示する方法はありますか? 太字で表示することや、通常のテキストとは異なる色で表示することは可能ですか? ここではbashシェルを使用しbashていますが、多くの異なるシェルに適用される解決策があるため、質問にタグを付けませんでした。 制御文字の強調表示がどのレベルで行われるかわからないことに注意してください。シェル自体にあると最初に思いました。今では、bashのようなシェルでの制御文字の使用方法を制御するのはreadlineであると聞いています。そのため、質問にタグが付けられ、まだ回答を探しています。readline

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