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

BashはBourne Again SHellであり、古典的なUnix sh(シェル)の後継です。


2
Docker exec / run shellコマンドのネスト
ユースケースの簡単な紹介: を使用しdockerてgoテストを実行するためにコンテナを使用していgo test ./...ます。これはを使用して簡単に実現できますdocker exec <container> /bin/sh -c "go test ./..."。残念ながらgo test ./...、すべてのサブディレクトリで実行されるため、1つ(ベンダーディレクトリ)を除外したいと思います。 このための推奨される解決策は、次のコマンドを使用するgo test $(go list ./... | grep -v '<excluded>'ことです。 docker run golang:1.6.2-alpine /bin/sh -c "go test " (私はこれをrunとexecの両方でテストしましたが、おそらく同じコアを使用しています)。 docker exec -it <container_id> /bin/shまったく同じコマンドを使用してコンテナにsshして実行すると、それは魅力のように機能します。 docker exec / runでシェルコマンドを実行すると、$()?でネストされたコマンドはサポートされないようです。
15 bash  docker 

2
出力の下のBashプロンプト-バックグラウンドログテール
私は以前、Linux上で実行されている製品の1つを管理するためにカスタマイズされたシェルを使用していた会社で働いていましたが、このシェルの主要な機能を複製したいと考えています。 すべての作業はバックグラウンドプロセスで行われ、ログからの出力はすべての接続ユーザーに表示されました。 ログはシェルのバックグラウンドで終わり、プロンプト行は常に完全に下部に留まります。 例えば Log line 1 Log line 2 Log line 3 ![ROOT@PRODUCT51-LIVE]:~/ # 私がbashでこれをやろうとしたのは、ユーザーの.bashrcファイルでデタッチされたテールを開始することでしたが、コマンドからの出力がstdoutに送信されると、bashプロンプトの下に入力されます ![ROOT@PRODUCT51-LIVE]:~/ #Log line 1 Log line 2 Log line 3 そして、ユーザーはEnterキーを押すかCtrlC、クリーンなプロンプト行を表示する必要があります。 プロンプトを常に出力の一番下にジャンプさせる方法についてのアイデアがありません。運が悪いので間違った用語を使用してGoogleで何かを見つけていると思います-誰もこれを行う方法を知っていますかバッシュで?
15 linux  bash  shell  tail 

3
複数のセッションを実行しているときの奇妙なbash履歴動作
複数のターミナルウィンドウを使用する場合、コマンドラインの履歴はどのように保存されますか?それが保存されていることは知って.bash_historyいますが、新しいウィンドウを開くと、どの履歴が使用されているかのロジックを見ることができません。新しいウィンドウで上矢印を使用しようとすると、どのコマンドが表示されるかわからないという意味で、ほとんど決定的ではありません。 誰かがこれを説明できますか? 特定のウィンドウから履歴を再利用できるように、履歴を制御する方法はありますか?

4
bash子プロセスのPID(imapsync)-どうやって取得しますか?
bashで実行されたコマンドのPIDを取得する方法を教えてください。 たとえば、imapsyncを実行するbashスクリプトがあります。 スクリプトが強制終了されると、imapsyncプロセスが常に強制終了されるわけではないため、imapsyncのPIDをスクリプトからプログラムで識別できるようにして、imapsyncプロセスをシグナルハンドラで自分で強制終了できるようにします。 それでは、親bashスクリプトから子プロセスのPIDをプログラムで取得するにはどうすればよいですか?
15 bash  pid  imapsync 

2
bashスクリプトでの予行演習の実装
bashスクリプトで予行演習オプションをどのように実装しますか? スクリプトがドライランで実行されている場合、すべてのコマンドをifでラップし、コマンドを実行する代わりにコマンドをエコーアウトすることを考えることができます。 別の方法は、関数を定義し、その関数を介して各コマンド呼び出しを渡すことです。 何かのようなもの: function _run () { if [[ "$DRY_RUN" ]]; then echo $@ else $@ fi } `_run mv /tmp/file /tmp/file2` `DRY_RUN=true _run mv /tmp/file /tmp/file2` これは単に間違っているのですか、それを行うためのはるかに良い方法がありますか?
15 bash 

7
Unixでbashスクリプトで完全修飾名(FQN)を取得する方法は?
私はhostnameいくつかのサーバー(RedHat、Ubuntu)でテストしましたが、hostname -f信頼性が低いことが証明されており、短い名前(この質問で説明しているように)を返すこともあります。 エイリアスでfqnを確認できますhostname -a(エイリアスの1つは探しているfqnです)が、エイリアスの順序は固定されていません。 完全修飾名を確実に取得し、bash変数に保存する別の方法はありますか?
15 unix  bash  hostname 

2
sshを本当に静かにする
nagiosスクリプトを書く途中で、SSHに悩まされています。 manページによると: -q Quiet mode. Causes all warning and diagnostic messages to be suppressed. それでも、quietフラグを有効にしてから無効なポートを渡すと、エラーが発生します。 $ ssh user@localhost -q -p test Bad port 'test' これは問題です。というのも、それによってそのメッセージが最初の行になり、Nagiosがそれをつかむからです。!= 0sshから終了コードを取得した後、「警告| SSHエラー」のようなものを出力する必要がありますが、出力できる最初の行は2行目です。 SSH TRULYを静かにするにはどうすればよいですか? 注:この質問をserverfault、スーパーユーザー、またはstackoverflowに投稿するかどうかはわかりませんでした。ユーザーベースはおそらくcli SSHとcliスクリプトの回避策に最も慣れているため、私はserverfaultを使用しました。
15 ssh  bash  nagios 

3
保持方法:1週間の毎日のバックアップ、1か月の毎週、1年間の毎月、およびその後の毎年のバックアップ
このサーバー上のデータと構成ファイルを毎日バックアップする必要があります。私は維持する必要があります: 1週間の毎日のバックアップ 1週間の毎週のバックアップ 1年間の月次バックアップ その後の年間バックアップ これらはすべて、cronから毎日実行されるシェルスクリプトによって実現されます。 これは、10年間の実行後のバックアップファイルの外観です。 blog-20050103.tar.bz2 blog-20060102.tar.bz2 blog-20070101.tar.bz2 blog-20080107.tar.bz2 blog-20090105.tar.bz2 blog-20100104.tar.bz2 blog-20110103.tar.bz2 blog-20120102.tar.bz2 blog-20130107.tar.bz2 blog-20130902.tar.bz2 blog-20131007.tar.bz2 blog-20131104.tar.bz2 blog-20131202.tar.bz2 blog-20140106.tar.bz2 blog-20140203.tar.bz2 blog-20140303.tar.bz2 blog-20140407.tar.bz2 blog-20140505.tar.bz2 blog-20140602.tar.bz2 blog-20140707.tar.bz2 blog-20140728.tar.bz2 blog-20140804.tar.bz2 blog-20140811.tar.bz2 blog-20140816.tar.bz2 blog-20140817.tar.bz2 blog-20140818.tar.bz2 blog-20140819.tar.bz2 blog-20140820.tar.bz2 blog-20140821.tar.bz2 blog-20140822.tar.bz2
14 linux  backup  bash 

1
Bashは、認証に使用されたSSH公開キーを教えてくれますか?
rootユーザーを追跡するとします。それぞれに一意の秘密鍵があり、公開鍵はに保存されてい/root/.ssh/authorized_keysます。 各ユーザーが一意のキーでログインすると、どのキーが認証に使用されたかをBASHセッション内からどのように確認できますか?ログイン時に環境変数を確認しようとしましたが、セッションと公開鍵との相関関係が表示されません。
14 bash  ssh-keys 


7
.profile / .bashrcに相当するSSH
sshを使用するサーバーのセッション内でエイリアスを自動的に定義する方法を探しています。私はそれらを置くことができない.bashrcユーザが、私は他の人によって、そこにそれらの数十があり、すべてのマシン上でスクリプトを維持することは痛みを伴うだろう以外にも共有されていると、ログインアカウントため、サーバー上のファイル。expectエイリアスを自動的に入力するために使用できることは知っていますが、OpenSSHにこれを実現するために使用できると思われるものが組み込まれているかどうか疑問に思っていましたか?
14 ssh  bash 

3
ruby gemがbashスクリプトからインストールされているかどうかを確認する
bashスクリプトから、特定のRuby gemがインストールされているかどうかを確認する必要があります。 私は次のようなことができると思った if ! gem list <name>; then do_stuff; fi ただし、名前が実際に見つかったかどうかに関係なく、0 echo $?をgem list <name>返すショーを使用してコマンドラインでテストします。 これは、grepを使用してgemリストの出力をフィルタリングする必要があるということですか、それともgemがインストールされているかどうかを確認するより良い方法がありますか?
14 bash  gem 

3
Ubuntuのbashプロンプト-ホスト名(\ h)と同じFQDN(\ H)
私の職場には、開発、テスト、統合、およびステージングのための個別の環境があります。 これらのenv内で、DNSのホスト名をオーバーロードしました。たとえば、dev環境ではプライマリWebマシンが呼び出さweb1.dev.example.comれ、テスト環境ではプライマリWebマシンがになりweb1.test.example.comます。 異なる環境のマシンを区別するために、ホスト名だけでなくFQDNを表示するようにbashプロンプトをカスタマイズします。よくて; 私は置き換えることができるはず\hで\Hに$PS1、右?うーん。それらはまったく同じことを示しています。 me@web1:~$ hostname web1 me@web1:~$ hostname -f web1.dev.example.com me@web1:~$ export PS1="\[\u@\h: \w\]\$ " me@web1: ~$ export PS1="\[\u@\H: \w\]\$ " me@web1: ~$ では/etc/hostname、ホスト名()だけを取得していweb1ます。hostnameそして、hostname -f(それぞれ「web1と」と「web1.test.example.com」)正しい結果を返す、と私は正しいエントリを持っている両方/etc/hosts。 何が得られますか? これらがUbuntu 10.04ホストである場合、違いが生じます。
14 ubuntu  bash  fqdn 

7
誰かがOS Xと同じくらい良いWindows用の(例えばbash)シェルターミナルを見つけましたか?
ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け付けていません。 私は主に、Git vcsのWindowsインストールに付属する「git-bash」を使用しています。Cygwinに付属しているものと同じだと思います。技術的には問題なく動作しますが、UIはお粗末です: タイトルバーを右クリックして[プロパティ]に移動し、ウィンドウの幅を変更する必要があります 最も厄介なのは、マウスでのコピーと貼り付け、ハイライトも同様に面倒です 対照的に、OS Xに付属のターミナルアプリはこれらをaplombで管理し、作業をより快適にします。ファイルをドラッグアンドドロップすることもでき、ファイルパスをカーソルに貼り付けます! 私も試しました: http://sourceforge.net/projects/win-bash http://www.steve.org.uk/Software/bash/ http://www.hamiltonlabs.com/cshell.htm これらはどれも、面倒な右クリックなしでテキストのコピーと貼り付けを行いません。 WindowsでUnix風味のシェルを探しているので、自宅の開発者(Windows)、ライブサーバー(Linux)、またはオフィスの開発者(Mac)で異なるシェルを使用する必要はありません。 はい、Googleで検索しましたが、まだ見つかりませんでした...
14 windows  bash  shell  terminal 

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