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

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

2
GLOBIGNOREはどのように機能しますか?
bashのマニュアルページによると: GLOBIGNORE A colon-separated list of patterns defining the set of filenames to be ignored by pathname expansion. If a filename matched by a pathname expansion pattern also matches one of the patterns in GLOBIGNORE, it is removed from the list of matches. しかし実際には... $ bash --noprofile --norc bash-4.2$ touch …

4
構文エラーでbashにスクリプトの実行を中止させる方法は?
安全のために、構文エラーが発生した場合、bashはスクリプトの実行を中止します。 驚いたことに、私はこれを達成できません。(set -e十分ではありません。)例: #!/bin/bash # Do exit on any error: set -e readonly a=(1 2) # A syntax error is here: if (( "${a[#]}" == 2 )); then echo ok else echo not ok fi echo status $? echo 'Bad: has not aborted execution on syntax error!' 結果(bash-3.2.39またはbash-3.2.51): $ ./sh-on-syntax-err …

3
上矢印を設定して、以前のすべてのコマンドではなく、同じ先頭文字を持つコマンドを参照します
上のbashコマンドライン、↑私の前のコマンドを提供します。numpyまたはのコマンドラインでmatlab、いくつかの文字を↑入力すると、それらの文字で始まる以前に入力されたコマンドが表示されます。でこの動作を正確に有効にするにはどうすればよいbashですか? コマンドライン履歴を検索するより高度な方法を知っていますが、簡単な方法の方が便利な場合があります。
15 bash  readline 

5
リダイレクトでgrepが機能しないのはなぜですか?
topリダイレクトでコマンドを使用するとうまくいきます: top > top.log 次に、grepを使用して特定の行をフィルター処理します。 top | grep "my_program" > top.log ただし、ログファイルは空のままです。ただし、grepを使用すると、出力が提供されます top | grep "my_program" my_program出力を表示するには、実行中のプログラムでどこを置き換える必要があります。 なぜ私のアプローチが機能しないのですか?そして、どうすれば修正できますか?
15 bash  grep 

3
TCP接続にin / out名前付きパイプを使用する
私はこれをしばらくの間機能させることに悩んでいたので、パイプがどのように機能するかについての根本的な誤解が私のトラブルの根本原因であると考えています。 私の目標は、リモートホストへのTCP接続を開始netcatし、ファイルシステム上に2つの名前付きパイプを作成することです。1つはプロセスから読み取りデータを取得し、もう1つはプロセスが送信データとして書き込むことができます。現在、次の構成を使用しています。 mkfifo in mkfifo out cat out | netcat foo.bar.org 4000 > in & ここから、他のプロセスがこのオープンTCP接続との間で読み書きできるようにしたいと思います。これは「うまくいく」のでしょうか、それともこのような構成が機能しない理由がありますか? 現在何が起こっているように見えるかはout問題なく読むことができるが、私が書いたときin、壊れたパイプを言及する出力が得られ、その後のすべての通信は死んでいるように見える。考え? (関連:私はもともと使用しました: netcat foo.bar.org 4000 < out > in & しかし、入力待ちをブロックすることがわかりました。私もこれに興味がありますが、おそらく別の質問で対処した方が良いでしょう。)
15 bash  pipe  tcp  netcat 

9
ncalまたはcalを使用して特定の形式で週の数を表示する
2つのコマンドがそれぞれ必要なことを1つ実行し、両方を実行しない場合に、単にそれを愛していませんか? これがcalそうです。素敵なフォーマット。ただし、週番号はありません: $ cal January 2012 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 これがncalそうです。奇妙なフォーマットですが、週番号があります: $ ncal -w January 2012 …

2
SSH経由でtar / gzを使用してローカルコンピューターにディレクトリを圧縮しますか?
基本的に、リモートマシン上のディレクトリをtar / gzし、リモートからローカルマシンに接続し直すことなく、ローカルコンピュータにファイルを保存したいと思います。SSHでこれを行う方法はありますか?tarファイルはリモートマシンに保存する必要はなく、ローカルマシンにのみ保存します。これは可能ですか?
15 bash  ssh  tar 

3
bashパイプで生のバイナリデータを処理するにはどうすればよいですか?
パラメータとしてファイルを受け取り、ファイルが存在することを確認してから、stdinから出てくるものをすべてファイルに書き込むbash関数があります。素朴な解決策はテキストに対してはうまく機能しますが、任意のバイナリデータに問題があります。 echo -n '' >| "$file" #Truncate the file while read lines do # Is there a better way to do this? I would like one... echo $lines >> "$file" done
15 bash  shell  binary 

2
シェルスクリプト内のプログラムにコマンドラインパラメーターを渡す
./script.sh arg1 [arg2 arg3 ...]コマンドライン引数はarg1、arg2、...によって得することができ$1、$2...しかし、引数の数がされないで固定します。 シェルスクリプトではarg2、プログラムから開始する引数を渡します。 #/bin/bash ... /path/to/a/program [I want to pass arg2 arg3 ... to the program] ... 1つ以上の引数がある可能性があるので、どうすればそれができますか?


3
`ls`と正規表現を使用したリスト
ファイル名の最後の文字と拡張子で終わるファイルをリストするにはどうすればよい.txtですか? 私が試してみましたls *+([[:digit:]]).txtが、これはのために真であるabc12.txtとabc2.txt。 しかし、私は取得する必要がありますabc2.txt。どうやってやるの? :digit:これを行う何らかの形式はありますか?
15 bash  wildcards 

2
ulimit PICKLE:「操作は許可されていません」および「コマンドが見つかりません」
現在のユーザーの開いているファイルの最大数を増やしようとしています > ulimit -n 1024 私は次のように増やして失敗しようとします > ulimit -n 4096 bash: ulimit: open files: cannot modify limit: Operation not permitted だから私は自然なことをし、一時的な許可で実行しようとしますが、失敗します > sudo ulimit -n 4096 sudo: ulimit: command not found ご質問 ulimitを増やす方法は? なんでこんなことが起こっているの? Fedora 14の使用
15 bash  fedora  sudo  limit 

3
Bashスクリプトのソース-終了の代わりにエラーで戻りますか?
私はターミナルでbashスクリプトを調達しているので、エラーで終了します set -o errexit ターミナルを閉じ、別のターミナルを開いて、いくつかの変数をリセットする必要があるため、非常に迷惑です。 これまでのところ、使用して command || return スクリプト内の行は、まさに私が望むことをしています set -o errexit すること...しかし、スクリプト全体に対してそれを実行したいのです。1行/コマンドだけではありません サイトを設定するためのコマンドがいっぱいのファイルがありますが、コマンドを実行したくない|| 帰る ファイル内のすべての行に対して 別の設定オプション、またはターミナルを終了する代わりに単に「戻る」何か他のものがありますか? - わかりやすくするために、スクリプトを強制終了し、ctrl + Cを押してターミナルで実行中のサービスを強制終了するのと同じ状態のままにします。command || returnそれをします。しかし|| return、ファイル内のすべての行に手を加えたくありません。だからset -o errexit、端末をシャットダウンさせないに似たものを探しています ---注: 2行のダムスクリプト(super.sh)の作成: create_path=~/Desktop/site_builder/create.sh source $create_path blah そして置くset -o errexitcreate.shの上部に、 期待どおりに動作します。ただし、ターミナルから呼び出すのではなく、別のbashスクリプトを呼び出すために、2行のファイルを作成する必要があるのは本当に愚かなことです。うーん 以下に例を示します。 super.shで #!/bin/bash create_path=~/Desktop/site_builder/create.sh source $create_path blah create.shで #!/bin/bash set -o errexit #line …

1
起動時にbashによって実行されているスクリプトを調べる
bashターミナルを起動した後、PATH変数に重複したエントリが含まれていることに気付きました。私の端末が起動ログインシェルは、そう~/.bash_profile、調達が続いている~/.profileと~/.bashrc。~/.profile重複するパスエントリを作成するのは、その中だけです。 教訓的であるために、これは、ソースされるべきであるファイルがソースされるべき順序です: Sourced /etc/profile Sourced /etc/bash.bashrc Sourced .bash_profile Sourced .profile Sourced .bashrc 誰かがこれを「PATH変数に重複が含まれている」とマークする前に、読み続けてください。 最初は~/.profile、これは2回ソースされていることと関係があると考えたため、ソースされるたびにログファイルにファイルを書き込むようにしましたが、驚くべきことに、1つのエントリのみがログに記録されました。さらに驚くべきことは、にあったエントリをコメントアウト~/.profileすると、PATH変数にまだエントリが表示されるという事実です。これにより、3つの結論に至りましたが、そのうちの1つはすぐに除外されました。 bashは有効なbashコメントを無視し、引き続きコメント付きコードを実行します ~/.profile出力を出力するコード(たとえばログファイル)を読み取り、無視するスクリプトがあります 別の~/.profile場所から調達されている私の別のコピーがあります 最初の1つは、いくつかの迅速なテストのため、そうではないとすぐに結論付けました。2番目と3番目のオプションは、助けが必要な場所です。 端末の起動時に実行されるスクリプトのログを収集するにはどうすればよいですか?echobashがソースであるかどうかを確認するためにチェックしたファイルで使用しましたが、端末で入力を開始する準備ができた時点まで実行を追跡する決定的なメソッドを見つける必要があります。 上記が不可能な場合は、実行中のスクリプトを確認するために他の場所を探すことができます。 今後の参考資料 これは、パスに追加するために現在使用しているスクリプトです。 function add_to_path() { for path in ${2//:/ }; do if ! [[ "${!1}" =~ "${path%/}" ]]; then # ignore last / new_path="$path:${!1#:}" export "$1"="${new_path%:}" # remove trailing : …
15 bash  profile 


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