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

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

30
スクリプト自体からBashスクリプトのソースディレクトリを取得する方法
どのように私はされているディレクトリのパスを取得んバッシュ、スクリプトが配置されているが内部でそのスクリプト? Bashスクリプトを別のアプリケーションのランチャーとして使用したい。次のように、作業ディレクトリをBashスクリプトが配置されているディレクトリに変更して、そのディレクトリ内のファイルを操作できるようにします。 $ ./application
4951 bash  directory 


20
通常のファイルがBashに存在しないかどうかを確認するにはどうすればよいですか?
次のスクリプトを使用して、ファイルが存在するかどうかを確認しました。 #!/bin/bash FILE=$1 if [ -f $FILE ]; then echo "File $FILE exists." else echo "File $FILE does not exist." fi ファイルが存在しないかどうかだけを確認したい場合に使用する正しい構文は何ですか? #!/bin/bash FILE=$1 if [ $FILE does not exist ]; then echo "File $FILE does not exist." fi
3264 bash  file-io  scripting 


26
Bashで文字列に部分文字列が含まれているかどうかを確認する方法
私はバッシュに文字列があります: string="My string" 別の文字列が含まれているかどうかをどのようにテストできますか? if [ $string ?? 'foo' ]; then echo "It's there!" fi ??私の知らないオペレーターはどこですか。エコーを使用しgrepますか? if echo "$string" | grep 'foo'; then echo "It's there!" fi それは少し不器用に見えます。
2570 string  bash  shell  substring  sh 


17
シェルでは、「2>&1」はどういう意味ですか?
Unixシェルで、さらに操作するためにストリームに結合stderrしたい場合は、コマンドの最後に次を追加できます。stdoutstdout 2>&1 したがって、headからの出力で使用したい場合g++は、次のようなことができます。 g++ lots_of_errors 2>&1 | head 最初の数個のエラーしか見ることができません。 私はいつもこれを思い出すのに苦労しており、常に調べなければなりません。これは、主にこの特定のトリックの構文を完全に理解していないためです。 誰かがこれを分解して、文字ごとに何を2>&1 意味するのか説明できますか?
2284 bash  shell  unix  redirect 


30
Bashでファイル名と拡張子を抽出する
ファイル名(拡張子なし)と拡張子を別々に取得したい。 これまでに見つけた最良の解決策は次のとおりです。 NAME=`echo "$FILE" | cut -d'.' -f1` EXTENSION=`echo "$FILE" | cut -d'.' -f2` ファイル名に複数の.文字が含まれていると機能しないため、これは誤りです。もし私が持っているとしましょうa.b.js、それはaand b.jsではなくand を考慮a.bしjsます。 Pythonで簡単に行うことができます file, ext = os.path.splitext(path) しかし、可能であれば、この目的のためだけにPythonインタープリターを起動しない方がよいでしょう。 より良いアイデアはありますか?
2109 bash  string  filenames 

30
Bashの区切り文字で文字列を分割するにはどうすればよいですか?
私はこの文字列を変数に格納しています: IN="bla@some.com;john@home.com" 次に、文字列を;区切り文字で分割して、次のようにします。 ADDR1="bla@some.com" ADDR2="john@home.com" ADDR1とADDR2変数は必ずしも必要ではありません。それらが配列の要素である場合は、さらに優れています。 以下の回答からの提案の後、私は次のようになりました: #!/usr/bin/env bash IN="bla@some.com;john@home.com" mails=$(echo $IN | tr ";" "\n") for addr in $mails do echo "> [$addr]" done 出力: > [bla@some.com] > [john@home.com] Internal_field_separator(IFS)をに設定することを含む解決策がありました;。その答えで何が起こったのかわかりませんが、どうやっIFSてデフォルトにリセットしますか? RE:IFS解決策、私はこれを試してみましたが、うまくいきました。古いものを保存してからIFS復元します。 IN="bla@some.com;john@home.com" OIFS=$IFS IFS=';' mails2=$IN for x in $mails2 do echo "> [$x]" done IFS=$OIFS ところで、私が試したとき mails2=($IN) ループで印刷するとき、最初の文字列のみを取得しました$IN。
2042 bash  shell  split  scripting 

30
Bashでコマンドライン引数を解析するにはどうすればよいですか?
たとえば、次の行で呼び出されるスクリプトがあるとします。 ./myscript -vfd ./foo/bar/someFile -o /fizz/someOtherFile またはこれ: ./myscript -v -f -d -o /fizz/someOtherFile ./foo/bar/someFile このようにを解析するのに受け入れられな方法は何ですか、いずれの場合(または2つの組み合わせ)であること$v、$fおよび $dすべてに設定されるtrueと$outFileと同じになりますか/fizz/someOtherFile?


14
Bashでコマンドの出力に変数を設定するにはどうすればよいですか?
次のような非常に単純なスクリプトがあります。 #!/bin/bash VAR1="$1" MOREF='sudo run command against $VAR1 | grep name | cut -c7-' echo $MOREF このスクリプトをコマンドラインから実行して引数を渡しても、何も出力されません。ただし、$MOREF変数に含まれているコマンドを実行すると、出力を取得できます。 スクリプト内で実行する必要があるコマンドの結果を取得して変数に保存し、その変数を画面に出力するにはどうすればよいでしょうか。
1678 bash  shell  command-line 


30
ディレクトリ内のすべてのコード行を再帰的にカウントする方法は?
PHPアプリケーションがあり、特定のディレクトリとそのサブディレクトリの下にあるすべてのコード行をカウントしたいと考えています。大まかなアイデアを得ようとしているだけなので、コメントを無視する必要はありません。 wc -l *.php このコマンドは、特定のディレクトリ内で適切に機能しますが、サブディレクトリを無視します。私はこれはうまくいくかもしれないと思っていましたが、それは74を返しています、それは間違いなくそうです... find . -name '*.php' | wc -l すべてのファイルをフィードするための正しい構文は何ですか?
1624 bash  shell 

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