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

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

4
$ HOME以外のディレクトリですべてのシェルセッションを開始するにはどうすればよいですか?
Ubuntuで非ログインシェルを開くと、現在の作業ディレクトリは/home/user_name(私の$HOME環境変数)ですが、これを変更して、ターミナルを起動したときに他のディレクトリに移動するようにします。 Ubuntuで端末を起動すると、.bashrcファイルが取得されることを読みました。だから私は追加しました export HOME=/home/user_name/Documents 私の.bashrcファイルに。これで、ターミナルを開いたとき、まだ/home/user_nameディレクトリにいます。 これを変更するにはどうすればよいですか?

3
bashスクリプトからtmuxセッションに入っているかどうかを確認するにはどうすればよいですか?
私は自分bash_profileをgitリポジトリに保持し、シェルにアクセスできるあらゆるマシンにクローンを作成するのが好きです。私はtmuxほとんどのuser@host場合、シェルプロンプトの従来の場所ではなく、ステータス行に文字列があります。 tmuxただし、使用するすべてのサイトがインストールされているわけではありません。または、常に使用しているとは限りません。tmuxセッション中でないときを検出し、それに応じてプロンプトを調整したいと思います。これまでのところ、私の中途半端なソリューションは.bash_profile次のようになります。 _display_host_unless_in_tmux_session() { # ??? } export PROMPT_COMMAND='PS1=$(_display_host_unless_in_tmux_session)${REST_OF_PROMPT}' (おそらく毎回チェックすることはおそらく最善のアプローチではないので、これを行うためのより良い方法について提案を受け入れています。Bashスクリプトは私の得意ではありません。)
53 bash  prompt  tmux 

6
「su」とエラー「誤った認証のためX11接続が拒否されました」
ルートとして、コマンドを実行するためにリモートホストに接続しています。「standarduser」のみが適切なidファイルと正しい.ssh / configを持っているため、最初にユーザーを切り替えます。 su standarduser -c 'ssh -x remotehost ./remotecommand' コマンドは正常に動作しますが、「-x」(X11-Forwardingを無効にする)を使用し/etc/ssh/ssh_config、X11Forwardsを無効にしたにもかかわらず、エラーメッセージが表示されます。 X11 connection rejected because of wrong authentication. 「standarduser」としてログインしているときにエラーメッセージが表示されません。 コマンドをcronジョブファイルに統合したいので、これは非常に面倒です。エラーメッセージがルートの.XAuthファイルの誤った認証を指していることは理解していますが、X11経由で接続しようとさえしていません。 「ssh -x」がX11接続を無効にせず、エラーメッセージをスローしないのはなぜですか? 更新:メッセージは、画面内でログインしているときにのみ表示されます。ローカルマシン自体で(画面なしで)上記のコマンドを使用すると、エラーメッセージが表示されないため、cronでも問題ないはずです。 また-v、SSHからのステータス情報の前であっても、同じコマンドを開始し、驚くべきエラーメッセージが最初に表示されました。 root@localhost:~# su standarduser -c 'ssh -x remotehost ./remotecommand' X11 connection rejected because of wrong authentication. OpenSSH_6.2p2 Ubuntu-6ubuntu0.1, OpenSSL 1.0.1e 11 Feb 2013 これは問題自体に私を導きました、それはsshエラーメッセージを投げているものではありません、それはsu: root@localhost:~# su standarduser …
53 bash  gnu-screen  su  xauth 

5
複数のコマンドを実行し、bashでそれらを殺します
単一のシェルで複数のコマンド(プロセス)を実行したい。それらはすべて独自の連続出力を備えており、停止しません。バックグラウンドでそれらを実行すると壊れますCtrl- C。それらをすべてCtrl-で停止できるように、単一のプロセス(サブシェル、多分?)として実行したいと思いCます。 具体的には、単体テストmocha(監視モード)を実行し、サーバーを実行してファイルの前処理(監視モード)を実行し、1つのターミナルウィンドウでそれぞれの出力を確認します。基本的に、タスクランナーの使用を避けたいと思います。 バックグラウンドでプロセスを実行することで実現できますが(&)、その後、それらを停止するにはフォアグラウンドに配置する必要があります。それらをラップするプロセスが欲しいのですが、プロセスを停止すると、その「子」が停止します。

6
ルートアクセスなしでzshをデフォルトシェルにする
私は学校のコンピューターを使用していますが、のzsh代わりに使用したいと思いbashます。デフォルトのシェルにしたいのです$ chsh -s $(which zsh)が、管理者権限がないなどのコマンドを実行できません。 回避策として開いたときに.bashrc自動的に呼び出すものを自分に入れる方法はありzshますか? 明確にするために、zsh既にインストールされています。
52 bash  zsh  login  profile 


3
シェルワイルドカードでORパターンを使用する
私のディレクトリの内容は $ ls -lrt total 0 -rw-r--r-- 1 user1 admin 19 Oct 8 12:31 night.txt -rw-r--r-- 1 user1 admin 19 Oct 8 12:31 noon.txt -rw-r--r-- 1 user1 admin 38 Oct 8 12:31 day.txt 指定したファイル名に単語が含まれているファイルの詳細を一覧表示したいと思います。 例: $ ls -lrt *day|night* ls: *day: No such file or directory bash: night.txt: command not …
52 bash  shell  zsh  ls  wildcards 

4
no_proxy環境変数でネットワーク範囲を設定します
私はプロキシを使用してネットワークにいます。あちこちでHTTPを介して相互にアクセスする多くのスクリプトを使用するマシンがあります。 ネットワークは10.0.0.0/8です。 私のプロキシは10.1.1.1:81なので、それに応じて設定します。 export http_proxy=http://10.1.1.1:81/ プロキシを使用してアクセスする独自の範囲を除外したい。利用可能な任意の組み合わせを試しました。 export no_proxy='10.*' export no_proxy='10.*.*.*' export no_proxy='10.0.0.0/8' 上記の作業はどれもありません! 私はテストを行ってwgetおり、接続したいIPアドレスが何であれ、常にプロキシを照会しようとします。 多くのスクリプトがすべてのシステムのどこにでもあるので、--no-proxyオプションは実際にはオプションではありません。システム全体に設定したい。
52 bash  wget  curl  http-proxy 

9
無限ループの終了
コマンドが終了するたびに自動的に再実行したいので、次のようなコマンドを実行しました。 while [ 1 ]; do COMMAND; done; しかし、私はループを止めることができないならばCtrl-cそれはちょうど殺すようCOMMANDループ全体をしていません。 同様のことをどのようにして達成できますか?端末を閉じることなく停止できますか?
52 bash  signals 

3
$()はサブシェルですか?
サブシェルの構文がであると理解していますが(<commands...>)、$()変数値を取得できるサブシェルにすぎませんか? 注:これは、ドキュメントのさまざまな表現に基づいてbash 4.4に適用されます。
51 bash  subshell  syntax 


3
コマンド/プログラムのパイプチェーンでwatchコマンドを使用する方法
私は通常、watchLinuxユーティリティを使用して、次のようにn秒ごとにコマンドの出力を繰り返し監視しますwatch df -h /some_volume/ しかしwatch、次のような一連のパイプコマンドでは使用できないようです。 $ watch ls -ltr|tail -n 1 私がそれをすると、watch本当に見ていて、何も出力しない出力ls -ltrが渡されtail -n 1ています。 これを試してみると: $ watch (ls -ltr|tail -n 1) 私は得る $ watch: syntax error near unexpected token `ls' そして、次のいずれかが何らかの理由で失敗します。 $ watch <(ls -ltr|tail -n 1) $ watch < <(ls -ltr|tail -n 1) $ watch $(ls -ltr|tail -n …
51 linux  bash  pipe  watch 


5
エイリアスsudo !! `
sudo !!Bashでエイリアスを設定しようとしています。私はalias sbb='sudo !!' を試しましたが、それをリテラルとして解釈し !!、印刷します sudo: !!: command not found 二重引用符を使用すると、文字列自体に二重バングが置換されるため、機能しません。 この作業を行う方法はありますか?または別のエイリアスですか?`

5
あるコマンドの出力を別のコマンドライン引数として渡す方法は?
したがって、2つのアドレスを指定すると、2つのHTMLリンクを検索するスクリプトがあります。 echo "http://maps.google.be/maps?saddr\=$1\&daddr\=$2" | sed 's/ /%/g' これを送信してwget、出力をというファイルに保存しますtemp.html。これを試しましたが、うまくいきません。誰かが理由を説明したり、解決策を教えてくれますか? #!/bin/bash url = echo "http://maps.google.be/maps?saddr\=$1\&daddr\=$2" | sed 's/ /%/g' wget $url

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