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

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


5
if、elif、elseステートメントがBashで発行される
私は、次の問題どのような動作するように見えることはできませんif文がに関してであるelifとthen。printfまだ開発中であることを覚えておいてください。ステートメントでまだテストできていないので、おそらく間違いです。 私が得ているエラーは: ./timezone_string.sh: line 14: syntax error near unexpected token `then' ./timezone_string.sh: line 14: `then' そして声明はそうです。 if [ "$seconds" -eq 0 ];then $timezone_string="Z" elif[ "$seconds" -gt 0 ] then $timezone_string=`printf "%02d:%02d" $seconds/3600 ($seconds/60)%60` else echo "Unknown parameter" fi
358 bash  if-statement 

9
シェルコマンドの「&&」の目的は何ですか?
私の知る限り&、コマンドの後に使用することは、コマンドをバックグラウンドで実行するためです。 &使用例:tar -czf file.tar.gz dirname & しかし、どう&&ですか?(この例を見てください:https : //serverfault.com/questions/215179/centos-100-disk-full-how-to-remove-log-files-history-etc#answer-215188)

21
他のスクリプトを含めるにはどうすればよいですか?
通常スクリプトを含める方法は「ソース」を使用する方法です 例えば: main.sh: #!/bin/bash source incl.sh echo "The main script" incl.sh: echo "The included script" 「./main.sh」を実行すると、次のように出力されます。 The included script The main script ...さて、別の場所からそのシェルスクリプトを実行しようとすると、パスにない限り、インクルードを見つけることができません。 スクリプトがインクルードスクリプトを確実に検出できるようにするための良い方法は何ですか(特に、たとえば、スクリプトを移植可能にする必要がある場合)。
353 bash 

5
Bashのコマンドの前に環境変数を設定すると、パイプの2番目のコマンドでは機能しません
特定のシェルでは、通常、変数を設定してからコマンドを実行します。最近、変数定義をコマンドの前に付けるという概念について学びました。 FOO=bar somecommand someargs これはうまくいきます... LC_ *変数(コマンドに影響を与えるように見えるが、その引数(たとえば、 '[az]'の文字の範囲には影響しない)を変更するとき、または出力を別のコマンドにパイプするときは、次のように機能しません。 FOO=bar somecommand someargs | somecommand2 # somecommand2 is unaware of FOO somecommand2の前に "FOO = bar"を追加することもできますが、これは機能しますが、不要な重複が追加され、変数に応じて解釈される引数( '[az]'など)には役立ちません。 では、これを1行で行うにはどうすればよいでしょうか。 私は次の順序で何かを考えています: FOO=bar (somecommand someargs | somecommand2) # Doesn't actually work 良い答えがたくさんありました!目標は、これを1行に保つことです。できれば「エクスポート」を使用しないでください。Bashへの呼び出しを使用する方法は全体的に最高でしたが、「export」が含まれている括弧付きのバージョンは少しコンパクトでした。パイプではなくリダイレ​​クトを使用する方法も興味深いです。

4
Bashで連想配列を反復処理する方法
Bashスクリプトの連想配列に基づいて、キーと値を取得するためにそれを反復処理する必要があります。 #!/bin/bash declare -A array array[foo]=bar array[bar]=foo 私は実際、for-inループを使用しているときにキーを取得する方法を理解していません。

4
無制限のBash履歴[終了]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか? Stack Overflowのトピックとなるように質問を更新します。 6年前休業。 .bash_historyファイルを無制限にしたい。たとえば、いつでも戻って、何かを構築/構成した方法、その気の利いたコマンド、またはいくつかのコマンドが数週間前に何かを壊した方法を確認できます。この設定を変更するにはどうすればよいですか?
350 bash  unix 

12
Bashで複数のコマンドをsshして実行する最もクリーンな方法は何ですか?
私はすでにsshエージェントを設定しており、次のようなことを行うBashスクリプトで外部サーバーのコマンドを実行できます。 ssh blah_server "ls; pwd;" さて、私が本当にやりたいことは、外部サーバーで多くの長いコマンドを実行することです。これらすべてを引用符で囲むと非常に見苦しくなります。これを回避するためだけに、sshを複数回実行することは避けたいと思います。 だから、私はこれを括弧で囲まれた何かで行うことができる方法はありますか?私は次の線に沿って何かを探しています: ssh blah_server ( ls some_folder; ./someaction.sh; pwd; ) 基本的に、私はそれがクリーンである限り、どんな解決策でも満足します。 編集する 明確にするために、私はこれがより大きなbashスクリプトの一部であることについて話しています。他の人はすぐにスクリプトに対処する必要があるかもしれないので、私はそれをきれいに保ちたいと思います。次のような1行のbashスクリプトは必要ありません。 ssh blah_server "ls some_folder; ./someaction.sh 'some params'; pwd; ./some_other_action 'other params';" とても醜くて読みにくいからです。
349 bash  unix  ssh 

18
PIDではなく名前でプロセスを強制終了するにはどうすればよいですか?
Firefoxを起動しようとすると、「Firefoxプロセスがすでに実行中」と表示されることがあります。だから私はこれをしなければなりません: jeremy@jeremy-desktop:~$ ps aux | grep firefox jeremy 7451 25.0 27.4 170536 65680 ? Sl 22:39 1:18 /usr/lib/firefox-3.0.1/firefox jeremy 7578 0.0 0.3 3004 768 pts/0 S+ 22:44 0:00 grep firefox jeremy@jeremy-desktop:~$ kill 7451 私が望んでいるのは、それをすべて私のために行うコマンドです。それは入力文字列を受け取りgrep、プロセスのリストにその文字列(または何でも)を取り、出力のすべてのプロセスを強制終了します。 jeremy@jeremy-desktop:~$ killbyname firefox 私はそれをPHPで試してみましたが、PHPスクリプト自体でexec('ps aux')実行されたプロセスのみを表示しているexec()ようです(したがって、表示されるプロセスはそれ自体です)。
349 linux  bash  shell 



4
再帰的なファイルリストの深さを制限する方法は?
Linuxで再帰的なファイルリストの深さを制限する方法はありますか? 現在使用しているコマンドは次のとおりです。 ls -laR > dirlist.txt しかし、私は約200のディレクトリを持っており、それぞれに10のディレクトリがあります。したがって、時間がかかりすぎて、システムリソースを大量に消費することになります。 私が本当に興味を持っているのは、第1レベルのサブディレクトリの所有権と権限の情報だけです。 drwxr-xr-x 14 root root 1234 Dec 22 13:19 /var/www/vhosts/domain1.co.uk drwxr--r-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain1.co.uk/htdocs drwxr--r-- 14 jon root 1234 Dec 22 13:19 /var/www/vhosts/domain1.co.uk/cgi-bin drwxr-xr-x 14 root root 1234 Dec 22 13:19 /var/www/vhosts/domain2.co.uk drwxr-xrwx 14 proftp root 1234 Dec …
346 linux  bash 

7
bashでgetoptsを使用する方法の例
myscriptこの方法でファイルを呼び出したい: $ ./myscript -s 45 -p any_string または $ ./myscript -h #should display help $ ./myscript #should display help 私の要件は: getopt ここで入力引数を取得します -s存在することを確認し、エラーを返さない場合 の後の値-sが45または90であることを確認します -p存在し、後に入力文字列があることを確認してください ユーザーが入力した場合、./myscript -hまたはその直後./myscriptにヘルプを表示した場合 私はこれまでにこのコードを試しました: #!/bin/bash while getopts "h:s:" arg; do case $arg in h) echo "usage" ;; s) strength=$OPTARG echo $strength ;; esac done しかし、そのコードではエラーが発生します。バッシュでそれを行う方法とgetopt?
345 bash  shell  getopts 

10
stdinは端末ではないため、疑似端末は割り当てられません
リモートサーバー上にいくつかのディレクトリを作成し、scpを使用してローカルマシンからリモートにファイルをコピーするシェルスクリプトを記述しようとしています。ここに私がこれまで持っているものがあります: ssh -t user@server<<EOT DEP_ROOT='/home/matthewr/releases' datestamp=$(date +%Y%m%d%H%M%S) REL_DIR=$DEP_ROOT"/"$datestamp if [ ! -d "$DEP_ROOT" ]; then echo "creating the root directory" mkdir $DEP_ROOT fi mkdir $REL_DIR exit EOT scp ./dir1 user@server:$REL_DIR scp ./dir2 user@server:$REL_DIR 実行するたびに次のメッセージが表示されます。 Pseudo-terminal will not be allocated because stdin is not a terminal. そして、スクリプトは永久にハングします。 私の公開鍵はサーバーで信頼されており、スクリプトの外ですべてのコマンドを問題なく実行できます。何か案は?
345 linux  bash  shell  ssh 

30
LinuxおよびOS XでローカルマシンのプライマリIPアドレスを取得する方法 [閉まっている]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか? Stack Overflowのトピックとなるように質問を更新します。 昨年休業。 127.0.0.1以外のローカルホストのプライマリ(最初の)IPアドレスを返すコマンドラインソリューションを探しています このソリューションは、少なくともLinux(DebianおよびRedHat)およびOS X 10.7以降で機能します。 私はifconfig両方で利用できることを知っていますが、その出力はこれらのプラットフォーム間でそれほど一貫していません。
338 bash  unix  ip  ifconfig 

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