単語を使ってフォルダの途中で「cd」する方法は?

単語を使ってフォルダの途中で「cd」する方法は?

私のワークスペースには、長いパスで構成された多くのフォルダがあります。たとえば、

|- workspace
|-- this.is.very.long.name.context
|-- this.is.another.long.path.authors
|-- // 20 more folders
|-- this.is.folder.with.too.many.characters.folder

それらはすべて同じステップ(this.is)で始まります。私の実際のケースでは、長さは20文字で、最後の順序はほとんど異なります。cdコマンドを使ってすばやく検索する方法はありますか?このような奇妙なキャラクターもありますか?

答え1

他の人を代用することはできませんが(例zsh:)、bashワイルドカードを使用するとある程度機能します。例:

~ $ ls
Documents
Desktop
Downloads

アスタリスク( )を使用すると、*次のようになります。

~ $ cd *ments
~/Documents $

bashこれは、コマンドが到着する前に置き換えが行われる可能性があるためですcd

複数の一致が有効な場合、cd動作は未定義であると予想されます。

~ $ cd *s
bash: cd: too many arguments

bashこれをに拡張するcd Documents Downloadsと意味はありませんcd


bashオートコンプリート機能を使用することもできます。あなたの例ではcd t;を入力すると、クリックすると次のあいまいな文字がTab自動的に完成します。フィルタリングされたセットのすべてのオプションを表示するには、2回目をクリックしてください。cd this.is.Tab

別の文字を繰り返し入力して範囲を絞り込み、次の Tabあいまいな文字をオートコンプリートし、Tabすべてのオプションを表示できます。


さらに一歩進んで、オートコンプリートbashでワイルドカードを処理できます。上記の最初のケースでは、入力cd D*sしてクリックしてパターンにTab一致する提案を得ることができます。

~ $ cd D*s
Documents/ Downloads/
~ $ cd D*s

一致する項目が 1 つしかない場合は自動的に完了します。

~ $ cd *loads
~ $ cd Downloads/

ls問題のディレクトリにあるものが気に入らない場合でも動作します。内容ではなく、ディレクトリ自体-dがリストされていることを示します。ls

$ ls -d *long*
this.is.very.long.name.context
this.is.another.long.path.authors

findまたは、再帰的に表示するには、次のものを使用できます。

$ find workspace -type d -name '*long*'
workspace/this.is.very.long.name.context
workspace/this.is.another.long.path.authors

答え2

sを使用すると、中間単語を完成するようにzsh完成システムを設定できます。zstyle

このcompinstall機能はそれを行うのに役立ちます。たとえば、実行してみてくださいautoload compinstall; compinstall。初めて使用する場合(まだメニューがない場合)、頻繁にzsh-newuser-install呼び出されるメニューからも使用できます。zsh.zshrc

               *** compinstall: main menu ***
2.  Matching control: set behaviour for case-insensitive matching,
    extended (partial-word) matching and substring matching.
              *** compinstall: matcher menu ***

`Matchers' compare the completion code with the possible matches in some
special way.  Numbers in parentheses show matchers to be tried and the order.
The same number can be assigned to different matchers, meaning apply at the
same time.  Omit a sequence number to try normal matching at that point.
A `+' in the first line indicates the element is added to preceding matchers
instead of replacing them; toggle this with `t'.  You don't need to set
all four, or indeed any matchers --- then the style will not be set.

   (    )   `+' indicates add to previous matchers, else replace
n. (    ) No matchers; you may want to try this as the first choice.
c. (    ) Case-insensitive completion (lowercase matches uppercase)
C. (    ) Case-insensitive completion (lower/uppercase match each other)
p. (    ) Partial-word completion:  expand 'f.b' to 'foo.bar', etc., in one go.
          You can choose the separators (here `.') used each time.
s. (    ) Substring completion:  complete on substrings, not just initial
          strings.  Warning: it is recommended this not be used for element 1.

そうした場合:

   (    )   `+' indicates add to previous matchers, else replace
n. (1   ) No matchers; you may want to try this as the first choice.
c. (    ) Case-insensitive completion (lowercase matches uppercase)
C. (    ) Case-insensitive completion (lower/uppercase match each other)
p. (    ) Partial-word completion:  expand 'f.b' to 'foo.bar', etc., in one go.
          You can choose the separators (here `.') used each time.
s. ( 2  ) Substring completion:  complete on substrings, not just initial
          strings.  Warning: it is recommended this not be used for element 1.

compinstall保存して終了すると、次の行が次の項目に追加されたことがわかります~/.zshrc

zstyle ':completion:*' matcher-list '' '' '' 'l:|=* r:|=*'

info zsh matcher-list(注:パッケージをインストールする必要があるかもしれませんzsh-doc)どのように動作するかを教えてくれます。

次のように入力すると、名前で始まるファイルがないと仮定してcd anoTab完了することがわかります。this.is.another.long.path.authorsano

compinstall有効にするためのより素晴らしい機能があるので、すべてのメニューを見てください。 (同じzsh-newuser-install)。

答え3

必要な部分だけをコピーして貼り付けてください。

答え4

バックスラッシュを使用してください。これは、コンピュータが空白を文字通り処理するように指示するエスケープ文字です。例は次のとおりです。

cd My\ Documents

関連情報