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

Bashコマンドシェル用に記述されたスクリプトに関する質問。エラー/構文エラーのあるシェルスクリプトについては、ここに投稿する前に、shellcheckプログラム(またはhttps://shellcheck.netのWeb shellcheckサーバー)で確認してください。Bashのインタラクティブな使用に関する質問は、スタックオーバーフローよりもスーパーユーザーで話題になる可能性が高くなります。

10
Unixでは、現在のディレクトリ以下のすべてをどのように削除しますか?
私はこれがサブディレクトリとその下のすべてを削除することを知っています: rm -rf <subdir-name> しかし、現在のディレクトリのすべて、およびその下のすべてのサブディレクトリとそれらすべてのサブディレクトリの内容をどのように削除しますか?



6
PS1とPROMPT_COMMANDの違いは何ですか
見ながら、この素晴らしいスレッドを私はいくつかの例を使用していることに気づきました PS1="Blah Blah Blah" そしていくつかの使用 PROMPT_COMMAND="Blah Blah Blah" (および両方を使用する場合もあります)bashシェルでプロンプトを設定する場合。2つの違いは何ですか?SO検索と少し広いgoogle検索でさえ結果が得られないので、答えを探すための適切な場所へのリンクでさえいただければ幸いです。
108 bash  prompt 

4
unsetを使用するか、変数を空に設定するか
私は現在、bashテストフレームワークを作成しています。テスト関数では、標準のbashテスト([[)と定義済みのマッチャーの両方を使用できます。マッチャーは '[['のラッパーであり、戻りコードを返すほかに、何が期待されているかを示す意味のあるメッセージを設定します。 例: string_equals() { if [[ ! $1 = $2 ]]; then error_message="Expected '$1' to be '$2'." return 1 fi } したがって、マッチャーが使用され、失敗した場合にのみ、error_messageが設定されます。 今、ある時点で、テストが成功したかどうかをテストします。成功した場合、期待値を緑で表示し、失敗した場合は赤で表示します。 さらに、error_messageが設定されている可能性があるため、メッセージが存在するかどうかをテストし、出力してから設定を解除します(次のテストではが設定されない可能性があるためerror_message)。 if [[ $error_message ]]; then printf '%s\n' "$error_message" unset -v error_message fi さて、私の質問は、変数の設定を解除するか、単に ''に設定する方が良いか、 error_message='' どちらがいいですか?実際に違いはありますか?または、メッセージが設定されたことを示すフラグを追加する必要がありますか?
108 bash  variables  syntax 

7
sudoによって呼び出されるBashスクリプトでユーザーを識別する
以下/root/bin/whoami.shを含むスクリプトを作成すると、 #!/bin/bash whoami このスクリプトは、適切に構成されたsudoを持つユーザーによって呼び出されます。 root スクリプトで実際のユーザーをすばやく取得する方法はありますか、またはこのユーザー名を渡すパラメーターを使用する必要がありますか?
108 linux  bash  sudo 



2
Bashでevalを回避する必要があるのはなぜですか?代わりに何を使用する必要がありますか?
何度も何度も、私はStack Overflowを使用evalしてBashの回答を確認し、そのような「悪」な構成を使用するために、回答がbashされ、しゃれが意図されています。なぜevalそんなに邪悪なのですか? eval安全に使用できない場合、代わりに何を使用すればよいですか?
107 linux  bash  unix  eval 

13
printfの文字の埋め込み
プロセスが実行されているかどうかを表示するbashシェルスクリプトを書いています。 これまでのところ、私はこれを手に入れました: printf "%-50s %s\n" $PROC_NAME [UP] コードは私にこの出力を与えます: JBoss [DOWN] GlassFish [UP] verylongprocessname [UP] 2つのフィールド間のギャップを「-」または「*」で埋めて、読みやすくします。フィールドの配置を乱すことなくそれを行うにはどうすればよいですか? 私が欲しい出力は: JBoss ------------------------------------------- [DOWN] GlassFish --------------------------------------- [UP] verylongprocessname ----------------------------- [UP]
107 bash  shell  printf 

20
Git Bashが私のPATHを認識しない
Git Bash(Windows)を使用すると、PATH変数内のフォルダーにありますが、フルパスを指定しないと実行可能ファイルを実行できません。bashが認識しないようです。どうして?修正できますか?
107 windows  bash  git-bash 

5
ファイルのMIMEタイプ(Content-Type)を確認するにはどうすればよいですか?
Linux bashスクリプトでファイルのMIMEタイプ(または「Content-Type」と呼ばれます)を確認する方法はありますか? 私がそれを必要とする理由は、ImageShackがファイルをアップロードするためにそれを必要としているように見えるためapplication/octet-streamです。 ファイルを確認しましたが、実際にはPNG画像です。 $ cat /1.png ?PNG (with a heap load of random characters) これは私にエラーを与えます: $ curl -F "fileupload=@/1.png" http://www.imageshack.us/upload_api.php <links> <error id="wrong_file_type">Wrong file type detected for file 1.png:application/octet-stream</error> </links> これは機能しますが、MIME-TYPEを指定する必要があります。 $ curl -F "fileupload=@/1.png;type=image/png" http://www.imageshack.us/upload_api.php

9
内部に別のディレクトリを作成する代わりに「cp」にディレクトリを上書きさせる方法は?
既存のディレクトリを上書きするBashスクリプトを記述しようとしています。ディレクトリがfoo/あり、それで上書きしようとしbar/ています。しかし、私がこれをするとき: cp -Rf foo/ bar/ 新しいbar/foo/ディレクトリが作成されます。それは欲しくない。には2つのファイルがありますfoo/。aとb。同じ名前のファイルbar/もあります。私が欲しいfoo/aとfoo/b交換するbar/aとbar/b。
107 linux  bash  shell  command-line  cp 

4
読み取り行ループ中のシェルスクリプトが最初の行の後で停止する
次のシェルスクリプトがあります。目的は、ターゲットファイルの各行(パスはスクリプトへの入力パラメーターです)をループして、各行に対して処理を行うことです。現在、ターゲットファイルの最初の行でのみ機能し、その行が処理された後に停止します。スクリプトに問題はありますか? #!/bin/bash # SCRIPT: do.sh # PURPOSE: loop thru the targets FILENAME=$1 count=0 echo "proceed with $FILENAME" while read LINE; do let count++ echo "$count $LINE" sh ./do_work.sh $LINE done < $FILENAME echo "\ntotal $count targets" ではdo_work.sh、いくつかのsshコマンドを実行します。
107 bash  shell  ssh  while-loop 

6
すべてのファイルにファイル拡張子を再帰的に追加する
ファイル拡張子のないファイルを含むいくつかのディレクトリとサブディレクトリがあります。.jpgこれらのディレクトリに含まれるすべてのファイルに追加したいと思います。ファイル拡張子を変更するだけでなく、ファイル拡張子を追加するためのbashスクリプトを見てきました。それはまた再帰的である必要があります、誰かが助けてくれますか?

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