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

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


2
ドットファイルをシステムに依存しないようにする方法は?
仕事のために、最近、OS Xの使用を開始し、Linuxと同様のエクスペリエンスを得るためにhomebrewを使用してセットアップしました。 ただし、設定にはかなりの違いがあります。一部は、1つのシステムに配置するだけで十分です。私のドットファイルはgitリポジトリにあるため、どのようなスイッチを設定できるのか疑問に思っていました。そのため、一部の設定はLinuxシステム用とOS X用にのみ読み込まれます。 ドットファイルに関しては、とりわけ、.bash_profilesまたはを参照してい.bash_aliasます。

4
ホスト名を変更しました。なぜbash PS1プロンプトが変更されないのですか
/ etc / hostnameを編集してホスト名を変更し、hostnameand hostname -Fコマンドを使用して新しいホスト名を表示できます。 ただし、シェルプロンプトには古いホスト名が表示されたままです。 ちなみにこれはUbuntu 11.0.4です。プロンプトは、.bashrc編集していないmyに設定されています。ログアウトしても再起動しても効果はありません。 標準のUbuntuの関連セクション.bashrc: if [ "$color_prompt" = yes ]; then PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' else PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' fi ($ debian_chrootはログイン時に設定解除されます...) ホスト名は特殊文字\ hによって取得されると思います。 シェルで報告されるPS1設定は次のとおりです。 PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' そして、ここにPS1が示すものがあります: username@oldhostname:~$ ウォーレンの答えで正確なコマンドを使用してプロセスを繰り返しました。ホスト名は再起動するまで機能します/etc/hostnameが、新しいホスト名が含まれていても失われます。
21 bash  ubuntu  hostname 


3
エラーが発生したときにBashで行番号を見つけるにはどうすればよいですか?
エラーが発生したBashの行番号をどのように見つけますか? 例 必要なものを説明するために、行番号を使用して次の簡単なスクリプトを作成します。スクリプトはファイルをコピーします cp $file1 $file2 cp $file3 $file4 cpコマンドの1つが失敗すると、関数はexit 1で終了します。エラーを行番号(たとえば、8または12)とともに出力する機能を関数に追加したいと思います。 これは可能ですか? サンプルスクリプト 1 #!/bin/bash 2 3 4 function in_case_fail { 5 [[ $1 -ne 0 ]] && echo "fail on $2" && exit 1 6 } 7 8 cp $file1 $file2 9 in_case_fail $? "cp $file1 $file2" 10 11 …

4
ディレクトリ内のCDへのエイリアスとコマンドの呼び出し
が.bash_profileあり、その点でエイリアスのセットがあります。現時点では、これらのエイリアスは1つのコマンドのみを実行し、非常に簡単でした。ただし、作成しようとしている新しいエイリアスを使用して2つのことを行いたいと思います。 ディレクトリへのCD そのディレクトリからコマンドを実行します
21 bash  alias  cd-command 

7
プログラミングの「コールバック」概念はBashに存在しますか?
プログラミングについて何度か読んだときに、「コールバック」の概念に出会いました。 おもしろいことに、この用語「コールバック関数」の「教訓的」または「明確」と呼べる説明は見つかりませんでした(読んだほとんどの説明は、私とはかなり違うようで、混乱していました)。 プログラミングの「コールバック」概念はBashに存在しますか?もしそうなら、小さく、シンプルな、バッシュの例で答えてください。
21 bash  function 

3
引用符で囲まれた変数が空の場合、どうすれば何も展開できませんか?
スクリプトを実行しているとします: some-command "$var1" "$var2" ... そして、var1空のイベントでは、空の文字列の代わりに何も置き換えないで、実行されるコマンドが次のようになるようにします。 some-command "$var2" ... ではなく: some-command '' "$var2" ... 変数をテストして条件付きで含めるよりも簡単な方法はありますか? if [ -n "$1" ]; then some-command "$var1" "$var2" ... # or some variant using arrays to build the command # args+=("$var1") else some-command "$var2" ... fi bash、zshなどで何にも拡張できないパラメーター置換はありますか?残りの引数でグロビングを使用したい場合があるので、それを無効にして変数の引用符を外すことはオプションではありません。

5
ディレクトリ内の隠しファイルと*を一致させる方法
指定されたディレクトリ内の隠しファイルを一致させる方法 例えば 以下のコマンドを指定しても、隠しファイルの結果は表示されません。 du -b maybehere*/* 使用する代わりに単一のコマンドを使用してこれを簡単に達成する方法 du -b maybehere*/.* maybehere*/* 多分ここに2回入力する必要があるので。

3
MySQLデータベースのインポート時に進行状況インジケーターを取得する
私は頻繁にMySQLデータベースをインポートしますが、これには時間がかかる場合があります。進行状況インジケーターは一切ありません。なんとなく見せることはできますか?インポートされたレコード、MBインポートされたレコード、またはインポートされたテーブルのいずれか。誰でもいいの? 私はこのコマンドを使用します: mysql -uuser -p -hhost database < largefile.sql ファイルは40〜300 MBで、ホストはローカルネットワーク内にあります。
21 bash  mysql 

4
「IFS」とは何ですか?
私はこのスレッドを読んでいました:ファイルの行をループする方法は? なにIFS?そして、for-loopsのコンテキストでの使用法は何ですか?
21 bash  shell 

2
Debianでパッケージインストールの提案を実装する方法は?
Ubuntuで次のように入力すると気づきました。 mc インストールされていない場合、以下のメッセージが表示されます。 The program 'mc' is currently not installed. You can install it by typing: sudo apt-get install mc ただし、Debianでは利用できません。「-bash:/ usr / bin / mc:No such file or directory」というメッセージが表示されるだけです。Debianのbashコマンドラインで同じ機能を実装するにはどうすればよいですか?はい、必要なパッケージの提案であれば、apt-cache検索を使用して正規表現検索を実行できることを知っています。しかし、プログラムの名前をすぐに入力することで、より簡単な提案を望んでいました。 議論のとおり、機能はパッケージcommand-not-foundによって提供されます。ただし、それをインストールし、bash-completionパッケージをインストールした後でも、これはDebian bashシェルでは使用できません。

3
bashで1つ以上のプログラムのパスワードを渡す安全な方法
bashスクリプトを書いているので、ユーザーにパスワードを要求してに渡す必要がありますopenssl。なくなりopensslパスワード自体を読むことができ、私はプログラムの2つの実行のために必要と二回ユーザーに依頼する必要はありません。スクリプトは次のとおりです。 cp file{,.old} read -sp 'Enter password. ' PASS; echo export PASS # decode | edit | encode openssl enc -d -aes-256-cbc -k "$PASS" -in file.old | \ sed ... | openssl enc -e -aes-256-cbc -k "$PASS" -out file unset PASS パスワードはコマンドラインを見ると簡単に入手できるため、これは安全ではありません。psたとえば、誰かがそれを使用して読むことができます。 openssl環境変数からパスワードを読み取ることができますので、私は置き換えることができ-k "$PASS"て-pass env:PASS、それはまだ安全ではありません。任意のプロセスの環境変数は自由に読み取ることができます(繰り返しpsます)。 それでは、どうすれば2つのopensslインスタンスにパスワードを安全に渡すことができますか?

3
[-n]のように[-n]が偽ではないのはなぜですか?
私の質問は、このコードによって生成される戻り値に関するものです。 if [ -n ]; then echo "true"; else echo "false"; fi これは印刷されtrueます。 [ -z ]また、印刷物を使用した補完テストtrue: if [ -z ]; then echo "true"; else echo "false"; fi 上記のコードでは、なぜない[ -n ]テストがnullではないとして、すべてで渡されていない文字列値を想定しますか? 以下のコードが印刷されfalseます。これは、渡された文字列値がnullで長さがゼロであるため予想されます。 if [ -n "" ]; then echo "true"; else echo "false"; fi
20 bash 

3
bashの「true」の目的は何ですか「if sudo true; それから」
ユーザーがスーパーユーザー特権を持っているかどうか、またそうでないかどうかをテストするこのbashスクリプトを一緒にハックしました。最終的に、次の2行を削除できるように、2番目の「if」ステートメントを反転させようとしています(エコー「password ok」と、次の行のelse) # Root user only if [[ "$EUID" != 0 ]]; then sudo -k # make sure to ask for password on next sudo if sudo true; then echo "Password ok" else echo "Aborting script" exit 1 fi fi echo "do my ops" 4行目の "true"の目的は単なるnullステートメントですか? 4行目のテストを反転する必要がありますが、どうすればよいですか?ここに私が試したものがあります: if sudo false; …
20 bash  sudo 

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