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

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

2
変数の長さを検証する
変数の読み取りの長さを確認する必要があります(スクリプトの挿入文字数は5文字に制限されています)。次のように考えます。 #!/bin/bash read string check=${#string} echo $check if [ $check -ge 5 ]; then echo "error" ; exit else echo "done" fi より「エレガントな」ソリューションはありますか?
27 bash  shell  string 

6
Bashスクリプトを使用して複数のファイルの名前を変更する
Bashスクリプトを使用して、同じディレクトリ内の複数のファイルの名前を変更したい。ファイルの名前は次のとおりです。 file2602201409853.p file0901201437404.p file0901201438761.p file1003201410069.p file2602201410180.p 次の形式に名前を変更したい: file2503201409853.p file2503201437404.p file2503201438761.p file2503201410069.p file2503201410180.p 私はrenameコマンドについて読んでいて、このようにしようとしましたが、何もしません。構文について質問があると思います。次に、次のようにmvコマンドを使用してループを作成できることを読みました。 for file in cmpsms*2014*.p; do mv "$file" "${file/cmpsms*2014*.p/cmpsms25032014*.p}" done しかし、ファイルの名前を変更することはできません。何が間違っていますか?
27 bash  rename 

4
ファイルを作成するシェルコマンドがないのはなぜですか?
ご注目ください: 私はコマンドラインからファイルを作成する方法を尋ねていません! 私はtouchその主な目的が他のものであることに注意を払うことなく何年もファイルを作成するために使用してきました。コマンドラインからファイルを作成したい場合、多くの可能性があります: touch foo.bar > foo.bar cat > foo.bar echo -n > foo.bar printf '' > foo.bar そして、もっとあると確信しています。 しかし、実際には、上記のコマンドはいずれも実際にファイルを作成するために設計されていません。たとえば、man touchこのコマンドがファイルのタイムスタンプを変更するためのものであることを提案します。Unix(またはLinux)ほど完全なOSに、ファイル作成専用のコマンドがないのはなぜですか?


5
bashにシェル組み込みではなく外部の `time`コマンドを使用させる
shellキーワードの代わりにbashにデフォルトで時間バイナリ(/ usr / bin / time)を使用させるにはどうすればよいですか? which time戻り/usr/bin/time type time値戻り値time is a shell keyword Running timeは、明らかにshellキーワードを実行しています。 $ time real 0m0.000s user 0m0.000s sys 0m0.000s $ /usr/bin/time Usage: /usr/bin/time [-apvV] [-f format] [-o file] [--append] [--verbose] [--portability] [--format=format] [--output=file] [--version] [--quiet] [--help] command [arg...] enable -n time 返す bash: enable: time: …

5
現在のシェルのbashのオプションを一覧表示するにはどうすればよいですか?
bashインタープリター自体にはオプションがあります。 bashのmanページの22〜23行目: OPTIONS All of the single-character shell options documented in the description of the set builtin command can be used as options when the shell is invoked. In addition, bash interprets the following options when it is invoked: -c ... -i ... -l ... -r ... bashのmanページで次のようないくつかの検索パターンを使用しました。 /^\s*set /list …
27 bash  shopt 

3
Bashオートコンプリート:最初にファイルをリストし、次にそれらを循環します
最初のタブでオートコンプリートですべての可能なファイルをリストし、その後の選択で選択肢を循環させるようにbashを構成することは可能ですか? 両方のオプションは別々に簡単に実行でき、異なるキーにバインドできますが、上記は完璧ですが、ネット上でそれについて何も見つけることができません。

5
whileループを使用して2つの入力ファイルから読み取る方法
入れ子になったwhileループ内の2つの入力ファイルから1行ずつ読み取る方法があるかどうかを知りたかった。たとえば、2つのファイルFileAとがあるとしFileBます。 FileA: [jaypal:~/Temp] cat filea this is File A line1 this is File A line2 this is File A line3 FileB: [jaypal:~/Temp] cat fileb this is File B line1 this is File B line2 this is File B line3 現在のサンプルスクリプト: [jaypal:~/Temp] cat read.sh #!/bin/bash while read lineA do echo $lineA …

3
パイプの時間を計るにはどうすればよいですか?
time1つのパイプ出力から別のパイプ出力を持つ2つの個別のコマンドで構成されるコマンドが必要です。たとえば、次の2つのスクリプトを考えます。 $ cat foo.sh #!/bin/sh sleep 4 $ cat bar.sh #!/bin/sh sleep 2 さて、どのようにtimeかかった時間を報告することができますかfoo.sh | bar.sh(そして、はい、ここではパイプが意味をなさないことを知っていますが、これは単なる例です)?パイプなしでサブシェルで順番に実行すると、期待どおりに動作します: $ time ( foo.sh; bar.sh ) real 0m6.020s user 0m0.010s sys 0m0.003s しかし、パイピングすると動作しません: $ time ( foo.sh | bar.sh ) real 0m4.009s user 0m0.007s sys 0m0.003s $ time ( { foo.sh | bar.sh; } …
27 bash  shell  pipe  time 

2
ラッパースクリプトのexecの理由
簡単に言えば、次のラッパースクリプトの例を見てきました。 #!/bin/bash myprog=sleep echo "This is the wrapper script, it will exec "$myprog"" exec "$myprog" "$@" 上で見たように、それらはexec、新しく作成されたシェルをほぼ即座にに置き換えるために使用し$myprogます。なしで同じことを達成できexecます: #!/bin/bash myprog=sleep echo "This is the wrapper script, it will exec "$myprog"" "$myprog" "$@" この最後の例では、新しいbashインスタンスが開始$myprogされ、bashインスタンスの子プロセスとして開始されます。 最初のアプローチの利点は何ですか?
27 bash  exec 

3
bashスクリプトを使用して文字列+数値と結合した文字列をソートするにはどうすればよいですか?
これは、ソートしたいデータです。しかしsort、数値を文字列に処理し、データは期待どおりにソートされません。 / home / files / profile1 / home / files / profile10 / home / files / profile11 / home / files / profile12 / home / files / profile14 / home / files / profile15 / home / files / profile16 / home / files / profile2 / …

5
数値順序付きグローブ
私はディレクトリにこのpdfファイルのリストを持っています: c0.pdf c12.pdf c15.pdf c18.pdf c20.pdf c4.pdf c7.pdf c10.pdf c13.pdf c16.pdf c19.pdf c2.pdf c5.pdf c8.pdf c11.pdf c14.pdf c17.pdf c1.pdf c3.pdf c6.pdf c9.pdf 私はゴーストスクリプトを使用してこれらを数値順に連結します(これに似ています): gs -q -sPAPERSIZE=a4 -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=out.pdf *.pdf ただし、シェルの展開順序は、数字の自然な順序ではなく、アルファベット順を再現します。 $ for f in *.pdf; do echo $f; done c0.pdf c10.pdf c11.pdf c12.pdf c13.pdf c14.pdf c15.pdf c16.pdf c17.pdf …

1
「bash <file>」が機能する場合、「source <file>」がエラーをスローするのはなぜですか?
次のスクリプトがあります。 #!/bin/bash set -x if :; then echo a fi 実行するとbash /tmp/file、aエコーされますがsource /tmp/file、実行すると、次のようになります: bash: /tmp/test: line 6: syntax error: unexpected end of file 出力: knezi@holly tmp]$set -x; source /tmp/test; set +x + source /tmp/test ++ set -x bash: /tmp/test: line 6: syntax error: unexpected end of file + set +x …

2
TERM環境変数のデフォルトはどこに設定されますか?
デスクトップGUIでGNOMEターミナルエミュレーターを使用してターミナルウィンドウを開くと、シェルのTERM環境変数はデフォルトの値になりますxterm。 CTL+ ALT+ を使用F1してコンソールTTYウィンドウに切り替えecho $TERM、値がに設定されている場合linux。 私の質問の動機は、~/.bashrcファイル内で変数を使用して、カラーシェルが提供されているのか、古き良き時代のモノクロだけが提供されているのかを判断することです。 # set a fancy prompt (non-color, unless we know we "want" color) case "$TERM" in xterm-color) color_prompt=yes;; esac 次のように入力すると、コンソールシェルとGnomeターミナルエミュレーターシェルの両方で export TERM=xterm-color source /.bashrc 両方のシェルがカラーモードに変更されます(両方で常に発生したいこと)。 デフォルトTERM値はどこに設定されますか?可能な場合、デフォルトを変更するのに最適な場所はどこですか?端末エミュレータGUIには、デフォルトのTERM値を選択または設定するものは何もないようです。 ファイルexport TERM=xterm-colorの先頭に行を追加することを検討しました~/.bashrcが、私の直感ではこれは最善の解決策ではなく、Googleの検索ではまだ良い答えに至っていないことがわかります。 Ubuntu 15.04 Desktop Edition(Debianベース)を実行しています。

1
フォアグラウンドジョブでのctrl cとctrl z
Ctrl+ Z一方、仕事を停止Ctrl+がC仕事を殺します。 何故ですか?他の方法はもっと意味がありませんか? z@z-lap:~$ sleep 100&amp; [1] 4458 z@z-lap:~$ sleep 200&amp; [2] 4459 z@z-lap:~$ jobs [1]- Running sleep 100 &amp; [2]+ Running sleep 200 &amp; z@z-lap:~$ fg %1 sleep 100 ^Z [1]+ Stopped sleep 100 z@z-lap:~$ jobs [1]+ Stopped sleep 100 [2]- Running sleep 200 &amp; z@z-lap:~$ fg %1 sleep …

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