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

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

15
生産性を向上させるために、シェルプロファイルでどのようなカスタマイズを行いましたか?
ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 スタートアップスクリプトを持っている人もいれば、プロンプトをパーソナライズしている人もいます。ある開発者は、頻繁に訪れる長いパスと頻繁に実行するコマンドに短いエイリアスを使用します。 生産性と使いやすさを向上させるために、UNIXプロファイルで行った効果的なカスタマイズは何ですか?

2
「」を含む文字列内に変数を挿入する方法は?
変数を挿入してxml文字列を作成したい: str1="Hello" str2="world" xml='<?xml version="1.0" encoding="iso-8859-1"?><tag1>$str1</tag1><tag2>$str2</tag2>' echo $xml 結果は <?xml version="1.0" encoding="iso-8859-1"?><tag1>Hello</tag1><tag2>world</tag2> しかし、私が得るのは: <?xml version="1.0" encoding="iso-8859-1"?><tag1>$str1</tag1><tag2>$str2</tag2> 私も試しました xml="<?xml version="1.0" encoding="iso-8859-1"?><tag1>$str1</tag1><tag2>$str2</tag2>" しかし、それは内側の二重引用符を削除し、以下を与えます: <?xml version=1.0 encoding=iso-8859-1?><tag1>hello</tag1><tag2>world</tag2>
25 bash  shell  variable  xml 

2
「echo」と「echo -e」の違い[非公開]
閉じた。この質問には、詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善したいですか?詳細を追加し、この投稿を編集して問題を明確にします。 4年前に閉鎖されました。 違いは何であるechoとはecho -e?echoコマンドではどの引用符( ""または '')を使用する必要がありますか?すなわち:echo "Print statement"またはecho 'Print statement'?また、一緒に使用できる利用可能なオプションは何echoですか?
25 shell 


3
シェルでの$#の意味
$#シェルではどういう意味ですか? 私は次のようなコードを持っています if [ $# -eq 0 ] then 私は何を$#意味するのかを理解したいのですが、Google検索はこれらの種類のものを検索するには非常に悪いです。

1
インタラクティブシェルとはどういう意味ですか?
UNIX:The Complete Reference、Second Edition by Kenneth H.Rosen et al。 ログイン後にシェルの名前をコマンドとして使用して、別のシェルを起動できます。たとえば、Kornシェルを起動するには、コマンドプロンプトでkshと入力できます。このタイプのシェルはログインシェルではなく、使用するために再度ログインする必要はありませんが、それでも対話型シェルです。つまり、コマンドを入力することでシェルと対話します(シェルを使用する代わりに)第20章で説明されているように、スクリプトを実行します。グラフィカルインターフェイスを使用しているときにターミナルウィンドウで実行されるシェルのインスタンスも、対話型の非ログインシェルです。非ログインシェルを起動すると、.profile、.bash_profile、または.loginファイル(または.logoutファイル)は読み込まれませんが、2番目のシェル構成ファイル(.bashrcなど)は読み込まれます。これは、変更をテストできることを意味します。 私は上記の行を通り抜けていましたが、それがインタラクティブシェルによって何を意味するのか分かりません。ターミナルを使用している場合、.profileが読み取られないのは本当ですか? さらに、bourneはインタラクティブシェルではなく、bash / cshはインタラクティブシェルであると言うとき、それはどういう意味ですか?
25 shell 





5
shell command Substitutionが末尾の改行文字を飲み込むのはなぜですか?
次の例と、最近の質問 bashのように、末尾の改行文字はどこに消えましたか?、「なぜ」それが起こるのか知りたい x="$(echo -ne "a\nb\n")" ; echo -n "$x" | xxd -p # Output is: 610a62 # The trailing newline from the 'echo' command # has been "deleted" by Command Substitution 私は、シェルアクション、つまりコマンド置換から、置換しているコマンド出力からいくつかのデータを実際に削除するための非常に重要な理由 があるはずだと思います... しかし、私はこれを回避することができませんそれがすることになっているもののアンチテーゼ... コマンドの出力をスクリプトプロセスに戻す... 1つの文字を保持することは奇妙に思えますが、それには理にかなった理由があると思います...その理由が何かを知りたいと思っています。 。

2
シェル環境をリセットする方法は?
この問題はしばらくの間私を悩ませてきましたが、EnvWatcherで答えを見つけたと思っていましたが、残念ながらBashでしか機能しません。そして、私はzshを使用しています。 env-watcherの機能を少しだけ複製したいと思いますが、シェルをクリーンスタートアップステージにリセットできるコマンドがあるかどうかを知る必要があります。 たとえば、次のワークフローが必要です。 source some-functions alias another-thing export SVN_EDITOR=vim RESET-ZSH # none of the above are valid any more そのような組み込みの可能性はありますか、それとも私は蝶を追いかけていますか?

2
順序付けされたSTDOUT / STDERRをキャプチャし、タイムスタンプ/プレフィックスを追加する方法は?
ほぼすべての 利用可能な 同様の 質問を調査しましたが、役に立ちません。 問題について詳しく説明します。 私はいくつかの無人スクリプトを実行し、これらは標準出力と標準エラー行を生成できます。端末エミュレータで表示される正確な順序でそれらをキャプチャし、「STDERR:」や「STDOUT:」などのプレフィックスを追加します。 私はパイプを使用してみましたが、それらにエポールベースのアプローチさえ使用しませんでした。解決策はptyの使用法にあると思いますが、私はマスターではありません。また、GnomeのVTEのソースコードを覗きましたが、それほど生産的ではありませんでした。 理想的には、これを実現するためにBashの代わりにGoを使用しますが、できませんでした。パイプは、バッファリングのために正しい行順序を維持することを自動的に禁止しているようです。 誰かが似たようなことをすることができましたか?それとも、単に不可能ですか?ターミナルエミュレーターがそれを行うことができる場合、それはできないと思います-PTY(s)を異なる方法で処理する小さなCプログラムを作成することによるのでしょうか? 理想的には、非同期入力を使用してこれら2つのストリーム(STDOUTおよびSTDERR)を読み取り、2番目に必要に応じて再印刷しますが、入力の順序は重要です! 注:stderredは認識していますが、Bashスクリプトでは機能せず、プレフィックスを追加するために簡単に編集できません(基本的に多くのsyscallをラップするため)。 更新: 2つの要点の下に追加 混合stdout / stderrを生成するプログラム例 上記のプログラムから期待される出力 (一貫した結果を証明するために、提供したサンプルスクリプトに1秒未満のランダムな遅延を追加できます) 更新:この質問に対する解決策は、@ Gillesが指摘したように、この他の質問も解決します。しかし、私は、あちこちで尋ねたことをすることは不可能であるという結論に達しました。使用する場合2>&1、両方のストリームを正しくPTY /管のレベルでマージされているが、別々にストリームと1つが実際のアプローチを使用する必要があり、正しい順序で使用するstderredを involesシステムコールをフックとして見ることができるダーティ多くの方法です。 誰かが上記を反証できるなら、私はこの質問を更新したいと思っています。

3
bashはCのfork()と同様にフォークをサポートしていますか?
ある時点で分岐したいスクリプトがあるので、同じスクリプトの2つのコピーが実行されています。 たとえば、次のbashスクリプトが存在するようにします。 echo $$ do_fork() echo $$ このbashスクリプトが本当に存在する場合、予想される出力は次のようになります。 <ProcessA PID> <ProcessB PID> <ProcessA PID> または <ProcessA PID> <ProcessA PID> <ProcessB PID> この種の出力を取得するため、またはbashスクリプトにCのようなフォークを実行させるために、「do_fork()」の代わりに配置できるものはありますか?
25 shell  fork 


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