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

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

8
bashを使用して時間を合計する方法は?
一連のプロセスがコンピューターで実行する必要がある合計時間を知りたいのですが、そこで実行するか、より強力なコンピューターで実行するかを決定します。それで、各コマンドの実行時間を予測しています。出力は次のようになります。 process1 00:03:34 process2 00:00:35 process3 00:12:34 2番目の列を合計して合計実行時間を取得するにはどうすればよいですか?各行をピップしてみることができます awk '{sum += $2 } END { print sum } しかし、値は自然数ではないため、これは意味がありません。
12 bash  time  arithmetic 

4
バックグラウンドで実行されているシェルスクリプトを強制終了する
inotifyt-toolsのinotifywaitユーティリティを使用してディレクトリを監視するシェルスクリプトを作成しました。このスクリプトをバックグラウンドで継続的に実行したいのですが、必要に応じてスクリプトを停止できるようにしたいと思っています。 継続的に実行させるために、私はwhile true; このような: while true; do #a set of commands that use the inotifywait utility end でファイルに保存し/binて実行可能にしました。バックグラウンドで実行するためにnohup <script-name> &、ターミナルを使用して閉じました。 このスクリプトを停止する方法がわかりません。私はここでの回答と非常に密接に関連した質問をここで見てきました。 更新1: 以下の@InfectedRootの回答に基づいて、私は次の戦略を使用して問題を解決することができました。最初の使用 ps -aux | grep script_name sudo kill -9 <pid>プロセスを強制終了するために使用します。次に、返されたIDに再度pgrep inotifywait使用する必要sudo kill -9 <pid>がありました。 これは機能しますが、これは厄介なアプローチだと思います。より良い答えを探しています。 更新2: 答えは、2つのプロセスの強制終了で構成されています。コマンドラインでスクリプトを実行すると、2つのプロセスが開始されます。1つはスクリプト自体、もう 1 つはinotifyプロセスです。
12 bash  shell  kill  inotify 

4
bashでのジョブ制御の無効化(CTRL-Z)
偶然にCTRL+ を押しZて、アプリケーションがバックグラウンドに表示されなくなることがあります。私は知っています、それをで戻すことができるfgので、それほど大したことではありません。しかし、job controlとにかくこれをオフにすることについて疑問に思っています。私の人生の中で、必要になったときのことを思い出すことはできません。それは、過去からの遺物として私に見えるだけです。 job control完全に無効にしても大丈夫ですか?または、何か不足していますか?この機能は役に立ちますか?どうすれば無効にできますか.bashrc 更新: 私が試してみましたset +m@Falsenamesによって示唆されているように。ただし、これはターミナルで入力した場合にのみ機能します。set +m私に追加し.bashrcても効果はありません。

4
すべてのsshコマンドのローカルのタイムスタンプ付きロギング?
どのように私は私が使用するすべてのリモートコマンドのローカル、タイムスタンプを記録しておくことができますssh(コマンドラインOpenSSHクライアントを経由開始しますかbash)? 要件: 必須: サーバーのログ記録に依存しない100%クライアント側 ログはユーザーのホームディレクトリに保存され、ユーザーごとに構成またはインストールされます。 さまざまなユーザーやホストとの複数の同時セッションを区別するためのサポート。 非侵入型(毎回アクティブにする必要はなく、sshの使用を大幅に妨害しません) 高優先度: 出力はログに記録されないか、可能な限り除外されません。 パスワードエントリがログに記録されていないか、ファイルが暗号化されています 使用された実際のコマンドを示します(タブ/履歴の完了、バックスペース、CTRL+ Cなど...が処理された後) あった方がよい: 連鎖セッションのコマンドも記録します(リモートsshまたはsu <user>セッション中に入力されたコマンド) セッションの開始と終了をログに記録する必要があります 単純なbashベースの非ルートソリューションが最適です(おそらく、コマンドのaliasまたはbashラッパースクリプトsshですか?) 私のスキルレベル: 私はプログラミングに不慣れですが、まだbash「Linuxのやり方」を学んでいるので、簡単な説明のあるコードサンプルをいただければ幸いです。 可能な戦略 キーロガー -問題:パスワードをログに記録し、タブや履歴の完了をログに記録しない(glennの回答を参照) screen1秒に1回、およびdiffそれらの間にスクロールバックダンプを行い、新しいスクロールバック行を見つける -問題:これを便利な自動化された方法で実装するにはどうすればよいですか? ssh "$@" | tee >(some_cleaner_function >> $logfile) -問題:連鎖セッションで複数行のコマンドまたは履歴を処理できない、慎重なクリーンアップが必要(私の回答を参照) 上記のいくつかの組み合わせ 例 次のSSHセッション: user@local:~$ ssh user@remote Last login: Tue Jun 17 16:34:23 2014 from local user@remote:~$ cd test …


2
パイプ(|)を変数に格納する方法は?
アイデアは、それを...コマンドのパイプとして使用することです。たとえば、何度もタイプし直さなければならないある種の長いパスがあり、その後にパイプと2番目のプログラムが続くとします。 "directory1/directory2/direcotry3/file.dat | less -I " その部分を変数に格納したいので、次のように使用できます。 r="directory1/directory2/direcotry3 \| less -I -p " $ cat path1/path2/$r <searchterm> 代わりに、私は得る cat: invalid option -- I Try `cat --help' for more information. ...パイプが明らかに機能しなかったことを意味します。
12 bash  pipe  variable 

4
apt-getから来た人のbashスクリプトでzypperを使用する方法は?
bashスクリプトでのapt-getからzypperへの移行についていくつか質問があります。 これに相当するものは何ですか? sudo apt-get install curl --assume-yes (curlはどのパッケージでもかまいません) Zypperチートシート-openSUSEを見つけました。非常に素晴らしい!しかし、ここでの経験の声に感謝します。すべてのプロンプトに自動的に同意し、応答が必要なものをスキップしないスクリプトでzypperを使用する正しい方法は何ですか? 私の未経験では、私は使いたくなるでしょう: sudo zypper --non-interactive --no-gpg-checks --quiet install --auto-agree-with-licenses curl しかし、それは本当に同等です--assume-yesか? これらと同等のものはどうですか? sudo apt-get autoremove -y sudo apt-get autoclean -y これは存在しないことを示唆しています... gdebi-coreの代替品はありますか?あるいは、gypbiの「強力な充足可能性ソルバー」では、gdebiは必要ありませんか?古いバージョンにパッケージをインストールする必要があり、すでに.debファイルを持っている(ただし、すべての依存関係ではない)場合は、gdebiを使用します。

3
Debianにパッケージが存在するかどうかをbashから確認する方法
MySQLサーバーをインストールするインストールbashスクリプトを記述したいと思います。 Linux Mintでは、私はコードに従っていました: apt-get -y --force-yes install mysql-server-5.6 しかし、私は新しいDebian 8をインストールしましたが、ありませんmysql-server-代わりにありmariadbます。 パッケージが存在するかどうかを確認するにはどうすればよいですか? 私はdpkg -s、パッケージがインストールされているかどうかを判断する必要があることを知っています。
12 bash  apt  deb 

3
ZshとBashの間で履歴を共有または同期する
私はよくBashとZshを切り替えて、履歴検索機能を使用してコマンドを復元します。 ただし、BashとZshには異なる履歴ファイルがあるため、検索しているコマンドが他のシェルで実行されたことがよくあります。 2つの間で履歴を共有または同期する方法はありますか?

3
ブレース(順列)と配列拡張を同時に使用できますか?
Bashの{}ブレース展開構文により、簡単な順列を作成できます # echo {b,c,d}{a,e,i,o,u} ba be bi bo bu ca ce ci co cu da de di do du しかし、それは非常に厄介な使用を除き、アレイと一緒にこれを使用することが可能ですか/場合私にははっきりしていない$() echoとeval 中括弧(順列)展開で配列を使用する簡単な方法はありますか? たとえば、次のようなものを想像してみてください(もちろん機能しません)。 CONS=( b c d ) VOWEL=( a e i o u ) echo {${CONS[@]}}{${VOWEL[@]}}

2
Dropboxフォルダーに読み込まれたときにinotifywaitを使用してファイルを移動する
CentOSのドロップボックスに表示されたらすぐにファイルを別のフォルダーに移動する方法を探しています。 私はいくつかの手がかりを求めてインターネットを調査しましたがinotify、表示されたとおりにファイルを処理するスクリプトを呼び出すために使用する必要があるという事実以上のことはできません。 私のBASHの知識は非常に限られているので、これをPHPで記述できるかどうかは疑問です。 つまり、使用して表示されたらすぐにファイルを別のフォルダに移動するにはどうすればよいinotifyですか?
12 bash  centos  inotify 

2
シェル組み込みコマンドについて
中には、bashのマニュアル、次のことが書かれています Builtin commands are contained >>> within <<< the shell itself また、この答えは、 A built-in command is simply a command that the shell carries out itself, instead of interpreting it as a request to load and run some >>> other program <<< compgen -b上bash 4.4で実行すると、すべてのシェル組み込みコマンドのリストが表示されます。私はその一例を参照[し、killシェルの組み込みコマンドであることを記載されています。しかし、実際の場所は次のとおりです。 /usr/bin/[ /bin/kill builtinコマンドが/bin/bash実行可能ファイルにコンパイルされるという意味だと思いました。だから私を本当に混乱させているのは何builtinですか:私を訂正してください、しかしそれが実際にシェルの一部ではない場合、どのようにして別のコマンドをにすることができますか?

3
Bash =〜regexおよびhttps://regex101.com/
https://regex101.com/を使用して、文字列内の最初のIPアドレスを返す正規表現を作成しました。 RegExp: (?:\d{1,3}\.)+(?:\d{1,3}) 区切り文字を含むRegExp: /(?:\d{1,3}\.)+(?:\d{1,3})/ 次のテスト文字列で: eu-west 140.243.64.99 次の完全一致を返します。 140.243.64.99 アンカーなどで何を試しても、次のbashスクリプトは生成された正規表現では機能しません。 temp="eu-west 140.243.64.99 " regexp="(?:\d{1,3}\.)+(?:\d{1,3})" if [[ $temp =~ $regexp ]]; then echo "found a match" else echo "No IP address returned" fi

2
bash関数のオプションパラメータ
こんな感じのSVNブランチを素早く作る機能があります function svcp() { svn copy "repoaddress/branch/$1.0.x" "repoaddress/branch/dev/$2" -m "dev branch for $2"; } アドレスなどを調べてコピーして貼り付ける必要なしに、新しいブランチをすばやく作成するために使用します。ただし、メッセージ(-mオプション)の場合は、3番目のパラメーターを指定するとメッセージとして使用され、それ以外の場合は「$ 2の開発ブランチ」の「デフォルト」メッセージが使用されるようにしたいと思います。これがどのように行われるかを誰かが説明できますか?

3
lsに、末尾にスラッシュを付けてディレクトリを一覧表示するにはどうすればよいですか?
私の殻はbashです。の出力を取得lsして、末尾にスラッシュがあるディレクトリを表示するにはどうすればよいですか?私がそうlsするとき、tcshそれは望ましい出力を与えます。bash引数を使用せずにこれを行うにはどうすればよいですか? 例えば。 bin/ lib/ src/ file1.txt file2.txt
12 bash  directory  ls 

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