alias rm='rm -i'
ファイルに~/.bashrc
を追加した後(ファイルを削除したときに確認を求めていなかったため)、ファイル名は次の例のように「â」記号で囲まれています。
rm: cannot remove âfile1.txtâ: No such file or directory
エイリアスのリスト:
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias rm='rm -i'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
注: WindowsマシンからPuTTYを使用してCentOSマシンにSSH接続しているので、これは間違いなく文字エンコードです。問題。 VMでUbuntuゲストを使用すると、すべて問題ありません。スマートクォートは必要に応じて表示されています。
これらのâ
sは、現在の端末が正しく表示できない、ISO-8859-1などで構成されているUTF-8引用符です。
一致するロケールまたはPOSIXロケールを設定すると、適切に表示できます。
$ rm file.txt
rm: cannot remove â file.txtâ : No such file or directory
$ LC_ALL=en_US.UTF-8 rm file.txt
rm: cannot remove â file.txtâ : No such file or directory
$ LC_ALL=C rm file.txt
rm: cannot remove 'file.txt' : No such file or directory
$ rm foo 2>&1 | od -c
0000000 r m : c a n n o t r e m o v
0000020 e 342 200 230 f o o 342 200 231 : N o
0000040 s u c h f i l e o r d i r
0000060 e c t o r y \n
0000067
$ LC_ALL=C rm foo 2>&1 | od -c
0000000 r m : c a n n o t r e m o v
0000020 e ' f o o ' : N o s u c h
0000040 f i l e o r d i r e c t o
0000060 r y \n
0000063
奇妙なキャラクターを追加しなかったのですか? 「:setlist」でviを使用して、.bashrc内の人間が読めない文字を確認してください。
'aliases'と入力して、システムエイリアスが存在するかどうかを確認します。これらは、OSが使用する正しい構文を示している可能性があります。それ以外の場合、主にcentosとredhatを使用すると、エイリアス構文はすでに正しいように見えます。したがって、問題の実際の原因である可能性は低いようです。
もしあなたがテキストを正確にカットアンドペーストし、そしていくつかのクリップボードがそれを壊さなかったなら(そしてそれは大きいなら)...
ファイル名の前後に、UTF-8文字、2バイト、C3 A2があります。これは、U + 00E2、â、c3 a2、ラテン小文字A、曲折アクセント記号付きです。
コマンドを発行すると:
alias rm='rm -i'
rm spdkdkdkdlsls
これはbash
4.3.39から取得します:
rm: cannot remove 'spdkdkdkdlsls': No such file or directory
私が持っています LC_ALL=en_US.UTF_8
私の唯一のロケール環境変数として。ただし、rm
はファイル名を一重引用符で囲んでいることに注意してください。 「smartquotesc3 a2」をグーグルで検索すると、同様の問題を説明しているように見える この記事 とt 彼の記事 が見つかります。私の推測では、TERMINAL、LC_ALL(または他のロケール変数)またはカットアンドペーストは、何らかの形でMicrosoftの「Word」スタイルの「スマートクォート」を取得していると思います。
あなたはこれができますか:
ls -l > files
hexdump -C files
hexdump
出力では、ディレクトリに実際に「file1.txt」があるかどうかを確認し、ディレクトリリストにラテン小文字A WITHCIRCUMFLEXがないことを示します。つまり、a-circumflexはrm
のせいです。または、選択した文字セットを説明しようとするのは残念なことです。