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

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



3
psのcputimeの出力をフォーマットします
ある期間にわたってプロセスのCPU使用率を監視できる(グラフを作成する)スクリプトを記述しようとしています。 これまでのところ、これは私が使用しているコマンドです ps -p $PROCID -o cputime,etimes 私の唯一の懸念は、cputimeの出力が[dd]hh:mm(または似たようなもので、今では頭の外では思い出せない)に見えることです。 秒単位で経過時間を取得するetime-> etimesのようなcputimeを秒単位でフォーマットする方法はありますか? 編集:これは私が現在受け取っている出力です 2-03:01:33 2653793 最初のパラメーターは、日-時間:分:秒ではなく、秒単位でフォーマットする必要があります。

2
パラメーターリストの作成に使用されるbash文字列の連結
次のbashを考えます: PARMS='-rvu' PARMS+=" --delete --exclude='.git'" echo $PARMS rsync ${PARMS} . ${TARGET} エコーはPARMS文字列を期待どおりに表示し、エラーは表示されませんが、rsyncは+ =によって追加されたオプションが存在しないかのように静かに動作します。ただし、これは期待どおりに機能します。 PARMS='-rvu' rsync ${PARMS} --delete --exclude='.git' . ${TARGET} 私はbash引用符で何かを台無しにしたと思います(常にそれらに問題がありました)が、文字列が正しく構築されているように見えても、オプションが何を無視するのか正確にはわかりません。

7
bashまたはzshでシェル変数をシリアル化する
シェル変数をシリアル化する方法はありますか?変数があり$VAR、それをファイルなどに保存して、後で同じ値を取得するために読み直したいとしますか? これを行うポータブルな方法はありますか?(私はそうは思わない) bashまたはzshでそれを行う方法はありますか?
12 bash  shell  zsh  variable 


7
`ls`コマンドからフォルダープレフィックスを削除することは可能ですか?
私はbashスクリプトを使用しており、すべてのファイルのリストを取得したい(すべてのjarファイルを言う)。コマンドを実行するls -1 lib/*.jarと、出力が得られます。 lib/mylib_1.jar lib/mylib_2.jar ... 次の出力を持つオプションはありますか? mylib_1.jar mylib_2.jar ... cd lib私はループ内にあり、ループ内で実行するアクションの親フォルダーにいる必要があるため、前に作成することはオプションではありません。 入力して情報を見つけようとしましたがman ls、解決策が見つかりませんでした。 別のコマンドを使用した解決策は、それを自分のlsコマンドにパイプできるか、自己完結型である限り有効です。
12 bash  shell  directory  ls 

5
パイプへの書き込みを中断せずにファイルを空にする
出力がログファイルにリダイレクトされるプログラムがあります。 ./my_app > log 時々ログをクリア(空)にして(オンデマンドで)、次のようなさまざまなことを試したいと思います。 cat "" > log ただし、元のパイプは中断され、プログラムは出力をログファイルにリダイレクトしなくなります。 それを行う方法はありますか? 更新 出力を生成するアプリケーションを変更できないことに注意してください。それは標準出力に吐き出され、ログに保存して、必要なときに検査し、必要なときにクリアできるようにします。ただし、アプリケーションを再起動する必要はありません。

3
バックグラウンドプロセスの信頼できるリターンコード
次のbashコードを想定してみましょう。 foo > logfile 2>&1 & foo_pid=$! while ps -p$foo_pid do ping -c 1 localhost done wait $foo_pid if [[ $? == 0 ]] then echo "foo success" fi $?の戻りコードではfooなく、の戻りコードが実際に含まれていると想定しても安全pingですか?その質問に対する答えが「あなたはそれを仮定することはできません」である場合。次に、このコードを変更して、$?常に戻りコードが含まれていることを確認するにはどうすればよいfooですか?

4
コピー中にファイルの名前を変更する方法は?
各ファイルの名前を変更して名前からランダムな文字列部分を削除しながら(つまり、-2b0fd460_1426b77b1ee_-7b8e)、バックアップディレクトリ内のすべてのファイルをユーザーのディレクトリにコピー(日付が変更されないアーカイブスタイル)するにはどうすればよいですか? cp from: /backup/path/data/Erp.2014.02.16_16.57.03-2b0fd460_1426b77b1ee_-7b8e.etf に: /home/user/data/Erp.2014.02.16_16.57.03.etf 各ファイルは常に「Erp」で始まります。日付時刻スタンプ文字列、ランダム文字列、拡張子「.etf」の順に続きます。日時スタンプを含むすべての名前要素を保持したい。ランダムな文字列を削除したいだけです。 ランダムな文字列により、同じファイルの複数のバックアップが可能になります。ただし、この場合、fdupesを実行しただけで、重複はありません。したがって、ランダムな文字列を削除して、すべてのファイルを単純に復元できます。 それを行う1行のbashコマンドを探しています。 それでもうまくいかない場合は、2つ以上の手順で実行できます。通常はKRenameを使用しますが、この場合はbashで行う必要があります。(リモートで作業しています。)
12 bash  shell  rename  file-copy 

3
2つの検索コマンドの比較
最近find、このワンライナーを受け取りましたが、以下の2つの違いがどこから来るのかを説明することはできません。 例1 [root@centos share]# find . -exec grep -i "madis" {} /dev/null \; ./names:Madison Randy:300:Product Development 例2 [root@centos share]# find . -exec grep -i "madis" {} \; Madison Randy:300:Product Development ご覧のとおり、最初のものには、この文字列が由来する特定のファイルがあり、これまでのところ、なぜこれが起こっているのかを知ることができません。
12 bash  shell  find 

5
BASHの2つの配列の交差点
このような2つの配列があります。 A=(vol-175a3b54 vol-382c477b vol-8c027acf vol-93d6fed0 vol-71600106 vol-79f7970e vol-e3d6a894 vol-d9d6a8ae vol-8dbbc2fa vol-98c2bbef vol-ae7ed9e3 vol-5540e618 vol-9e3bbed3 vol-993bbed4 vol-a83bbee5 vol-ff52deb2) B=(vol-175a3b54 vol-e38d0c94 vol-2a19386a vol-b846c5cf vol-98c2bbef vol-7320102b vol-8f6226cc vol-27991850 vol-71600106 vol-615e1222) 配列はソートされていないため、重複した要素が含まれている可能性があります。 これら2つの配列の交差を作成し、要素を別の配列に格納したいと思います。どうすればいいですか? また、Bに表示されAで使用できない要素のリストを取得するにはどうすればよいですか?
12 bash  scripting  array 

2
ディレクトリ内の重複を見つけて削除する
複数のimgファイルがあるディレクトリがあり、それらのいくつかは同一ですが、それらはすべて異なる名前を持っています。重複を削除する必要がありますが、bashスクリプトのみで外部ツールは必要ありません。私はLinuxの初心者です。md5合計を比較するためにネストされたforループを試し、結果に応じて削除しましたが、構文に何か問題があり、機能しません。何か助け? 私が試したのは... for i in directory_path; do sum1='find $i -type f -iname "*.jpg" -exec md5sum '{}' \;' for j in directory_path; do sum2='find $j -type f -iname "*.jpg" -exec md5sum '{}' \;' if test $sum1=$sum2 ; then rm $j ; fi done done 私は得る: test: too many arguments


6
「$((〜33))」が-34を生成するのはなぜですか?
$ echo $(( 255 )) 255 $ echo $(( 33 )) 33 $ echo $(( ~33 )) -34 $ echo $(( ~255 )) -256 $ 私のカーネルは: $ uname -a Linux HOSTNAME 3.2.0-40-generic-pae #64-Ubuntu SMP Mon Mar 25 21:44:41 UTC 2013 i686 i686 i386 GNU/Linux 質問: ~数字を無視するためです。しかし、なぜない~33生産-34となぜ~255農産物は-256?
12 bash  shell  arithmetic 

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