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

シェルは、Unixのコマンドラインインターフェイスです。シェルにインタラクティブにコマンドを入力するか、スクリプトを記述してタスクを自動化できます。/ bin / shおよび最も互換性のあるシェル(ash、bash、ksh、zshなど)に適用される質問には、このタグを使用します。エラーのあるシェルスクリプトについては、ここに投稿する前にhttp://shellcheck.netで確認してください。

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

5
エコーが引用文字を無視するのはなぜですか?
この質問は、UnixおよびLinux Stack Exchangeで回答できるため、Server Faultから移行されました。 8年前に移行され ました。 echoコマンドは、私はそれを与えることを完全なテキストを含めていません。たとえば、次の場合: $ echo ' echo PARAM=` grep $ARG /var/tmp/setfile | awk '{print $2}' ` ' 以下を出力します: echo PARAM=` grep $ARG /var/tmp/setfile | awk {print } ` 'echoコマンドに含まれていた単一引用符()は含まれていません。二重引用符に切り替えた場合: $ echo " echo PARAM=` grep $ARG /var/tmp/setfile | awk '{print $2}' ` " echo何も出力しません!最初の例で単一引用符を省略し、2番目の例では何も出力しないのはなぜですか?入力したとおりに出力するにはどうすればよいですか?
24 shell  quoting  echo 

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

1
プログラムの出力をリダイレクトし、それでも標準出力に送る方法はありますか?
はい。プログラムの出力をファイルにリダイレクトしたい場合は、このようなことをします prog > file stdoutとstderrの両方をそのファイルにリダイレクトしたい場合は、 prog > file 2>&1 出力をファイルに送信する場合は、これで十分です。しかし、出力をファイルに送りながら、まだstdout / stderrに送りたい場合はどうでしょうか?そのため、出力はファイルに保存されますが、プログラムの実行中にコンソールで確認できます。それを行う方法はありますか?もしそうなら、どのように?

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

8
ファイルがすでに両側にあるときにディレクトリ構造を同期する方法はありますか?
同じファイルを持つ2つのドライブがありますが、ディレクトリ構造はまったく異なります。 ソース側の構造と一致するように、宛先側のすべてのファイルを「移動」する方法はありますか?おそらくスクリプトで? たとえば、ドライブAには次のものがあります。 /foo/bar/123.txt /foo/bar/234.txt /foo/bar/dir/567.txt ドライブBには次のものがあります。 /some/other/path/123.txt /bar/doo2/wow/234.txt /bar/doo/567.txt 問題のファイルは巨大(800GB)なので、それらを再コピーしたくありません。必要なディレクトリを作成し、ファイルを移動して、構造を同期したいだけです。 宛先で各ソースファイルを見つけ、一致するディレクトリに移動し、必要に応じて作成する再帰的なスクリプトを考えていました。しかし、それは私の能力を超えています! 別のエレガントなソリューションがここに与えられました:https : //superuser.com/questions/237387/any-way-to-sync-directory-structure-when-the-files-are-already-on-both-sides/238086

15
'ls -1':拡張子なしでファイル名をリストする方法
ls -1 私の要素を次のようにリストします: foo.png bar.png foobar.png ... 私はそれなしでリストにしたい.pngので: foo bar foobar ... (ディレクトリには.pngファイルのみが含まれます) grepこの場合の使用方法を教えてもらえますか? 目的:すべての名前が拡張子なしでリストされているテキストファイルがあります。テキストファイルとフォルダーを比較して、不足しているファイルを確認するスクリプトを作成します。
24 shell  grep  ls 

5
私は `&`を使用しています:プロセスがバックグラウンドで実行されないのはなぜですか?
&バックグラウンドでプロセスを実行するコマンドに追加できることを知っています。 Ubuntu 12.04ボックスにSSHで接続してpythonプログラムを実行しています$python program.py &が、ターミナルウィンドウを閉じようとすると、ターミナルを閉じると実行中のプロセスが強制終了されるというメッセージが表示されます。 どうしてこれなの?アンパサンドを使用して、バックグラウンドでプロセスを実行しています。SSHを使用しているかどうかに関係なく、どうすれば実行できますか?

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 

6
ファイルの場合はmkdir -p
この質問は、UnixおよびLinux Stack Exchangeで回答できるため、Stack Overflowから移行されました。 6年前に移行され ました。 mkdir -pディレクトリを作成します。また、必要に応じて親ディレクトリを作成します。 必要に応じてファイルと親ディレクトリを作成する、同様のコマンドがファイルに存在しますか?
24 shell  directory 


4
bashスクリプトでyesと答えます
git clonebashスクリプトを実行しようとしていますが、スクリプトを初めて実行したときにサーバーがまだわからない場合、スクリプトは失敗します。私はこのようなものを持っています: yes | git clone git@github.com:repo/repoo.git The authenticity of host 'github.com (207.97.227.239)' can't be established. RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48. Are you sure you want to continue connecting (yes/no)? しかし、それはを無視していyesます。git clone既知のホストにキーを強制的に追加する方法を知っていますか?
24 shell  ssh  scripting  git 

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

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

5
Ctrl + Cを押したときにシェルスクリプトでバックグラウンドプロセスが終了して終了するのをどのように待ちますか
バックグラウンドプロセスを実行するようにシェルスクリプトを設定しようとしています。シェルスクリプトを実行Ctrlcすると、子プロセスが強制終了されて終了します。 私が思いついた最高のものはこれです。またkill 0 -INT、待機が発生する前にスクリプトを強制終了するため、子が完了する前にシェルスクリプトが終了します。 このシェルスクリプトを送信後に子供が死ぬのを待つ方法についてのアイデアはありますINTか? #!/bin/bash trap 'killall' INT killall() { echo "**** Shutting down... ****" kill 0 -INT wait # Why doesn't this wait?? echo DONE } process1 & process2 & process3 & cat # wait forever

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