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

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

4
Bashで遅延サスペンド(Ctrl-Y)の目的は何ですか?
Bashのマニュアルページの該当部分のみに次のように記載されています。 bashが実行されているオペレーティングシステムがジョブ制御をサポートしている場合、bashにはそれを使用する機能が含まれています。プロセスの実行中に中断文字(通常^ Z、Control-Z)を入力すると、そのプロセスが停止し、制御がbashに戻ります。 遅延サスペンド文字(通常^ Y、Control-Y)を入力すると、端末から入力を読み取ろうとするとプロセスが停止し、制御がbashに戻ります。 その後、ユーザーはbg コマンドを使用してバックグラウンドでジョブを続行し、このジョブの状態を操作できます。fgフォアグラウンドでそれを続行するコマンド、またはそれを強制終了するkillコマンド。^ Zはすぐに有効になり、保留中の出力と先行入力が破棄されるという追加の副作用があります。 私は一度も使用したことがありませんCtrl- Y; 私はそれについて学んだだけです。私は罰金を行っているCtrl- Z(一時停止)のみ。 私は、このオプションが何であるかを想像しようとしていますのために。いつ役に立つでしょうか? (この機能はすべてのUnixバリアントに存在するわけではありません。SolarisおよびFreeBSDには存在しますが、Linuxには存在しません。対応する設定はstty dsuspです。) おそらく少ない主観:で実現することができるものありますCtrl- Yと同じように簡単に行うことができませんかCtrl- Z?

3
さまざまなbash履歴を表示する
このhistoryコマンドは、現在のセッションのすべての履歴をリストします。のような: 1 ls 2 cd /root 3 mkdir something 4 cd something 5 touch afile 6 ls 7 cd .. 8 rm something/afile 9 cd .. 10 ls 11 history 関心のある項目を検索するために、私はパイプすることができますhistoryとgrep同様 history | grep ls 1 ls 6 ls 10 ls 次のような最後の3つのコマンドも表示できます。 history 3 11 history 12 history | grep …

3
色とりどりのグレップ
各grepコマンドで、結果を異なる色で強調表示しようとしています。私はこのような行で手動でそれを行うことができます: ls -l GREP_COLORS='mt=01;32' grep c | GREP_COLORS='mt=01;31' grep o | GREP_COLORS='mt=01;34' grep n | GREP_COLORS='mt=01;36' grep f すべてのc文字が緑で強調表示され、すべてのo文字が赤で強調表示されます。 この例が機能するためには、常に--color=alwaysgrepコマンドを使用する必要があり ます。私はこれを私の中で設定した.bashrc ので、grepは常に色を持っています: export GREP_OPTIONS='--color=always' 私が達成しようとしているのは、この機能をエイリアスでラップgrepして、GREP_COLORS毎回呼び出して異なる値を設定できるようにすることです。パイプされた新しいgrepごとに複数のシェルの考慮事項を理解し、いくつかのファイル(各色に1つ)を作成してこれを克服しようとして、既に使用されていることを示します。 私はいくつかの試みをしましたが、奇妙なことに、これは「最高」に機能するようです。私はこれを持っています.bashrc: alias mg="mygrep" mygrep(){ # define possible colors COLORS=("01;32" "01;31" "01;34" "01;36") COUNTER=0 NUM=0 # as long as the color has already been used, keep …
30 bash  shell  grep  pipe  bashrc 

8
bashで大きく、均一に分布したランダムな整数を効率的に生成する方法は?
私が取得するための最良の方法だろうかと思ってきた良い手順の間のランダムな正の整数を取得するにはどうなるか、すなわちbashの、中にランダム性を、MINそしてMAX、そのようなことを 範囲は任意に大きくすることができます(少なくとも2 32 -1まで)。 値は均一に分布しています(つまり、バイアスはありません)。 効率的です。 bashでランダム性を取得する効率的な方法は、$RANDOM変数を使用することです。ただし、これは0から2 15 -1の間の値のみをサンプリングしますが、これはあらゆる目的に十分な大きさではない場合があります。人々は通常、モジュロを使用して必要な範囲にそれを取得します。たとえば、 MIN=0 MAX=12345 rnd=$(( $RANDOM % ($MAX + 1 - $MIN) + $MIN )) さらに、これは、$MAX2 15 -1 = 32767 を分割しない限り、バイアスを作成します。場合などは、$MIN0であり、$MAX9は、その後の値は0〜7のような、わずかにより確からしい値8,9よりも$RANDOMあれば、例えば、このバイアスは、範囲が増加するにつれて悪化32768または32769.なることはありません$MIN0で$MAXあります9999は、その後、2767までの数字0の確率有する4 / 32767 9999 2768数字のみの確率たが、3 / 32767。 したがって、上記の方法は条件3を満たしますが、条件1および2を満たしません。 条件1と2を満たすためにこれまでに思いついた最良の方法は/dev/urandom、次のように使用することでした。 MIN=0 MAX=1234567890 while rnd=$(cat /dev/urandom | tr -dc 0-9 | fold -w${#MAX} | head …

5
Unixエポックからミリ秒を取得する方法は?
JavaScriptを使用してミリ秒単位でタイムスタンプのロードを取得するhtmlを使用しているため、ブラウザの起動時間を測定するbashスクリプトを実行したいです。 ブラウザを呼び出す直前のシェルスクリプトで、次のタイムスタンプを取得します。 date +%s 問題は、タイムスタンプを秒単位で取得することです。また、ブラウザを1秒未満で2回目に起動したときに、秒ではなくミリ秒を使用して正確にその時間を測定できる必要があるため、ミリ秒単位で必要です。 bashスクリプトからミリ秒単位のタイムスタンプを取得するにはどうすればよいですか?
30 bash  timestamps 


2
出力をファイルにリダイレクトすると、ファイルにロックが適用されますか?
コマンドがある場合 $ ./script >> file.log これは2回呼び出され、最初の呼び出しが終了する前に2回目の呼び出しが行われますが、どうなりますか? 最初の呼び出しは出力ファイルの排他ロックを取得しますか?その場合、2番目のスクリプトは書き込みを試みるときに失敗しますか、それともシェルは出力を受け入れ(スクリプトの終了を許可)、エラーをスローしますか? または、ログファイルが2回書き込まれますか?

6
カーソルの形状(または色)を変更して、bashでviモードを示す
明確にするために:端末内でvimを使用するときにカーソルを変更する方法を尋ねていません。Bashのviモード内で入力モードとコマンドモードを切り替えるときにカーソルを変更したい: set -o vi <CR> type some text <ESC> (the cursor changes shape/color) i (cursor change back) etc... zshでモード変更時にカーソルの色を変更できるスクリプトを見つけましたが、この1つの機能だけのためにシェルを変更したくありません。 Bashコマンドラインでコマンドモードと挿入モードを切り替えるときに、gvim(または単に色)のように、カーソルの形状を変更する方法はありますか?
30 bash  vi  line-editor 

5
bashスクリプトを学ぶのに最適なリソースですか?[閉まっている]
私は2年前から多くの言語でプログラミングを行ってきました。つまり、特定の問題に対して適切なソリューションを設計および実装する方法を知っているということです。 ただし、bashは私にとって大きな頭痛の種です。期待どおりに機能するものは何もありません。エラーが発生することさえありません。 私が見つけたすべてのガイドは信じられないほど非公式であり、その構文を適切に要約したり、起こりうる最も一般的なエラーを伝えたりしていません。 それでは、私に何を勧めますか?
30 bash  reference 

4
stderrとstdoutを異なるファイルにリダイレクトし、端末に表示する方法は?
リダイレクトがなかったかのように、ターミナルでコマンドの出力を見たい。また、stderrをerr.logにリダイレクトし、stdoutをstdout.logにリダイレクトする必要があります。 また、ターミナルに表示される内容の正確なコピー、つまりエラーが発生したときに発生したエラーを別のファイルstdouterr.logに出力しておくと便利です。

4
ssh $ host $ FOOおよびssh $ host“ sudo su user -c $ FOO”タイプの構造で引用
私はしばしばssh経由で複雑なコマンドを発行します。これらのコマンドにはawkまたはperlの1行へのパイプが含まれ、その結果、単一引用符と$が含まれます。私は、適切に引用を行うためのハードで速いルールを理解することも、それに対する良い参照を見つけることもできませんでした。たとえば、次のことを考慮してください。 # what I'd run locally: CMD='pgrep -fl java | grep -i datanode | awk '{print $1}' # this works with ssh $host "$CMD": CMD='pgrep -fl java | grep -i datanode | awk '"'"'{print $1}'"'" (awkステートメントの余分な引用符に注意してください。) しかし、どうすればこれを動作させることができssh $host "sudo su user -c '$CMD'"ますか?このようなシナリオで見積もりを管理するための一般的なレシピはありますか?..
30 bash  shell  ssh  quoting 



3
Bashスクリプトファイルをsudo実行すると、Bashスクリプト内のすべてのコマンドもsudoとして実行されますか?
Bashで自動化されたインストール後スクリプト(post-install.shたとえばと呼ばれる)を作成したい。このスクリプトは、リポジトリを自動的に追加および更新し、パッケージをインストールおよび更新し、構成ファイルを編集します。 ここで、たとえばを使用してこのスクリプトを実行するsudo post-install.shと、sudoパスワードの入力が1回だけ求められますか、それともsudoスクリプト内でsudo許可が必要なコマンドを呼び出すたびにパスワードを入力する必要がありますか?言い換えれば、bashスクリプト内のコマンドは、いわば実行権限を「継承」していますか? そして、実際にそうする場合、sudoアクセス許可がタイムアウトする可能性はまだありますか(たとえば、特定のコマンドがsudoタイムアウトを超えるのに十分な時間がかかる場合)?または、最初のsudoパスワード入力は、スクリプト全体が完了するまで続きますか?

6
コマンド置換:スペースではなく改行で分割
私はこの問題をいくつかの方法で解決できることを知っていますが、bashビルトインのみを使用してそれを実行する方法があるかどうか、そしてそうでない場合、最も効率的な方法は何ですか? 次のような内容のファイルがあります AAA B C DDD FOO BAR つまり、複数の行があり、各行にスペースがある場合とない場合があります。次のようなコマンドを実行したい cmd AAA "B C DDD" "FOO BAR" 使用するcmd $(< file)と cmd AAA B C DDD FOO BAR そして、私が使うなら、私はcmd "$(< file)"得る cmd "AAA B C DDD FOO BAR" 各行を1つのパラメーターだけで処理するにはどうすればよいですか?

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