名前に特殊文字が含まれるディレクトリに移動しようとすると、エラーメッセージが表示されます。
例えば:
aman@desktop:~/Aman$ cd !)e$!gn&(reate
bash: !: event not found
aman@desktop:~/Aman$
ここで!)e$!gn&(reate
は、ナビゲートしたいディレクトリ名です。
このエラーを修正する方法は?
cd
コマンドを使用して、特殊文字を含むディレクトリ名を持つUbuntuのディレクトリをナビゲートする方法は?
!
(バング)は履歴からコマンドを再実行できるショートカットであるため、このエラーが発生しています。例:このコマンドは、履歴からコマンド#1504を再実行します。
$ !1504
この問題を回避するには、ディレクトリ名を一重引用符でカプセル化してみてください。
$ cd '!)e$!gn&(reate'
そうは言っても、Ubuntu(Linux)ではこの方法でディレクトリに名前を付けることができますが、これには強くお勧めします。ディレクトリ名に特殊文字を使用すると読みにくくなる可能性があります。予約文字を使用している場合は、常にエスケープするか、引用符でディレクトリ名をカプセル化する必要があります。
特殊文字の前に\
を使用します
cd \!\)e\$\!gn\&\(reate
フォルダー名全体を一重引用符で囲むこともできます
cd '!)e$!gn&(reate'
パス全体を単一引用符でカプセル化できます
cd 'Desktop/!)e$!gn&(reate'
/ home/usernameディレクトリ内のパスを参照する場合:単一引用符でパスの前に~/
を追加するだけです
cd ~/'Desktop/!)e$!gn&(reate'
インタラクティブに、cd !
と入力してからヒット Tab bashは残りを埋め、適切にエスケープします。
@glenn jackmanの答えが実際に動作することを確認し、cd !
と入力してから[tab]を押しました
ianh@abe:~/tmp$ mkdir '!)e$!gn&(reate' ianh@abe:~/tmp$ cd \!\)e\$\!gn\&\(reate/ ianh@abe:~/tmp/!)e$!gn&(reate$
'!1997'でディレクトリを作成し、cd !1
と入力してから[tab]を押しても機能しました。
ianh@abe:~/tmp/!)e$!gn&(reate$ mkdir '!1997' ianh@abe:~/tmp/!)e$!gn&(reate$ cd \!1997/ ianh@abe:.../!)e$!gn&(reate/!1997$
(私はコメントとしてそれを追加するのに十分な担当者ポイントを持っていません)
これが特殊文字に適用されるかどうかはわかりませんが、おそらくパスを二重引用符で囲みますか?