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

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

1
Bash forループの「do」キーワードの目的は何ですか?
doBash forループ構文のキーワードの目的は何ですか?私には、それは冗長に感じます。 for i in `seq 1 2`; do echo "hi"; done なぜこのような構文ではないのですか? for i in `seq 1 2`; echo "hi"; done 私はそれが目的を満たしていると確信しています。学びたいだけです。
76 bash  shell  for 


7
エイリアスコマンドで「which」を使用する方法は?
ほとんどのユーザーと同様に、頻繁に使用するプログラムにデフォルトのフラグセットを提供するために、多数のエイリアスを設定しています。例えば、 alias vim='vim -X' alias grep='grep -E' alias ls='ls -G' 問題はwhich、vim/ grep/ ls/ etcがどこから来たのかを確認したい場合、エイリアスが邪魔になることです: $ which vim vim: aliased to vim -X これは有用な出力ですが、この場合に私が探しているものではありません。私vimはエイリアスさvim -Xれていること を知っていますvimが、どこから来ているのか知りたいです。 エイリアスを一時的に定義解除するだけでは使用できませんが、エイリアスを「アンラップ」してその上で実行whichする簡単な方法はありwhichますか? 編集:which異なるシェル間で異なる動作をするシェル組み込みのようです。Bashでは、SiegeXによる--skip-aliasフラグの提案が機能します。ただし、私はZshを使用しています。似たようなものがそこにありますか?
76 shell  zsh  alias  which 





7
いつ追加のファイル記述子を使用しますか?
ファイル記述子を作成して、出力をリダイレクトできることを知っています。例えば exec 3<> /tmp/foo # open fd 3. echo a >&3 # write to it exec 3>&- # close fd 3. ただし、ファイル記述子がなくても同じことができます。 FILE=/tmp/foo echo a > "$FILE" 追加のファイル記述子を使用する必要がある場合の良い例を探しています。


7
シェルの深さはいくつですか?
問題:シェルの深さを確認してください。 詳細:vimからシェルをたくさん開きます。ビルドして実行し、終了します。時々忘れて、別のvimを開いてから、さらに別のシェルを開きます。:( シェルの深さがいくつあるかを知りたいのですが、シェル画面に常に表示されているかもしれません。(その部分を管理できます)。 私の解決策:プロセスツリーを解析し、vimとbash / zshを探して、現在のプロセスの深さを調べます。 そのようなものはすでに存在しますか?何も見つかりませんでした。
73 bash  shell-script  shell  vim  zsh 

8
$ *と$ @の違いは何ですか?
次のコードを検討してください。 foo () { echo $* } bar () { echo $@ } foo 1 2 3 4 bar 1 2 3 4 以下を出力します: 1 2 3 4 1 2 3 4 私はKsh88を使用していますが、他の一般的なシェルにも興味があります。特定のシェルの特殊性を知っている場合は、言及してください。 SolarisのKshのマニュアルページで次のことがわかりました。 $ *と$ @の意味は、引用符で囲まれていない場合、またはパラメーター割り当て値またはファイル名として使用されている場合は同じです。ただし、コマンド引数として使用する場合、$ *は `` $ 1d $ 2d ... ''と同等です。dはIFS変数の最初の文字で、$ @は$ 1 $ 2 ...と同等です。 …
73 shell  quoting  ksh  arguments 

3
プロセスが親の環境を継承する場合、なぜエクスポートする必要があるのですか?
ここexportで、シェルでの目的は、シェルから開始されたサブプロセスで変数を使用可能にすることであることを読みました。 しかし、私はまた、読んだことが、こことここにいることを「プロセスがその親(それを開始したプロセス)から自分の環境を継承します。」 この場合、なぜ必要なのexportですか?私は何が欠けていますか? シェル変数はデフォルトで環境の一部ではありませんか?違いはなんですか?

3
シェルスクリプトのPOSIX準拠をテストするにはどうすればよいですか?
POSIXはすべての大学の中で共通の標準に最も近いことを考えると、POSIXを排他的にサポートするシェルがあるかどうかを知りたいと思っています。最新のシェルのほとんどはPOSIXをサポートしています(そしてPOSIX準拠のスクリプトを問題なく実行します)が、非準拠の機能を指摘することはうまくいきません。 非準拠の機能に対してエラーをスローするような方法で、POSIXおよびPOSIXのみを実装するシェルはありますか? 編集ポータブルシェルスクリプトを書くための一般的なヒントを求めていないことを明確にしたい。コメントで言及された関連する質問は、すでにこれをカバーしています。この質問にbashは、--posixオプションがありますが、それが一部の初期化動作にしか影響しないことを発見したとき、私が探しているものではないことがわかりました。

4
組み込みコマンドとそうでないコマンドの違いは何ですか?
組み込みコマンドと、名目上は同じことを実行できる別のコマンドの間に本質的な違いはありますか? 例えば。ビルトインは「特別な」治療を受けますか?...それらを実行するオーバーヘッドが少ないですか?..または単に「組み込み」だけです; あなたの車のダッシュボードのような? ...そして、これらの組み込みの決定的な(現在の)リストはありますか?

4
IFSを理解する
このサイトとStackOverflowの以下のいくつかのスレッドは、IFS動作の仕組みを理解するのに役立ちました。 forループのコンテキストでのIFSとは何ですか? ファイルの行をループする方法 Bash、IFSでファイルから1行ずつ読み取る しかし、まだ短い質問がいくつかあります。私はそれがより良い将来の読者を助けるかもしれないと思うので、同じ投稿で彼らに尋ねることに決めました: Q1。 IFS通常、「フィールド分割」のコンテキストで説明されています。あるフィールド分割は、同じ単語の分割? Q2: POSIX仕様には次のように書かれています: IFSの値がヌルの場合、フィールド分割は実行されません。 nullに設定IFS=するのと同じ設定IFSですか?これempty stringもに設定することを意味していますか? Q3: POSIX仕様では、次を読みました。 IFSが設定されていない場合、シェルはIFSの値が <space>, <tab> and <newline> のデフォルト値を復元するとしますIFS。それ、どうやったら出来るの?(より具体的に、どのように私はを参照してください<tab>と<newline>?) Q4:最後に、このコードはどのようになりますか: while IFS= read -r line do echo $line done < /path_to_text_file 最初の行を次のように変更すると動作します while read -r line # Use the default IFS value または: while IFS=' ' read -r line
71 shell 

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