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

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

1
見つけてrsync?
14日以上10k以上のファイルを検索し、見つかったファイルを宛先にrsyncしたいのですが。 これらの2つのコマンドを組み合わせる方法はありますか? find ./ -mtime +14 -size +10k rsync --remove-sent-files -avz /src /dest
24 bash  shell  find  pipe  rsync 

4
realpathコマンドが見つかりません
debian squeeze amd64があります。私の現在のシェルはbashです。私の端末で次のように書くとうまくいきます: $ uname -a Linux core 2.6.32-5-amd64 #1 SMP Fri May 10 08:43:19 UTC 2013 x86_64 GNU/Linux $ echo $SHELL /bin/bash $ echo $(realpath test.sh) /home/ffortier/test.sh 私のtest.shファイルは次のようになります。 #!/bin/bash echo $(realpath "$1") 以下を実行しようとすると、エラーが発生します $ ./test.sh test.sh ./test.sh: line 2: realpath: command not found bashファイル内でrealpathコマンドを使用するにはどうすればよいですか? 追加情報 $ type -a realpath …
24 linux  bash  debian 

3
コマンドをランダムに実行する
私は2つのいずれかのコマンドを実行するC1とC2ランダムにします。コマンドライン(bash)でそれを行うにはどうすればよいですか?ワンライナーが可能であれば感謝します。
24 bash  random 

3
bashシェルスクリプトで、文字列値を反復処理するforループを記述する
bashでは、forループ制御変数iが指定された整数を反復するループを書くことができることを知っています。たとえば、1〜10の整数を出力するbashシェルスクリプトを作成できます。 #!/bin/bash for i in {1..10} do echo $i done 文字列のリストを提供する場合、文字列であるループ制御変数を代わりに反復することは可能ですか?たとえばfname、ファイル名を表す文字列があるとします。ファイル名ごとに一連のコマンドを呼び出します。たとえばfname、次のようなコマンドを使用した内容を印刷したい場合があります。 #!/bin/bash for fname in {"a.txt", "b.txt", "c.txt"} do echo $fname done 言い換えると、最初の反復でfnameは値fname="a.txt"を持ち、2番目の反復でfnameは値を持つ、というfname="b.txt"ようになります。残念ながら、上記の構文はまったく正しくないようです。出力を取得したい: a.txt b.txt c.txt しかし、上記のコードを試すと、次の出力が得られます。 {a.txt、 b.txt、 c.txt} 変数の値/内容を繰り返し変更できるように、正しい構文を決定するのを手伝ってもらえますfnameか?お時間をいただきありがとうございます。
24 bash  shell-script  for 

3
Bashでサブシェルを呼び出すためのルールは?
サブシェルを作成するためのBashルールを誤解しているようです。かっこは常に独自のプロセスとして実行されるサブシェルを作成すると考えました。 しかし、これはそうではないようです。コードスニペットA(下記)では、2番目のsleepコマンドは別のシェルで実行されません(pstree別の端末で決定されます)。ただし、コードスニペットBでは、2番目のsleepコマンドは別のシェルで実行されます。スニペットの唯一の違いは、2番目のスニペットが括弧内に2つのコマンドを持っていることです。 誰かがサブシェルを作成するときのルールを説明してもらえますか? コードスニペットA: sleep 5 ( sleep 5 ) コードスニペットB: sleep 5 ( x=1 sleep 5 )

16
bashの「ブックマーク」
ネストされたディレクトリのいくつかのレイヤーをナビゲートすることは、しばしば苦痛です。Firefoxでは、ブックマークがあるため簡単です。ファイルをブックマークするために私がしたいことは、次のように入力することです。 $ go --add classes "repo/www/public/util/classes" 次に、このディレクトリに移動するには、次のように入力します。 $ go classes 以前は、シンボリックリンクを使用して同様のことを実現しましたが、ホームディレクトリを整理したくありません。他にも便利な機能がたくさんあります。たとえば、入力を開始go clしてからTabキーを押してオートコンプリートできるようにします。時々、チェックアウトされたリポジトリの複数のコピーがあるため、プログラムが複数のコンテキストを作成し、コンテキストベースディレクトリに関連してブックマークを設定できるようにすると便利です。 それで、私自身のスクリプトのセットを一緒にまとめることを始める前に、すでにこのような何かがありますか?
24 bash  shell 

4
zshとbashの間でエイリアスとPATH設定を共有する
私が通常使用するシェルはzshです。lsやなどの一部のプログラムで色を有効にするエイリアスがいくつかありますgrep。また、カスタムパスを設定して、標準ではない場所(など~/bin/)でプログラムを実行できるようにしました。 私は、rootのシェルを変更しないだろうにzsh、それがルートだけでなく、それを持つことができますので、私はこれらの設定を共有したいと思います。zsh調達していないことがわかります/etc/profile。でソースできますが/etc/zsh/zprofile、他の「適切な」方法が必要です。
24 shell  bash  zsh  path  alias 


2
リモートBashが.bashrcではなく.bash_profileをソースするのはなぜですか
Bashマニュアルによると: Bashは、リモートシェルデーモン(通常はrshdまたはセキュアシェルデーモンsshd)によって実行されるときのように、ネットワーク接続に接続された標準入力で実行されているかどうかを判断しようとします。この方法で実行されているとBashが判断した場合、Bashは〜/ .bashrcからコマンドを読み取り、実行します(そのファイルが存在し、読み取り可能な場合)。 このBashのソース~/.bashrc: ssh user@host : しかし、このBashのソース~/.bash_profile: ssh user@host 仕様によると、これら2つのコマンドに違いはありません。どちらの場合も、stdinはネットワーク接続に接続されていませんか?
24 bash  ssh 

3
複数の論理演算子、((A || B)&& C)、および「予期しないトークンの近くの構文エラー」
私はBash 3で作業しており、条件式を作成しようとしています。C / C ++では、まったく単純です((A || B) && C)。Bashではそうではありませんでした(Gitの作成者は、他の作業に移る前にこのコードを提供したに違いないと思います)。 これは動作しません。<0 or 1>は文字列リテラルではないことに注意してください。0または1を意味します(通常はから来ますgrep -i)。 A=<0 or 1> B=<0 or 1> C=<0 or 1> if [ [ "$A" -eq "0" ] || [ "$B" -ne "0" ] ] && [ "$C" -eqe "0" ]; then ... fi 結果: line 322: syntax error …

6
シェルで.bash_profile / .profile / bashrcに関数を追加する方法は?
エポック時間を日付に変換する関数があります。定義はこちら date1(){ date -d @$1 } 私が書きたいのは: $ date1 xxxyyy ここで、xxxyyyは関数に渡すパラメーターであるため、対応する日付を取得できます。私はどちらかでそれを追加する必要があります理解し.bash_profile、.profileあるいは.bashrc、それをソース: $ source file しかし、どのファイルを入れるかわからない。現在、私はそれを持っている.profile。しかし、それを実行するには、source .profile毎回実行する必要があります。 理想的には、コンピューターが環境変数のように起動したときに、それを使用可能にする必要があります。
24 bash  shell  function  profile 

3
ディレクトリにアクセス許可を再帰的に設定するにはどうすればよいですか(ACLを有効にした場合)?
たとえば、同僚に特定のディレクトリへの書き込みアクセスを許可したいとします。その中のサブディレクトリにアクセス権775、ファイル664があり、さらにdir-775にいくつかの実行可能ファイルがあったと仮定しましょう。 次に、書き込み権限を追加します。chmodを使用すると、次のようなことができます chmod o+w -R mydir/ しかし、それはクールではありません。ディレクトリを誰でも書き込み可能にしたくないからです。特定のユーザーにのみアクセスを許可したいので、ACLを使用します。しかし、これらのアクセス許可を設定する簡単な方法はありますか?ご覧のとおり、少なくとも3つのケース(ディレクトリ、ファイル、実行可能ファイル)に個別に取り組む必要があります。 find -type d -exec setfacl -m u:colleague:rwx {} \; find -type f -executable -exec setfacl -m u:colleague:rwx {} \; find -type f \! -executable -exec setfacl -m u:colleague:rw {} \; このような単純なタスクには、かなり多くのコード行があるようです。もっと良い方法はありますか?
24 linux  bash  permissions  acl 

9
画面にstderrのみを表示しますが、stdoutとstderrの両方をファイルに書き込みます
これを実現するためにBASHマジックを使用するにはどうすればよいですか? 画面にstderrの出力のみを表示し たいのですが、stdoutとstderrの両方をファイルに書き込みたいです。 明確化:stdoutとstderrの両方を同じファイルに収めたい。それらが起こる順序で。 残念ながら、以下の答えはどれもこれを行いません。

8
エイリアスが定義された場所を確認することはできますか?
などのエイリアスllは、aliasコマンドで定義されます。 type llどのコマンドを印刷するかなどでコマンドを確認できます ll is aliased to `ls -l --color=auto' またはcommand -v llどの印刷 alias ll='ls -l --color=auto' またはalias llこれも印刷します alias ll='ls -l --color=auto' 私は見つけることができないようどこすなわち、エイリアスが定義されたようなファイル.bashrc実行しているシェルで、またはおそらく手動で。この時点で、これが可能かどうかはわかりません。 ロードされたすべてのファイルを単純にbash調べて、それらすべてをチェックする必要がありますか?
24 bash  terminal  bashrc 

4
ファイル名に非ASCII文字または非印刷文字が含まれるファイルを識別する
約700,000個のファイルがある80GBのディレクトリサイズでは、ファイル名に英語以外の文字が含まれるファイル名がいくつかあります。苦労してファイルリストをトロールする以外に、次のものがあります。 これらのファイル名をリストするか、そうでなければ識別するための簡単な方法は? 印刷可能な英語以外の言語の文字を生成する方法-印刷可能な範囲にリストされていない文字man ascii(したがって、これらのファイルが識別されていることをテストできます)

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