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

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

5
ディレクトリではないすべてのファイルを移動する
ファイルとサブディレクトリの両方を含む、クリーンアップしようとしているディレクトリがあります。私がやろうとしていることは簡単です。すべてのファイルを別のディレクトリに移動しますが、すべてのサブディレクトリはそのままにします。 私は次のようなものを考えています: mv [*_but_no_dirs] ./other_directory ワイルドカード*と正規表現を使用してこれを行う簡単な方法があるはずです... 誰もがアイデアを持っていますか?
14 bash  directory  wildcards  mv 

1
bashが構文エラーを重大なアクセントとアポストロフィの両方でカプセル化するのはなぜですか?
bashが構文エラーを報告しているとき、次のように、重大なアクセントとアポストロフィの両方で構文エラーを引き起こしたテキストをカプセル化します`...'。理由は何ですか? 以下に例を示します。 $ bash -c "echo error()" bash: -c: line 0: syntax error near unexpected token `(' bash: -c: line 0: `echo error()' これはあまり一般的ではありません。しかし、私はちょうど興味があります、これは本当の問題ではありません。 編集:これはこのような不明瞭なメッセージで奇妙になります: -bash: unexpected EOF while looking for matching ``'
14 bash 

1
stdoutからカラーコードを取り除き、ファイルとstdoutにパイプする方法
私はprintfいくつかのtput混合物を使用するプログラムを持っているので、出力を標準出力とファイルにパイプしたいと思います。sedスクリプトに不要な依存関係が必要ないため、使用したいと思います。これが私がこれまでに得たものです。 printf "\n$(tput setaf 6)| $(tput sgr0)$(tput setaf 7)Sourcing files...\033[m\n" | tee install.log これに関する唯一の問題は、私のログファイルがすべてのカラー出力を取得していることです... ^[[36m| ^[(B^[[m^[[37mSourcing files...^[[m ただ持ってほしい | Sourcing files...

3
コマンドの出力をリダイレクトする方法は?
すべてpingの出力なしで、ネットワークステータスを監視する簡単なスクリプトを作成しようとしています。 ping -q -c 1 google.com > /dev/null && echo online || echo offline 問題は、接続していないときでも、出力にエラーメッセージが表示されることです。 ping: unknown host google.com offline このエラーメッセージを出力から除外するにはどうすればよいですか?
14 bash  ping  output 

2
すべてのキーボードキーをすばやくテストするスクリプト
キーボードのキーが間違っていないかノートブックを確認する必要があるので、できる限り高速化したいと思います。 この特定のタスクには何も見つかりませんでしたので、私のアイデアは、押されたキーを読み取り、すべてのキーボードのキーを知っているスクリプトです。showkeyまたはのどちらかxevで出力を達成できると思います: xev | grep keysym サンプル出力: state 0x10, keycode 46 (keysym 0x6c, l), same_screen YES, state 0x10, keycode 33 (keysym 0x70, p), same_screen YES, state 0x11, keycode 50 (keysym 0xffe1, Shift_L), same_screen YES, state 0x10, keycode 51 (keysym 0x5d, bracketright), same_screen YES, state 0x10, keycode 36 (keysym 0xff0d, Return), …
14 bash  grep  awk  keyboard  stdout 


3
「-o errtrace」を使用したコマンド置換でのエラーのトラップ(つまり、-Eを設定)
この参照マニュアルによると: -E(-o errtraceも) 設定すると、ERRのトラップは、シェル関数、コマンド置換、およびサブシェル環境で実行されるコマンドに継承されます。このような場合、ERRトラップは通常継承されません。 ただし、以下が機能しないため、間違って解釈する必要があります。 #!/usr/bin/env bash # -*- bash -*- set -e -o pipefail -o errtrace -o functrace function boom { echo "err status: $?" exit $? } trap boom ERR echo $( made up name ) echo " ! should not be reached ! " 私はすでに簡単な割り当てを知っていmy_var=$(made_up_name)ます、でスクリプトを終了しますset -eます。で(つまり、errexit)。 され …

5
bash globから結果を1つだけ選択できますか?
出力に関するレポートを自動化するための作業用のスクリプトを作成しようとしています。ログファイルは(現在、将来的には「標準化」されます)この種のパス構造に保存されます。 /<root_path>/<process_one_path>/logs/<time_date_stamp>/<specific_log_file> /<root_path>/<process_two_path>/logs/<different_time_date_stamp>/<specific_log_file> フォルダー内の常に最新の日時スタンプを除き、パスのすべての部分が認識されます。 日付のタイムスタンプの代わりにワイルドカードを使用しようとすると、次のような複数の結果が得られます。 > ls /<root_path>/<process_two_path>/logs/* [tab] 20130102-175103 20130118-090859 20130305-213506 最新のものだけを返したいのですが、これはBashで可能ですか? NB(私はzshを持っていません、そして、それが聞こえるほど美しいので、私たちが仕事でそれを手に入れることを疑います)
14 bash  wildcards  glob 

4
Ctrl-Zとkill -STOPの違いは何ですか?
makeシェルから(大規模なプロジェクトで)コマンドを実行すると、Ctrl-Zを入力してプロセスを停止し、シェルに戻ることができます。その後、fgプロセスを続行するために実行できます。 これを自動化するシェルスクリプトを作成しようとしています(具体的には、CPUの温度を数秒ごとに確認し、コンピューターが過熱しやすいため、高温になった場合はプロセスを停止します)。私の最初の試みは次のように機能しました(簡略化)。 make & subpid="$!" sleep 2 # If the CPU temperature is too high... kill -STOP "$subpid" sleep 2 # If the CPU temperature has dropped to safe levels... kill -CONT "$subpid" wait "$subpid" 残念ながら、これは機能しませんでした。プロセスにSIGSTOPを送信しても、プロセスは一時停止しませんでした(出力を端末に送信し続けることで明らかになりました)。make &コマンドラインで実行し、SIGSTOPを送信し、プロセスの状態をps;で確認しました。停止としてリストされていました(そしてSIGCONTを送信したときに再び開始しました)が、出力を吐き出し、コア温度を上昇させていました!Ctrl-Zで停止してもこの問題は発生しませんでしたが、スクリプトでそれを行う方法はわかりません。 Ctrl-Zとの違いは何kill -STOPですか?シェルスクリプトで前者の動作を取得するにはどうすればよいですか?

1
Bashはディレクトリを変更しなくなりました
私のbashシェルは、cdでディレクトリを変更しなくなりました。作業中に先に気づき、開いた新しいシェル(端末またはxtermなど)がホームディレクトリにスタックして出られないことを発見しました(既に開いている端末は引き続き正常に動作します)。 [~]$ pwd /home/sys/dave [~]$ cd / [~]$ cd Documents/ [~]$ pwd /home/sys/dave [~]$ type cd cd is a shell builtin [~]$ alias alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias vi='vim' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' メモリー不足のハンドラー(cdがエイリアスされていないことを確認し、組み込みバージョンを使用しているなど)に対処する時間がなかったのは奇妙だと思いました。 それで、私は(はい、知っています)マシンをリブートしました。 フレッシュブート、まったく同じ問題。 一方、CSHは正常に機能するため、上記のスニペットの直後: [~]$ …
14 linux  bash 

2
このxargsコマンドが機能しないのはなぜですか?
すべての.sh拡張子を削除したかったので、次のようにしました。 ls *.sh | xargs -I {} mv {} `basename {} .sh` ただし、機能しませんが、basename変更されていないファイル名を返すように動作します。 なぜそのように振る舞うのですか? たとえば、これは機能します: ls *.sh | xargs -I {} echo `basename {}.jpg .jpg`; 編集: 解決策:単一引用符は`basename ...`、コマンドが実行される前にシェルによる評価を防ぎます。 ls *.sh | xargs -I {} sh -c 'mv {} `basename {} .sh`'

2
xargsに何もパイプしない
状況によっては標準出力に何もないスクリプトがあります。スクリプトの最後に、xargsを使用して別のコマンドに行を渡します。私の問題は、stdoutに何もないとき、典型的な「使用法:プログラムarg1 arg2」エラーメッセージが表示されることです。 どうすればこれを回避できますか?
14 bash  xargs 


11
使用しているRHELのバージョンを確認する方法
私はマシンをRed Hat Enterprise Linux 5からRHEL 6に徐々に移行する環境で働いています。 RHEL5マシンで現在行われていることとRHEL6マシンで微妙に異なることを行うには、スクリプトのいくつかが必要です。 実用的な解決策は、実行時にチェックし、RHEL5、RHEL6、および両方でいくつかのコマンドを実行することです。 これの実用的な例は、環境モジュールを使用して.bashrcおり、module load git行に含まれていますが、RHEL6マシンではこのコマンドエラーが発生することです。 RHEL6 system, git should be installed - not loading module modulefileを見ると、次のコードが見つかります。 set redhatrelease [eval exec "cat /etc/redhat-release"] if { [regexp -nocase {release 6} $redhatrelease] } { puts stderr "\n\t RHEL6 system, git should be installed - not loading module\n" …
14 bash  rhel 

1
タイムスタンプ付きのbash履歴
Bash $ HISTFILEに記録されたコマンドのタイムスタンプを保持したいのですが、可能ですか? man bash情報源として使用してセットアップすることはできませんでした。 私の他のオプションは次のとおりです。 function thebanana() { local -r -a bash_commands=( "ls" # ... more coconut commands ) for bash_command in "${bash_commands[@]}"; do printf "${bash_command}" printf ":" done } export HISTFILE=banana export HISTIGNORE="$(thebanana)" export HISTSIZE=999999 export HISTFILESIZE=999999999 export HISTCONTROL=ignoredups:erasedups 私はOS X Mountain Lion(ため息)にいると言及すべきでした。uname -a私に与えます: Darwin CoconutMac.local 12.2.0 Darwin …

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