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

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

11
PATHにパスを正しく追加する方法は?
PATH環境変数のどこに新しいパスを追加する必要があるのか​​疑問に思っています。これは.bashrc(たとえば)編集することで達成できることは知っていますが、これを行う方法は明確ではありません。 こちらです: export PATH=~/opt/bin:$PATH それともこれ? export PATH=$PATH:~/opt/bin

20
複数のターミナルウィンドウでbash履歴を保持する
常に複数の端末を開いています。2から10まで、どこでもさまざまなことをやっています。ここで、再起動して別の端末セットを開きます。あるものを覚えている人もいれば、忘れている人もいます。 次のような履歴が必要です。 すべての端末のすべてを記憶します すべての端末からすぐにアクセスできます(たとえば、ある端末にいる場合はls、すでに実行中の別の端末に切り替えてから上に押してls表示します) コマンドの前にスペースがある場合、コマンドを忘れないでください。 bashをそのように動作させるためにできることはありますか?

4
BASHでreverse-i-searchを循環させる方法は?
ターミナルで、CTRL-R以前にBASHで入力した一致するコマンドを検索するために入力できます。たとえば、「CTRL-Rthen grepis grep」と入力すると、最後のコマンドが一覧表示され、Enterキーを押して使用できます。ただし、これは1つの提案にすぎません。以前に入力された他の一致コマンドを循環する方法はありますか?
444 bash 

3
スクリプトでの変数の割り当てに「$ {a:-b}」を使用する
私は他の人が書いたいくつかのスクリプト(特にRed Hat)を見てきましたが、それらの変数の多くは次の表記法を使用して割り当てられる VARIABLE1="${VARIABLE1:-some_val}" か、他の変数を展開します VARIABLE2="${VARIABLE2:-`echo $VARIABLE1`}" 値を直接宣言するだけでなく、この表記法を使用する意味は何ですか(例:)VARIABLE1=some_val? この表記法や、防止される可能性のあるエラーには利点がありますか? :-このコンテキストで特定の意味を持っていますか?


14
Bashでは、いつエイリアスを作成し、いつスクリプトを作成し、いつ関数を作成するのですか?
この質問をするのに、ほぼ10年間のLinuxの使用が必要でした。それはすべて試行錯誤とランダムな深夜インターネットサーフィンでした。 しかし、人々はこのために10年を必要としないはずです。Linuxを使い始めたばかりの場合、知りたいのは、エイリアスを作成するタイミング、スクリプトを作成するタイミング、関数を作成するタイミングです。 エイリアスに関しては、引数をとらない非常に簡単な操作にエイリアスを使用します。 alias houston='cd /home/username/.scripts/' それは明らかです。しかし、これを行う人もいます: alias command="bash bashscriptname" (そして.bashrcファイルに追加します) それをする正当な理由はありますか?私は一生懸命努力していますが、それをやりたいと思う状況はまったく考えられません。それで、それが違いを生むエッジケースがあるならば、以下に答えてください。 それが、私が自分のPATHとchmod +xそれに何かを入れる場所だからです。 次のトピックに進みます。例えば、私は、隠しフォルダ(追加.scripts/ちょうど私に行を追加することで、私のPATHにホームディレクトリ内の).bashrc(PATH=$PATH:/home/username/.scripts/)ので、そこに実行可能なものは自動的に自動的に補完します。 必要な場合。 私は本当にそれを必要としませんが、私は?Pythonのようなシェルではない言語に対してのみ使用します。 それがシェルの場合、まったく同じ内部に関数を書くことができます.bashrc: funcname () { somecommand -someARGS "$@" } 私が述べたように、私は試行錯誤を通してこれの多くを見つけました。そして、私のコンピューターが死んだときだけ、機能の美しさを本当に見ました。そして、彼らが使用していないとき、私は周りの人々のコンピューターを使用せざるを得ませんでした。 スクリプトのディレクトリ全体をコンピューターからコンピューターに移動する代わりに、他のすべての.bashrcを自分のものに置き換えるだけになりました。 しかし、私は何かを見逃しましたか? それでは、エイリアスを作成するタイミング、スクリプトを作成するタイミング、関数を作成するタイミングについて、初心者のLinuxユーザーに何を伝えますか? 明らかでない場合、これに答える人々は3つのオプションすべてを利用すると仮定しています。エイリアスのみを使用するか、スクリプトのみを使用するか、関数のみを使用する場合、またはエイリアスとスクリプト、またはエイリアスと関数、またはスクリプトと関数のみを使用する場合、この質問は実際には対象ではありません。

14
スクリプトの実行時間を効果的に取得する方法は?
スクリプトの完了時間を表示したいと思います。 私が現在していることは- #!/bin/bash date ## echo the date at start # the script contents date ## echo the date at end これは、スクリプトの開始時と終了時を示しています。プロセッサー時間/入出力時間などのようなきめ細かい出力を表示することは可能でしょうか?
340 bash  profiling 

5
シェルスクリプトが空白またはその他の特殊文字で停止するのはなぜですか?
または、堅牢なファイル名処理およびシェルスクリプトで渡すその他の文字列の入門ガイド。 ほとんどの場合、うまく機能するシェルスクリプトを作成しました。ただし、一部の入力(たとえば、一部のファイル名)で停止します。 次のような問題が発生しました。 スペースを含むファイル名を持っていて、hello worldそれは2つの別個のファイルhelloとworld。 2つの連続したスペースを持つ入力行があり、入力で1つに縮小しました。 入力行から先頭と末尾の空白が消えます。 入力に文字の1つが含まれている場合、\[*?実際にはファイルの名前であるテキストに置き換えられることがあります。 入力にアポストロフィ'(または二重引用符")が含まれており、その時点以降は状況がおかしくなりました。 入力にバックスラッシュがあります(または、Cygwinを使用していて、ファイル名の一部にWindowsスタイルの\区切り文字があります)。 何が起こっており、どうすれば修正できますか?



21
端末とシェル環境を色付けしますか?
私はほとんどの時間をUnix環境で作業し、ターミナルエミュレータを使用しています。色を使用すると出力がより便利で直感的になるため、コマンドラインで色を使用しようとしています。 端末環境に色を追加するためのオプションはありますか?どのようなトリックを使用しますか?どのような落とし穴に遭遇しましたか? 残念ながら、色のサポートは端末タイプ、OS、TERM設定、ユーティリティ、バグのある実装などによって異なります。 多くの実験の後、私のセットアップからいくつかのヒントがあります: 私が設定する傾向にあるTERM=xterm-colorほとんどのホスト(すべてではない)でサポートされています、。 さまざまなホスト、さまざまなOSバージョンなどで作業しています。macOSX、Ubuntu Linux、RHEL / CentOS / Scientific Linux、FreeBSDのすべてを使用しています。可能であれば、物事をシンプルで一般的なものにしようとしています。 私はGNUを使用して多くの作業を行いますscreen。これにより、別の楽しみが追加されます。 多くのOSはdircolorsデフォルトで次のような設定を行っていますが、100種類のホストでこれを変更したくありません。だから私はデフォルトのままにします。代わりに、端末の色構成を調整します。 いくつかの色を使ってUNIXコマンド(ls、grep、less、vim)とバッシュプロンプト。これらのコマンドは、標準の「ANSIエスケープシーケンス」を使用しているようです。例えば: alias less='less --RAW-CONTROL-CHARS' export LS_OPTS='--color=auto' alias ls='ls ${LS_OPTS}' 投稿し、.bashrc自分の質問Jeopardy Styleに答えます。
262 shell  bash  colors  prompt 

4
実行可能ファイルへのパスのBashのキャッシュをクリアするにはどうすればよいですか?
実行可能ファイルへのフルパスを指定せずにプログラムを実行し、Bashがディレクトリ$PATHを検索してバイナリを見つける必要がある場合、Bashは何らかのキャッシュ内のパスを記憶しているようです。例えば、私がするソースからのSubversionのビルドをインストールし/usr/local、その後、入力されたsvnsync helpbashプロンプトで。Bash /usr/local/bin/svnsyncは「svnsync」のバイナリを見つけて実行しました。次に、Subversionのインストールを削除し/usr/localて再実行するとsvnsync help、Bashが応答します。 bash: /usr/local/bin/svnsync: No such file or directory しかし、Bashの新しいインスタンスを起動すると、が検出されて実行され/usr/bin/svnsyncます。 実行可能ファイルへのパスのキャッシュをクリアするにはどうすればよいですか?
256 bash  executable  cache 

9
gitの出力を色付けする方法は?
git(または任意のコマンド)の出力を色付けする方法はありますか? 考慮してください: baller@Laptop:~/rails/spunky-monkey$ git status # On branch new-message-types # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: app/models/message_type.rb # no changes added to commit (use "git ...
256 bash  colors  git 

4
シェルスクリプトで最後に実行されたコマンドのPIDを取得する方法は?
次のようなシェルスクリプトが必要です。 my-app & echo $my-app-pid しかし、実行されたばかりのコマンドのPIDを取得する方法がわかりません。 jobs -p my-appコマンドを使用してpidをgrep できることを知っています。しかし、シェルを複数回実行したい場合、この方法は機能しません。そのためジョブ仕様があいまいです。


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