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

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

1
ZSH:あいまいでも最初のタブに補完を挿入しますか?
現在、ZSHは最初にタブを押したときにメニューを表示し、完了が不明瞭です。したがって、コマンドプロンプトで「cd」を押してタブを押すと、使用可能なさまざまな補完が表示されます。もう一度タブを押すと、利用可能な最初の補完が選択されます。 これらの2つのステップをタブキーを1回押すだけにマージします。したがって、「cd」のときにタブを押すと、ZSHが最初の一致を挿入し(あいまいな場合)、メニューを表示して、最初の一致が自分が持っていたディレクトリでない場合はタブで移動できるようにします念頭に置いて。 これが私のシェルの動作に影響している場合に備えて、ZSHセットアップツールはこれを.zshrcに入れます。 zstyle ':completion:*' completer _expand _complete _ignored zstyle ':completion:*' list-colors '' zstyle ':completion:*' list-prompt%SAt%p:TABキーを押すか、%sを挿入します zstyle ':completion:*' matcher-list 'm:{[:lower:] [:upper:]} = {[:upper:] [:lower:]}' '' 'm:{[:lower:] [:upper:]} = {[:upper:] [:lower:]} ' zstyle ':completion:*' menu select = 5 zstyle ':completion:*' select-prompt%SScrolling active:current selection at%p%s zstyle:compinstall filename '/home/robb/.zshrc'
11 zsh  autocomplete 

1
tty出力を持つ変数コマンドでstdinとstdoutをパイプするとき、zshは端末に入力できません
システム情報: macOS Sierra 10.12.6 zsh 5.4.2 (x86_64-apple-darwin16.7.0) GNU bash, version 4.4.12(1)-release (x86_64-apple-darwin16.3.0) 私が作成した簡単な例を詳しく知りたい場合は、一番下の「例」までスクロールしてください。 注:私は大したzshユーザーではありません。 私は見ていたfzfためにキーバインドbashとzsh。 どちらも変数コマンドを実行する方法に注意してください$(__fzfcmd)。__fzfcmdデフォルトでfzfはstdoutに出力し、パラメーター置換fzfは出力から得られたコマンド()を実行するだけです。 間の一つの違いbashとzshスクリプトがあることbashつの更なるパイプの出力は$(__fzfcmd)なく、zsh単に配列の内部に取り込みます。私の推測では、入力できない場所zshの出力をさらにパイプfzfするfzfと、パイプされたプロセスがfzfstdinを取得できないという問題が発生したためです。あなたの唯一の選択は、^Zまたは^Cです。^Cなんらかの理由でプロセスの背景になっているようです。または、多分彼らはそれを実行zle vi-fetch-historyすることができるように配列でそれを望んだだけです。bashバージョンは、との結合キーにいくつかの魔法を行います"\e^": history-expand-line 今fzfは重要ではありません。ttyこの問題を発生させるには、パラメータ置換によって呼び出されるに出力するプログラムが必要なだけのようです。そこで、いくつかの簡単な例を示します。 でttyこの問題を引き起こす可能性のあるに出力される他のいくつかのコマンドを次に示しますzsh。 vipe(パイプの途中でエディターを実行) 'vim -' (vimをstdinから読み取ります。vipeと同様ですが、stdoutに出力されません) 以下の例で、個別にインストールしたくない場合は、vipeをすべてで置き換えてvim -ください。ただ、それは覚えているvim -ような標準出力に出力し、エディタの内容をしませんvipeありません。 例: 1) echo 1 | vipe | cat # works in both bash and zsh 2) echo 1 | $(echo vipe) | …
11 bash  zsh  pipe  tty 

1
zshのエイリアス、関数、変数の名前を一覧表示します
zshでエイリアス、関数、変数、配列の名前(本文/コンテンツ/値なし)をリストする方法が必要です。最適には次のように動作するはずですcompgen: compgen -a # will list all the aliases you could run. compgen -A function # will list all the functions you could run. compgen -A variable # will list all the variables defined. バックグラウンド env_parallel.zshを開発するためにこれが必要です:https ://www.gnu.org/software/parallel/env_parallel.html
11 shell  zsh 

1
キーシーケンスをEscape、zshにバインドする
zshでどのようにマップjjしEscますか? vimでセットアップしたキーマッピングを再作成しようとしています。そこでは、を2回押すとan がvimに送信jjされるESCので、便利に通常モードに入ることができます。j<Esc> 私はすでに試しましたbindkey 'jj' ^[、今すぐ試しますが、うまくいくとは思えませんbindkey 'jj' ^[[。また、通常モードでzshが提供するコマンドのリストを確認しましたが、normalまたはが含まれるものは何も見つかりませんでしたescape。 注ファイル内 の^[文字は、~/.zshrc実際にハードコードされたエスケープです。文字^とだけではありません[。

2
すべてのエンターでzsh update自体のRPROMPTをどのように作成しますか?
私RPROMPTはを使用してsvn情報を表示するように設定されていますvcs_info。読みますRPROMPT=${vcs_info_msg_0_}。vcs_infoを使用して呼び出されprecmd()ます。ただし、ディレクトリを変更してもRPROMPTは更新されません。これは、プロンプトを(ソース〜/ .zshrcまたはpromptによって)再度呼び出した場合にのみ機能し、プロンプトを再度呼び出さない限り、chdirで変更されません。この動作を変更する方法はありますか?

4
zshとmkshはbashと互換性がないのですか?
他のPOSIX互換シェルは、bashの合理的な代替としてどの程度機能しますか?それらは真の「ドロップイン」置換である必要はありませんが、ほとんどのスクリプトで動作し、いくつかの変更を加えて残りをサポートするのに十分近いです。 明示的なbashスクリプト-initscripts、DHCPクライアントスクリプトなど-を最小限の変更で機能させたい より多くの変更を必要としない、より専門的なシェルスクリプトの独自のコレクションが欲しい 文字列操作や組み込みの正規表現パターンマッチングなどの機能が欲しい 私が知っている深刻な候補はzshとmkshだけです。ですから、ここのどちらかまたは両方に長けているあなたのために: bashには、zshとmkshにそれぞれない機能がありますか? シェルはbashとどの機能を共有しますが、互換性のない構文を使用しますか?
11 bash  zsh  mksh 


2
ZShellの16色
zshellプロンプトで8色しか呼び出せないようです。 例: PROMPT="[%n@%{$fg[magenta]%}%m%{$reset_color%} %.] %# " 正常に動作します。しかしながら、 PROMPT="[%n@%{$fg[brmagenta]%}%m%{$reset_color%} %.] %# " 動作しません。基本的に、「明るい」カラーバリエーションは表示されません。 調査したところ、zshの色が「colors」setoptによって呼び出されていることがわかりました。 している echo ${(o)color} この出力を生成します: 00 01 02 03 04 05 07 08 22 23 24 25 27 28 30 30 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 39 …
11 terminal  zsh  colors 

1
zshでのチルダの拡張
FreeBSDを使用しているときに、zshのこの動作に遭遇しました。 % dd if=/dev/zero bs=1M count=1 of=~/test2 dd: failed to open '~/test2': No such file or directory 同じことがbashでもうまく機能するので、これは本当に私を混乱させました。 私はtouchzshでチルダを使用してファイルを作成できますls。 % touch ~/test2 % ls ~/test2 /home/christoph/test2 最初は、zshはその後にパスがあることを認識していないため、of=展開しませんでした~。ただし、ファイル名のオートコンプリートは問題なく機能します。実際、既存のファイル名を使用し、そのパスをで開始し~、ある時点でTabを押すと、入力しているコマンドでパスが展開されます。 なぜ合格のzshん~/test2にdd、ではありませんか/home/christoph/test2? Linuxでもzshは同じように動作します。実際、私は上記のコマンドを実行し、その出力をLinuxマシンにコピーしました。
11 zsh  tilde 

2
シェルでのJSON解析
シェルでJSON出力を解析するにはどうすればよいですか? たとえば、Amazon Webサービスには、インスタンスのステータスを取得するためのCLIが用意されています。 $ aws ec2 describe-instances <my_instance_id> しかし、コマンドはJSON文字列を返します。このコマンドの出力は次のようになります。 $ aws ec2 describe-instances x12345 { "Reservations" : { "OwnerId": "1345345" "Groups": [], "SecurityGroups": [ { "Foo" : "yes" "Bar" : "no } ] } } JSON出力の解析に使用できるシェルの組み込みはありますか? たとえばFOO、次のシェル変数にキャプチャしたいとしますoutput["Reservations"]["SecurityGroups"][0]{"Foo"}。 それが役立つ場合、私は特にZshで動作するソリューションに興味があります。
11 zsh  string  json 

5
.ssh / configはzshでリモートセッションを開始します
次のコマンドを入力せずにリモートセッションを開始したい ssh user@remoteserverip -t zsh のホスト名を変更して、~/.ssh/config次のようなものを使用できることを知っています。 ssh serveralias -t zsh しかし、-t zshパラメーターを削除したいと思います。 関数を書かずにこれを達成する方法はありますか?
11 ssh  zsh  remote  session 

1
zshシェルからbashスクリプトを実行する
でbashスクリプトを実行できませんzsh。スクリプトは以下のスクリプトに似ており、bashで実行されることになっています。 #!/bin/bash echo "<235234>" | egrep -oe [0-9]+ ただし、私のシェルはデフォルトでzshにあるので、上記のスクリプトを実行するには/bin/bash、zshプロンプトで次のように入力し、を実行し. script.shます。 ただし、これによりエラーが発生し、次のエラーが発生します。 zsh: no matches found: [0-9]+ (235234代わりに取得する必要があります)。 この時点で私は混乱しており、次の質問があります。 にいる場合bash、なぜエラーが報告されるのzshですか? なぜegrep正規表現が失敗するのですか?正規表現は私には正しいようです。 注:必要に応じて、スクリプトを変更することは想定していません(スクリプトは複数のユーザーによって共有されており、変更を加えることは想定されていません)。 ありがとう
11 bash  zsh 

4
zsh kill Ctrl + Backspace、Ctrl + Delete
Ctrl+ Backspaceがポイントの前に単語を殺すようにzshを構成する方法は?それを達成する方法Ctrl+ Deleteポイントの後の単語を殺す? 端末エミュレータとしてurxvtを使用しています。
11 zsh  line-editor 

4
〜/ .zshrcから関数をsudoすると「コマンドが見つかりません」
私には私の機能があります~/.zshrc: findPort() { lsof -t -i :$1 } 通常の呼び出しはfindPort 3306です。 管理者特権で実行したい。しかし、「コマンドが見つかりません」と表示されます。 ➜ git 🍔 sudo findPort 3306 sudo: findPort: command not found その理由は、rootユーザーが非対話型シェルとして実行されている(したがって、.zshrcを参照していない)か、別のを 参照しているためだと思い.zshrcます。 に関する同様の質問を見ましたaliasが、ユーザー定義関数に関する質問はありません。に関するこの問題の回答にaliasは、にエイリアスを追加することが含まれ~/.zshrcます。 alias sudo='nocorrect sudo ' 多分: alias sudo='sudo ' 私はこれらの両方の解決策を試しましたが、問題はまだ存在しています(はい、シェルを再起動しました)。 またsudo chsh、ルートシェルがで実行されるように実行してみましたzsh。これらの解決策はいずれも、「コマンドが見つかりません」という問題を取り除きません。 sudoでユーザー定義関数を実行する方法はありますか?
10 sudo  zsh 

5
パラメータ展開を使用して「mkdir -p」の引数リストを生成する
私はこのようなものを持っています: % ls -1dF /tmp/foo/* /tmp/foo/000f9e956feab3ee4625aebb65ae7bae9533cdbc/ /tmp/foo/002e34c2218f2c86fefd2876f0e5c2559c5fb3c4/ /tmp/foo/00b483576791bab751e6cb7ee0a7143af43a8069/ . . . /tmp/foo/fedd0f7b545e7ae9600142656756456bc16874d3/ /tmp/foo/ff51ac87609012137cfcb02f36624f81cdc10788/ /tmp/foo/ff8b983a7411395344cad64182cb17e7cdefa55e/ のbar下の各サブディレクトリの下にディレクトリを作成しますfoo。 私がこれをやろうとすると % mkdir -p /tmp/foo/*/bar ...エラーが発生する zsh: no matches found: /tmp/foo/*/bar (後で見ると、エラーの理由を理解できます。) forループを使用して元の問題を解決できることはわかっていますが、が1 zsh回の呼び出しで必要な引数を生成するパラメーター展開の形式をサポートしているかどうかを知りたいと思っていますmkdir -p。IOW、「APPENDと同等のパラメータ展開/bar膨張させることによって生成されたすべての接頭辞に/tmp/foo/*して得られました」、 % mkdir -p /tmp/foo/000f9e956feab3ee4625aebb65ae7bae9533cdbc/bar ... /tmp/foo/ff8b983a7411395344cad64182cb17e7cdefa55e/bar
10 zsh 

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