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

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

4
「&&」の後の「&&」の前のコマンドを参照できますか
他にどのように質問を言うかわかりませんが、基本的にvagrant、VMを起動するようなコマンドを実行し、次にsshで次のように実行することがよくあります。 vagrant up && vagrant ssh 独自の関数またはスクリプトを作成する前vagrantに、コマンドの2番目の部分の部分を「再利用」する方法はありますか?
10 bash  zsh 

2
ソースが「バイナリファイルを実行できません」というエラーを表示するのはなぜですか
tmuxセッションを初期化し、いくつかのウィンドウを作成する小さなファイルがあります。いくつかのデバッグと微調整の後、テキストファイルの名前を(tmuxコマンドを使用して)からに変更spamするまで問題なく動作しましたxset。 $ source xset bash: source: /usr/bin/xset: cannot execute binary file これでファイルの名前が変更され、source spam再び機能しましたが、これがなぜなのか疑問に思っています。ファイルは、ではなく、ホームディレクトリにあり/usr/binます。
10 bash  shell 

6
sshしてコマンドを実行するスクリプトが機能しない
以下はスクリプトです。 複数のサーバーにログインして、カーネルのバージョンを確認したいと思っていました。 #!/bin/bash #input server names line by line in server.txt cat server.txt | while read line do sshpass -p password ssh root@$line << EOF hostname uname -r EOF done 次のような出力が期待されます。 server1_hostname kernel_version server2_hostname kernel_version 等々.. server.txt内の約80台のサーバーでこのスクリプトを実行しました そして、私が得た出力は... Pseudo-terminal will not be allocated because stdin is not a terminal. Pseudo-terminal …
10 bash  shell-script  ssh 

5
bashスクリプトのエイリアスを作成する
だから私は試してみて、を作成しaliasました.bashrc。ただし、コマンドをテストすると、次のようになります。 [rkahil@netmon3 ~]$ menu -bash: menu: command not found これが私が.bashrcファイルに持っているものです: # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # User specific aliases and functions alias menu='./menuScript.sh' alias vi='vim' 面白いのは、エイリアスを作成したときvi、うまくいったことです。しかし、メニューにはありません。UnixStackExchangeで以前の投稿を調べ、他の投稿をフォローしようとしましたが、役に立ちませんでした。他に誰か提案がありますか?
10 bash  alias 

1
getoptsを使用して非オプション引数の後にオプションを解析する
次のようなbashスクリプトがファイルにありnepleaks_upd.sh、実行したい./nepleaks_upd.sh bootstrap --branch off。うまくいきませんでしたが--branch、動作します./nepleaks_upd.sh bootstrap -b off。 usage() { echo "Usage: $0 [prepare | up | down] [-b <on/off>]" 1>&2; exit 1; } case "$1" in bootstrap) while getopts ":b:" o; do case "${o}" in b) b=${OPTARG} if [ ${b} == "off" ]; then echo "git clone https://github.com/iPrayag/dotfiles.git" ## logic …

3
関数がパイプラインで呼び出されたときに環境変数が設定されない
環境変数を設定する次の再帰関数があります。 function par_set { PAR=$1 VAL=$2 if [ "" != "$1" ] then export ${PAR}=${VAL} echo ${PAR}=${VAL} shift shift par_set $* fi } それを単独で呼び出すと、変数が設定され、標準出力にエコーされます。 $ par_set FN WORKS FN=WORKS $ echo "FN = "$FN FN = WORKS stdoutをファイルにリダイレクトすることもできます: $ par_set REDIR WORKS > out cat out REDIR=WORKS $ echo "REDIR …


2
文字列内のbashコマンドは、後で使用するときではなく、文字列を作成するときに実行されます
私はシェルスクリプティングに比較的慣れていませんが、lftpプログラムを使用するスクリプトをほぼ完成させました。私が問題を抱えているスクリプトの部分は、コマンドの長い文字列(で区切られている;)を作成するときです。 for var in something do ... commands_to_run+="echo Result is `tail -n 1 $somefile`;" done 私が気づいているのはtail、forループが反復しているときにプログラム(バッククォートで囲まれている)が実行されていることですが、スクリプトの後半でコマンドの文字列を呼び出したときではありません。 残念ながら、$ somefileの内容は、この段階ではまだ検査する準備ができていません。文字列の作成中にではなく、必要なときにコマンドを実行するにはどうすればよいですか?

2
括弧を含むファイル名のエラー
ファイル名をからに変更しようとするold.file(1).gzとnew.file.gz、構文エラーと表示され、ubuntu 12.04を使用しています。 mv old.file(1).gz new.file.gz bash: syntax error near unexpected token `('
10 bash  shell  quoting 

6
Bash関数デコレーター
Pythonでは、関数に対して自動的に適用および実行されるコードで関数を装飾できます。 bashに同様の機能はありますか? 私が現在取り組んでいるスクリプトには、必要な引数をテストし、それらが存在しない場合は終了するボイラープレートがあり、デバッグフラグが指定されている場合はメッセージを表示します。 残念ながら、このコードをすべての関数に再挿入する必要があり、変更したい場合は、すべての関数を変更する必要があります。 このコードを各関数から削除し、それをすべての関数に適用する方法はありますか?Pythonのデコレーターと同様です?
10 bash  function 

2
インテリジェントな補完が失敗した場合にBashの通常のタブ補完を強制する
タブ補完がシェルの標準機能になったので、私はそれをとても幸せに使用しています。私はBashのインテリジェントな補完(evince foo <TAB>と入力するとPDFファイルのみを検索する)も気に入っています。 Bashがインテリジェントな補完を使用して補完を拒否した場合、それ以外の場合は幸せな日を台無しにします。 今日私はしたかった: tar xvf centos5.8_x86_1.ova だから私は入りました: tar xvf cent<TAB> .ova-filesは通常tarで使用するものではないため、Bashはパスの完成を拒否します。 私はbash-completionパッケージをアンインストールしてインテリジェントな補完を削除できることを知っています。でもケーキを持って食べてもいいですか? 最初にインテリジェントな補完を使用するようにbashに要求できますが、それが失敗した場合は、インテリジェントでない補完を使用できますか?

1
ログインか非ログインかに関係なく、常にインタラクティブモードで読み込まれるBashファイルはありますか?
私の知る限り、対話型シェルはログインである場合とログインでない場合があり、それらの起動ファイルは異なります。 もしインタラクティブ+のログインシェル→ /etc/profileその後の最初読める~/.bash_profile、~/.bash_loginと、~/.profile もしインタラクティブ+非ログインシェル→ /etc/bash.bashrcその後、~/.bashrc ログインシェルかどうかに関係なく、インタラクティブシェルを使用するたびにいくつかの変数を設定したいと思います。
10 bash  login  bashrc 

6
bash文字列で始まる行を見つける
たくさんのファイルがあり、特定の文字列で始まる連続した行が含まれているファイルを見つけたい。 たとえば、次のファイルの場合: Aaaaaaaaaaaa Baaaaaaaaaaa Cxxxxxxxxx Cyyyyyyyyy Czzzzzzzzz Abbbbbbbbbbb Bbbbbbbbbbbb Caaaaaa Accccccccccc Bccccccccccc Cdddddd Ceeeeee 「C」で始まる行が複数あるので、このファイルをコマンドで見つけたいと思います。 たとえば、次のファイルの場合: Aaaaaaaaaaaa Baaaaaaaaaaa Cxxxxxxxxx Abbbbbbbbbbb Bbbbbbbbbbbb Caaaaaa Accccccccccc Bccccccccccc Cdddddd 「C」で始まる行は常に1つあります。このファイルは必要ありません。a grepやa の使用を考えましたsedが、正確な方法がわかりません。多分正規表現^C.*$^Cかそのようなものを使用しています。何か案が ?
10 bash  sed  grep  string 

3
類似のbash関数を一度に定義する方法
私はこれらの機能を持っています~/.bashrc: function guard() { if [ -e 'Gemfile' ]; then bundle exec guard "$@" else command guard "$@" fi } function rspec() { if [ -e 'Gemfile' ]; then bundle exec rspec "$@" else command rspec "$@" fi } function rake() { if [ -e 'Gemfile' ]; then bundle exec …
10 bash 

2
ディレクトリ名を保持する環境変数のBashオートコンプリート
特にLinux Mint 14でbash 4.2.37を使用しています。 と入力して環境変数の名前をオートコンプリートするTabと、変数名の後にスペースが続きます。 変数の値がたまたまディレクトリ名である場合は、変数名の後にを続けて展開します/。 たとえば、次のように入力すると、 $ ls $HOM<tab> 次のように展開されます。 $ ls $HOME _ where _はカーソルの位置を示します。問題は、私はその後、通常私が入力しなければならないことを意味自分のホームディレクトリの下にいくつかのファイルまたはディレクトリの名前を入力し続けていきたいということでbackspace、その後と/。 私はそうしたい上記にまで拡大します。 $ ls $HOME/_ 変数名全体を入力したときにも同じことが起こります。の後ls $HOME、tabスペースを追加し、それに/。 (もちろん/、変数の値がディレクトリ名でない場合は、を追加したくありません。) bashコマンドを使用するか、bashコマンドを更新することで、bashに希望どおりの動作をさせることができる方法はありますか$HOME/.inputrc? 注:私は特にtab私が望むように動作させる方法を探しています。異なるキーストロークで同じ動作を実現する方法は興味深いでしょうが、私の質問には答えられません。 (/etc/profile.d/bash_completion.shシステムとの相互作用が不十分なため、システムで無効にしましたset -o nounset。簡単な実験により、これはおそらく私の質問には関係ないことが示されています。) ちなみに、tcshはこれを行います。環境変数$FOOBARを指定$FOOBA<tab>する$FOOBAR/と、ディレクトリを参照している場合は$FOOBAR(スペース付きで)参照している場合、タイピングは展開されます。いいえ、tcshに戻るように説得するには十分ではありません。zshもこれを行います。

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