web-dev-qa-db-ja.com

cdコマンドを使用して、Ubuntuで特殊文字を含むディレクトリをナビゲートする

名前に特殊文字が含まれるディレクトリに移動しようとすると、エラーメッセージが表示されます。

例えば:

aman@desktop:~/Aman$ cd !)e$!gn&(reate
bash: !: event not found
aman@desktop:~/Aman$ 

ここで!)e$!gn&(reateは、ナビゲートしたいディレクトリ名です。

このエラーを修正する方法は?

cdコマンドを使用して、特殊文字を含むディレクトリ名を持つUbuntuのディレクトリをナビゲートする方法は?

12
Aman

!(バング)は履歴からコマンドを再実行できるショートカットであるため、このエラーが発生しています。例:このコマンドは、履歴からコマンド#1504を再実行します。

$ !1504

この問題を回避するには、ディレクトリ名を一重引用符でカプセル化してみてください。

$ cd '!)e$!gn&(reate'

そうは言っても、Ubuntu(Linux)ではこの方法でディレクトリに名前を付けることができますが、これには強くお勧めします。ディレクトリ名に特殊文字を使用すると読みにくくなる可能性があります。予約文字を使用している場合は、常にエスケープするか、引用符でディレクトリ名をカプセル化する必要があります。

19
Aaron

特殊文字の前に\を使用します

cd \!\)e\$\!gn\&\(reate

フォルダー名全体を一重引用符で囲むこともできます

cd '!)e$!gn&(reate'

パス全体を単一引用符でカプセル化できます

cd 'Desktop/!)e$!gn&(reate'

/ home/usernameディレクトリ内のパスを参照する場合:単一引用符でパスの前に~/を追加するだけです

cd ~/'Desktop/!)e$!gn&(reate'
10
Back.Slash

インタラクティブに、cd !と入力してからヒット Tab bashは残りを埋め、適切にエスケープします。

5
glenn jackman

@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$

(私はコメントとしてそれを追加するのに十分な担当者ポイントを持っていません)

2
iheggie

これが特殊文字に適用されるかどうかはわかりませんが、おそらくパスを二重引用符で囲みますか?

2
bross