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

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


2
forループの並列化
for次のコードのループを並列化したいと思います。これを行う方法? #!/bin/bash N=$1 n=$2 for (( i=1; i<=$N; i++ )); do min=100000000000000 //set min to some garbage value for (( j=1; j<=$n; j++ )); do val=$(/path/to/a.out) val2=`echo $val | bc` if (( $val2 < $min )); then min=$val2; fi done arr=("${arr[@]}" "$min") done

1
Bashの追加履歴を停止する方法
Bashのターミナル履歴を思い通りに設定するのに多くの問題を抱えています。重複するエントリを残したくないので、コマンドを入力した場合、それを保存して、上記の重複を削除します。 問題は、historyコマンドが希望どおりに機能していることをコマンドが示していることですが、ログアウトすると、重複が再び表示されます。それは単に既存のものに履歴を追加しているだけだと思います。私の.bashrcファイルには次の行があります: HISTCONTROL=ignoreboth:erasedups shopt -u histappend コメントを外してみましたshoptが、ログアウト時に履歴が追加されます。ログアウトする前の履歴を正確に保持するにはどうすればよいですか?

2
奇妙なcontrol-dの動作
することcatで、とてもシンプルなテキストエディタとして使用できますcat > foo.txt。 次に入力すると: bar baz ctrl+ を押すと、D次のようになります。 $ cat > foo.txt bar baz^D カーソルを^。次にもう一度押すと、ファイルが保存されます。ただし、他の何か(おそらく何でもないが、ほとんど何でも)を押した場合は、ファイルの編集を続行します。 これは正常な動作ですか?

1
bash PATHはどこに設定しましたか?
~/binPATH から削除したい。Linux(Ubuntu)が初めてだった数ヶ月前にセットアップしましたが、どうやって追加したのかわかりません... 下記のすべてのファイルを検索しても何も表示されません。 他にどこに設定することができますか?$HOME/.profilePATHのプレフィックスの後にプリペンドされています$HOME/bin 違いがある場合は、コマンドプロンプトと実行中のスクリプトの両方から同じPATHを取得します。 #!/bin/bash { echo "first dir of PATH is: '${PATH%%:*}'" shopt -s nullglob cat \ /etc/profile \ /etc/bash.bashrc \ /etc/profile.d/*.sh \ $HOME/.bashrc \ $HOME/.bash_aliases \ /etc/bash_completion \ $HOME/.bash_completion* \ $HOME/.profile \ $HOME/.profile_zap \ $HOME/.bash_profile* \ $HOME/.bash_login* \ | sed -rne '/~\/bin/p' } 出力は次のとおりです。 first dir of …

2
crontabを編集するときにターミナルでemacsを開く
のemacsデフォルトエディタとしてセットアップしました/etc/profile。emacs端末で利用したい場合。-nwオプションで開きます。crontab -eウィンドウで開かないようにするときにどのように同じ動作をさせることができますか?
9 bash  cron  emacs 

1
ソフトウェアがインストールされているかどうかを(スクリプトから)検出する最良の方法は何ですか?
以前は、さまざまwhichなプラットフォーム(LinuxとSolaris vx。OS X)でコマンドからの出力が異なることに不満を感じていました。異なるシェルが問題に関与している可能性もあります。 typeより良い代替案として提案されてきましたが、それはどれほどポータブルですか? 過去に、which実行したさまざまなユースケースの出力を解析して処理する関数を作成しました。それらは私が使用するすべてのマシンで動作するため、私の個人用スクリプトには問題ありませんが、他のユーザーが使用するためにどこかに投稿するソフトウェアには、これは非常に信頼できないようです。 考えられる例を1つだけ挙げると、bashとzshがマシンで使用可能かどうかをスクリプトから検出し、zshが存在する場合はzshを使用し、zshが存在せず、bashで十分な場合はbashを使用する必要があるとします。特定のバグがないバージョン。スクリプトの残りのほとんどは、BourneシェルまたはRubyなどですが、これはzshまたは最近のバージョンのbashのいずれかで行う必要があります(AFAIK)。 typeプラットフォーム間で利用できることを期待できますか?which特定のソフトウェアがインストールされているかどうかの質問に簡単かつ一貫して回答できる他の方法はありますか? (もしあなたが私が与えた例に特に関連した考えを与えたいならそれは素晴らしいですが、私は主に一般的なケースについて尋ねています:特定のものが特定のマシンにインストールされているかどうかを調べる最も信頼できる方法は何ですか? ?)
9 bash  zsh  standard  which 

1
2つのwhileループを実行する最も効率的な方法
現在、2つの異なるwhileループを使用して、ウィンドウマネージャーdwmと、システム情報を出力するステータスバーを起動しています。 現在の私の解決策は、次のように同じスクリプトでそれらを連続して実行することです。 while true; do $HOME/Scripts/dwm-status sleep 2s done & while true; do dwm >/dev/null done 次のように、ネストされたループとして実行されることも確認しましたwhile。 while true; do while true; do $HOME/Scripts/dwm-status sleep 2s done & dwm >/dev/null done 2番目は、CPUスパイクを引き起こすようです。効率性(リソースの最小呼び出しなど)の観点から、これらの2つのループを実行するための最良のアプローチは何ですか?なぜですか?


1
bashの引用符内のドル記号補間
私が書いたこの小さなテストスクリプトを実行しています。 #!/bin/bash TESTCASE=$@ testHarness <<runTest $TESTCASE runTest コマンドラインから: ./test.sh "1092$212" しかし、ドル記号は取り除かれています。私がそれをエスケープした場合、それは機能します。しかし、二重引用符でこれを行う必要から私を保護すると思いました。誰かが私に何が起こっているのか、そしてこれを修正する方法を理解するのを助けてくれますか?
9 bash  shell  quoting 

6
ディレクトリ1にあるがディレクトリ2にはないファイルを比較しますか?
作成したいbashスクリプトに問題があります lsがディレクトリにあるファイルを一覧表示することはわかっていますが、directory1にはあるがdirectory2にはないディレクトリを一覧表示し、次にdirectory1にないdirectory2にあるファイルを一覧表示します。 微妙な試みで、私は試しました: ls -al | diff directory1 directory2 それがうまくいかない理由をすぐに理解しました。誰かが完全なオタクを手伝うことはできますか?
9 bash  shell-script  ls  diff 

2
サブシェルなしでbashのコマンドの出力を反復する
サブシェルを作成したり、一時ファイルを使用したりせずに、コマンドの出力をループしたい。 私のスクリプトの最初のバージョンはこのように見えましたが、サブシェルを作成するため、これは機能しません。exitコマンドは、必要なメインスクリプトの代わりにサブシェルを終了します。これは、ポリシールーティングを構成するためのはるかに大きなスクリプトの一部であり、ルーティングが失敗する原因となる条件を検出すると実行を停止します。 sysctl -a 2>/dev/null | grep '\.rp_filter' | while read -r -a RPSTAT ; do if [[ "0" != "${RPSTAT[2]}" ]] ; then echo >&2 "RP Filter must be disabled on all interfaces!" echo >&2 "The RP filter feature is incompatible with policy routing" exit 1 fi done したがって、推奨される代替策の1つは、このようなコマンドを使用してサブシェルを回避することです。 …

2
byobu画面セッションに接続してコマンドを実行しますか?
私が作成しているスクリプトでは、可能な限り自動化する方法を実験しています。より興味深い課題の1つは、byobu画面セッションに接続してコマンドを実行することです。 だから私は明白な場所から始めて、そこにあるスクリーンセッションの数を見ました(ゲームには3つのウィンドウがあり、ロードクォースターには2つあります。ユーザーは別々のパテインスタンスにいます) game@quackgame:~$ screen -ls There is a screen on: 2019.byobu (01/05/2011 05:10:04 PM) (Attached) 1 Socket in /var/run/screen/S-game. そこに一つだけなので、私はシステムをチェックしました lordquackstar@quackgame:/home/game$ sudo ls -lAR /var/run/screen/ /var/run/screen/: total 0 drwx------ 2 game users 100 2011-01-06 09:18 S-game drwx------ 2 lordquackstar lordquackstar 100 2011-01-06 09:17 S-lordquackstar /var/run/screen/S-game: total 4 prwx------ 1 game …

4
bashプロンプトを変更する
bashプロンプトの外観を決定する設定はどこにありますか?具体的にはArchですが、他のディストリビューションについても、それが異なる場合は他のディストリビューションでも知りたいと思います。 特に(K)Ubuntuのプロンプトを使用したい
9 bash  prompt 

5
bashで使用した前のコマンドの最後(n番目)に渡された引数をどのように呼び戻しますか?
多くの場合、同じファイルに対して異なるコマンドを発行します。例えば: $ youtube-dl aB54c4p0eo #I made this video id up on the spot $ mv aB54c4p0eo.flv kittens.flv $ vlc kittens.flv $ rm kittens.flv 以前のコマンドの引数を現在の引数で再利用して、書き換える必要がないようにする方法はありますか?
9 bash 

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