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

Zshは、多くの高度なコマンドラインとスクリプト機能を備えたシェルです。

1
vimをzshでEDITORとしてエクスポートすると、キーボードショートカットが無効になるのはなぜですか?
私.zshrcはこのように見えます: export EDITOR="/usr/bin/vim" ターミナルを開いて、キーボードショートカットを入力しctrlaて行の先頭に移動すると、機能しません。代わりに、文字列^A(または入力したショートカットに応じて他の文字列)が端末に入力されます。 emlai:~ % ^A export私から単語を削除.zshrcすると、キーボードショートカットが適切に機能します。 EDITOR="/usr/bin/vim" キーボードショートカットを機能させるEDITOR以外の何かとしてエクスポートするとvim、たとえば: export EDITOR="/usr/bin/nano" なぜこれが起こるのですか? 私bashもこれをテストしましたが、キーボードショートカットはすべての場合に適切に機能します。

2
cdタブの色を完全に設定する方法はありますか?
私はubuntu 11.04を使用しています。 cd、lsなどのタブ補完リストの後に出力の色を設定する方法はありますか? すなわち myshell@root$ cd ~/user/files/ タブを押す... myfile myfoo mybar <-この出力は色付きですか? あなたが私の図を楽しんでくれたことを願っています。

5
`zstyle`は何をしますか?
zstyleexport-ingシェルパラメータの代わりのように、データを格納および取得するための中心的な場所にすぎないようです。それは本当ですか、それともそれ以上ですか?
23 zsh 

1
cdの最初の引数の完成OLD NEW
ではzsh、cdコマンドには2つの引数の形式cd OLD NEWがあり${PWD/OLD/NEW}ます。新しいスタイルの補完システムでは、zshは補完できますNEW。2番目の引数はOLD、既存のディレクトリを取得するために置き換えることができるものに基づいて補完されます。ただし、最初の引数は既存のディレクトリに対してのみ完了します。 OLD既存のディレクトリを補完するだけでなく、に可能な値である補完をzshに提供するにはどうすればよいですか? たとえば、現在のディレクトリが/path/to/fooであり、ディレクトリ/also/to/fooおよびがある/path/to/foo/prime場合、にcd pTab完了pしprimeます。実行する場合cd path alsoは、zshにpath補完としても提供したいと思います。どうやって? 2番目の引数の型指定済みの値を使用して最初の引数の可能性を制限することはプラスになりますが、最初の引数を個別に完了することも問題ありません。

1
フォークボムはどのように機能しますか?
警告は、生産マシンでこれを実行しようとしないでください トピックに関するウィキペディアのページを読むとき、私は通常、次のコードで何が起こっているのかを追跡します。 :(){ :|:& };: 説明の抜粋 次のフォーク爆弾は、2002年に芸術として発表されました。56 その正確な起源は不明ですが、2002年より前にUsenetに存在していました。爆弾は、次の13文字をbashやzshなどのUNIXシェルに貼り付けることで実行され ます。「:」という関数を定義して動作します。この関数は、フォアグラウンドで1回、バックグラウンドで1回の2回呼び出されます。 ただし、最後の部分は完全には明確ではありません。関数定義が表示されます: :(){ ... } しかし、他に何が起こっていますか?また、のような他のシェルを行うksh、cshとtcshも似たようなを構築することができるという同じ運命に苦しみますか?
22 bash  shell-script  zsh  fork 

7
bashおよびzshの二重および三重置換
この質問の背景部分へのフォローアップ。 で、二重置換にbash使用できます。両方で、旧式(hack-y)が機能します。${!FOO}zsh ${(P)FOO}eval \$$FOO したがって、私にとって最も賢明で最も論理的なことは${${FOO}}, ${${${FOO}}}…、double / triple / n置換です。なぜこれが期待どおりに機能しないのですか? 第二:何をするん\で行うevalの文?私はそれが脱出であり、eval \$$$FOO不可能なことをしていると考えています。すべてのシェルで動作するトリプル/ n置換を行う方法は?

4
zshの設定ファイルにファイルを含めることは可能ですか?どうやって?
例えば、ファイルが欲しいです。zshエイリアスのみのf(純粋な理由)。次に、fで定義されたエイリアスが.zshrcで表示されるように、fファイルを.zshrcファイルに含めたいと思います。 出来ますか? もしそうなら、スクリプトを作成できます。my_alias($my_alias ll 'ls -l')fファイルにエイリアスを追加します。もちろんできます $echo {alias command} >> ~/.zshrc しかし、これにより.zshrcは大きな混乱になります。 さらに、bashではどのように見えますか? 更新 誰かが私の考えを共有するなら、これは解決策です、プネヘヘのおかげで: # source aliases ALIASFILE=~/.aliasesrc source $ALIASFILE function add_alias() { if [[ -z $1 || -z $2 || $# -gt 2 ]]; then echo usage: echo "\t\$$0 ll 'ls -l'" else echo "alias $1='$2'" >> $ALIASFILE …

4
ZSH:上下キーの検索履歴?
現在、.zshrcには次のものがあります。 bindkey '^[[A' up-line-or-search bindkey '^[[B' down-line-or-search ただし、これはスペース文字が発生する前の現在の入力の内容と一致しているようです。たとえば、sudo ls /で始まる履歴内のすべての行に一致しますがsudo、入力全体に一致する行のみに一致するようにします。(つまりsudo ls /etc一致しますが、一致しませんsudo cat /var/log/messages) 目的の動作を得るには、何を変更する必要がありますか? 関連する場合の私の.zshrc全体を以下に示します。https ://gist.github.com/919566

1
zshのラインエディターを使用してサブプロセスをラップする
zshの組み込み行エディター(zle)を使用して入力をサブプロセスにフィードすることは可能ですか?つまり、zlewrap mycommandwhere zlewrapはzsh関数でありmycommand、stdinから行を読み取るだけのプログラムです。zlewrapは、zleの行編集機能をに効果的に提供しmycommandます。これはrlwrapまさにこれを行うモデル上にありますが、行編集用のzleではなくreadlineを使用します。
22 zsh  line-editor 



6
2つのパス間の相対リンクを取得する
次の2つのパスがある<source_path>とし<target_path>ます。<target_path>from <source_path>を相対パスとして表現する方法があるかどうか、シェル(zsh)が自動的に検出するようにします。 例えば、仮定しましょう <source_path> は /foo/bar/something <target_path> は /foo/hello/world 結果は ../../hello/world これが必要な理由: 私はからのシンボリックリンクを作成したいとする必要<source_path>に<target_path>使用して相対的な「私はsysの管理者ではないよ(私は、Windowsからネットワーク上のこれらのファイルにアクセスするとそうでない場合は、当社のSambaサーバがファイルを適切に表示されていないので、シンボリックリンク可能な限りの、そしてドンこの設定を制御できます) <target_path>および<source_path>が絶対パスであると仮定すると、以下は絶対パスを指すシンボリックリンクを作成します。 ln -s <target_path> <source_path> だから私のニーズには機能しません。数百のファイルに対してこれを行う必要があるため、手動で修正することはできません。 これを処理するシェルビルトインはありますか?
21 shell  files  zsh  symlink 

1
前のコマンドからzsh補完に引数を追加します
zsh(およびbash)では、いくつかの履歴語展開を使用して、前のコマンドからの引数を示すことができます。 この例は、!:#展開された履歴の前のコマンドから2番目のパラメーターを取得することを示しています。 % echo foo bar baz foo bar baz % echo !:2 echo bar bar 特定の引数が何のパラメータであるかを正確に忘れることがよくあります!:#。どの引数であるかを覚えていると、タイピングは必ずしもそれほど速くありません。私meta-.は最後の引数を置き換えることを知っていますが、時々それは私が望む最後の引数ではありません。 zshで入力するコマンドを完了するための提案として、前のコマンドの引数を追加したいと思います。 最後のコマンドから引数の配列(0..N)を作成し、それを特定のコマンドにバインドできるシェル関数を作成する方法を見つけることができました。 _last_command_args() { last_command=$history[$[HISTCMD-1]] last_command_array=("${(s/ /)last_command}") _sep_parts last_command_array } # trying to get last_command_args to be suggested for any command, this just works for foo compdef _last_command_args foo これは、タブキーを押すとfooだけを完了すると次のようになります<TAB>。 % echo bar …
21 zsh  autocomplete 


3
引用符で囲まれた変数が空の場合、どうすれば何も展開できませんか?
スクリプトを実行しているとします: some-command "$var1" "$var2" ... そして、var1空のイベントでは、空の文字列の代わりに何も置き換えないで、実行されるコマンドが次のようになるようにします。 some-command "$var2" ... ではなく: some-command '' "$var2" ... 変数をテストして条件付きで含めるよりも簡単な方法はありますか? if [ -n "$1" ]; then some-command "$var1" "$var2" ... # or some variant using arrays to build the command # args+=("$var1") else some-command "$var2" ... fi bash、zshなどで何にも拡張できないパラメーター置換はありますか?残りの引数でグロビングを使用したい場合があるので、それを無効にして変数の引用符を外すことはオプションではありません。

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