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

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


3
「noclobber」を設定することの欠点はありますか?
それzshはコマンドを与えられたすべてのファイルを上書きできることを考えると: >* オプションを設定noclobberすることは良い考えだと思います。 >| filebashとzshの両方でデフォルトのclobber動作を使用したい場合はいつでも使用できます。(zshでは代替構文も使用できます>!file)。 noclobberPOSIXとの互換性のため、デフォルトでは設定されていないと思いますが、念のために: 設定のマイナス面はありますnoclobberか? とにかくnoclobber対話型シェルのみに設定する必要はありますか?
19 bash  shell  zsh 

3
Bashの入れ子ブレース拡張ミステリー
この: $ echo {{a..c},{1..3}} これを生成します: a b c 1 2 3 これはいいですが、それを説明するのは難しいです $ echo {a..c},{1..3} 与える a,1 a,2 a,3 b,1 b,2 b,3 c,1 c,2 c,3 これはどこかに文書化されていますか?バッシュリファレンス(それはそれを使用した例であっても)それを言及しません。

1
echo [9876543210]は1 4 5 6を表示します…なぜですか?
最後の4つのエコーステートメントに対して1 4 5 6が表示される理由を説明してください。私は偶然これにぶつかったのですが、今ではこの動作がなぜ起こるのか興味があります。 これらのステートメントは期待どおりに機能します(私にとって)。 $ echo [ 9876543210 ] [ 9876543210 ] $ echo [237890] [237890] これらのechoステートメントは常に1 4 5 6を表示します。これらの数値について何か特別なことはありますか? $ echo [9876543210] 1 4 5 6 $ echo [abcd9876543210ghi] 1 4 5 6 $ echo [-123456-] 1 4 5 6 $ echo [-7654321-] 1 4 5 6 ありがとう! …

3
この文脈で$ {1:0:2}はどういう意味ですか?
以下に表示されているコードを調べています。行/列の引数が-rまたはで始まる場合、入力をチェックします-c。${1:0:2}この文脈ではどういう意味ですか? rowArgName="-r" colArgName="-c" if [ "${1:0:2}" != $rowArgName ] && [ "${1:0:2}" != $colArgName ] then echo $correctCmdMsg >&2 exit 1 fi


3
フィールド分割に一時IFSを使用できるのはいつですか?
bashで、あなたが持っていると言ってvar=a.b.c.から: $ IFS=. printf "%s\n" $var a.b.c ただし、IFS配列の作成中にこのような使用法は有効になります。 $ IFS=. arr=($var) $ printf "%s\n" "${arr[@]}" a b c これは非常に便利ですが、これはどこに文書化されていますか?Bashドキュメントの配列またはワード分割のセクションをすばやく読んでも、どちらの方法も示されていません。単一ページのドキュメントIFSを検索しても、この効果に関するヒントは提供されません。 いつ信頼できるかわからない: IFS=x do something そして、それIFSがフィールド分割に影響することを期待してください。
19 bash 

6
bashスクリプトへのddスタイルのパラメーター
paramsをddスタイルのbashスクリプトに渡したいです。基本的に、私は欲しい ./script a=1 b=43 と同じ効果を持つ a=1 b=43 ./script 私はこれを達成できると思った: for arg in "$@"; do eval "$arg"; done evalが安全であること、つまり"$arg"静的(コード実行なし)の変数割り当てと一致することを保証する良い方法は何ですか? または、これを行うためのより良い方法はありますか?(これをシンプルに保ちたい)。
19 bash 

3
bashで組み込みコマンドの使用を明示的かつ安全に強制するにはどうすればよいですか
あります同様の質問は、あなたが例えば交換したい「ラッピング」シナリオ、との取引cd組み込みを呼び出すコマンドでcd。 ただし、shellshockなどの観点から、bashが環境から関数をインポートすることを知っているため、いくつかのテストを行ったためcd、スクリプトから組み込み関数を安全に呼び出す方法を見つけることができません。 このことを考慮 cd() { echo "muahaha"; } export -f cd この環境でを使用して呼び出されたスクリプトはすべてcd破損します(などの影響を考慮してくださいcd dir && rm -rf .)。 コマンドのタイプをチェックするコマンド(便利なtype)と、関数ではなく組み込みバージョン(builtinおよびcommand)を実行するコマンドがあります。しかし、見よ、これらも関数を使用してオーバーライドできます builtin() { "$@"; } command() { "$@"; } type() { echo "$1 is a shell builtin"; } 以下を生成します。 $ type cd cd is a shell builtin $ cd x muahaha $ builtin …
19 bash  security 

2
再帰なしでlsする方法
ディレクトリ内のパターンを持ついくつかのファイルをしようとしています。再帰的ではなく、最初のレベルのみをスキャンしたい。 私のスクリプト: for i in $(ls $INCOMINGDIR/*$BUSSINESSDATE*) do echo $i; done 上記のコマンドは再帰的にスキャンします。最初のレベルのディレクトリのみをスキャンするにはどうすればよいですか?
19 bash  shell-script  ls 


1
Shellshock Bashの脆弱性はどのように発見されましたか?
このバグは非常に多くのプラットフォームに影響を与えるため、この脆弱性が発見されたプロセスから何かを学ぶかもしれません。それはεὕρηκα(eureka)瞬間でしたか、またはセキュリティチェックの結果でしたか? StéphaneがShellshockバグを発見したことを知っているので、他の人もプロセスを知っているかもしれないので、彼がどのようにしてバグを発見したかについての話に興味があります。


3
多数のファイルを含むディレクトリのBashでタブ補完を無効にしますか?
私はディレクトリに保管している多数のファイルで作業しています。そのディレクトリに移動して誤ってTab2回押すたびに、パターンに一致するファイルを表示するのに時間がかかりすぎます(1分以上かかることがあります)。 たとえば、私のディレクトリ構造は次のとおりです。 my-project/ ├── docs/ ├── data/ <---- contains around 200k files. └── analyser/ 私はまだ完了が大好きなので、data/ディレクトリでのみこの機能を無効にする方法はありますか?5秒間のタイムアウトの設定、または特定のディレクトリ内での完了を自動的にオフにするスクリプトのようなものですか?

5
rootの代わりに作成されたファイルの所有者として自分のユーザー名を設定するようにsudoに指示する方法はありますか?
を実行するsudo cp /etc/foo.txt ~/foo.txtと、新しいファイルがroot所有者として作成されます。 現時点では、最後の2つのコマンドを使用する以外、これを回避する方法はありません(lsユースケースを明確にするため)。 belmin@server1$ ls /etc/foo.txt > -rw------- 1 root root 3848 Mar 6 20:35 /etc/foo.txt > belmin@server1$ sudo cp /etc/foo.txt ~/foo.txt belmin@server1$ sudo chown belmin: $_ を好む: 1つのsudoコマンドで実行します。 現在のユーザーを指定する必要はありません(変数を使用している可能性があります)。
19 bash  files  sudo 

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