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

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

4
コマンドの戻りステータスをテストしてバージョン管理システムを検出するBashスクリプト
いくつかの種類のVCSで使用したいbashスクリプトを作成しています。典型的なinfoコマンドを実行し、戻りコード、成功またはエラーを確認することにより、ディレクトリがシステムのリポジトリであるかどうかをテストすることを考えています。擬似コードでは: if a svn command succeded; Then run svn commands elif a darcs command succeded; Then run darcs commands elif a mercurial command succeded; then run hg commands else something else fi 私は、例えば、コマンドを実行することができます darcs show repoし、使用$?そのリターンコードを取得します。 私の質問は、戻りコード番号を1行で実行して返すためのきちんとした方法はありますか?例えば if [ 0 -eq `darcs show repo`$? ]; または、関数を定義する必要がありますか? 追加の要件として、stderrとstdoutの両方を印刷する必要があります。

1
bash viキーを再マップしますか?
私はDvorakとviを使用しているので、Bashのviモードについて知ったとき、とても興奮しました。ただし、viで使用するものに移動キーを再マップできればさらに良いでしょう(移動キーがDvorakのホーム行に戻るまで、キーを交換します)。 これどうやってするの?

4
Bashのファイル読み取りコマンド置換を理解する
私はBashが次の行をどのように扱うかを理解しようとしています: $(< "$FILE") Bashのmanページによると、これは次と同等です。 $(cat "$FILE") この2行目の推論の行を追うことができます。Bashはで変数展開を実行し$FILE、コマンド置換を入力し、$FILEto の値を渡しcat、catはの内容$FILEを標準出力に出力します。コマンド置換は、行全体を内部のコマンドの結果である標準出力で置き換えることで終了し、Bashはそれを実行しようとします簡単なコマンド。 ただし、上記の1行目は$FILE、Bashが$FILEで変数置換を実行し、Bashが標準入力を読み取るために開き、標準入力が標準出力にコピーされ、コマンド置換が終了し、結果の標準をBashが実行しようとすることを理解しています。出力。 誰かが私に$FILEstdinからstdoutへのコンテンツの流れを説明してくれませんか


4
zshとmkshはbashと互換性がないのですか?
他のPOSIX互換シェルは、bashの合理的な代替としてどの程度機能しますか?それらは真の「ドロップイン」置換である必要はありませんが、ほとんどのスクリプトで動作し、いくつかの変更を加えて残りをサポートするのに十分近いです。 明示的なbashスクリプト-initscripts、DHCPクライアントスクリプトなど-を最小限の変更で機能させたい より多くの変更を必要としない、より専門的なシェルスクリプトの独自のコレクションが欲しい 文字列操作や組み込みの正規表現パターンマッチングなどの機能が欲しい 私が知っている深刻な候補はzshとmkshだけです。ですから、ここのどちらかまたは両方に長けているあなたのために: bashには、zshとmkshにそれぞれない機能がありますか? シェルはbashとどの機能を共有しますが、互換性のない構文を使用しますか?
11 bash  zsh  mksh 

3
ヒアドキュメントの一時ファイルを作成できません:権限が拒否されました
[注:この同様のQは、同じbashエラーメッセージに関係しています。この他のQの重複としてマークされていますます。しかし、このエラーの非常に異なる原因を見つけたので、以下の自分のQに回答します。] この以前は機能していたbashスクリプト行 while ... do ... done <<< "$foo" ある日、このエラーメッセージが生成され始めました。 ヒアドキュメントの一時ファイルを作成できません:権限が拒否されました

3
tmuxがPS1プロンプトを色付けしない
最近、私はPS1変数を変更して、端末の表示の楽しみのためにかなりのソーラー色に対応することにしました。tmuxセッションにいないときは、すべてが素晴らしいです!虹、ポニー、ユニコーン、そして際立ったプロンプト!涼しい! ただし、問題はtmux内にあります。PS1の値が期待どおりであり、tmuxが実行されていないときと同じであることを確認しました\[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]。 .bash_profile内のすべてのエイリアスなども期待どおりに機能しています。tmuxもecho -ne "\033[1;33m hi"、予想どおりに動作するため、問題なく色を表示していgls --colorます。 私の.bash_profileの現在の関連行はですがexport PS1="\[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]"、元々は.bash_promptファイルにあるスクリプトを使用していくつかの条件などを処理していました。より単純なバージョンに戻してみました。 実行bashするとプロンプトが色付けされますが、各ペインで実行する必要があります。export PS1=[that long string I've already posted]しない。 私の.tmux.confは次のとおりです。 set-option -g default-command "reattach-to-user-namespace -l /usr/local/bin/bash" set -g default-terminal "xterm-256color" set-window-option -g automatic-rename on bind '"' split-window -c "#{pane_current_path}" bind % split-window -h -c "#{pane_current_path}" bind c new-window -c "#{pane_current_path}" .bash_profileの関連部分: …
11 bash  osx  tmux  prompt 

1
GNU Makefileでのプロセス置換
bashプロンプトで、疑似ファイルを使用してdiffを実行できます。 diff <(echo test) <(echo test) これをそのままMakefileに追加すると失敗します。 all: diff <(echo test) <(echo test) エラー(ヒント:/ bin / shがこのシステムの/ bin / bashを指しています): /bin/sh: -c: line 0: syntax error near unexpected token `(' /bin/sh: -c: line 0: `diff <(echo test) <(echo test)' それはどういう意味ですか、一時ファイルを使用せずに2つの出力を比較する方法はありますか?

3
stat:ファイルの変更タイムスタンプ
私はstat -f %m .bashrcosx上の.bashrcの変更時間を取得するために使用しています。しかし、ubuntuで同じコマンドを実行すると、エラーが発生します。 stat: cannot read file system information for %m': No such file or directory これを達成するための互換性のある方法はありますか?

2
bash viモードで、jkをマップして挿入モードを終了します
私はbashシェルでubuntu 16.04の新規インストールを使用しています。私がやりたいことが2つあります。 端末からvimのような動きができるようにviモードを設定します 入力して挿入モードを終了する jk 私はこれをどのように行うことができるかを別の投稿で読みましたzsh、どうすればそれを行うことができbashますか? tl; dr :)の後にファイルに入れbind '"jk":vi-movement-mode'ます.bashrcset -o vi server@thinkpad:~$ tail -n 2 .bashrc set -o vi bind '"jk":vi-movement-mode' 詳細な説明については@grochmalの回答を参照してください

2
.bashrcをソースした後、sshを使用して対話型シェルでコマンドを実行します。
リモートのUbuntuコンピューターにSSHで接続し、myを入手して、.bashrcそのパラメーターで設定されたパラメーターに依存するコマンドを実行します.bashrc。これらはすべて、コマンドの実行後に閉じないインタラクティブシェル内にあります。 今までやってみました ssh user@remote_computer -t 'bash -l -c "my_alias;bash"' あるいは単に ssh user@remote_computer -t "my_alias;bash" これは一般的なコマンド(lsたとえば)で機能しますが、で定義されたエイリアスを実行しようとすると.bashrc、エラーが発生します。 bash: my_alias: command not found しかし、もう一度手動で記述して実行すると、うまくいきます。 では.bashrc、コマンドが呼び出される前にが確実にソースされるようにするにはどうすればよいですか?
11 bash  shell  ssh  alias 

1
'mail'を使用してコマンドラインからメールを読む
mail端末でコマンドを使用してmail、インタラクティブモードでプログラムの使用を開始できることを知っています。 しかし、mailコマンドを使用して非対話的にメールを読みたいです。 次のようなコマンドはありますか $ mail -optionToReadMail -mailNumber 1; どちらが標準出力に電子メールのコンテンツを表示しますか?
11 bash  scripting  mailx 

3
bashで2つのファイルの先頭を比較する
私が行うことができますdiff filea filebファイルの違いを見るために。head -1 fileafileaまたはfilebの最初の行を表示することもできます。これらのコマンドを組み合わせて、fileaの最初の行とfilebの最初の行の違いを表示するにはどうすればよいですか?
11 bash  shell  diff  head 



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