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

Bash(Bourne-Again SHell)は、Ubuntuのコマンドラインインターフェースでデフォルトで使用されるシェルです。

4
Bashのバージョンが指定されたバージョン番号以上かどうかを確認します
Bashのバージョン番号が特定の番号以上かどうかをテストする必要があります。たとえば、私は持っています: $ bash --version GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu) Copyright (C) 2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software; you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. 連想配列を使用するには、bashのバージョン番号が4以上でなければなりません。 私のbashスクリプトでは、可能な限り最もエレガントで効率的で読みやすい方法でワンライナーテストを行いたいのですが、他のアプローチも受け入れられます。

2
Tシャツがパイプから出力全体を取得しない
次のようなコマンドを実行するスクリプトがあります。 export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH;./some_app -i $INDEX | tee $LOG echo "Number of errors: $(grep "ERROR" $LOG | wc -l)" 問題はおそらくへのパイプにありteeます。出力全体が得られていないようです。アプリケーションが終了すると、出力の最後の数行(通常、致命的なエラーを含む行)が失われます。パイプなしでアプリを実行teeすると、出力に表示されます。 スクリプトでT型がすべての出力の処理を完了するまで待機させるにはどうすればよいですか?


2
端末のタイトルをパスなしのディレクトリ名に自動的に設定する方法
現在、私のbashターミナル/タブのタイトルは、私がいるディレクトリに基づいて設定されています。次に例を示します。 bob@bobscomputer:~/i/had/some/great/pie/yesterday 複数のタブを並べて開いている場合、これはあまり役に立ちません。たとえば、上記のディレクトリの4つのタブが並んで開いている場合、表示されるのは bob@bobscomputer:~/i/had... 4回。 すべてのターミナルタイトルをパスの最後の部分だけに自動的に設定したいのですが。上記の例では、タイトルを yesterday もちろん、ディレクトリを変更すると、タイトルも変わるはずです。プロンプトを変更せずにこれを実行したいので、プロンプトとターミナルのタイトルは異なるはずです。 これを行う方法はありますか?


2
bashスクリプトのエイリアスと関数
bashシェルのエイリアスと関数の違いを知りたい-どちらをいつ使うべきか。 関数は引数を取ることができるので、関数ははるかに強力です-私は主にネットブックを持ち、エネルギーと処理能力を節約したいので、特にパフォーマンスの違いについてもう少し知りたいですbashの機能を拡張するこの2つの方法の1つです。
11 bash 

3
「source x」、「」の違いは何ですか。x」と「./x」はバッシュで?
私はrun.sh次のように1つのbashソースを持っています、 #!/bin/bash if [ $# -ne 1 ]; then exit fi ... 2つの方法で実行すると、動作が異なります。最初の方法は、 source run.sh 実行後にターミナルを閉じます。第二の方法は、 ./run.sh これは単にスクリプトの実行を終了し、ターミナルにとどまります。source run.shと./run.sh実行の両方でbashスクリプトを終了するコマンドがあるかどうかを尋ねています。私も試してみましたreturnが、./run.sh実行してもうまくいきません。 より一般的には、私はこれがなぜ起こっているのか、そして「ソース」と「。」を使用することの違いに興味があります。スクリプトを実行するには?
11 bash  scripts 

5
ロケートの結果をrmにパイプする
走ってみた locate *.orig | xargs rm しかしそれは言った No such file or directory 私はそれを行う方法を見てきましたfindが、locateはオブジェクトへのフルパスを返すので、それは可能であるべきです


3
Ubuntuを構成して、毎日特定の時間に毎日再起動するにはどうすればよいですか?
ターミナルまたはbashファイルを使用して、Ubuntuを毎日(たとえば)午前3時に再起動するように構成するにはどうすればよいですか? つまり、ターミナルからの自動再起動をスケジュールしたいのです。 私はGoogleまたはAskUbuntuでこれに関連するものを見つけることができませんでした。また、一般にUbuntuはかなり新しいです(新しいRaspberry Piを入手しただけです)。
11 bash  reboot  schedule 

5
一部のプログラムが既にインストールされているかどうかを確認するスクリプト
プログラムが既にインストールされているかどうかをチェックし、インストールされていない場合はインストールするbashスクリプトを作成するにはどうすればよいですか? ご協力いただきありがとうございます。 ここに私がこれまでに持っているコードがあります: #/bin/bash PS3="choose an option" select opcion in "Installing_Youtube" "exit" do case $opcion in "Installing_Youtube") youtube-dl > /usr/bin if [ $? -eq 127 ] ; then echo "installing youtube" apt-get update apt-get install youtube-dl mkdir Videos else echo "Youtube already installed" fi ;; "exit") exit
11 apt  bash  scripts 


3
bashスクリプトでのsudoの使用に関するベストプラクティス
私は長い間実行されているbashスクリプトを持っていますが、少数のコマンドをrootとして実行する必要がありますが、ほとんどのコマンドはsudoの前に通常のユーザーとして実行する必要があります。 いくつかの方法を考えましたが、それぞれにいくつかの問題があります 方法1:ファイル内でsudoを使用する #!/bin/bash sudo echo "I must be run by root" touch needsToBeOwnedByUser1 echo "needs to be run by user" sleep 1000 sudo echo "I, again, must be run by root" コードの記述方法から、これは見栄えが良いでしょう。sudorootで実際に実行する必要のあるいくつかのステートメントの前に記述されていsudoますが、各呼び出し間の時間が長すぎる場合はsudo、パスワードを要求されます。また、sudo無効なパスワードなどにより、の最初の実行が失敗した場合でも、残りのスクリプトは実行されます。 方法2:sudoを使用してファイルを呼び出し、必要に応じて元のユーザーに戻す #!/bin/bash echo "I must be run by root" su username -c 'touch needsToBeOwnedByUser1' su username -c …
11 bash  sudo  su 

2
システム上のすべてのビデオファイルを検索するにはどうすればよいですか?
Unity Lens File検索を使用して、*.*Last Modified = All、Type = Videos、およびSize = Allでフィルタリングしようとしましたが、Picturesフォルダーにいくつかの.3gpファイルがあることはわかっていますが、何も見つかりませんでした。ファイルシステムにマウントされた別のドライブにも多数のビデオファイルがあることは知っています。可能性のある拡張機能のリストをまとめ、findfind ./ -name "* .ext" -o(etc、etc、ad nauseum)でこれらを利用してコマンドを何度も試行しましたが、まったく運がありませんでした。解決策は何ですか?


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