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

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


2
「$ {my_array [@] /#/-}」の/#/-はどのタイプの操作ですか?
配列をコマンドの引数に変換するために受け入れられた答えは?次のBashコマンドを使用します。 command "${my_array[@]/#/-}" "$1" 私は、/#/-パーツが何をするのかを正確に把握しようとしています。残念ながら、私はそれを何と呼ぶべきかわからないので、ドキュメントを見つけるのに苦労しています。アレイといくつかのWebサイトに関するBashのマニュアルページセクションを調べましたが、何も見つかりません。
17 bash  array 

1
二重コロン「::」を含むBashスクリプト関数名
私は二重のコロンと関数名があるbashスクリプト今日出会った::それらの中に、例えば、file::write()とfile::read()。Bashスクリプトでこの構文を見たことがないので、スクリプトを呼び出したときは正常に実行されました(驚いたことに)。 私のシステム(およびオンライン)でBashのmanページを精査した後、関数名のこの構文をサポートするドキュメントで何も見つかりません。たとえば、このセクションでShell Defined Functionsは、シェル関数の構文を次のように定義しています。 function name [()] compound-command [redirection] そして(マニュアルのどこかで)トークンnameは次のように定義されます name A word consisting only of alphanumeric characters and underscores, and beginning with an alphabetic character or an underscore. Also referred to as an identifier. 関数名の二重コロン構文のどこにも言及はありません。 私がこれまでに見つけたこの二重コロン構文への唯一の他の参照は、このシェルスタイルガイド(サブセクションを参照Naming Conventions > Function Names)にありますmypackage::myfunction()。 この関数名の二重コロン構文はBashシェルの正当な機能ですか、それともおそらく文書化されていない機能ですか?合法である場合、Bashマニュアルのどこに記載されていますか?私は見て、見ましたが、マニュアルでそれについて何も見つけることができません。最も近いIましFOUNDはの使用である::内PATH検索パスに現在の作業ディレクトリを追加するための環境変数。 例 #!/bin/bash function abc::def() { echo "${FUNCNAME[0]}" } …

2
エコーを使用して機密データをchpasswdに渡すことは安全ですか?
私は大量にしようとしています使用して、いくつかのユーザーアカウントのパスワードを設定しますchpasswd。パスワードはランダムに生成され、出力されるstdout必要があります(書き留めるか、パスワードストアに保存する必要があります)chpasswd。 素朴に、私はこれをこのようにします { echo student1:$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 13 ; echo '') echo student2:$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 13 ; echo '') } | tee >(chpasswd) ただしecho、引数は通常他のユーザーに表示されるため、コマンドライン引数として新しいパスワードを渡すことを心配していますps -aux(ただし、にはecho行が表示されていませんps)。 返されたパスワードに値を追加してからそれを渡す別の方法はありますchpasswdか?

2
バックスラッシュドットはコマンドとして何を意味しますか?
私がインストールしたソフトウェアは、プロファイルに次のような行を挿入しました: [ -s "$SOME_FILE" ] && \. "$SOME_FILE" dot .はの同義語であることがわかっているsourceので、これはファイルをソースしているだけではないかと思いますが、これまで見たことはありません\.。それは他に何かをしますか? DVに関する編集:「バックスラッシュドット」を検索./すると、実行可能ファイルを呼び出すタイミングに関する質問man sourceが表示され、マンページが\.表示されなくなります。私は他に何を試すべきかわからないので、質問です。 編集2:関連する質問を見る バックスラッシュでシェルコマンドを開始する理由 コマンドの先頭のバックスラッシュ バックスラッシュがエイリアスの展開を妨げる理由 エイリアスによってシャドウされているコマンドを実行する
17 bash 

1
$(command $ arg)を引用する正しい方法は何ですか?
長年私を悩ませてきたこの難問を解決する時が来ました... 私は時々これに会ってきました、そして、これが行く方法であると思いました: $(comm "$(arg)") そして、私の見解は経験に強く支えられていると思いました。しかし、私はもうよくわかりません。Shellcheckでも決心することはできません。両方です: "$(dirname $0)"/stop.bash ^-- SC2086: Double quote to prevent globbing and word splitting. そして: $(dirname "$0")/stop.bash ^-- SC2046: Quote this to prevent word splitting. 背後にあるロジックは何ですか? (これはShellcheckバージョン0.4.4、btwです。)

4
デフォルトでbash履歴置換がまだ有効になっているのはなぜですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 去年閉鎖されました。 なぜbashがデフォルトで履歴置換をまだ有効にしているのか知っていますか?私.bashrcはset +H長年にわたってこの機能を取り入れてきましたが、他の人たちはまだこの機能に噛まれています。 ほぼすべての人がコピーアンドペースト機能を備えた端末を使用しており、readlineライブラリでコンパイルされたbash と履歴の置換が対話型シェルでのみデフォルトで有効になっていることを考えると、この機能を使用する理由は本当にありますか?すべてのシェルでデフォルトで無効になっている場合でも、既存のスクリプトは破損しません。 履歴置換が壊れている理由がわからない場合は、これを試してください。 $ set +H # disable feature history substitution $ echo "WTF???!?!!?" WTF???!?!!? $ set -H # enable feature history substitution $ echo "WTF???!?!!?" echo WTF???echo WTF???!?!!? WTF???echo WTF???!?!!? (それはすべてのスクリプトのために、デフォルトでは無効と機能を実行する前に結果を確認するために存在していた場合、明らかな特徴は、大きな問題がありますshopt -s histverify。) こちらもご覧ください: 感嘆符「!」がbashを混乱させることがあるのはなぜですか? Bashの履歴にこのコマンドが記録されないのはなぜですか? 強打をエコーする方法! Bash:同じ行内の二重引用符の後の単一引用符内の履歴展開


3
予期しないトークン「fi」の近くの構文エラー
必ずしも答えが欲しいわけではありませんが、誰かが私にいくつかの文献や例を教えてくれれば。私はそれを把握したいと思います。 スクリプトを実行すると、エラーが表示されます。 予期しないトークンの近くの構文エラー fi 私はif自分のif声明にコメントをつけ、追加することで私の声明に私の問題があることを推測しecho "$NAME"ました/etc/。 変更を加えると、#from ifを削除してto にfi追加する#と wc -c "$NAME"、上記の構文エラーが表示されます。;その間に追加しました]。またthen、解像度なしで次の行に移動しました。 #!/bin/bash for NAME in /etc/* do if [ -r "$NAME" -af "$NAME" ] then wc -c "$NAME" fi done
17 bash 

2
スクリプトの外部からbash実行トレース(-xを設定)を抑制します
私はこの質問に対する答えを見つけようとしましたが、今のところ運がありません。 他のスクリプトを実行するスクリプトがあり、それらのスクリプトの多くには「set -x」が含まれており、実行するすべてのコマンドが出力されます。それを取り除きたいのですが、スクリプトのいずれかがエラーメッセージをstderrに送信した場合は情報を保持します。 だから私は単に書くことはできません ./script 2>/dev/null また、他のスクリプトを編集する権限がないため、設定オプションを手動で変更することはできません。 私はstderrから個別のファイルまですべてをログに記録し、トレースコマンドを除外することを考えていましたが、おそらくもっと簡単な方法がありますか?
17 bash  shell  set 

2
sshシェルで変数をエクスポートすると、エクスポートされた変数のリストが表示されるのはなぜですか?
このことを考慮: $ ssh localhost bash -c 'export foo=bar' terdon@localhost's password: declare -x DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus" declare -x HOME="/home/terdon" declare -x LOGNAME="terdon" declare -x MAIL="/var/spool/mail/terdon" declare -x OLDPWD declare -x PATH="/usr/bin:/bin:/usr/sbin:/sbin" declare -x PWD="/home/terdon" declare -x SHELL="/bin/bash" declare -x SHLVL="2" declare -x SSH_CLIENT="::1 55858 22" declare -x SSH_CONNECTION="::1 55858 ::1 22" declare -x …
17 bash  ssh 

1
bash自体によって確立されたTCP接続を終了する方法は?
exec 3<>/dev/tcp/192.168.0.101/6435192.168.0.101:6435とのTCP接続を確立するために使用しました。そして、pipeコマンドとともにいくつかのメッセージを受信し、送信しました。 次に、TCP接続を終了します。しかし、ss -anpetbash自体が子プロセスをフォークすることなくこの接続を保持していることがわかります。 シグナル9と15をbashプロセスに送信しようとしましたが、ご存じのとおり、bashは自分自身を殺すことはできません。 それで、使用しているPTSを終了せずに、確立したTCP接続を終了できますか(ルートで殺すこともCtrl + Dを送信することもできません)?

2
文字列のbash変数の後にスペースを避ける方法は?
色の変数があります。文字列内で評価することにより、文字列に色を設定するために使用します。ただし、名前の後にスペースを含める必要があります(名前にテキストの一部が含まれないようにするため)。これは時々悪く見える。 このスペースの使用(印刷)を避けるにはどうすればよいですか? 例(と言うとRed=1、NC=2): echo -e "$Red Note: blabla$NC". 出力: 1 Note: blabla2. 期待される出力: 1Note: blabla2.

1
このffmpegコマンドがzshではなくbashで機能するのはなぜですか?
今日、私は仕事から家に帰り(Ubuntuボックスでbashを実行)、私の大好きなzshでローカルアーチボックスでコードを実行しようとしましたが、コマンドは失敗しましたか? コマンドは、個人情報とIPが明らかに変更された状態で以下にあります ffmpeg -i rtsp://user:pass@my.webserver.org:5554/my-media/media.amp?videocodec=h264 -threads 3 -vcodec copy -f segment -segment_time 2 outfiles/cam_out%04d.mp4 それはbashで完璧に動作しますが、zshで実行するとエラーが発生します zsh: no matches found: rtsp://user:pass@my.webserver.org:5554/my-media/media.amp?videocodec=h264 私の愛するzshが私を裏切ったのはなぜですか?
17 bash  zsh  quoting  url 

3
{1,2,3}と{1..3}の違い
シーケンス{1,2,3}との間に違いはあり{1..3}ますか? たとえば、いくつかのファイルがある場合 file.1 file.2 file.3 そして私catは彼らと一緒に使いcat file.{1..3} > fileたいのですか? 私が知っていることcat file.*>fileは、シェルが時々ランダムな方法でファイルを展開できるため問題を引き起こす可能性があることです(これはinodeに依存すると思いますか?)
17 bash 

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