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

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

5
コマンドオプションでファイルからではなくパイプから読み取ったデータを使用する
人の定義によると、このコマンドはファイルから入力を取得します。 $ command -r FILENAME FILENAMEを使用して生成されたファイル名のリストを含むファイルであるとしますls > FILENAME。 代わりに、コマンドにls直接結果を与えるにはどうすればよいですか?私の頭の中で、このようなことができるはずです: $ ls | command -r しかし、そうではなく、の出力はls引数としてフックされません。出力: Usage: command -r FILENAME error: -r option requires an argument 目的の効果を得るにはどうすればよいですか?
18 bash  pipe 


4
bashスクリプトからプロセスをデタッチするにはどうすればよいですか?
スクリプトを終了するときにSIGINTがプロセスに転送されないように、bashスクリプトからプロセスをデタッチしようとしています。 disownターミナルでコマンドを直接使用しましたが、bashではdisownSIGINTの転送を停止しません。このスクリプトの目的は、openocdを起動し、1回の呼び出しでgdbを起動することです。スクリプトは終了しない(gdbを実行している)ので、SIGINTはgdbからopenocdに転送されますが、これはSIGINTがgdbのhaltコマンドとして使用されるため問題です。 ターミナルでは、次のようになります。 $ openocd & # run openocd demonized $ disown $! # disown last pid $ gdb # invoke GDB 端末でこの順序で呼び出された場合、SIGINTはgdbからopenocdに渡されません。ただし、これと同じ呼び出しがbashスクリプトで行われた場合、SIGINTが渡されます。 どんな助けも大歓迎です。 psこの問題はOS Xにありますが、すべてのUnixツールにも移植可能なツールを使用しようとしています。
18 bash  disown 


5
カラーPDFを白黒に変換する方法は?
いくつかの色付きのテキストと画像を含むPDFを、白黒のみの別のPDFに変換して、サイズを縮小したいと思います。さらに、写真のページ要素を変換せずに、テキストをテキストとして保持したいと思います。私は次のコマンドを試しました: convert -density 150 -threshold 50% input.pdf output.pdf 別の質問、リンクで見つかりましたが、それは私が望んでいないことをします:出力内のテキストは質の悪い画像に変換され、選択できなくなりました。私はGhostscriptで試しました: gs -sOutputFile=output.pdf \ -q -dNOPAUSE -dBATCH -dSAFER \ -sDEVICE=pdfwrite \ -dCompatibilityLevel=1.3 \ -dPDFSETTINGS=/screen \ -dEmbedAllFonts=true \ -dSubsetFonts=true \ -sColorConversionStrategy=/Mono \ -sColorConversionStrategyForImages=/Mono \ -sProcessColorModel=/DeviceGray \ $1 ただし、次のエラーメッセージが表示されます。 ./script.sh: 19: ./script.sh: output.pdf: not found ファイルを作成する他の方法はありますか?

3
env、setenv、exportと使用する場合の違いは何ですか?
最近、環境変数を設定する3つのオプションがあることに気付きました。 export envVar1=1 setenv envVar2=2 env envVAr3=3 他の方法がある場合は、教えてください。 いつ他を好むべきですか?ガイドラインを提案してください。 シェルの互換性については、どれが最も拡張性がありますか(より多くのシェルの方言をカバーしています)? 私はすでにこの答えに気付いていましたが、質問envと使用設定ガイドラインを拡大したいと思います。

2
sshコマンドの実行時にPATHを設定する方法は?
ユーザーが/bin/bashでシェルを持っていると仮定します/etc/passwd。次にssh user@host command、Bashを使用してコマンドを実行します。ただし、そのシェルはログインでもインタラクティブでもあり~/.bash_profileません~/.bashrc。つまり、ソースでもありません。その場合PATH、実行可能ファイルを見つけて実行できるように環境変数を設定する方法は?実際のコマンドの前に接頭辞を付けることをお勧めしますsource ~/.bashrcか?
18 bash  ssh 

4
Linuxコマンドラインプロンプトでホスト名を表示する方法
複数のVMがあり、現在、コマンドラインプロンプトは次のようになってい-bash-3.2$ます。ホスト名が含まれていないため、すべてのVMで同一です。hostname操作を行う前に、使用しているVMを常に確認する必要があります。ホスト名をシェルプロンプトに追加するにはどうすればよいですか? ENV:CentOS / ssh
18 bash  prompt  hostname 

4
別のスクリプトのコンテンツとして使用するために変数をエスケープします
この質問は、適切にエスケープされた文字列リテラルの書き方に関するものではありません。スクリプト内または他のプログラムで直接使用するために変数をエスケープする方法に関するものではない関連する質問は見つかりませんでした。 私の目標は、スクリプトが他のスクリプトを生成できるようにすることです。これは、生成されたスクリプト内のタスクが別のマシン上で0 回からn回実行され、それらの生成元のデータが実行前に(再び)変更される可能性があるため、ネットワークを介して直接操作を行うためですうまくいかない。 単一引用符などの特殊文字を含む可能性がある既知の変数がある場合、完全にエスケープされた文字列リテラルとして書き出す必要があります。たとえば、生成されたスクリプトにfoo含まれる変数bar'bazは次のようになります。 qux='bar'\''baz' これは"qux=$foo_esc"、スクリプトの他の行に追加することによって書き込まれます。私はこのようにPerlを使用してそれをやった: foo_esc="'`perl -pe 's/('\'')/\\1\\\\\\1\\1/g' <<<"$foo"`'" しかし、これはやり過ぎのようです。 私はbashだけでそれを行うことに成功していません。私はこれらの多くのバリエーションを試しました: foo_esc="'${file//\'/\'\\\'\'}'" foo_esc="'${file//\'/'\\''}'" しかし、余分なスラッシュが出力に表示されるか(私が実行した場合echo "$foo")、構文エラーが発生します(シェルから実行された場合、さらに入力が必要になります)。


11
diff出力を色付けする方法は?
Unixファイルを条件付きでフォーマットしたかったのですが、現在diffコマンドに取り組んでおり、diffコマンド出力のテキストをフォーマットできるかどうかを知りたいと思いました。 例: 一致した値は緑色で表示されます。 一致しない値は赤で表示されます。 私は2つのファイルを持っていると仮定file1してfile2、私のコマンドがありますdiff file1 file2。 ここで、出力に5つの不一致が含まれていると仮定して、それらの不一致を赤色で表示する必要があります。UNIXを使用してこれを達成する方法は? 要するに、「不一致の値に対するdiffコマンドの出力の色を赤に変更する」
18 bash  ksh  diff 

3
bashシェルスクリプトループから配列インデックス変数にアクセスしますか?
bashシェルスクリプトで配列をループしながら、配列インデックス変数にアクセスしたい。 myscript.sh #!/bin/bash AR=('foo' 'bar' 'baz' 'bat') for i in ${AR[*]}; do echo $i done 上記のスクリプトの結果は次のとおりです。 foo bar baz bat 私が求める結果は次のとおりです。 0 1 2 3 これを達成するためにスクリプトを変更するにはどうすればよいですか?

3
bashの条件ステートメントでgrepを使用する
私はまだbashでのスクリプト作成は非常に新しいので、基本的なことだと思ったことをいくつか試してみました。Ubuntu 14.04を実行しているサーバーから更新するDDNSを実行したい。 dnsimpleからいくつかのコードを借りて、これは私がこれまで持っているものです: #!/bin/bash LOGIN="email" TOKEN="token" DOMAIN_ID="domain" RECORD_ID="record" IP=`curl -s http://icanhazip.com/` OUTPUT=` curl -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "X-DNSimple-Domain-Token: $TOKEN" \ -X "PUT" \ -i "https://api.dnsimple.com/v1/domains/$DOMAIN_ID/records/$RECORD_ID" \ -d "{\"record\":{\"content\":\"$IP\"}}"` if ! echo "$OUTPUT" | grep -q "(Status:\s200)"; then echo "match" $(echo "$OUTPUT" | grep -oP '(?<="message":")(.[^"]*)' …

4
jqを使用して変数をbashするJSON配列
私はそのようなJSON配列を持っています: { "SITE_DATA": { "URL": "example.com", "AUTHOR": "John Doe", "CREATED": "10/22/2017" } } jqを使用してこの配列を反復処理して、各項目のキーを変数名として、値を値として設定できるようにしたいと考えています。 例: URL = "example.com" AUTHOR = "John Doe" CREATED = "10/22/2017" これまでのところ、配列を反復処理しますが、文字列を作成します。 constants=$(cat ${1} | jq '.SITE_DATA' | jq -r "to_entries|map(\"\(.key)=\(.value|tostring)\")|.[]") どの出力: URL=example.com AUTHOR=John Doe CREATED=10/22/2017 これらの変数をスクリプトのさらに下で使用したいと考えています。 echo ${URL} しかし、これは現時点では空の出力をエコーし​​ます。私はevalそこに何かが必要だと思いますが、指をその上に置くことができないようです。
18 bash  jq 


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