タグ付けされた質問 「shell-script」

シェルスクリプト、シェルによって解釈される実行可能ファイル(bash、zshなど)に関する質問。

3
画面でスクリプトを実行する
切り離された画面でbashスクリプトを実行したい。スクリプトはプログラムを数回呼び出しますが、各プログラムは待機に時間がかかりすぎます。私の最初の考えは、単に画面を開いてからスクリプトを呼び出すことでしたがctrl-a d、スクリプトの実行中に(byで)切り離すことはできないようです。それで、私はいくつかの調査を行い、シバンを次のように置き換えるこの指示を見つけました: #!/usr/bin/screen -d -m -S screenName /bin/bash しかし、それも機能しません(オプションは認識されません)。助言がありますか? PS screen -dmS name ./script.shたぶん、私の目的にはおそらく役立つと思いますが、これをスクリプトに組み込む方法についてはまだ興味があります。ありがとうございました。

2
ファイルを連結する最速の方法
合計20GBを超える1万個以上のファイルがあり、それらを1つのファイルに連結する必要があります。 より速い方法はありますか cat input_file* >> out ? 推奨される方法はbashコマンドです。Pythonは、かなり遅くなければ受け入れられます。
25 bash  shell-script  files  cat 


2
Bashスクリプト-戻り値が0になるまでループする
スクリプトで何かをアンマウントする必要がありますが、すべてのデータのコピーが完了してアンマウントが失敗する前にアンマウントされることがあります。「ブロッキング」マウントを行う方法を探しましたが、何も見つかりませんでした。そのため、アンマウントできるようになるまでループするスクリプトを作成しようとしましたが、機能しません。 while [ `sudo umount mount` ] do sleep 0.1 done rmdir mount 実行出力の場合: umount: /home/evantandersen/mount: device is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1)) rmdir: failed to remove `mount': Device or resource busy の戻り値sudo umount mountが0になるまでループしないでください。つまり、正常にアンマウントされました。

4
エコーを使用した色付きテキストの印刷
エコー、たとえば赤色を使用して色付きのテキストを印刷する場合、コードは次のecho -e "\e[1;31m This is red text \e[0m" とおりです。この例では、31が赤色のコードであり、他の色の数が次のとおりであることを知っています。 Black 0;30 Dark Gray 1;30 Blue 0;34 Light Blue 1;34 Green 0;32 Light Green 1;32 Cyan 0;36 Light Cyan 1;36 Red 0;31 Light Red 1;31 Purple 0;35 Light Purple 1;35 Brown 0;33 Yellow 1;33 Light Gray 0;37 White 1;37 背景色の場合、numは40〜47です。 何をん:私の質問はこれです\eと[し、m(31の後に)正確にここに意味ですか?\ …

4
find -exec呼び出しでのユーザー定義関数の実行
私はSolaris 10を使用していますが、ksh(88)、bash(3.00)、およびzsh(4.2.1)で以下をテストしました。 次のコードは結果を生成しません。 function foo { echo "Hello World" } find somedir -exec foo \; (交換することによって示されるように検索には、いくつかのファイルが一致しない-exec ...と-print)、およびから外部に呼び出されたときに機能が完璧に動作findコール。 man findページの内容は-exec次のとおりです。 -exec command実行されたコマンドが 終了ステータスとしてゼロ値。の終わり コマンドはエスケープされた セミコロン(;)。コマンド引数{}は 現在のパス名に置き換えられます。もし -execの最後の引数は{}であり、あなたは セミコロン(;)ではなく+を指定します。 コマンドの呼び出し回数が少ない {}はパス名のグループに置き換えられました。もし コマンドを呼び出すと、 終了ステータスとしてゼロ以外の値、検索 ゼロ以外の終了ステータスを返します。 私はおそらくこのようなことをして逃げることができます: for f in $(find somedir); do foo done しかし、私はフィールドセパレーターの問題に対処することを恐れています。 呼び出しからシェル関数(同じスクリプトで定義され、スコープの問題に煩わされないようにする)をfind ... -exec ...呼び出すことは可能ですか? 私は両方でそれを試してみました/usr/bin/findし、/bin/findそして同じ結果を得ました。

3
シェルでの$#の意味
$#シェルではどういう意味ですか? 私は次のようなコードを持っています if [ $# -eq 0 ] then 私は何を$#意味するのかを理解したいのですが、Google検索はこれらの種類のものを検索するには非常に悪いです。

5
コマンドをテストして検索する場合、bashを使用するにはどうすればよいですか?
クラッシュログのあるディレクトリがあり、findコマンドに基づいてbashスクリプトで条件文を使用したいと思います。 ログファイルは次の形式で保存されます。 /var/log/crashes/app-2012-08-28.log /var/log/crashes/otherapp-2012-08-28.log 最後の5分間に変更された特定のアプリのクラッシュログがある場合にのみifステートメントがtrueを返すようにします。find私が使用することをコマンドは次のとおりです。 find /var/log/crashes -name app-\*\.log -mmin -5 それをifステートメントに適切に組み込む方法がわかりません。私はこれがうまくいくと思う: if [ test `find /var/log/crashes -name app-\*\.log -mmin -5` ] then service myapp restart fi 不明な点がいくつかあります。 私はifフラグを見ましたが、もしあれば、どれを使うべきかわかりません。 testディレクティブが必要ですか、それともfindコマンドの結果に対して直接処理する必要がありますか、それともfind... | wc -l代わりに行カウントを取得するために使用する必要がありますか? この質問に答えるために100%必要というわけではありませんがtest、コマンドが返すリターンコードに対するテストのためですか?そして、それらは目に見えないようなものです- stdout/ stderr?このmanページを読みましたが、いつ使用するtestか、どのようにデバッグするかについてはまだはっきりしていません。


4
1つの「while read」ループで変数がローカルになっているのに、一見似ているように見える別のループではないのはなぜですか?
$x以下のスニペットから異なる値を取得するのはなぜですか? #!/bin/bash x=1 echo fred > junk ; while read var ; do x=55 ; done < junk echo x=$x # x=55 .. I'd expect this result x=1 cat junk | while read var ; do x=55 ; done echo x=$x # x=1 .. but why? x=1 echo fred | …

6
複数のダイジェスト(md5、sha256)を同時に計算しますか?
ディスクI / Oと空きRAMがボト​​ルネックであるという仮定の下で(CPU時間は制限ではありません)、複数のメッセージダイジェストを一度に計算できるツールが存在しますか? 大きなファイル(サイズはギガバイト)のMD-5およびSHA-256ダイジェストを、できれば並列に計算することに特に興味があります。試しましたがopenssl dgst -sha256 -md5、1つのアルゴリズムを使用してハッシュを計算するだけです。 予想される動作の擬似コード: for each block: for each algorithm: hash_state[algorithm].update(block) for each algorithm: print algorithm, hash_state[algorithm].final_hash()


2
grepの出力を/ dev / nullにリダイレクトする意味は何ですか?
次の行を検討してください。 ${libdir}/bin/licenseTool check "${SERIAL}" "${VERSION}" "${PRODUCT}" ${libdir} | grep '^200' >/dev/null 結果ならば出力内のパターンを探しているのポイント何捨てられますか? そして、そのような行がbashスクリプトの最後のものとして表示される場合、その終了値はスクリプトの呼び出し元に返されますか、それとも無視されますか?(これは副作用のためだけに行われると推測できるのか、何らかの形で呼び出し元に何かを返すのかどうか推測しています。)

2
bashのexport -fと同等のzshは何ですか
だから私は使い始めましたzsh。大丈夫です。非常にクールと滑らかなようで、現在の作業ディレクトリと実際のコマンドラインは、異なるライン上にあるという事実はいいですが、同時に、私は気づいzshビットより遅いことができbash、にテキストを印刷する場合は特に画面。 私が一番気に入ったのは、でzsh定義したすべての関数と「下位互換性」があるという事実でした.bashrc。 1つ不満です。これらの機能はすべて完全に機能しますが、エクスポートシステムがどのように機能するかはわかりません。 これらの.bashrc関数の一部をエクスポートして、スクリプトや外部プログラムなど、他の場所で使用できるようにしましたexport -f。 zshでは、エクスポートについても言及されていないようです。自動ロードですか?これらの2つのことは同じですか?私はそれを理解するのに非常に苦労しています。

8
Bashの複数のテキストファイルの先頭と末尾にテキストを追加するにはどうすればよいですか?
テキストファイルでいっぱいのディレクトリがあります。私の目標は、すべてのテキストの最初と最後にテキストを追加することです。先頭と末尾にあるテキストは、各ファイルで同じです。 Webから取得したコードに基づいて、これはファイルの先頭に追加するためのコードです。 echo -e 'var language = {\n$(cat $BASEDIR/Translations/Javascript/*.txt)' > $BASEDIR/Translations/Javascript/*.txt これは、ファイルの最後に追加するためのコードです。目標は};、各ファイルの最後にテキストを追加することです。 echo "};" >> $BASEDIR/Translations/Javascript/*.txt 私が描いた例は、個々のファイルを操作するためのものでした。ワイルドカードを使用して、複数のファイルを操作してみようと思いました*.txt。 私も他の間違いを犯しているかもしれません。いずれにしても、複数のファイルの最初と最後にテキストを追加するにはどうすればよいですか?

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