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

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

7
履歴コマンドを実行せずにコマンドラインに配置する
!nを使用します。ここで(n)は、history | lessを介して見つかったコマンドプロンプトで実行する履歴ファイル内の行を実行するための行番号です。 しかし、手動で変更したいコマンドライン履歴イベントがあります。変更してからReturnキーを押すことができるように、実際に実行せずに履歴イベントの内容をコマンドラインに挿入するにはどうすればよいですか? ベスト、

9
定義された変数(シェル変数や環境変数)のみをbashで印刷する方法
bash組み込みコマンドはset、引数なしで呼び出された場合、すべてのシェル変数と環境変数を出力しますが、すべての定義済み関数も出力します。これにより、出力が人間にとって使用できなくなりにくくなりgrepます。 bash組み込みコマンドにset、関数ではなく変数のみを出力させるにはどうすればよいですか? 関数なしでシェル変数のみを出力する他のコマンドはありますか? 注:bashは、シェル変数と環境変数を区別します。こちらをご覧ください環境変数とbashでエクスポートされた環境変数の違い

4
ダッシュまたは他のシェルはbashよりも「高速」ですか?
私はいつも、bashの代わりにdashを使用することの唯一の利点は、dashが小さいことであり、したがって、dashの多くのインスタンスがブート時に高速に起動するだろうと考えていました。 しかし、私はいくつかの研究を行い、より速く実行されることを期待して、すべてのスクリプトをダッシュ​​に移行する人を見つけました。また、Ubuntu Wikiの記事DashAsBinShでこれを見つけました。 デフォルトのシェルを切り替える主な理由は効率性です。bashは、インタラクティブな使用に適した優れたフル機能のシェルです。確かに、それはまだデフォルトのログインシェルです。ただし、ダッシュボードと比較すると、起動と操作がかなり大きく、遅くなります。 最近、システム上の多くのことに多くのbashスクリプトを使用していますが、私の問題は、24時間年中無休で実行している特定のスクリプトがあることです。通常の使用法よりもC。 それは多くのバシズムを伴うかなり大きなスクリプトであるため、それらをPOSIXまたは他のシェルに移植するのは非常に時間がかかります(そしてPOSIXは個人的な使用にはあまり関係ありません)が、これのいくつかを減らすことができれば価値があるCPU使用率。のようsedな単純なbashismのような外部バイナリを呼び出す${foo/bar}、またはのgrep代わりに、考慮すべき他の事柄もあることを知っています=~。 TL; DRはダッシュと比較してbashの起動と操作が本当に遅いですか?bash よりも効率的な他のUnixシェルはありますか?
57 bash  performance  dash 

1
zshおよびbashのforループ
zshでループを作成する2つの代替方法があることに気付きました。 for x (1 2 3); do echo $x; done for x in 1 2 3; do echo $x; done それらは両方とも印刷します: 1 2 3 私の質問は、なぜ2つの構文ですか?さ$xの異なる繰り返し処理対象物の種類、それらのそれぞれに? んbashは同様の区別を作りますか? 補遺: なぜ次のように機能しますか?: #!/bin/zsh a=1 b=2 c=5 d=(a b c) for x in $d; do print $x;done しかし、これはそうではありませんか?: #!/bin/zsh a=1 b=2 c=5 d=(a b c) …
57 bash  zsh 

5
コマンドエイリアスのbash補完を取得するにはどうすればよいですか?
コマンドラインエイリアスでタブ補完を取得したいと考えています。たとえば、次のエイリアスを定義したとします。 alias apt-inst='sudo aptitude install' タブキーを押したときにaptitudeが提供する補完を取得する方法はありますか?すなわち、「sudo aptitude install gnumer」と書いてタブを押すと、aptitudeはこれをgnumericに完了させます。不確実性がある場合は、gnumerで始まるすべての利用可能なパッケージをリストします。私のエイリアスを使用してそれを行う場合、何もありません-完了しません。

3
「cd-」と「cd〜-」の違い
Bashコマンド cd - 以前に使用したディレクトリとその変更を出力します。 一方、Bashコマンド cd ~- 何もエコーせずに、以前に使用したディレクトリに直接変更します。 それが唯一の違いですか?各コマンドのユースケースは何ですか?

2
環境を持つ別のユーザーとしてのsudo
$ whoami admin $ sudo -S -u otheruser whoami otheruser $ sudo -S -u otheruser /bin/bash -l -c 'echo $HOME' /home/admin ログインシェルとしてbashが呼び出され$HOMEて/home/otheruserも、なぜ設定されないのですか? 具体的に/home/otheruser/.bashrcは、調達されていません。また、/home/otheruser/.profile調達されていません。-(/home/otheruser/.bash_profile存在しません) 編集:正確な問題は実際にはhttps://stackoverflow.com/questions/27738224/mkvirtualenv-with-fabric-as-another-user-failsです

4
suはユーザーを変更しませんが、エラーでも応答しません。
特定の一般ユーザーにログインしrootたいsu。実行しsu username、すぐにルートとしてプロンプトを受け取ります。エラーはありません。私は、古い「suを行おうとしているユーザーが現在いるフォルダーのアクセス許可を持っていない」という問題を認識していますが、このシナリオではそうではありません。さらに、エラーが表示されることはありません。これは、特定のアクセス許可の問題が発生したときに常に発生します(私の知る限り)。 私はsu - username同じ効果で試しました。コマンドは処理され、エラーは表示されず、すぐにプロンプ​​トが返されます。 この動作の原因は何ですか?これをトラブルシューティングするにはどうすればよいですか?
56 bash  su 

1
猫の助けを借りてファイルの権限を変更する
root@system:~# less myfile -bash: /bin/less: Input/output error ルートファイルシステムが死んでいます。しかし、私の猫はまだ生きています(私の記憶の中で): root@system:~# cat > /tmp/somefile C^d root@system:~# 彼はちょっと寂しいけど、彼の友達は皆なくなった。 root@system:~# mount -bash: /bin/mount: Input/output error root@system:~# dmesg -bash: /bin/dmesg: Input/output error root@system:~# less -bash: /bin/less: Input/output error root@system:~# chmod -bash: /bin/chmod: Input/output error システムはまだ実行中であり、その目的を果たしています。これに対する唯一の正気な対応は、システムをダウンさせてルートドライブを交換することです。残念ながら、これには多くの時間とお金がかかるため、選択肢ではありません。また、それは私の猫を殺し、それは私を悲しませます。 私は彼に彼のいつもの友人をドナーから連れてくることを考えました。sshがそれをロードして行を切断しようとする場合に備えて、私はそれらをscpしようとはしません(バイナリはとにかくなくなっています)。これは私の猫のいとこの仕事のように聞こえます: root@system:~# netcat -l 1234 > /tmp/less -bash: netcat: command …


8
set -o viを使用する利点
このコマンドを使用してオプションをviに設定する多くの開発者を見てきました。私はこれの本当の使用を理解したことがありませんか? bashコマンドを使用する場合、viに切り替えるとどのようなヘルプが提供されますか?
55 bash  vim  vi 

4
bash caseステートメントの最後の「esac」とはどういう意味ですか?必要ですか?
bashのcaseステートメントの最後に「esac」の例が複数あるのを見つけましたが、その使用に関する明確なドキュメントは見つかりませんでした。マニュアルページはそれを使用しており、単語(https://www.gnu.org/software/bash/manual/bashref.html#index-esac)のインデックスさえ持っていますが、その使用を定義していません。ケースステートメント、ベストプラクティス、または純粋なテクニックを終了するために必要な方法ですか?
55 bash  case 

13
ディレクトリ内のファイル数を数える最もリソース効率の良い方法は何ですか?
CentOS 5.9 先日、ディレクトリに多くのファイルがある問題に遭遇しました。それを数えるために、私は走ったls -l /foo/foo2/ | wc -l 1つのディレクトリに100万を超えるファイルがあったことがわかります(長い話-根本的な原因は修正されつつあります)。 私の質問は次のとおりです。カウントを行うより速い方法はありますか?カウントを取得する最も効率的な方法は何でしょうか?
55 bash  shell  directory  ls 

3
新しいエイリアスと関数を定義した後、エイリアスと関数を更新しますか?
.bash_aliasesファイルに新しいエイリアスまたはファイルに新しい関数を定義するとき.bashrc、ターミナルを閉じることなく新しいエイリアスまたは関数をすぐに使用できるリフレッシュコマンドがあります(私の場合、いくつかのタブが開いているxfce4-terminal、多くのファイルが開いていますそして仕事の途中で)?

5
現在の日付を変数からファイル名に追加する
私はこのようなファイル名の最後に現在の日付を追加しようとしています: TheFile.log.2012-02-11 ここに私がこれまでに持っているものがあります: set today = 'date +%Y' mkdir -p The_Logs & find . -name The_Logs -atime -1 -type d -exec mv \{} "The_Logs_+$today" \; & ただし、ファイルの名前のみが取得され、何も追加されません。現在の日付をファイル名に追加するにはどうすればよいですか?
55 bash  shell  rename  date 

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