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

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



1
Bashは、保存時に更新を実行中のスクリプトに自動的に再読み込み(注入)します。なぜですか?何か実用的ですか?
私はbashスクリプトを書いていて、スクリプトがwhileループでの入力を待っている間に、コードを更新(スクリプトファイルをディスクに保存)していました。ターミナルに戻って前回のスクリプトの呼び出しを続行した後、bashはファイルの構文に関するエラーを出しました。 /home/aularon/bin/script: line 58: unexpected EOF while looking for matching `"' /home/aularon/bin/script: line 67: syntax error: unexpected end of file だから私は次のことをやってみました: 1つ目:スクリプトを作成し、self-update.sh呼び出しましょう。 #!/bin/bash fname=$(mktemp) cat $0 | sed 's/BEFORE\./AFTER!./' > $fname cp $fname $0 rm -f $fname echo 'String: BEFORE.'; スクリプトが行うことは、コードを読み取り、「BEFORE」という単語を「AFTER」に変更してから、新しいコードで自分自身を書き直すことです。 2回実行: chmod +x self-update.sh ./self-update.sh 第三不思議... aularon@aularon-laptop:~$ ./self-update.sh String: …
10 bash  shell  scripting 

1
ZSH: `.`と` source`の違いは何ですか?
以前は組み込み.とsource同等であると思っていました。となると、この質問は私と同じですbash。しかし、私は次を使用して遭遇しましたzsh: desktop➜ ~/pst . env /usr/bin/env:1: no such file or directory: ^@^A^@^@^@X^Z@^@^@^@^@^@@^@^@^@^@^@^@^@\M-8q^@^@^@^@^@^@^@^@^@^@@^@8^@ /usr/bin/env:2: parse error near `)' desktop➜ ~/pst source env desktop➜ ~/pst file env env: ASCII text source私が期待したことをしたが、何を.しようとしているのか?
10 shell  zsh 

2
$ BASHPIDと$$は異なる場合があります
「オレイリーのBASHポケットガイド」を読んでいます。と言いました: 現在のBashプロセスのプロセスID。場合によっては、$$と異なる場合があります。 上記の説明では、$BASHPID変数について説明しました。 質問:どのケースですか?

2
-1を返すときにエラー255が発生するのはなぜですか
私はC ++プログラミングの初心者であり、非常に基本的な質問があります。-1C ++プログラムに戻って終了ステータスを確認すると、が表示されることに気づきました255。何故ですか? コードは最も基本的です: int main() { return -1; } 次に、コンパイルされたコードを実行した後: echo $? 255
10 shell  exit 

1
バー付きのコマンドラインで複数の変数に値を割り当てる方法
基本的に、シェルコマンドの出力の特定の部分を複数の変数に割り当てようとしていますが、その方法がわかりません。 簡単にするために、シェル上のコマンドが実行されると、 one two three four これは、 echo "one two three four" (実際のコマンドは異なります) ここで、出力の2番目と4番目のワード(この場合は2と4)を変数w1とw2に割り当てます。 私は次のようにreadコマンドを使用できると思いました: echo "one two three four" | awk '{print $2 " " $4}' | read w1 w2 しかし、これは機能しません。おそらく、readコマンドがサブプロセスで実行されるためです。 それで、私は私が何を求めているかを達成するためにどうやって行きますか?
10 shell  bash 


2
シェルで(ウィンドウではなく)秘密鍵のパスフレーズを要求するようSSHに強制する
起動後に初めてSSHを使用すると、秘密鍵のロック解除パスフレーズを要求されます(これは私が期待する動作です)。しかし、それはシェルではなくウィンドウで行われます(gksudoVS と同様sudo)。これはイライラします(ウィンドウをクリックするためにマウスを使用する必要があります)、次にバグが発生することがあります(全画面でGuakeターミナルを使用することがあります。その場合、SSHウィンドウに集中できず、Xを再起動する必要があります) )。 だから、私の質問は:ウィンドウをポップするのではなく、コマンドラインでSSHに秘密鍵のパスフレーズを要求する方法はありますか?

4
ループと拡張のパフォーマンス
以下の比較に関する専門家の提案が必要です: ループを使用したコードセグメント: for file in `cat large_file_list` do gzip -d $file done 単純な拡張を使用したコードセグメント: gzip -d `cat large_file_list` どちらが速くなりますか?大きなデータセットを操作する必要があります。

1
ダッシュで始まるCLI引数とともに使用すると、ティルダ(〜)が展開しないのはなぜですか?
私はVNCサーバー(x0vncserver)を実行しようとして数時間を失い、クライアントは奇妙なメッセージで接続を拒否しました。 No password configured for VNC Auth サーバーもこのエラーを出力します SVncAuth: opening password file '~/.vnc/passwd' failed さて、チルダがシェルによってもx0vncserverによっても拡張されないことに気づくまで、私は多くの時間を無駄にしました。次に、これらのテストを実行しました $ echo --PasswordFile=~/.vnc/passwd --PasswordFile=~/.vnc/passwd だが $ echo PasswordFile=~/.vnc/passwd PasswordFile=/home/tichomir/.vnc/passwd 何故ですか?引数がダッシュで始まる場合、シェルがチルダの展開を拒否するのはなぜですか?チルドは引用されていない限り常に拡張すると思いましたが、明らかに別のルールが関係しているのでしょうか?
9 bash  shell  tilde 


1
tr a A </ etc / hosts | ソート-r | pr -d> / etc / hosts
この行では: tr a A &lt; /etc/hosts | sort -r |pr -d &gt; /etc/hosts 期待される結果は何でしょうか?小文字の 'a'が大文字の 'A'に変わることは知っていますが、次は何ですか?リダイレクトが同じファイル名であるため、元のファイルは上書きされますか?

3
ファイル名のシェル展開(A | B)?
orたとえば、ファイルを読み取るときにシェルの選択肢を拡張することは可能ですか? つまり、たとえば、ファイル内のAまたはBに一致するgrepような構文をサポート(A|B)します。 同様に、これらのファイルがある場合: file1.txt file2.txt file3.txt file4.txt file5.txt 私は何ができるcat file{1..5}.txtでbash、それは範囲を拡大するよう、。いくつかのファイルに対してこれを行う同等の方法はありますか? たとえばcat file(1|5).txt、これら2つだけを印刷しますか?

4
/ bin / shのコロンで文字列を分割
私のdashスクリプトはの形式でパラメータを受け取りますhostname:port。つまり、 myhost:1234 一方、ポートはオプションです。 myhost ホストとポートを別々の変数に読み込む必要があります。最初のケースでは、私は行うことができます: HOST=${1%%:*} PORT=${1##*:} しかし、ポートが省略されている場合、それは2番目のケースでは機能しません。echo ${1##*:}空の文字列ではなく、単にホスト名を返します。 バッシュでは、私はできる: IFS=: read A B &lt;&lt;&lt; asdf:111 しかし、それはでは機能しませんdash。 私は、上の文字列を分割することができ:、外部プログラムを(起動せずに、ダッシュではawk、trなど)?
9 shell  string  dash 

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