私のワークスペースには、長いパスで構成された多くのフォルダがあります。たとえば、
|- 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 ano
Tab完了することがわかります。this.is.another.long.path.authors
ano
compinstall
有効にするためのより素晴らしい機能があるので、すべてのメニューを見てください。 (同じzsh-newuser-install
)。
答え3
必要な部分だけをコピーして貼り付けてください。
答え4
バックスラッシュを使用してください。これは、コンピュータが空白を文字通り処理するように指示するエスケープ文字です。例は次のとおりです。
cd My\ Documents