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

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

1
Bashでは、if [-z“ $ 1”]とif““ $ 1” =“”]は同じですか?
Bashシェルスクリプトでは、次の2つのステートメントの違い(ある場合)は何ですか? 1.) if [ -z "$1" ] 2.) if [ "$1" = "" ] いくつかのスクリプトで2番目のスクリプトを作成していることに気付きましたが、使用すると同じことが実現することをここで読みました-z。 2番目のものを使用する際に問題がある場合、最初のものが少し良く見えることを無視する必要がありますか?

3
スクリプトユーティリティを使用してすべてのターミナルセッションを自動的に記録する方法
私が達成したいのは、Yakuake / Konsoleを使用するたびに、ターミナルセッションを自動的にファイルに記録できるようにすることです。 セッションの開始時に次のことを行うと簡単に達成できます。 script -f /home/$USER/bin/shell_logs/$(date +"%d-%b-%y_%H-%M-%S")_shell.log しかし、私は夜明けを開始するか、新しいタブを開くたびに上記を自動的に実行したいと思います。 .bashrcを使用すると、「スクリプト」が新しいセッションを開き、次に.bashrcを読み取り、別の「スクリプト」を開始するなど、無限ループを作成するため、機能しません。 そのため、新しいタブが開かれたときに「スクリプト」を1回実行するために、なんとかしてやくあけ/コンソールのスクリプトを作成する必要があります。問題はどうやって?

7
bashディレクトリのショートカット
私がタイプするときcd ~foo、私はbashがfooの完全なディレクトリパスをタイプするためのショートカットとして私を何らかのディレクトリに連れて行って欲しいですfoo。そしてcp ~foo/bar.txt ~/bar.txt、/foo/ディレクトリからホームディレクトリにファイルをコピーできるようにしたいので...基本的に、私~/はまったく同じように機能するものが欲しいのですが、ディレクトリがどうあるべきかを指定します。[私はjfgiをすべきだと確信していますが、何をfgすべきかわかりません]
28 bash 

1
$ _ vs!$。前のコマンドと出力リダイレクトの最後の引数
問題は特殊変数に関するものです。ドキュメントは言う: !!:$ 前のコマンドの最後の引数を指定します。これは!$に短縮できます。 ($_、アンダースコア。)シェルの起動時に、環境または引数リストに渡されて実行されるシェルまたはシェルスクリプトを呼び出すために使用される絶対パス名に設定します。その後、展開後、前のコマンドの最後の引数に展開します。また、そのコマンドにエクスポートされた環境で実行および配置された各コマンドの呼び出しに使用されるフルパス名に設定されます。 次の理由により、キャッチできない違いがあるはずです。 $ echo "hello" > /tmp/a.txt $ echo "!$" echo "/tmp/a.txt" /tmp/a.txt $ echo "hello" > /tmp/a.txt $ echo $_ hello 違いはなんですか?

3
関数はBashのサブプロセスとして実行されますか?
で高度なバッシュ・スクリプトガイドで例27-4、下から7番目のライン、私はこれを読みました: 関数はサブプロセスとして実行されます。 Bashでテストを行ったところ、上記の記述は間違っているようです。 このサイト、Bash Man、および私の検索エンジンでの検索では、何の効果もありません。 答えはありますか、説明したいですか?
28 bash  process  function 

14
FFmpegですべての* flacを* .mp3に変換するBashスクリプト?
特定のフォルダー内のすべての* .flacを* .mp3に変換したい。 これは私が試したものですが、動作しません: # change to the home directory cd ~/music # convert all *.flac files ffmpeg -i *.flac -acodec libmp3lame *.mp3 # (optional: check whether there are any errors printed on the terminal) sleep 60 目標を達成する方法は?

9
forとbashの検索
ファイルをループする場合、2つの方法があります。 for-loopを使用します。 for f in *; do echo "$f" done 使用find: find * -prune | while read f; do echo "$f" done これらの2つのループが同じファイルのリストを見つけると仮定すると、パフォーマンスと処理におけるこれら2つのオプションの違いは何ですか?

4
特定の範囲の行の長さを「grep」する方法は?
注:この質問は、このQ&Aを補完するものです。特定の範囲ではなく、行の長さを「grep」するにはどうすればよいですか? テキストファイル(改行で区切られたワードリスト)から行を取得する必要があるのは、長さが3文字以上で10文字以下の範囲です。 例: 入力: egyezményét megkíván ki alma kevesen meghatározó 出力: megkíván alma kevesen 質問:どうすればこれを行うことができbashますか?
28 bash  sed  grep  perl 


4
USBデバイスをプラグインするときにシェルスクリプトを実行する方法
この質問は、UnixおよびLinux Stack Exchangeで回答できるため、Stack Overflowから移行されました。 6年前に移行され ました。 Linuxマシンにデバイスを接続したときにスクリプトを実行したい。たとえばxinput、特定のドライブのマウスまたはバックアップスクリプトで実行します。 私はこれに関する多くの記事を見てきましたが、最近ではこことここにあります。しかし、私はそれを機能させることができません。 少なくともある種の応答を取得しようとするいくつかの簡単な例を次に示します。 /etc/udev/rules.d/test.rules #KERNEL=="sd*", ATTRS{vendor}=="*", ATTRS{model}=="*", ATTRS{serial}=="*", RUN+="/usr/local/bin/test.sh" #KERNEL=="sd*", ACTION=="add", "SUBSYSTEM=="usb", ATTRS{model}=="My Book 1140 ", ATTRS{serial}=="0841752394756103457194857249", RUN+="/usr/local/bin/test.sh" #ACTION=="add", "SUBSYSTEM=="usb", RUN+="/usr/local/bin/test.sh" #KERNEL=="sd*", ACTION=={add}, RUN+="/usr/local/bin/test.sh" KERNEL=="sd*", RUN+="/usr/local/bin/test.sh" KERNEL=="*", RUN+="/usr/local/bin/test.sh" /usr/local/bin/test.sh #!/usr/bin/env bash echo touched >> /var/log/test.log if [ "${ACTION}" = "add" ] && [ -f …
28 linux  bash  ubuntu  udev 

6
コマンドラインに戻るために使用するCtrl + Cは正しくありませんか?
使用しているときにtail -fシェルに戻りたいときは、常にを使用しますCTRL+C。または、コマンドを入力しているときにコマンドを中止して最初からやり直したい場合は、単にCTRL+C空のコマンドラインプロンプトに戻ります。これは悪い習慣と見なされますか?私は時々、何かから脱却するためのより良い方法があるかもしれないと感じますが、本当にわからない。
27 linux  bash 

5
シェルプロンプトから「はい」のバリエーションを受け入れるより良い方法
私が書いたシェルスクリプトのユーザビリティテストは、答えとして「はい」を期待する質問に答える方法について、人々が異なる期待を持っていることを発見しました。以下のコード例のバリエーションを参照してください。 きっと、私が思いついたものより良い方法があるに違いありませんか?あなたは何で読めると短い形式の本を取るには? read -p 'Answer this question with yes: ' answer if [ "$answer" = 'Y' -o "$answer" = 'YES' -o "$answer" = 'Yes' -o "$answer" = 'y' -o "$answer" = 'yes' -o some-alternate-condition ]; then echo 'Surely this can be written better?' fi

3
「while:;」とはどういう意味ですか?
whileループとは何かを知っています。しかし、私はそれが動作するのを見ました: while [condition] while ![condition] while TRUE (infinite loop) 声明は、後にどこwhileのいずれかである必要がありますTRUEかFALSE。 という名前のシェル組み込みコマンドがあり:ます。それは、何もしないダミーのコマンドとして記述されているが、それはここでは同じである場合、私はそれができたとしても、知りませんTRUEかFALSE。何か違うかもしれませんが、何ですか?

2
`set -eu`を使用する場合のEXITおよびERRトラップの正しい動作
set -e(errexit)、set -u(nounset)とともにERRおよびEXITトラップを使用すると、奇妙な動作が見られます。それらは関連しているように見えるので、それらを1つの質問に入れるのは合理的です。 1)set -uERRトラップをトリガーしません コード: #!/bin/bash trap 'echo "ERR (rc: $?)"' ERR set -u echo ${UNSET_VAR} 予期:ERRトラップが呼び出されます。RC!= 0 実際:ERRトラップは呼び出されません、RC == 1 注:set -e結果は変わりません 2)set -euEXITトラップでの終了コードの使用は1ではなく0です コード: #!/bin/bash trap 'echo "EXIT (rc: $?)"' EXIT set -eu echo ${UNSET_VAR} 予期:EXITトラップが呼び出されます、RC == 1 実際:EXITトラップが呼び出され、RC == 0 注:を使用するset +e場合、RC == 1です。他のコマンドがエラーをスローすると、EXITトラップは適切なRCを返します。 編集:このトピックには、使用されているBashバージョンに関連している可能性があることを示唆する興味深いコメントを含むSO投稿があります。このスニペットをBash 4.3.11でテストすると、RC …

2
sudo:./script.shを実行できません:そのようなファイルまたはディレクトリはありません
私は困惑しています。/homeディレクトリに実行可能なスクリプトがあります: [user@server ~]$ ll total 4 -rwx------ 1 user user 2608 Jul 15 18:23 qa.sh しかし、それを実行しようとすると、sudo見つかりませんと言われます: [user@server ~]$ sudo ./qa.sh [sudo] password for user: sudo: unable to execute ./qa.sh: No such file or directory これは新規ビルドです。問題を引き起こすような変更は行われていません。実際、スクリプトのポイントは、ポリシーに従って実際に構築されるようにすることです。多分それはそうではなくsudo、ビルド中に実際に壊れていますか? またsudo、他のディレクトリで他のコマンドを使用して実行できることにも注意してください。 編集:スクリプト(私はそれを書いていないので/bin/bash、私にそれを書かないでください;)) #! /bin/bash . /root/.bash_profile customer=$1 if [ -z "$customer" ]; then echo "Customer …

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