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

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

2
等号の後にパスを自動補完するbash補完スクリプトを作成しますか?
フォーム--argとの引数を認識するbash補完スクリプトを作成したいと思います--some-arg=file。 このチュートリアルといくつかの例を読んだ後/usr/share/bash_completion/completions/、次のスクリプトを作成しました(Chromiumでいくつかのフラグを入力する時間を節約するため)。 _chromium() { local cur prev opts COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" # Some interesting options opts=" --disable-web-security --easy-off-store-extension-install --incognito --load-extension= --pack-extension= --pack-extension-key= --user-data-dir= " # Handle --xxxxxx=file if [[ ${cur} == "--"*"=" ]] ; then # Removed failures (is my logic OK?) return 0 fi # Handle other options if …

2
歴史とともに読む
read上/下キーを押してそれらを循環することで、組み込みコマンドサポート履歴を作成するにはどうすればよいですか? あなたがアップキーを押したときにキャッチしようとしましたが、それは動作しないようですread: read -p '> ' -n 3 foo echo echo -n "$foo" | hexdump 矢印キーを押すと機能するようで、これを使用して検出できますが、を押すaa↑と、上向き矢印の識別子の最初の文字しか読み取られないため失敗しますが、3番目は別の矢印を区別するために必要ですキー。

5
curlからshにパイプする前にシェルスクリプトを読んで確認します(curl -s [url] | sh)
Webからシェルスクリプトを実行する必要があるときはいつでもcurl -s [url] | sh、まずurlWebブラウザーで開いて、スクリプトが悪意のないものであり、安全に実行できることを確認します。 コマンドラインからスクリプトを読み取り、スクリプトを読み取った後に実行を確認することを可能にするコマンドライントリックを見たのを覚えています。私が正しく思い出せば、それは何かのように見えcurl -s [url] | something...here | sh、ソフトウェアのインストールを必要としませんでした。 誰もがこのトリックを知っていますか?

2
時間に応じて2つの異なる/ etc / hosts
私は自分のために生産性スイートを作ろうとしています。私の最初の目標は、Facebook、Gmail、Stackexchangeを0900から1600までブロックすることです。 今のところ、私は自分を編集して/etc/hosts0.0.0.0 www.facebook.comとgmailとstackexchangeの同様のものを追加しました。 しかし、スクリプトにブロッキング期間を含める方法について少し混乱しています。 私が思ったのは、2つの異なるファイル(hosts_allow、hosts_block)があり、その後、cp hosts_allow hostsまたはcp hosts_block hosts時間によって異なりますが、これを無限ループに入れる必要があります。 手がかりはありますか?
11 bash  hosts 

2
$(dirname `readlink -f $ 0`)の奇妙な動作
次のコマンドを通常のユーザーとして実行すると、すべて問題ありません。 $(dirname `readlink -f $0`) しかし、ルートに切り替えた後、次のエラーが発生しました: readlink: invalid option -- 'b' Try `readlink --help' for more information. dirname: missing operand Try `dirname --help' for more information. 何か案は?ローカルのFedora 16とAmazon EC2を試してみました。どちらもbashシェルを実行しています。 イラストのために編集します。 ここで問題をさらに説明しなかったことをお詫び申し上げます。ここにシナリオがあります: 通常のユーザーアカウントを使用: $ pwd /home/myuser $ export MY_DIR=$(dirname `readlink -f $0`) $ echo MY_DIR /home/myuser ルートを使用: # pwd /root # …
11 bash 

3
2つのコマンド、1つのパイプライン
私はこれらの2つのコマンドを1つにする必要があります(そのため、それらをさらにパイプすることができます)。 dig +nottlid -t any bix.hu | egrep -v "^;;|^;|^$" | sort dig +nottlid -t any www.bix.hu | egrep -v "^;;|^;|^$" | sort つまり、これら2つのコマンドの出力を1つのパイプに収める必要があります。 $ dig +nottlid -t any bix.hu | egrep -v "^;;|^;|^$" | sort bix.hu. IN A 193.239.149.1 bix.hu. IN MX 10 deneb.iszt.hu. bix.hu. IN NS ns.iszt.hu. bix.hu. …
11 bash  dns 

4
コマンドの出力がbashで利用できる行数を制限する方法は?
私はバックグラウンドで大きなファイルをダウンロードし始めました $ nohup wget http://example.tld/big.iso & これによりnohup.out、の出力を含むファイルも得られますwget。 これで、後でダウンロードプロセスを確認したい場合は使用できます$ tail -f nohup.outが、ターミナルウィンドウが思ったより早くいっぱいになります。私が見たいのは、最後の行が絶えず更新されていることです(wget単独で使用する場合と同じです)。 私は試しました$ tail -n 1 -f nohup.outが、それは最初のテイルのみに影響するようです。 一般的に言えば、コマンドの出力が利用できる/表示できる行数を制限する(この場合は1にする)ことが可能であれば、この問題は解決します。出力をCircularバッファに入れるようなものです。通常のプログレスバー$ wget example.tld/big.isoが印刷されると考えてください。 そのような解決策はありますか? または私は木を間違った方法で登っていますか?(意味、nohupの出力を制限したり、他のことをしたりする方が簡単でしょうか?)
11 bash  tail  nohup  stdout 

2
ループ出力のパイピングは、ローカル変数の変更を防ぎます
私は、引数として多数のファイルやディレクトリを受け取る単純なbash関数を記述しようとしています。そうすべき: ファイル名を完全に修飾します。 それらを並べ替えます。 重複を削除します。 実際に存在するものをすべて印刷します。 存在しないファイルの数を返します。 私はほとんど私がやりたいことをするスクリプトを持っていますが、ソートに落ちます。現状のスクリプトの戻り値は正しいですが、出力は正しくありません(ソートされておらず、重複しています)。| sort -u示されているようにステートメントのコメントを外すと、出力は正しくなりますが、戻り値は常にになり0ます。 NB問題を解決するためのよりシンプルなソリューションは歓迎されますが、問題は、なぜこれが私が持っているコードで発生するのかについてです。つまり、パイプを追加すると、スクリプトが変数をインクリメントするように見えるのはなぜrですか? スクリプトは次のとおりです。 function uniqfile { local r=0 for arg in "$@" do readlink -e "$arg" || (( ++r )) done #| sort -u ## remove that comment return $r }

6
ここでEmacsを無効にする方法
emacsを使用してbashスクリプトファイルを編集し、を入力しようとする<<<と、2番目の<emacsで、次の例のように、ヒアドキュメントのテンプレートを挿入します。 <<EOF EOF リテラルを入力するため、これは望ましい出力ではありません<<<。 現時点では私が入るに頼る< < <、その後、スペースを削除するが、私はそれを直接入ることを許可されていることを好みます。

4
bashで2つの文字列の重複を見つけるにはどうすればよいですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Unix&Linux Stack Exchangeのトピックとなるようにしてください。 5年前に閉鎖されました。 弦が2本あります。例として、これらは次のように設定されています。 string1="test toast" string2="test test" 私が欲しいのは、弦の始めから始まるオーバーラップを見つけることです。オーバーラップとは、上記の例では文字列「test t」を意味します。 # I look for the command command "$string1" "$string2" # that outputs: "test t" 文字列であった場合、string1="atest toast"; string2="test test"チェックは最初から始まり、「a」はの最初から始まるため、文字列は重複しませんstring1。

2
BASHのタブ補完を最初の一致で埋めますか?
Windowsコマンドプロンプトのように、Tabキーを押したときに最初の一致をBASHに入力させる方法はありますか? (それでも一致のリストは表示されますが、Tabキーを押し続けると、それらを循環するはずです。) つまり、ここでの目標は埋めることができるようにすることですどんな試合で唯一のWindowsのように-十分なプレス与えられ、TABキーを押します。

2
使用方法-エイリアスとして?
openSUSE 11.3を使用していたとき、すでにいくつかのエイリアスが設定されていました。私がよく使った2つは+、pushd .と-ですpopd。現在Debianでは、2つ目の方法を作成する方法がわかりません。エイリアスのコマンドオプションとしてalias -=popd読み取ろうとします-=。引用符(シングルとダブルの両方)を付けて、その前にバックスラッシュを付けてみましたが、エラーメッセージが表示され続けるだけです。助言がありますか? ありがとう
11 bash  alias 

4
すべてのコマンドに「追加された」エイリアスを強制する
のすべてのコマンドにタイミングエイリアスを強制的に追加することはできbashますか(それを表現するためのより良い方法がないため)? たとえば、特定のユーザーがコマンドを実行するたびに、常にdate前後またはでラップされるようにしたいと考えていますtime。 これは可能ですか?可能な場合、どのようにですか?
11 bash  monitoring  alias  date  time 

2
名前でファイルを削除するのが非常に遅く、非常に速いのはなぜですか?
Faux pas:私が以下に述べる「速い」方法は遅い方法より60倍速くはありません。30倍高速です。私は時間の間違いを非難します(午前3時は明確な思考のための私の最高の時間ではありません:)。 更新:テスト時間の要約を追加しました(下記)。 速度係数には2つの問題があるようです。 使用するコマンドの選択(以下の時間比較) ディレクトリ内の多数のファイルの性質...「大きいことは悪いこと」のようです。数値が増加するにつれて、物事は不均衡に遅くなります。 すべてのテストは100万のファイルで行われました。 (実時間、ユーザー時間、sys時間はテストスクリプトに含まれています) テストスクリプトはpaste.ubuntu.comにあります。 # # 1 million files # =============== # # |time |new dir |Files added in ASCENDING order # +---- +------- +------------------------------------------------- # real 01m 33s Add files only (ASCENDING order) ...just for ref. # real 02m 04s Add files, and make …
11 bash  filesystems  ext4 

6
Bash:終了ステータスをプロンプトに表示します:
GREEN="\e[1;32m" RED="\e[1;31m" NONE="\e[m" get_exit_status(){ es=$? if [ $es -eq 0 ] then echo -e "${GREEN}${es}${NONE}" else echo -e "${RED}${es}${NONE}" fi } get_path(){ #dummy function echo "PATH" } PROMPT_COMMAND='exitStatus=$(get_exit_status)' 以下は正しいexitStatusを私に与えますが、色変数は展開されません: PS1='${RED}\h $(get_path) ${exitStatus}${NONE} ' ただし、以下のものは色を提供しますが、終了ステータスは更新されません。 PS1="${RED}\h $(get_path) ${exitStatus}${NONE} " これを行う正しい方法は何ですか?exitStatusと色の両方が機能するようにこれを修正するにはどうすればよいですか?
11 bash  prompt 

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