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

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

3
プロセスの実行に使用されたコマンド
次のコマンドでプロセスを実行したとします。 myapp -e -c -f myapp.config > /var/log/myapp/myapp.log 2>&1 しばらくするとpid、myappプロセスは1234 myapp.logだけになりpidます。すべてのフラグを指定してコマンドを取得し、出力を何らかの方法でリダイレクトする方法はありますか?

2
ワイルドカードを使用したこのsudo mv操作が機能しないのはなぜですか?
これには簡単な答えがあるに違いないと思いますが、なぜこれが機能しないのかわかりません! 私のホームディレクトリには、installed-pluginsというフォルダーがあります(数レベル下にあります)。そのフォルダーのすべてのコンテンツ(約15の.jarファイル)を、別のフォルダー(インストール済みプラグインとも呼ばれます)に転送したいと思います。 これは私が試していることです: $ sudo mv /home/jira-plugins/installed-plugins/* /var/atlassian/application-data/jira/plugins/installed-plugins/ mv: cannot stat `/home/jira-plugins/installed-plugins/*': No such file or directory 私のエラーは何ですか? フォルダーは空ではありません。ここでls出力は: $ sudo ls /home/jira-plugins/installed-plugins analytics-client-3.15.jar plugin.2223138796603023855.jira-importers-plugin-6.0.30.jar atlassian-chaperone-2.0.3.jar plugin.330169947367430109.jira-fisheye-plugin-6.2.8.jar atlassian-client-resource-1.0.jar plugin.4363048306537053933.jeditor-2.1.7.2.jar atlassian-pocketknife-api-commons-plugin-0.19.jar plugin.4438307615842123002.jira-ical-feed-1.0.4.jar atlassian-pretty-urls-plugin-1.8.jar plugin.461510159947098121.jira-issue-collector-plugin-1.2.5.jar base-hipchat-integration-plugin-7.8.24.jar plugin.5630909028354276764.atlassian-universal-plugin-manager-plugin-2.7.8.jar base-hipchat-integration-plugin-api-7.8.24.jar plugin.6920509095052318016.atlassian-bonfire-plugin-2.9.13.jar hipchat-core-plugin-0.8.3.jar plugin.6952408596192442765.atlassian-bonfire-plugin-2.8.2.jar hipchat-for-jira-plugin-1.2.11.jar plugin.7079751365359230322.jira-importers-bitbucket-plugin-1.0.8.jar jira-email-processor-plugin-1.0.29.jar plugin.7451827330686083284.atlassian-universal-plugin-manager-plugin-2.21.4.jar jira-fisheye-plugin-7.1.1.jar plugin.7498175247667964103.jira-importers-redmine-plugin-2.0.7.jar jira-ical-feed-1.1.jar plugin.7803627457720701011.jira-importers-plugin-3.5.3.jar jira-issue-nav-components-6.2.23.jar plugin.7977988994984147602.jira-bamboo-plugin-5.1.6.jar jira-servicedesk-2.3.6.jar …
8 shell  sudo  wildcards  mv 

3
stdoutとstderrをファイル、syslog、および端末に送信する
私が起動している一部のクラウドマシンでは、特定のファイル、syslog、およびターミナル/コンソールにログを記録しようとしています。 マシンのsetup / cloud-initスクリプトの一番上に、次のものがあります。 #!/bin/bash exec &> >(tee "/tmp/box-setup.log" | logger -t box-setup) apt-get install -y some-package これは、出力をファイルとsyslogに送信するのに最適ですが、出力をターミナルにパイプしません。 一般に、リモートコンソールからデバッグしている場合を除いて、ターミナル出力がないことは大きな問題ではありません。そうなると、bashスクリプトが実行されるときにコンソールが空白になるので、私は完全に盲目です。 bashリダイレクトなどを使用して、すべての出力(標準出力と標準エラーを含む)をファイル、syslog、および端末に同時にパイプする簡単な方法はありますか? Ubuntu 16.04を実行しています。

3
インプレース編集でSEDがファイルのグループ所有権を変更する
phpこの方法でターゲットファイルにアクセスするシェル()スクリプトがあります。 ファイルとディレクトリが書き込み可能であるかどうかを検査phpさんis_writable()(私はこれが問題であるとは思いません) sed次のコマンドでインプレースファイル編集を行います。 grep -q "$search" "$passwd_file" && { sed -i "s|$search|$replace|" "$passwd_file"; printf "Password changed!\n"; } || printf "Password not changed!\n" 結果として、私は(他のすべては正しいが)あるmyuser:www-dataはずのファイルを取得しますmyuser:myuser。 sedファイルグループの所有権は変更されているように見えますか。また、可能であればそれを回避するにはどうすればよいですか。

3
パスワードプロンプトからCTRL ^ Cを削除するにはどうすればよいですか?
suコマンドを開始し、それをキャンセルしたいとします。 Control+ Cがのsuように機能しないsudo...プロンプトを終了する必要があります(パスワードを十分に間違えるか、正しくすることにより)。 パスワードプロンプトを強制終了するために入力できるものはありますか?

2
変数の割り当ては現在実行中のシェルに影響します
いくつかのコードを書いているとき、私はこの行を見つけました: $ TZ="America/Los_Angeles" date; echo "$TZ" Thu Dec 24 14:39:15 PST 2015 「ロサンゼルス」での実際の時間を正しく示し、変数の値がTZ保持されないこと。期待どおりすべて。 ただし、この行では、一部の形式を日付に展開し、基本的に同じことを実行するため、TZの値が保持されます。 TZ="America/Los_Angeles" eval date; echo "$TZ" Thu Dec 24 14:41:34 PST 2015 America/Los_Angeles さらにいくつかのテストを行った結果、これが一部のシェルでのみ発生することがわかりました。ダッシュ、kshでは発生しますが、bashやzshでは発生しません。 Q 質問は次のとおりです。 TZの値が現在のシェルで保持されているのはなぜですか? それをどのように回避/制御できますか(可能な場合)? 追加。 次の2行を使用して、いくつかのシェルでテストを実行しました。 myTZ="America/Los_Angeles" unset TZ; { TZ="$myTZ" date; } >/dev/null; echo -n " direct $TZ" unset TZ; { TZ="$myTZ" …

4
フォルダ内の不足しているファイルの名前を印刷する方法は?
フォルダに2000個以上のファイルがありますが、フォルダから欠落しているファイルはほとんどありません。 ファイルの名前は GLDAS_NOAH025SUBP_3H.A2003 001.0000 .001.2015210044609.pss.grb GLDAS_NOAH025SUBP_3H.A2003 001.0600 .001.2015210044609.pss.grb GLDAS_NOAH025SUBP_3H.A2003 001.1200 .001.2015210044609.pss.grb GLDAS_NOAH025SUBP_3H.A2003 001.1800 .001.2015210044609.pss.grb GLDAS_NOAH025SUBP_3H.A2003 002.0000 .001.2015210044609.pss.grb GLDAS_NOAH025SUBP_3H.A2003 002.0600 .001.2015210044609.pss.grb GLDAS_NOAH025SUBP_3H.A2003 002.1200 .001.2015210044609.pss.grb GLDAS_NOAH025SUBP_3H.A2003 002.1800 .001.2015210044609.pss.grb GLDAS_NOAH025SUBP_3H.A2003 003.0000 .001.2015210044609.pss.grb GLDAS_NOAH025SUBP_3H.A2003003.0600 .001.2015210044609.pss.grb GLDAS_NOAH025SUBP_3H.A2003 003.1200 .001.2015210044609.pss.grb GLDAS_NOAH025SUBP_3H.A2003 003.1800 .001.2015210044609.pss.grb 001日を示し0000、時間を示します。 フォルダーにないファイルを見つける方法は?私はグーグルでいくつかの答えを得ましたが、それらを実装する方法を理解できませんでした。

2
ドル括弧の拡張をサポートせず、バッククォートを要求するシェルはどれですか?
最新の推奨事項は、次のものを使用することです。 $(...) 古いの代わりに: `...` 主に読みやすさとネスティング時にエスケープする必要性を回避するためです。 $(...)フォームをサポートしていないシェルはどれですか。また、現在も使用されているシェルはありますか?

1
ワイルドカードで割り当てられた変数のパラメーター展開
現在のフォルダー(MA502)に2つのファイルがあり、その名前は- MA502_TAAGGCGA-TCGCAGG_L001_R1_001.at.fastq MA502_TAAGGCGA-TCGCAGG_L001_R2_001.at.fastq MA503、MA504などのフォルダがたくさんあるので、それらを繰り返し処理します。 ワイルドカードを使用して変数名を割り当てます- Forward=*R1*.at.fastq Reverse=*R2*.at.fastq これらのファイルをスクリプトで処理し、出力をに置き換え.atて.atqt、最終的な名前が次のようになるようにします- MA502_TAAGGCGA-TCGCAGG_L001_R1_001.atqt.fastq MA502_TAAGGCGA-TCGCAGG_L001_R2_001.atqt.fastq 私は試した awk 'script' $Forward > ${Forward/.at/.atqt} 私の最終的なファイル名は次のようになります- *R1*.atqt.fastq だった私の期待の代わりに MA502_TAAGGCGA-TCGCAGG_L001_R1_001.atqt.fastq UNIXでは必要に応じてすべてを学んだので、変数名がどのように処理されるのかわかりません。どんな助けでもありがたいです!

2
grepでグループ区切りとしてmultilineを使用するにはどうすればよいですか?
では、グループマッチの間に何かを書くgrepために使用できます--group-separator。 これは、特に-C Xコンテキスト行を取得するオプションを使用する場合に、どのブロックがあるかを明確にするのに便利です。 $ cat a hello this is me and this is something else hello hello bye i am done $ grep -C1 --group-separator="+++++++++" 'hello' a hello this is me +++++++++ something else hello hello bye 空行をgrepのコンテキスト「グループセパレーター」として使用する方法で、空行を作成する方法を学びました--group-separator=""。 ただし、2つの空の行が必要な場合はどうなりますか?私は言っ--group-separator="\n\n"てみましたが、リテラル\ns を取得します: $ grep -C1 --group-separator="\n\n" 'hello' a hello this is me …
8 shell  grep  quoting 

4
SIGKILLが停止したプログラムを終了しないのはなぜですか(はい)。
私はUbuntu 14.04を使用していますが、理解できないように見えるこの現象が発生しています。 yesコマンドを実行します(デフォルトのシェル:Bashで) 入力CtrlZして停止yes を実行しますjobs。出力: [1]+ Stopped yes 実行kill -9 %1して停止しyesます。出力: [1]+ Stopped yes を実行しますjobs。出力: [1]+ Stopped yes これは3.16.0-30-generic、Parallels仮想マシンで実行されているUbuntuにあります。 kill -9コマンドでyesコマンドが終了しなかったのはなぜですか?SIGKILLを捕まえることも無視することもできないと思いましたか?そして、どうすればyesコマンドを終了できますか?

2
xargsがサブシェルに渡されるときに最初の引数をスキップするのはなぜですか?
xargsワンライナーで複数のコマンドを呼び出す方法を探していたところ、findutilsで次のようにxargsからシェルを呼び出すように推奨されています。 $ find ... | xargs sh -c 'command $@' 面白いのは、そのようなxargsを使用すると、何らかの理由で最初の引数がスキップされることです。 $ seq 10 | xargs bash -c 'echo $@' 2 3 4 5 6 7 8 9 10 $ seq 10 | xargs -n2 bash -c 'echo $@' 2 4 6 8 10 シェルまたはxargsバージョンに何か問題がありますか?そのドキュメントは不正確ですか? 使用xargsの(GNU用のfindutils)4.4.2とGNUのbashのバージョン4.3.11(1)-release。
8 shell  xargs 

4
スペースがあるgrep出力でxargs grepを実行するにはどうすればよいですか?
正規表現に基づいてファイルを検索してから、それらのファイルのコンテンツを検索しようとしています。たとえば、私は次のようなものを持っています #Find all C++ files that match a certain pattern and then search them find . -name "*.cpp" | grep "<name regex>" | xargs grep "<content regex>" 私が遭遇している問題は、いくつかのパスにスペースが含まれていることですxargs。だけを使用している場合はfind、-print0引数を(-0引数on と共にxargs)使用して、xargsがスペースを区切り文字として扱わないようにすることができます。同様のものはありgrepますか? それとも、この問題に完全に間違った方法で取り組んでいますか?単純に、findto は私grepにxargs grepは理にかなっていますが、同じ結果が得られる他のアプローチを受け入れます。
8 shell  grep  find  quoting  xargs 

3
GNU Parallelを効果的に使用する方法
圧縮されたテキストファイルですべての一致を検索するとします。 $ gzcat file.txt.gz | pv --rate -i 5 | grep some-pattern pv --rateパイプのスループットを測定するためにここで使用されます。私のマシンでは、約420Mb / s(解凍後)です。 現在、GNUパラレルを使用してパラレルgrepを実行しようとしています。 $ gzcat documents.json.gz | pv --rate -i 5 | parallel --pipe -j4 --round-robin grep some-pattern 現在、スループットは〜260Mb / sに低下しています。そして、より興味深いparallelプロセス自体は、多くのCPUを使用しています。grepプロセスより多い(ただし未満gzcat)。 編集1:私はさまざまなブロックサイズ(--block)と-N/ -Lオプションのさまざまな値を試しました。この時点では何も助けになりません。 何が悪いのですか?


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