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

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

3
パイプと標準出力への直接出力
コマンドの出力をパイプしてstdoutに送る方法があるかどうか疑問に思っていました。したがって、たとえば、fortuneフォーチュンクッキーを出力し、クリップボードにコピーします。 $ fortune | tee >(?stdout?) | pbcopy "...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and the Ugly)." (By Matt Welsh)
14 bash  pipe  stdout  tee 

7
sedが置換文字列を解釈しないようにする方法はありますか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 4年前休業。 sedを使用してキーワードを文字列に置き換える場合、sedは置換文字列を解釈しようとします。置換文字列に「/」文字など、sedが特殊と見なす文字が含まれている場合、当然、置換文字列にsedに動作方法を指示する文字を含めることを意図していない限り、失敗します。 例: VAR="hi/" sed "s/KEYWORD/$VAR/g" somefile 特殊文字の置換文字列を解釈しないようにsedに指示する方法はありますか?内容が何であっても、ファイルのキーワードを変数の内容に置き換えることができるようにしたいだけです。
14 bash  shell-script  sed 

5
ファイル名内の数字を増やしてファイル名を変更します
次のような番号付きの画像ファイルを含むディレクトリがあります。 01.png 02.png 03.png 03.svg 04.png 05.png 06.jpg 07.png 08.png 09.png 09.svg 10.png 時にはそこに複数の異なるフォーマットでファイルのバージョン(例えばかもしれpngとsvgのバージョン03と09ファイル以上)が、数字は、そうでない場合は連続しています。通常、このようなファイルは各ディレクトリに40〜80個あります。番号は、これらの画像が原稿(Word文書ですが、重要ではありません)に表示される順序に対応しています。画像の順序を決定する他の方法はありません。 新しい画像を原稿に追加する場合は、画像のコピーを正しい番号でこのディレクトリに配置する必要があります。そのため、新しい画像が原稿の5番目の画像である場合は、スペースを確保するために、ディレクトリ内のファイルの名前をこの名前に変更する必要があります。 01.png 02.png 03.png 03.svg 04.png 06.png 07.jpg 08.png 09.png 10.png 10.svg 11.png コマンドラインから、またはスクリプトやマクロから、特定の番号で始まるすべてのファイルに番号を付け直す最も簡単な方法は何ですか?bashを使用して標準のFedora Linuxをインストールしています。
14 linux  bash  rename 

2
bashスクリプトの何もしない行
私にはbashスクリプトがあり、else何も実行しないようにしたいというステートメントがあります。 これを行う最良の方法は何ですか?
14 bash 

3
bash: 'find'出力を 'readarray'にパイプする
私はを使用してファイルを検索しfind、それらのファイルをBash配列に配置して、他の操作(lsまたはなどgrep)を実行できるようにしています。しかしreadarray、findパイプで出力を読み取っていない理由を理解できません。 現在のディレクトリに2つのファイルがあるfile1.txtとしfile2.txtます。したがって、find出力は次のようになります。 $ find . -name "file*" ./file1.txt ./file2.txt だから私はそれを2つの要素が文字列である配列にパイプしたいと思います("./file1.txt"そして"./file2.txt"引用符なしで)。 他にもいくつか試してみました: $ declare -a FILES $ find . -name "file*" | readarray FILES $ echo "${FILES[@]}"; echo "${#FILES[@]}" 0 echo出力からわかるように、私の配列は空です。 だから私はここで何が間違っているのですか?の出力を標準入力としてreadarray読み取らずfind、それらの文字列を配列に入れないのはなぜですか?
14 bash  find 

2
/ dev / tcpを使用するのに<または>が必要な理由
を呼び出そうとすると/dev/tcp/www.google.com/80、 /dev/tcp/www.google.com/80 バッシュは言いno such file or directoryます。他の人のコードをオンラインで見るとき、彼らは次のような構文を使用します 3&lt;&gt;/dev/tcp/www.google.com/80 これも同様に機能することに気付きました: &lt;/dev/tcp/www.google.com/80 bashで特定のものを呼び出すためにこれらのシンボルが必要なのはなぜですか?

4
あまりにも多くのバックグラウンドジョブを開始するとどうなりますか?
Expectスクリプトを使用して、700個のネットワークデバイスで作業を行う必要があります。順番に実行できますが、これまでの実行時間は約24時間です。これは主に、接続の確立にかかる時間と、これらのデバイス(古いデバイス)からの出力の遅延が原因です。2つの接続を確立し、それらを正常に並列に実行することはできますが、どこまでプッシュできますか? 700個すべてを一度に実行できるとは思いませんが、noにはある程度の制限があります。VMが管理できるTelnet接続の数。 このようなループで700個を開始しようとした場合: for node in `ls ~/sagLogs/`; do foo &amp; done と CPU 12 CPU x Intel(R)Xeon(R)CPU E5649 @ 2.53GHz メモリ47.94 GB 私の質問は: 700のインスタンスすべてをおそらく同時に実行できますか? サーバーが制限に達するまで、どこまで到達できますか? その制限に達すると、次の反復の開始を待つだけfooですか、それともボックスがクラッシュしますか? 残念ながら企業の実稼働環境で実行しているので、何が起こるかを正確に試すことはできません。

1
「test」という名前の実行可能ファイルは$ PATHにありますが、実行されません
$ HOME / binにファイルがあります(尋ねる前に、はい、私のtestパスにあります)。ファイルへのフルパスで実行すると問題なく実行できることを確認しました。ただし、この方法で実行しないと、本当に奇妙な問題が発生します。testターミナルで実行すると、何もせずにすぐに戻ります。これは、いくつかの理由でファイルを見つけることの問題ではないことを知っています。 エラーメッセージはありません。通常、ファイルが見つからない、または実行できない場合、その旨を示すメッセージが出力されます。 実行してwhich testも、正しいファイルパスが返されます。 おそらく最も奇妙なのは、スクリプトが実行されstraceたときに正常に動作することです。私はstrace何が起こっているのかを理解できるかどうかを試してみましたが、で実行するとstrace、問題なく0で動作しました。

2
シェルの$ @のデータ構造は何ですか?
通常、$@$ 0を除くすべての引数を表すために使用します。ただし、データ構造$@が何であるかはわかりません。 $*二重引用符で囲むと動作が異なるのはなぜですか、誰でも通訳レベルの説明をくれますか? forループで反復できるため、配列のようです。ただし、simple echo $@で完全にエコーすることもできます。配列の場合、最初の要素のみが表示されます。シェルの制限により、それを実行するための実験コードをこれ以上書くことができません。 この投稿の違い:この投稿は、どのように$@振る舞うかを示します$*。しかし、私はのデータ型について疑問に思っています$@。Pythonのような解釈言語としてのシェルは、一連の基本型に従ってデータを表現する必要があります。または、言い換えると、$ @がコンピューターのメモリーにどのように保存されているかを知りたいのです。 文字列、複数行の文字列、または配列ですか? 一意のデータ型の場合、カスタム変数をこの型のインスタンスとして定義できますか?
13 bash  shell 

3
bash [[]]コマンド内の自動変数展開
の変数を間接参照する場合、符号bashを使用する必要があります$。それにもかかわらず、次のようにうまく機能しているようです: x=5 [[ x -gt 2 ]] 誰もこれを説明できますか? 編集:(詳細) 私が意味するのは、[[]]コマンドが$記号なしで変数xを逆参照する方法と理由です。はい、x = 1の場合、ステートメントはfalseと評価されます(ステータス1を返します)


4
シェルスクリプトを使用して変数のコンテンツを印刷することはできますか?(間接参照)
次の変数を宣言したとしましょう。 $ var='$test' $ test="my string" コンテンツを印刷すると、次のように表示されます。 $ echo $var $test $ echo $test my string のコンテンツ$var(のコンテンツ)を印刷する方法を見つけたい$testです。だから私は次のことをしようとしました: $ echo $(echo $var) $test しかし、ここで結果はそうでは$testありません"my string"... bashを使用して変数の内容の内容を印刷することは可能ですか?

2
UbuntuでshにBashを使用する方法
rpmファイルとしてリソースを持つ巨大なプログラムをインストールしています。の行で立ち往生 #!/bin/sh SCITEGICPERLBIN=`dirname $0` SCITEGICPERLHOME=`dirname $SCITEGICPERLBIN` if [ $SCITEGICPERLHOME == "." ] どうやら、この構文shを使用bashしてRed Hat Linuxで動作しますがunexpected operator、Ubuntuでエラーが発生します。 bashスクリプトがrpmパッケージから取得されるため、スクリプトをに変更できません。rpmパッケージを抽出して再パックすることはできますが、そのようなスクリプトが多数ある可能性があります。 御馳走にシェルのデフォルトを変更する方法がある#!/bin/shとしてbash扱うことができ、または何か他の[オペレータは?

1
Bashが整数ではなく8進コードを解釈しないようにするにはどうすればよいですか?
私はHoroscope RSSスクリプトをUnix / Linuxプロジェクトのイントロとして書いていますが、授業後に留まることができたときに教授が解決できない問題に遭遇しました。実際の日付をチェック対象として使用する方法がわからなかったため、ユーザー入力にMMDD形式の標準的な数値を入力して基本的な算術を試してみると思いました。彼によると、スクリプトは入力を整数ではなく8進コードとして読み取っているようです。スクリプトのサンプルを次に示します。 elif [ "$olddate" -gt 1121 ] &amp;&amp; [ "$olddate" -lt 1131 ] || [ "$olddate" -gt 1200 ] &amp;&amp; [ "$olddate" -lt 1222 ] then echo "You are Sagittarius" exit elif [ "$olddate" -gt 1221 ] &amp;&amp; [ "$olddate" -lt 1232 ] || [ "$olddate" -gt …

3
なぜ `|`がglobパターンで文字通り処理されないのですか?
私の質問は、シェル変数に正規表現を格納することで、シェルに特殊な文字を引用符で囲む際の問題をどのように回避できるかということです。。 エラーがあるのはなぜですか: $ [[ $a = a|b ]] bash: syntax error in conditional expression: unexpected token `|' bash: syntax error near `|b' [[ ... ]]の第2オペランドの内側は=、グロビングパターンであると予想されます。 a|b有効なグロビングパターンではありませんか?違反している構文規則を指摘できますか? 以下のコメント|は、パイプとして解釈されることを指摘しています。 次に=、globパターンを=~regexパターンに変更すると |機能します $ [[ $a =~ a|b ]] 私はから学んだ学習のBashでP180 私の以前の記事|でも(例では、解析条件式を含む)の解釈のいずれかの他のステップの前に、解釈の先頭にパイプとして認識されています。では、を使用するときに、無効な使用時にパイプとして認識されることなく|、を使用するときに正規表現演算子としてどのように認識でき ますか?そのため、パート1の構文エラーは、それがパイプとして解釈されることを意味しないと思います。=~=| シェルが標準入力またはスクリプトから読み取る各行は、パイプラインと呼ばれます。0個以上のパイプ文字(|)で区切られた1つ以上のコマンドが含まれています。読み取るパイプラインごとに、シェルはそれをコマンドに分割し、パイプラインのI / Oを設定してから、コマンドごとに以下を実行します(図7-1)。 ありがとう。
13 bash 

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