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

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

7
スクリプトで変数としてスペースを使用して日付出力をフォーマットする方法は?
私はdateこのような素晴らしいフォーマットでコマンドを作りたいです: $ date +"%Y-%m-%d %H:%M:%S" 2015-09-17 16:51:58 しかし、これを変数に保存したいので、次のようなスクリプトから呼び出すことができます。 echo "$(nice_date) [WARNING] etc etc" しかし、それは動作しません $ nice_date="date +%Y-%m-%d %H:%M:%S" $ echo "$($nice_date)" date: extra operand ‘%H:%M:%S’ Try 'date --help' for more information. $ nice_date="date +\"%Y-%m-%d %H:%M:%S\"" $ echo "$($nice_date)" date: extra operand ‘%H:%M:%S"’ Try 'date --help' for more information. $ nice_date='date …
13 bash  date 

3
「cat> file_name << blah」コマンドの理解方法
次のコマンドでは、catはhere-docのコンテンツを取得し、confという名前のファイルにリダイレクトします。 cat &gt; conf &lt;&lt; EOF var1="cat" var2="dog" var3="hamster" EOF ここでコマンドの順序を理解する方法は?いbash最初のプロセスのすべての他の(ここでは-docの部分)と最終ステップとしては、それが見える&gt; conf部分を?

3
OS Xでの〜の予期しないBash完了
~TabTabbashコマンドプロンプトを押すと、予期しない一連の完了が表示されました。 最初は、/Usersディレクトリ内のすべての人々のように見えました。 それから、「ホーム」ディレクトリを持つ人々/etc/password、またはおそらく存在する人々の逆ルックアップを行っていると思いました/var/empty-これはほぼ正しいようです。 私が興味を持っているのは、実際に何が起こっているのか、なぜこれが機能するのかということです。

2
bashでflock&execは安全ですか?
私が見た「標準」ロックスニペットは次のようになります... ( flock -n 200 || exit 1; # do stuff ) 200&gt;program.lock execその時点で使用することは安全ですか?サブプロセスはロックを保持しますか? ( flock -n 200 || exit 1; exec /usr/bin/python vendors-notcoolstuff.py ) 200&gt;program.lock exec'dプロセスは開いているファイル記述子を保持しており、flockはファイル記述子を使用するため、動作するはずです。しかし、私はそれを決定的かつ明確にする文書を見つけることができません。 記録のために、これはLinuxに固有です。
13 bash  lock 

4
ディレクトリが削除されたときの「ls」エラー
2つのシェルを開いています。1つ目はディレクトリAにあります。2つ目では、ディレクトリAを削除してから再作成します。最初のシェルに戻って入力するlsと、出力は次のとおりです。 ls: cannot open directory .: Stale file handle どうして?最初のシェル(存在しないディレクトリ内で開いたままのシェル)は、次のコマンドを待つ間「フリーズ」し、ディレクトリが削除されて再作成されたことを「認識」しなかったと思いました。シェルは、文字列以外の現在の作業ディレクトリへの「より深い」参照を保持しています$PWDか?



2
変数はcdに「〜」をどのように使用できますか?
$BASECDで変数を使用するにはどうすればよいですか。私は次を試しましたが、エラーが発生します $ cd ~/z/repo_1_ruby_193/ 23:23:57 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193 $ BASE="~/z" 23:24:03 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193 $ cd $BASE/repo_1_ruby_193 -bash: cd: ~/z/repo_1_ruby_193: No such file or directory 23:24:25 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193

5
ファイル名がシェルグロブパターンに一致するかどうかをプログラムで確認するにはどうすればよいですか?
文字列$stringがglobパターンと一致するかどうかを確認したいと思います$pattern。 $string既存のファイルの名前である場合とそうでない場合があります。これどうやってするの? 入力文字列について次の形式を想定します。 string="/foo/bar" pattern1="/foo/*" pattern2="/foo/{bar,baz}" 私はかどうかを判断し、bashのイディオム検索したい$stringにマッチしたことになる$pattern1、$pattern2または他の任意のglobパターンを。ここに私がこれまで試したものがあります: [[ "$string" = $pattern ]] これはほとんど機能$patternしますが、グロブパターンではなく文字列パターンとして解釈されます。 [ "$string" = $pattern ] このアプローチの問題は、$pattern展開されてから文字列比較が実行され$string、の展開であるということ$patternです。 [[ "$(find $pattern -print0 -maxdepth 0 2&gt;/dev/null)" =~ "$string" ]] これ$stringは機能しますが、存在するファイルが含まれている場合のみです。 [[ $string =~ $pattern ]] =~演算子が$patternグロブまたはワイルドカードパターンではなく、拡張正規表現として解釈されるため、これは機能しません。
13 bash  wildcards 

3
[az]アスタリスクが数字と一致するのはなぜですか?
現在のパスに3つのディレクトリがあります。 $ls a_0db_data a_clean_0db_data a_clean_data $ls a_*_data a_0db_data: a_clean_0db_data: a_clean_data: $ls a_[a-z]*_data a_clean_0db_data: a_clean_data: 最後のlsコマンドのみが一致すると予想しましたa_clean_data。なぜそれも含むものと一致しました0か? bash --version GNU bash, version 4.2.24(1)-release (i686-pc-linux-gnu)

2
Bash:プロセス置換と標準入力
次の行は明らかです。 echo "bla" | foo | bar しかし、以下のものは同じことをしますか? echo "bla" | bar &lt;(foo) echo "bla" | bar &lt; &lt;(foo) どれが標準入力から「bla」fooをbar読み、なぜですか? もちろん、コーディングして確認することはできますが、動作が定義されているのか、信頼すべきではない機能を利用しているのかはわかりません。

3
vimコマンドを使用したBashのオートコンプリート
bashではvim、パスが2つのディレクトリよりも深いコマンドを発行すると、パスのオートコンプリートは最近機能しなくなりました(lsand などの他のコマンドで期待どおりに機能し続けますcd)。 たとえば、入力ls .config/btsync/btしてTabキーを押すと、に展開されls .config/btsync/btsync.confます。 入力vim .config/btしてTabキーを押すと、に展開されvim .config/btsync/ます。 ただし、入力vim .config/btsync/btしてTabキーを押すと、何も起こりません(上記vim .config/btsync/btsync.confのls例のように、に展開されると予想されます)。 自分のユーザーとして実行しているときとsuとして実行しているときに同じ問題が発生します。 古い投稿のbash-completionの問題について言及したこの投稿を読みましたが、2.1-5を実行しています。 更新:いくつかの追加テストの後、根本的な問題はbashがファイル名ではなくディレクトリ名のみを補完することであることがわかりました。 更新:bash-completion全体的な原因であることが判明しました。受け入れられた回答に関する私の2番目のコメントを参照してください。 この振る舞いの潜在的な原因に関する提案はありがたいことに受け取られます!

5
xargsにバイナリではなくエイリアスを使用させる
CentOS 6.5のBash 4.2: 私~/.bash_profileには、次のようなエイリアスがたくさんあります。 alias grep='grep -n --color=always' これにより、実行時に自動的に色が強調表示され、行番号が印刷されますgrep。次を実行すると、強調表示は期待どおりに機能します。 $ grep -Re 'regex_here' *.py しかし、最近これを実行したとき: $ find . -name '*.py' | xargs grep -E 'regex_here' 結果は強調表示されず、行番号も出力されなかったため、強制的に戻っ-n --color=alwaysてgrepコマンドに明示的に追加する必要がありました。 んxargsな環境でのエイリアスを読んでいませんか? そうでない場合、それを行う方法はありますか?
13 bash  alias  xargs 

4
プロセス置換を使用するときに、終了コードをキャプチャする/エラーを正しく処理するにはどうすればよいですか?
SOのQ&Aから取得した次のメソッドを使用して、ファイル名を解析して配列にするスクリプトがあります。 unset ARGS ARGID="1" while IFS= read -r -d $'\0' FILE; do ARGS[ARGID++]="$FILE" done &lt; &lt;(find "$@" -type f -name '*.txt' -print0) これはうまく機能し、あらゆる種類のファイル名のバリエーションを完全に処理します。ただし、存在しないファイルをスクリプトに渡すこともあります。例: $ findscript.sh existingfolder nonexistingfolder find: `nonexistingfile': No such file or directory ... 通常の状況では、スクリプトで終了コードをキャプチャし、次のようなRET=$?方法で終了コードを取得します。これは、上記のプロセス置換では機能しないようです。 このような場合の正しい手順は何ですか?リターンコードをキャプチャするにはどうすればよいですか?代替プロセスで何か問題が発生したかどうかを判断する他のより適切な方法はありますか?

3
Bashスクリプトエラー:整数式が必要です
私はかなり奇妙な問題を抱えています。複数のサーバーでスクリプト(Bash)を実行していますが、いずれかのサーバーで動作しなくなりました(他のすべてのサーバーで完全に正常に動作します)。 スクリプトの問題部分は次のとおりです(私は自分で書きませんでした。すべてのクレジットは「リッチ」になります)(http://www.notrainers.org/monitoring-memory-usage-on-linux-with-nagios- and-nrpe /) if [ "$result" -lt "$warn_level" ]; then #Line 56 echo "Memory OK. $result% used." exit 0; elif [ "$result" -ge "$warn_level" ] &amp;&amp; [ "$result" -le "$critical_level" ]; then #Line 59 echo "Memory WARNING. $result% used." exit 1; elif [ "$result" -gt "$critical_level" ]; then #Line …
13 bash 

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