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

Bashコマンドシェル用に記述されたスクリプトに関する質問。エラー/構文エラーのあるシェルスクリプトについては、ここに投稿する前に、shellcheckプログラム(またはhttps://shellcheck.netのWeb shellcheckサーバー)で確認してください。Bashのインタラクティブな使用に関する質問は、スタックオーバーフローよりもスーパーユーザーで話題になる可能性が高くなります。

22
不要な遅延なしにコマンドをbashでタイムアウトする
この回答へのコマンドラインコマンド一定の時間が経過するコマンドを自動殺します は、bashコマンドラインから実行時間の長いコマンドをタイムアウトする1行の方法を提案しています。 ( /path/to/slow command with options ) & sleep 5 ; kill $! ただし、特定の「長時間実行」コマンドがタイムアウトよりも早く終了する可能性があります。(これを「通常は長時間実行するが時々高速」なコマンド、または楽しみのためにtlrbsfと呼びましょう。) したがって、この気の利いた1ライナーアプローチにはいくつかの問題があります。まず、これsleepは条件付きではないため、シーケンスの完了にかかる時間に望ましくない下限が設定されます。tlrbsfコマンドが2秒で終了するスリープには、30 秒、2分、さらには5分を考慮してください。これは非常に望ましくありません。第二に、killは無条件であるため、このシーケンスは、実行されていないプロセスを強制終了し、それについて駄々をこねることを試みます。 そう... 通常は長時間実行されるが時々高速な("tlrbsf")コマンドをタイムアウトする方法はありますか。 bash実装があります(他の質問にはすでにPerlとCの回答があります) tlrbsfプログラムの終了、またはタイムアウトの経過のどちらか早い方で終了します 存在しない/実行されていないプロセスを強制終了しません(またはオプションで、不正な強制終了について文句を言いません) ワンライナーである必要はありません CygwinまたはLinuxで実行できます ...ボーナスポイントについては、フォアグラウンドでtlrbsfコマンドを実行し、バックグラウンドで「スリープ」または追加のプロセスを実行します。これにより、tlrbsfコマンドのstdin / stdout / stderrをリダイレクトできます。直接実行しますか? その場合は、コードを共有してください。そうでない場合は、その理由を説明してください。 私は前述の例をハックするためにしばらく費やしてきましたが、bashスキルの限界に達しています。

11
Bashでフラグ付きの引数を取得する方法
私はbashでこのように配置されたパラメーターを簡単に取得できることを知っています: $0 または $1 このようなフラグオプションを使用して、各パラメーターの使用目的を指定できるようにしたいと思います。 mysql -u user -h host 位置ではなくフラグで-u param値と-h param値を取得する最良の方法は何ですか?
283 bash  shell 


23
bashコマンドでCPUスパイクを作成する方法
Linuxマシンにほぼ100%の負荷をかけたい。これはクアッドコアシステムであり、すべてのコアがフルスピードで動作することを望んでいます。理想的には、CPUの負荷は指定された時間だけ続き、その後停止します。私はbashにいくつかのトリックがあることを願っています。私はある種の無限ループを考えています。
281 linux  bash  load  cpu 

5
Bash条件文:式の「および」方法 (if [!-z $ VAR && -e $ VAR])
「and」テストを行う方法が明確でないと思います。でうまく機能する引数が存在することを確認したかったの[ -e $VAR ]ですが、空の文字列でもtrueと評価されていることがわかりました。私は欲しくない。 どうすれば一緒に「そして」できますか?または、私が望むものを達成する別の単項テストはありますか?
281 bash  shell 

3
ログイン時にスクリプトを実行するmac [終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? Stack Overflowのトピックとなるように質問を更新します。 7年前休業。 この質問を改善する 私のコンピューターのアカウントにログインしたときに、誰かが.shファイルの実行を手伝ってくれるかどうか疑問に思っています。Mac OS X 10.6.7を実行しています。 コンピューターにログオンしたときに実行する "Example.sh"ファイルがあります。すでにログインしている場合は問題なく実行できますが、これを自動的に実行したいのですが。 ログインシェルファイルに追加するように言われていますが、どこにあるかわかりません。助けてください。

5
文字列内の一部の文字を別の文字に置き換える
AxxBCyyyDEFzzLMNのような文字列があり、出現するすべてのx、y、およびzを_に置き換えたい。 どうすればこれを達成できますか? 私はそれecho "$string" | tr 'x' '_' | tr 'y' '_'がうまくいくことを知っていますが、パイプを使用せずに一度にそれをやりたいです。
278 string  bash 

6
ディレクトリをtarしますが、完全な絶対パスをアーカイブに保存しません
バックアップシェルスクリプトの一部に次のコマンドがあります。 tar -cjf site1.bz2 /var/www/site1/ アーカイブの内容をリストすると、次のようになります。 tar -tf site1.bz2 var/www/site1/style.css var/www/site1/index.html var/www/site1/page2.html var/www/site1/page3.html var/www/site1/images/img1.png var/www/site1/images/img2.png var/www/site1/subdir/index.html ただし/var/www/site1、抽出を簡略化し、不必要な定数ディレクトリ構造を回避するために、アーカイブ内のディレクトリとファイル名から一部を削除したいと思います。わからない/var/www。バックアップされたWebサイトを、Webデータがの下に保存されていない場所に抽出する場合。 上記の例では、次のようにしたいと思います。 tar -tf site1.bz2 style.css index.html page2.html page3.html images/img1.png images/img2.png subdir/index.html そのため、抽出すると、ファイルは現在のディレクトリに抽出され、後で抽出したファイルを移動する必要がないため、サブディレクトリ構造が保持されます。 tarとstackoverflowWeb上の他の場所でのバックアップについてはすでに多くの質問がありますが、それらのほとんどは、サブディレクトリ構造全体を削除する(フラット化)か、名前の最初の/を追加または削除するだけです(私はしません)抽出したときに正確に何が変わるかはわかりませんが)、それ以上はありません。 あちこちにある解決策のいくつかとマニュアルを読んだ後、私は試してみました: tar -cjf site1.bz2 -C . /var/www/site1/ tar -cjf site1.bz2 -C / /var/www/site1/ tar -cjf site1.bz2 -C /var/www/site1/ /var/www/site1/ tar …
277 linux  bash  backup  tar 

17
bashスクリプトでrootとして実行されているかどうかを確認する方法
ルートレベルのアクセス許可を必要とするスクリプトを作成していますが、スクリプトがルートとして実行されない場合に、単に「ルートとして実行してください」と表示されるようにしたいと考えています。そして終了します。 これが私が探しているもののいくつかの疑似コードです: if (whoami != root) then echo "Please run as root" else (do stuff) fi exit どうすればこれを(クリーンかつ安全に)最善の方法で達成できますか?ありがとう! ああ、明確にするために:(何かを行う)部分には、それ自体がrootを必要とするコマンドの実行が含まれます。したがって、通常のユーザーとして実行すると、エラーが発生します。これは、スクリプト内でsudoを使用せずに、rootコマンドを必要とするスクリプトを適切に実行することを目的としています。構文糖を探しているだけです。
275 bash  shell  root 

15
'source'を指定したDockerfileでRUN命令を使用しても機能しない
バニラのpython環境をインストールするためにまとめているDockerfileがあります(そこにアプリをインストールしますが、後日インストールします)。 FROM ubuntu:12.04 # required to build certain python libraries RUN apt-get install python-dev -y # install pip - canonical installation instructions from pip-installer.org # http://www.pip-installer.org/en/latest/installing.html ADD https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py /tmp/ez_setup.py ADD https://raw.github.com/pypa/pip/master/contrib/get-pip.py /tmp/get-pip.py RUN python /tmp/ez_setup.py RUN python /tmp/get-pip.py RUN pip install --upgrade pip # install and configure virtualenv RUN pip …
274 bash  shell  docker 

24
ターミナル内からmysqlを使用して警告メッセージを抑制しますが、パスワードはbashスクリプトで記述されます
ターミナル内からMySQLで次のコマンドを実行しようとしたとき: mysql -u $user -p$password -e "statement" 実行は期待どおりに機能しますが、常に警告が表示されます。 警告:コマンドラインインターフェイスでパスワードを使用すると、安全でない場合があります。 ただし、$passwordターミナル内からbashスクリプトでコマンドを繰り返し実行したいので、パスワードを格納する環境変数()を使用して上記のステートメントを実行する必要があります。 1つのスクリプトでパスワードを50回または100回入力するように強制します。だから私の質問です: 警告を抑制することは可能ですか?私が述べたようにコマンドは適切に機能しますが、ループしてコマンドを50回または100回実行すると、ウィンドウがかなり乱雑になります。 警告メッセージに従い、スクリプトにパスワードを書き込まないでください。その場合、プロンプトで強制されるたびにパスワードを入力する必要がありますか? ランニングman mysqlは役に立たない、ただ言うだけ --show-warnings 警告がある場合、各ステートメントの後に警告を表示します。このオプションは、インタラクティブモードとバッチモードに適用されます。 そして、私が何かを逃していない場合、機能をオフにする方法については何も言及していません。 私はOS X 10.9.1 Mavericksを使用していて、自作のMySQL 5.6を使用しています。
273 mysql  bash  shell 

15
Bashでタイムスタンプを日付に変換する方法は?
Unixタイムスタンプを日付に変換するシェルコマンドまたはスクリプトが必要です。入力は、最初のパラメーターまたはstdinから取得でき、次の使用パターンを可能にします。 ts2date 1267619929 そして echo 1267619929 | ts2date どちらのコマンドでも「Wed Mar 3 13:38:49 2010」が出力されます。



3
端末出力の行数を数える
SOでこれを見つけることができませんでした。ターミナルで次のコマンドを実行しました。 >> grep -Rl "curl" ./ これにより、キーワードcurlが発生するファイルのリストが表示されます。ファイル数を数えたいのですが。私が考えることができる最初の方法は、ターミナルに入ってきた出力の行数を数えることです。どうやってやるの?
265 bash  terminal 

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