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

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

13
シェルスクリプト-変数から最初と最後の引用符( ")を削除します
以下は、より大きなスクリプトからのシェルスクリプトのスニペットです。変数によって保持されている文字列から引用符を削除します。私はsedを使用してそれをやっていますが、それは効率的ですか?そうでない場合、効率的な方法は何ですか? #!/bin/sh opt="\"html\\test\\\"" temp=`echo $opt | sed 's/.\(.*\)/\1/' | sed 's/\(.*\)./\1/'` echo $temp
225 string  bash  shell  unix  sed 

5
Bashのif条件で「単項演算子が必要です」エラー
私はこれの何が悪いのかを理解しようとしましたが、それを理解することはできません。 これはエラーが発生しているようです。 elif [ $operation = "man" ]; then if [ $aug1 = "add" ]; then # <- Line 75 echo "Man Page for: add" echo "" echo "Syntax: add [number 1] [number 2]" echo "" echo "Description:" echo "Add two different numbers together." echo "" echo "Info:" echo "Added …
225 bash  shell 

20
bashスクリプトで経過した時間を計算する方法は?
を使用して開始時間と終了時間を出力するとdate +"%T"、次のような結果になります。 10:33:56 10:36:10 これら2つの違いを計算して出力するにはどうすればよいですか? 私は次のようなものを手に入れたいです: 2m 14s
224 bash  date 

8
1つの文字列をbashシェルで少なくとも1つのスペースで区切られた複数の文字列に分割する方法は?
各単語の間に少なくとも1つのスペースがある多くの単語を含む文字列があります。文字列を個々の単語に分割して、それらをループできるようにするにはどうすればよいですか? 文字列は引数として渡されます。例えば${2} == "cat cat file"。どうすればループできますか? また、文字列にスペースが含まれているかどうかを確認するにはどうすればよいですか?
224 bash  shell  string  split 

18
Bashで4桁のUnicode文字をどのようにエコーしますか?
シェルプロンプトにUnicodeの頭蓋骨とクロスボーン(具体的には 'SKULL AND CROSSBONES'(U + 2620))を追加したいのですが、それをエコーで吐き出す魔法の呪文などを理解できません。 4桁のUnicode文字。2桁のものは簡単です。たとえば、echo -e "\ x55"、。 以下の回答に加えて、出力が期待どおりになるためには、明らかに、端末がUnicodeをサポートしている必要があることに注意してください。gnome-terminalはこれをうまく行いますが、デフォルトで必ずしもオンになっているとは限りません。 macOSのターミナルアプリで、[設定]-> [エンコード]に移動し、[Unicode(UTF-8)]を選択します。

19
グロブがbashで一致するかどうかをテストする
単一のファイルの存在を確認する場合は、test -e filenameまたはを使用してテストできます[ -e filename ]。 私がグロブを持っていて、そのグロブと名前が一致するファイルが存在するかどうかを知りたいとします。globは0個のファイルに一致する(この場合は何もする必要がない)か、1つ以上のファイルに一致する(この場合は何かする必要がある)ことができます。グロブに一致があるかどうかをテストするにはどうすればよいですか?(一致がいくつあるかは気にしません。1つのifステートメントでループなしでこれを実行できれば最適です(それが最も読みやすいことがわかったからです)。 (test -e glob*グロブが複数のファイルと一致する場合は失敗します。)
223 bash  glob 

22
apt-getパッケージがインストールされているかどうかを確認し、Linuxにない場合はインストールします
私はUbuntuシステムで作業しており、現在これが私がやっていることです: if ! which command > /dev/null; then echo -e "Command not found! Install? (y/n) \c" read if "$REPLY" = "y"; then sudo apt-get install command fi fi これはほとんどの人がすることですか?または、よりエレガントなソリューションはありますか?
223 bash  shell  apt-get 

6
Bashで1つの文字を別の文字に置き換える
bashの文字列でスペース()をドット(.)に置き換えることができるようにする必要があります。 これはかなり単純だと思いますが、私は新しいので、この使用のために同様の例を変更する方法を理解できません。
223 string  bash  replace 

13
findによって返されたファイル名をループする方法は?
x=$(find . -name "*.txt") echo $x 上記のコードをBashシェルで実行すると、リストではなく、空白で区切られた複数のファイル名を含む文字列が得られます。 もちろん、さらに空白で区切ってリストを取得することもできますが、もっと良い方法があると確信しています。 それでは、findコマンドの結果をループする最良の方法は何ですか?
223 bash  find 

8
コマンドが失敗した場合に終了する方法は?
私はシェルスクリプトの初心者です。メッセージが出力され、コマンドが失敗した場合はスクリプトを終了したい。私はもう試した: my_command && (echo 'my_command failed; exit) しかし、それは機能しません。スクリプトのこの行に続く命令を実行し続けます。私はUbuntuとbashを使用しています。
222 linux  bash  exit  exitstatus 

30
コンダを実行するには?
AnacondaをインストールしてPythonを実行できるので、正しくインストールしたと思います。この紹介ドキュメントに従って、Python v3.3をインストールしようとしています。そのため、次の行をコピーしてコンソールに貼り付けています。 conda create -n py33 python=3.3 anaconda しかし、それは私にエラーを与えます: -bash:conda:コマンドが見つかりません Condaを実行するには何をする必要がありますか? 私はLinuxシステムで作業しています。
221 python  bash  anaconda  conda 

7
シェルで定義されている関数を一覧表示するにはどうすればよいですか?
aliasと入力して、すべてのエイリアスのリストを表示できます。 しかし、関数の場合、私にできるのは自分のgrepだけです.bash_profile。 これは、そのファイル内のものだけを取得し、補助ファイルで定義されたものや動的に取得したものは取得しません。 現在定義されている関数を見つけるより便利な方法はありますか?
221 bash  shell  function  unix 

8
Bashで2つの変数を減算する
2つのディレクトリ間のファイル数を減算する次のスクリプトがありますが、COUNT=式が機能しません。正しい構文は何ですか? #!/usr/bin/env bash FIRSTV=`ls -1 | wc -l` cd .. SECONDV=`ls -1 | wc -l` COUNT=expr $FIRSTV-$SECONDV ## -> gives 'command not found' error echo $COUNT
220 bash  shell  unix 

19
シェルスクリプトのシンボリックリンクを解決する方法
(Unixライクなシステムでの)絶対パスまたは相対パスが与えられた場合、中間シンボリックリンクを解決した後、ターゲットの完全パスを特定したいと思います。〜username表記も同時に解決することのボーナスポイント。 ターゲットがディレクトリの場合、ディレクトリにchdir()してからgetcwd()を呼び出すことは可能ですが、Cヘルパーを作成するのではなく、シェルスクリプトからこれを実行したいのです。残念ながら、シェルはユーザーからシンボリックリンクの存在を隠そうとする傾向があります(これはOS Xのbashです): $ ls -ld foo bar drwxr-xr-x 2 greg greg 68 Aug 11 22:36 bar lrwxr-xr-x 1 greg greg 3 Aug 11 22:36 foo -> bar $ cd foo $ pwd /Users/greg/tmp/foo $ 上記の例のtmpディレクトリから実行するとresolve( "foo")== "/ Users / greg / tmp / bar"になるようなresolve()関数が必要です。
220 bash  shell  scripting  symlink 


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