Questions tagged [bash]

bashはUNIXで使用するシェル(端末でログインした際にユーザーから入力を受け付けているCUIプログラム) のひとつで、GNUプロジェクトのために書かれました。#!/bin/bash のシェルスクリプトについての質問はこのタグへ。#!/bin/sh のシェルスクリプトについての質問は[sh]タグへ。

おそらくいま現在、最も一般的に UNIX 系で使われているシェル。 にインストールされているデフォルトのシェルがこれです。

何がこのタグに該当するか:

  • #!/bin/bash のシェルスクリプトについての質問はこのタグへ。
  • #!/bin/sh のシェルスクリプトについての質問は へ。
  • で端末を開いた際に起動している CUI プログラムについて、打ち込んだコマンドがどう処理されるかについての質問はこのタグへ。(設定をいじっていなければ。)
  • で端末自体の設定 (Preferences) はこのタグではない。
251 questions
20
votes
1 answer

既に実行を開始したプロセスをシェルから切り離すには?

数時間かかると予想されるスクリプトをbashから起動しました。これを、ログインセッションが切れても一緒に落ちてしまわないように切り離したいです。 $ python insanely_long.py たまたまこのマシンにはscreenも入っていないので、これまではnohupでやっていたのですが今回は忘れてしまいました。どうすればよいでしょうか。
ento
  • 2,202
  • 5
  • 20
  • 35
12
votes
1 answer

bashの補完候補を取得するには

bashを対話環境で使用しているときにTabキーを押すと補完候補が一覧で表示されますが,これをシェルスクリプトから取得することは可能でしょうか? つまり,現在の$PATHと$PWD(あるいは他に必要な環境変数があるかもしれません)と入力中の文字列が与えられて,それらから候補を文字列の配列で返す関数のようなイメージです. Emacs LISPで言うfile-name-all-completionsに近いといえば分かりやすいでしょうか? ご存知の方がいましたらお願い致します.
KISUGE Yuto
  • 362
  • 1
  • 8
10
votes
3 answers

BASHにおけるクォートを含む文字列の展開について

$ CMD="some_command abcdef" $ ${CMD} という命令を実行することは、単に $ some_command abcdef という命令を実行することと同様です。 しかし、 $ some_command "abc def" という命令を、冒頭の前者のように実行するにはどのようにしたら良いのでしょうか。 仮に、 $ CMD="some_command \"abc def\"" $…
hrtshu
  • 103
  • 1
  • 1
  • 5
9
votes
3 answers

Bashでパイプラインを用いて、テキストファイルの行をランダムに入れ替えた出力を得るには?

例えば、以下のように、0から9までの数字が1行ずつ入っている内容のファイルがあったとします。 1 2 (..) 9 10 このファイルについて、上記の行がランダムで入れ替わっているような出力を得たいとします。例としては下のようにです。 9 5 (..) 1 3 もちろん、Perlのワンライナーを使ったり、あるいはRubyやPythonでこのような目的のスクリプトを書くことはできるのですが、これくらいのことであるならば、何らかのコマンドのパイプ(|)で繋いでいき、この出力を実現するような書き方…
esehara
  • 1,383
  • 1
  • 13
  • 26
8
votes
2 answers

bash > $(cmd)と`cmd`の違い

動作環境: CentOS 6.5 + bash bashでコマンドの結果を変数に入れる時 val=$(cmd) と val=`cmd` の書き方があるようですが、この二者の違いはあるのでしょうか? 単に好みの問題でどちらかを使えばいいものでしょうか? 片方にはできて、もう片方にはできないような処理があるのでしょうか?
sevenOfNine
  • 1,206
  • 12
  • 21
7
votes
1 answer

bashでのループ処理は波括弧で囲んでも動く?

Bashでのループ処理は、下記のように do と done で挟むと思うのですが、 #!/bin/bash for f in ./* do echo $f done 試しに、{} で囲んでも意図通りに動きました。 #!/bin/bash for f in ./* { echo $f } 実行結果: $ ./scripts2.sh ./scripts.sh ./scripts2.sh {}…
uraxurax
  • 559
  • 1
  • 5
  • 14
6
votes
5 answers

bash で,unzip の結果作られたファイルの一括削除

このような状況で $ pwd ~/Desktop $ ls myzip* myzip.zip ~/Desktop/myzip/ 下に解凍されることを期待して間違ってこうしてしまうことがあります: $ unzip myzip.zip 結果 $ tree ├── extracted_file0 ├── extracted_file1 . ... ├── myzip.zip ... # 元から ~/Desktop…
Yosh
  • 1,293
  • 1
  • 11
  • 30
5
votes
1 answer

bashの「レントジョブ」とは何を意味するのでしょうか

bashでジョブについて勉強中です。help コマンドでは下記のように出ますが、 $ help fg fg: fg [job_spec] ジョブをフォアグランドにします。 JOB_SPEC で識別されたジョブをフォアグランドにして、現在のジョブにします。 もし JOB_SPEC…
user35327
  • 53
  • 2
5
votes
5 answers

ラインが変わるごとに任意のコマンドを呼び出したい

bash上で、エンターを押して、ラインが変わるさいに、何らかのコマンドを実行したいのですが、そのようなフックの方法があるのでしょうか。具体的には下のような感じです: $ cat foobar.txt # run anything command $ #Enter # run anything command $ この # run anything command…
esehara
  • 1,383
  • 1
  • 13
  • 26
5
votes
2 answers

プロセス置換を使ったスクリプトを一時ファイルを使わずにBash 3.1.20に対応させたい

Bash 4ではプロセス置換が使えるので、例えば以下のような記述が可能です。 $ paste -d" " <(echo "hoge") <(echo "piyo") hoge piyo しかし、Bash 3.1.20ではプロセス置換が使えないので、これを愚直に書き換えようとすると一時ファイルを使わなければなりません。 $ echo "hoge" > temp1 $ echo "piyo" > temp2 $ paste -d" " temp1 temp2 hoge piyo $ rm…
haruhiko
  • 51
  • 2
5
votes
2 answers

Character Sequenceに対応するキー入力を調べたい

Bashの対話環境はキーバインドの設定(特定のキー入力に対して特定のコマンドを実行)を行うことができます。現在の設定はbind -Pで確認することができます。 しかし、この時のキーの表示(character sequence)はわかりにくいものになっています。 例えば、↑キーのcharacter…
ywat
  • 512
  • 5
  • 16
4
votes
3 answers

特定の出力がされるまで処理を繰り返し、出力されたら処理を停止する方法

特定の出力がされるまで処理を繰り返し、出力されたら処理を停止する方法がわからないので、ご教示ください。 例えば、特定の文字列が出力されるまで、pingを繰り返そうとする場合、 1.ping.txtに文字列"time out"が出力されるまでpingを実行 2.time out が含まれていれば、再度pingを継続 3.time out が含まれていないか、試行回数が10回に至れば、"終了"をecho と動作させることを仮定しています。 #!/bin/bash…
FoxTribune
  • 1,237
  • 2
  • 25
  • 52
4
votes
3 answers

プロセス置換の実行順序について

以下のdiff <(ps -e) <(ps -e)の実行結果を見ると、ひとつのコマンド呼び出し中のプロセス置換の実行順序は決まってないように思われます。 $ diff <(ps -e) <(ps -e) $ diff <(ps -e) <(ps -e) 232d231 < 18157 pts/1 00:00:00 bash 236d234 < 18161 pts/1 00:00:00 ps $ diff <(ps -e) <(ps -e) 232a233 > 18163 pts/1…
letrec
  • 3,170
  • 1
  • 14
  • 34
4
votes
2 answers

bash の再起動は、 bash の中から行えますか?

.bashrc を書き換えた場合など(ただ、それに限らず)、 bash を再起動したくなる場合があります。 そのような場合において、 bash の再起動は bash の中から行えますか?
Yuki Inoue
  • 16,805
  • 19
  • 80
  • 196
3
votes
1 answer

bashでのファイル名の取り扱い方法

bashを使ってシェルプログラムを作っています。 ls -l <ファイル名> で<ファイル名>に空白が入っていると一つのファイル名と扱ってくれないので、<ファイル名>の中の空白を\…
Ubunkun
  • 1,803
  • 7
  • 47
  • 74
1
2 3 4