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

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



4
ファイルに文字列が含まれていない場合にgrepを使用する方法
私のbashスクリプトでは、ファイルに特定の文字列が存在しない場合に行を印刷しようとしています。 if grep -q "$user2" /etc/passwd; then echo "User does exist!!" これは、ファイルに文字列が存在するようにしたいのですが、/ etc / passwdファイルにユーザーが見つからない場合に「ユーザーが存在しない」と表示するように変更するにはどうすればいいですか?
26 bash  ubuntu  grep 

4
cdのラッパーを書くときにcd“ $ 1”の代わりにcd“ $ @”を使用する必要があるのはなぜですか?
他の場所では、次のようにcd関数を見ました: cd() { builtin cd "$@" } $@代わりに使用することが推奨されるのはなぜ$1ですか? テストディレクトリ「r st」を作成し、この関数を含むスクリプトを呼び出しましたが、どちらの方法でも機能しました $ . cdtest.sh "r st" しかし、 $ . cdtest.sh r st私が使用するかどうか失敗しました"$@"か"$1"

2
「in foo bar…」部分なしの「for」ループをバッシュ
私は最近、私を混乱させたコードを見ていました。コードはこの例になります #!/bin/bash for var; do echo "$var" done コマンドライン引数で実行すると、それらが出力されます $ ./test a b c a b c これは、私にとっては予想外のことです。var未定義のため、なぜこれはエラーにならないのですか?これを「グッドプラクティス」と見なしていますか?

1
bashの '<(file contents)'構文とは何ですか?
セキュリティStackExchangeに関するこの回答では、興味深いbash構文を使用してインラインでファイルを生成しています。 openssl req -new -x509 -nodes -newkey ec:&lt;(openssl ecparam -name secp384r1) -keyout cert.key -out cert.crt -days 3650 このビットは特に興味深いものです。 &lt;(openssl ecparam -name secp384r1) ちょうど実行: echo &lt;(openssl ecparam -name secp384r1) 私は戻ってきます /dev/fd/63 そのため、これはファイルの内容で一時ファイル記述子を作成するようです。 これは何と呼ばれていますか?

5
Bashでhttpリンクの最後の部分を取得する方法は?
httpリンクがあります: http://www.test.com/abc/def/efg/file.jar 最後の部分のfile.jarを変数に保存したいので、出力文字列は「file.jar」です。 条件:リンクの長さは異なる場合があります。例: http://www.test.com/abc/def/file.jar. 私はそのようにしてみました: awk -F'/' '{print $7}' 、しかし問題はURLの長さなので、どんなURLの長さでも使用できるコマンドが必要です。
25 bash  shell-script  awk  cut 

2
テキストエディタでコマンドプロンプトを開く-これは何と呼ばれていますか?
Bashで私のお気に入りのトリックの1つは、テキストエディターでコマンドプロンプトを開くことです。これを(viモードで)押して行いESC vます。これを行うと、コマンドプロンプトにあるものはすべて、選択した$ EDITORに表示されます。その後、コマンドをドキュメントのように編集し、その一時ファイルのすべてを保存して終了すると、実行されます。 友人の誰もこのヒントを聞いたことがないことに驚いているので、共有できるドキュメントを探していました。問題は、その上で何も見つけられなかったことです。また、このヒントに関連する検索用語は非常に一般的であるため、ドキュメントをグーグル検索するときには役に立ちません。 私が実際にそれを調べることができるように、誰もこの技術が何と呼ばれるか知っていますか?

3
シェルはどのように家を知っていますか?
各シェルには、環境変数$ HOMEが設定されています(例:)/Users/lotolo。私がcshの下にいる場合、私はできますがunsetenv HOME、それでも私は家cdにいます。これもbash(unset HOME)でテストしましたが、同じ動作です。では、シェルはどのようにしてmy / other_userの家がどこにあるのかを知るのでしょうか?それらの値はどこで読み取られますか? 私の質問は私がどのように知っているのではなく、シェルがどのように知っているので、これは重複していませんHOME。また、この動作は他のユーザーにも拡張されています。
25 bash  cd-command  home  tcsh  csh 

2
関数、エイリアス、実行可能ファイルのハイフンに問題はありますか?
私のテスト(BashおよびZシェル)では、名前にハイフンが含まれる関数またはエイリアスまたは実行可能なシェルスクリプトの定義に問題はありませんでしたが、これがすべてのシェルおよびすべてのユースケースで問題ないことを確信していません。 私がこれをしたい理由は、ハイフンはアンダースコアよりも入力しやすいため、より速く、よりスムーズになります。 それが問題ではないと信頼するのをためらう理由の1つは、一部の言語(Rubyなど)では、ハイフンが周囲にスペースがなくてもマイナス記号として解釈されることです。ハイフンがスペースなしでもオプションを通知するものとして解釈されるシェルで、このようなことが起こるかもしれませんが、私は驚かないでしょう。 私が少し疑っているもう1つの理由は、テキストエディターがハイフンを含む関数の構文強調表示を台無しにしていることです。(もちろん、シェルスクリプトの構成を強調する構文の単なるバグである可能性は完全にあります。) ハイフンを避ける理由はありますか?
25 bash  shell  zsh  ksh  csh 

9
コマンドラインでファイルをコピーして貼り付けるためのクリップボード?
Bashで、あるディレクトリにアクセスしてから、別のディレクトリにアクセスするとします。ファイルの長いパス名を指定せずに、最初のディレクトリから2番目のディレクトリにファイルをコピーしたいと思います。出来ますか? 私の一時的な解決策は/tmp、ファイルのコピーを保存する一時的な場所として使用することです。cp myfile /tmp最初のディレクトリにいるcp /tmp/myfile .とき、次に2番目のディレクトリにいるとき。しかし、ファイルがで何かを上書きするかどうかをチェックするかもしれません/tmp。 ファイルをコピーして貼り付けるためのクリップボードに似たものはありますか?

4
スペースとワイルドカードを含むパスを含む文字列でのbashスクリプトエラー
Bashスクリプトの基本を理解するのに苦労しています。ここに私が持っているものがあります: #!/bin/bash FILES="/home/john/my directory/*.txt" for f in "${FILES}" do echo "${f}" done 私がやりたいのは、すべての.txtファイルをforループにリストすることです。しかし、中のスペースmy directoryとアスタリスクは*.txtうまく再生されていません。二重引用符の有無にかかわらず、変数名に中括弧の有無にかかわらず使用してみましたが、すべての.txtファイルを印刷できません。 これは非常に基本的なことですが、疲れてまっすぐに考えることができないため、私はまだ苦労しています。 何が間違っていますか? ファイルにスペースやアスタリスクがなければ、上記のスクリプトを正常に適用することができました。しかし、スペースとアスタリスクの両方があると、すべてが台無しになります。

4
bashでコマンドを定義することは可能ですか?
たとえば、以下を設定できますか? gb = cd /media/Dan/evolution ...それでgb、bashで実行するたびcdに、その特定のディレクトリに移動できますか? オンラインで何かを見つけました:aliasコマンド。ただし、上記の作業を実行できないようです。 それを行うことは可能ですか?どうやって?

3
bashでtarファイルの整合性をテストする
「.tar」ファイルを作成するbashスクリプトがあります。ファイルが作成されたら、その整合性をテストし、整合性が悪い場合はルートユーザーにメールを送信します。 コマンドを使用しtar -tf /root/archive.tarてファイルの整合性をチェックする必要があることは知っていますが、これをbash ifステートメントで実装してエラーをチェックするにはどうすればよいですか?
25 bash  tar 

1
コマンド完了出力をリダイレクトするにはどうすればよいですか?
コマンドラインでは、コマンドの後に&gt;or |演算子を使用して、コマンドの出力をファイルまたは別のコマンドにリダイレクトまたはパイプできます。出力をファイルにリダイレクトしたいというあまり標準的ではない状況に遭遇しましたが、リダイレクトする機会がないようです: 新しいターミナルにいるとき、 [chiliNUT ~]$ Tab最初に何も入力せずに押すと、尋ねられます display all 1725 possibilities? (y or n) そして、を入力するとy、さまざまなコマンドの素敵な長いリストが表示されます。この出力をファイルにリダイレクトまたはパイプするにはどうすればよいですか?&gt; myfile.txtどこにでも入力する機会がないようです。 使用してCentOSのは(決勝)6.4をリリース。

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