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

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

1
zsh aptリストオプションの完了
私はbashでタブ補完を使用してをapt list --upgradable入力して取得することに慣れていますがapt ltab--utab、zshで同じことを行うことはできません。を押し--uても展開されません。--upgradabletab zsh-completionsのインストールとへの追加setopt completealiasesを提案するいくつかのソリューションをグーグルアップしました./zshrcが、どちらも役に立ちませんでした。 bashのように機能させる方法はありますか?
10 zsh  autocomplete 

1
macOS SierraのPATHに項目を追加するには、 `/ etc / paths`または` / etc / paths.d`を使用しますか?
さまざまな場所で、/usr/libexec/path_helperそしてすべてについての議論で収集したものから、PATHmacOS Sierra 10.12の環境変数にアイテムを追加する現代的な方法は、明らかに次のいずれかです。 /etc/pathsファイルを編集する /etc/paths.dディレクトリから読み取るファイルを追加します。 私の質問: 現代のmacOSでどちらがより良いですか? より良いまたはより一般的な方法がファイルをpaths.dディレクトリにドロップすることである場合、それらのファイルの名前と内容は何であるべきですか?例はありますか? zshではなく使用していbashます。違いはありますか? これら2つのオプションはmacOSに固有のものですか?または、それらはBSDまたは他のUnixライクなシステムに表示されますか?
10 osx  zsh  path  etc 

1
zsh vimモードでコマンドを実行する
ではzshではvim mode、私が何かを書きます foo foo bar bar 次にEsc、通常モードで入力して : foo foo bar bar execute: _ その後、私は検索と置換したい、私はそれを行うことができますと仮定barしてbaz foo foo bar bar execute: s/bar/baz/g_ 次に、Enterキーを押してみますが、うまくいきません。+ executeを使用しないと戻ることができません。Ctrlc コマンドを実行するにはどうすればよいですか? 私はこれを私の通常の状態で.zshrc、まったくなしで試しました.zshrc。
10 vim  zsh 

1
ブレースの拡張範囲が3つ(省略記号)ではなく2つのドットを使用するのはなぜですか?
ようやくbash(さらにはzsh)ブレースの拡張範囲を適切に使用できなかった理由を最後に理解/発見しました。構文は{1..10}、省略記号、つまりと想定したものではありません{1...10}。 3つのドットよりも2つのドットが選ばれた理由を教えてください。(Wikipedia)リンクに示されているように、コンピュータープログラミングでの省略記号の使用は一般的でよく理解されているため、これが私の好奇心を刺激しました。

2
zshのタブ補完と大文字と小文字を区別しないことの組み合わせ
大文字小文字を区別しないタブ補完を使用するようにzsh 5.0.7を構成しています zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 私が抱えている問題は、この場合の鈍感さは、しばしば私がTab余分な時間を押す必要につながるということです。たとえば、私のホームディレクトリには、「デスクトップ」、「ドキュメント」、「ダウンロード」というフォルダが含まれています。ホームフォルダーにいて、次のように入力した場合 cd D 次にを押すTabと、3つの可能性が表示されます。一方、入力すると cd d 次にTab「d」を押すと「D」に変わりますが、完了メニューが表示されません。Tabそのためには、もう一度押す必要があります。「d」が「D」に変更されると同時に完了メニューを取得する方法はありますか?
10 zsh  autocomplete 

3
VIM(BashまたはTmux)のように画面上の単語の補完
画面で最後に一致する識別子を完了するようにBash、Zsh、またはTmuxを構成するにはどうすればよいですか?次の一般的なシナリオを検討してください。 $ git fetch remote: Counting objects: 16, done. remote: Compressing objects: 100% (9/9), done. remote: Total 9 (delta 4), reused 0 (delta 0) Unpacking objects: 100% (9/9), done. From /opt/git/thunder * [new branch] issue540 -> origin/issue547314 e9204cf..4d42c3f v2.1 -> origin/v2.1 issue547CLIでBash / Zsh / Tmuxを簡単に完了するにはどうすればよいですか?Git が問題なく完了したTab後にを押すと、数字を自分で完成させる必要があります。なぜなら、前のすべての数字は実際には既存のGitブランチと一致するからです。$ git checkout isissue …

1
zsh-<tab>のバイナリパスを完全に展開する
私の現在のzsh動作では、「sudo」と入力した後でタブを押すと、スペースが追加されるだけです。 $ sudo ... 私が本当に望んでいるのは、タブを押したときに実行しようとしているバイナリのパスにタブを完全に拡張して、何が実行されるかを確認できるようにすることです。 $ /usr/bin/sudo ... 目的は、私のマシンのローカルユーザーがハッキングされ、$PATH変数にエントリが追加され、'sudo'が悪意のあるプログラムを実行するケースから保護することです。これにより、ルートに簡単にエスカレーションされます。
10 zsh  path  autocomplete 

3
bashからzshに移行する誰かが直面する主な問題は何ですか?
数回私はbashでzshを使用している他の人にはない問題を抱えていました。 また、私は尊敬する人々の中でzshユーザーを見たことがあります。zshへの移行を半分心をこめて何度か試しましたが、日常業務を行う時間がないため(そして怠惰で)毎回戻ってきました。 zsh。 実用的な移行ツールはありますか?または、少なくとも私が移行をより簡単にする方法を学び、それを試して「私にとって」何か違いがあるかどうかを確認できるようにすることをお勧めするいくつかの重要なことがありますか? ちなみに、私の人生のほとんどをMac、ubuntu、RedHatの亜種に費やしています。
10 bash  zsh 

2
zsh / bashシェルの現在のディレクトリを表示する画面ステータスバー
シェルとしてzshを使用して、GNU画面を頻繁に使用しています。現在のディレクトリ名(フルパスではない)をタブタイトルとして表示できるのは、すばらしい機能だと思います(私はそう思います)。私はそれを行うことができますCTRL+A SHIFT+Aが、それは手動です。ディレクトリを変更するたびに変更したいのですが。 誰かがこれを行う方法を知っていますか? 編集:答えには、bashのソリューションも含まれています。
10 bash  zsh  gnu-screen 

1
別のコマンドの単一引用符と二重引用符を含むコマンドをラップする
最近watchについて学びましたが、比較的高度なコマンドで動作させるのに苦労しています。 たとえば、3秒ごとにwatch次のコマンドを実行するように依頼します*:zsh for x in `command_1 | grep keyword | cut -d' ' -f1`; do command_2 "word[word=number]" $x; done 上記の行を見るとわかるように、他の特殊文字の中に、単一引用符、二重引用符が含まれています。 だから私は試しました: watch -n 3 "for x in `my_command | grep keyword | cut -d' ' -f1`; do command2 "rusage[mem=7000]" $x; done" しかし、私は得ました: !@#$#....;でxに一致するものが見つかりませんでした。終わった 他の組み合わせを試したが成功しなかった。これらの試みの1つを次に示します。 watch -n 3 "for x in …
10 shell  zsh  quoting 

1
Zsh:上向き矢印で同じコマンドをスキップする
ほとんどのUnixシェルでは、上矢印↑キーは、履歴内の前のコマンドによって編集されているコマンドを置き換えます。履歴は、コマンドを使用して表示できますhistory。 ↑ 歴史の中で登るには、複数回押すことができます。 私の質問は: ↑現在のコマンドと同じコマンドをすべてスキップするようにシェルを構成するにはどうすればよいですか? 確かに、私は多くの場合make、続けて多くを入力します。古いコマンドをもう一度入力する(または少し変更する)場合、↑すべてのmakeコマンドをスキップするだけで何度もヒットする必要があります。 ↑シェルの生産性を向上させる唯一のヒントではないことは知っています。 ボーナス: Bashシェルで機能する構成を指定します。 履歴を保存します(連続して何度もコマンドを入力したことを知っていると便利です)

3
zshのディレクトリごとの履歴
私はここzshしばらくの間楽しく使用しており、次の履歴設定に非常に満足しています。 # Write to history immediately setopt inc_append_history # History shared among terminals setopt share_history # Save extended info in history setopt extended_history # Ignore duplicates setopt hist_ignoredups しかし、特定のディレクトリ内で特定のコマンドを使用する必要があることがよくあります。たとえば、~/my_project私make target1 &amp;&amp; ./run1がいるときは通常呼び出しますが、私がいるとき~/second_projectは通常必要make target2 &amp;&amp; cat foobar | ./run2です。 つまり、ディレクトリは異なりますが、コマンドは似ています。 したがって、私は通常cd ~/my_project、入力してmakeから、必要なものが見つかるまで履歴を逆方向に検索します。しかし、私がで作業していたsecond_project場合、履歴を検索すると、不要なコマンドがいくつか見つかります。 だから、私の質問:履歴で検索すると、現在のディレクトリで呼び出されたコマンドが最初に表示されるように、zshのプラグイン/設定/何かが存在しますか? 理想的には、他のすべての一致する履歴コマンドがそれらの後に表示され、オプションで優先要素の最大数を指定します。 私は自分でこのようなものを書こうとしますが、カスタムzshプラグインの作成方法、履歴の処理方法などはまだわかりません。

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 

1
envの出力で確認できる変数を出力できないのはなぜですか?
別のシェルインスタンスの環境変数を設定することに興味があります。だから私はいくつかの研究を行うことにしました。これについてのいくつかの質問を読んだ後、私はそれをテストすることにしました。 2つのシェルAとB(PID 420)を生成し、どちらもを実行していzshます。シェルAIから以下を実行しました。 sudo gdb -p 420 (gdb) call setenv("FOO", "bar", 1) (gdb) detach シェルBから実行するenvと、変数FOOが実際にbarの値で設定されていることがわかります。これにより、シェルBの環境でFOOが正常に初期化されたと思います。ただし、FOOを印刷しようとすると、設定されていないことを示す空の行が表示されます。私には、ここには矛盾があるように感じます。 これは私自身のArch GNU / LinuxシステムとUbuntu VMの両方でテストされました。またbash、変数がenvに表示されない場所でもテストしました。これは私には失望しますが、シェルがスポーン時にその環境のコピーをキャッシュし、それだけを使用する場合は理にかなっています(リンクされた質問の1つで提案されていました)。これはまだzsh変数を見ることができる理由には答えません。 echo $FOO空の出力はなぜですか? 編集 コメントへの入力後、もう少しテストを行うことにしました。結果は以下の表で確認できます。最初の列は、FOO変数が注入されたシェルです。最初の行には、その下に出力を表示できるコマンドが含まれています。変数FOOは次を使用して注入されました:sudo gdb -p 420 -batch -ex 'call setenv("FOO", "bar", 1)'。zsh:に固有のコマンドzsh -c '...'もbashを使用してテストされました。結果は同じであり、簡潔にするためにそれらの出力は省略されました。 Arch GNU / Linux、zsh 5.3.1、bash 4.4.12(1) | | env | grep FOO | echo $FOO …

4
右から左へのシェルブレース拡張
zsh(および他のシェル)で、(たとえば)のような引数を含めた場合: {a,b,c}{d,e,f} ブレースの展開により、次のようになります。 ad ae af bd be bf cd ce cf 私の目的では、引数の順序が重要であり、左から右ではなく右から左に展開する中かっこが必要です。つまり、拡張は次のようになります。 ad bd cd ae be ce af bf cf 中括弧の複数のセットが展開される順序を制御する方法はありますか?これらの議論だけでなく、あらゆる状況で機能するものを探しています。

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