すべてを

▼開く

閉じる▲

ファイル名に「#」を含むファイルを削除する

○ファイル「#file#」を削除する

lsコマンドで削除するファイルを見る
$ ls -l
-rw-r--r--    1 masa     users         256 10月 10 12:57 #file#

rmコマンドでファイルを指定する
$ rm '#file#'
または
$ rm "#file#"
または
$ rm \#file#

rmコマンドで、上のようにファイルを指定するとファイル「#file#」が削除される。

●普通にファイルを削除しようとすると

rmコマンドで単純にファイルを指定する
$ rm #file#
rm: 引数が足りません

普通に「#file#」を削除しようとすると、「引数が足りません」というエラーメッセージが出る。これは、シェルが「#」をコメントと解釈してrmコマンドにファイル名「#file#」を渡さないため、上のようなエラーメッセージになる。

○lsコマンドで削除ファイルの指定方法を確認する

意図しないファイルを誤って削除しないために、削除するファイルをlsコマンドで直接指定して、目的のファイルだけが表示されるかを確認する。

lsコマンドでファイルが正しく指定できない例
$ ls #file#
#file#  *  **  ***  ****  *****  -file  \  ~masah

シェルが「#」をコメントと解釈するため、単純なlsコマンドが実行されてすべてのファイルが表示される。

lsコマンドでファイルが正しく指定できた例
$ ls \#file#
#file#
$ ls '#file#'
#file#
$ ls "#file#"
#file#

シェルに「#」をコメントと解釈させないために、ファイル名の前にエスケープ文字「\」を付けて「\#file#」とするか、ファイル名を引用符「'」で囲って「'#file#'」、また二重引用符で囲って「"#file#"」と指定すると正しくファイル「#file#」が表示される。

ファイル名に「*」を含むファイルを削除する

○ファイル「***」を削除する

lsコマンドで削除するファイルを見る
$ ls -l
合計 20
-rw-r--r--    1 masa     users         256 10月 10 17:25 *
-rw-r--r--    1 masa     users         256 10月 10 17:25 **
-rw-r--r--    1 masa     users         256 10月 10 17:25 ***
-rw-r--r--    1 masa     users         256 10月 10 17:25 ****
-rw-r--r--    1 masa     users         256 10月 10 17:25 *****

rmコマンドでファイルを指定する
$ rm '***'
または
$ rm "***"
または
$ rm \*\*\*

rmコマンドで、上のようにファイルを指定するとファイル「***」が削除される。

●普通にファイルを削除しようとすると

rmコマンドで単純にファイルを指定する
$ rm *

「*」は、シェルにワイルドカードとして解釈されるので、ワイルドカード指定に該当するファイルが削除されてしまう。

○lsコマンドで削除ファイルの指定方法を確認する

意図しないファイルを誤って削除しないために、削除するファイルをlsコマンドで直接指定して、目的のファイルだけが表示されるかを確認する。

lsコマンドでファイルが正しく指定できない例
$ ls ***
ls: オプションが違います -- e
詳しくは `ls --help' を実行して下さい.
$ ls \***
*  **  ***  ****  *****

lsコマンドでファイルが正しく指定できた例
$ ls \*\*\*
***
$ ls '***'
***
$ ls "***"
***

シェルが「*」を解釈しないようにエスケープ文字「\」をすべての「*」の前に入れて「\*\*\*」とするか、引用符で囲って「'***'」、二重引用符で囲って「"***"」と指定すると正しくファイル「***」が表示される。

ファイル名に「~」を含むファイルを削除する

○ファイル「~masa」を削除する

lsコマンドで削除するファイルを見る
$ ls -l
-rw-r--r--    1 masa     users         256 10月 10 21:28 ~masa

rmコマンドでファイルを指定する
$ rm '~masa'
または
$ rm "~masa"
または
$ rm \~masa

rmコマンドで、上のようにファイルを指定するとファイル「~masa」が削除される。

○ホームディレクトリに該当しないファイル名の場合

lsコマンドでファイルを見る
$ ls -l
-rw-r--r--    1 masa     users         256 10月 10 21:22 ~masahi

システムに「masahi」という名前のホームディレクトリが存在しない場合は、通常のファイル同様に扱える。

$ ls ~masahi
~masahi
$ rm ~masahi

●普通にファイルを削除しようとすると

rmコマンドで単純にファイルを指定する
$ rm ~masa
rm: cannot remove `/home/masa': 許可がありません

「~masa」は、ユーザ「masa」のホームディレクトリを示すため、ファイル「~masa」が削除されない。

○lsコマンドで削除ファイルの指定方法を確認する

意図しないファイルを誤って削除しないために、削除するファイルをlsコマンドで直接指定して、目的のファイルだけが表示されるかを確認する。

lsコマンドでファイルが正しく指定できない例
$ ls ~masa
evolution  filesize  lfile2  mbox  proj  sfile1  work

lsコマンドでも「~masa」はホームディレクトリと解釈されて、ホームディレクトリの内容が表示される。

lsコマンドでファイルが正しく指定できた例
$ ls \~masa
~masa
$ ls '~masa'
~masa
$ ls "~masa"
~masa

シェルが「~」を解釈しないようにエスケープ文字「\」をファイル名の前につけて「\~masa」とするか、引用符で囲って「'~masa'」、二重引用符で囲って「"~masa"」と指定すると正しくファイル「~masa」が表示される。

ファイル名に「'」と「*」を含むファイルを削除する

○ファイル「'*'」を削除する

lsコマンドで削除するファイルを見る
$ ls -l
-rw-r--r--    1 masa     users         256 10月 10 22:57 '*'

rmコマンドでファイルを指定する
$ rm \'\*\'
または
$ rm "'*'"

rmコマンドで、削除するファイルのファイル名を1文字ずつエスケープ記号「\」でエスケープすると、ファイル「\'\*\'」が削除される。エスケープ記号を使う代わりに、ファイル名を2重引用符「"」で囲ってもよい。

●普通にファイルを削除しようとすると

rmコマンドで単純にファイルを指定する
$ rm '*'
rm: cannot lstat `*': そのようなファイルやディレクトリはありません

これは、rmコマンドに「*」というファイル名が渡されるためにこのようなエラーとなる。ただし、実際に「*」というファイルがあれば削除されてしまう。

○lsコマンドで削除ファイルの指定方法を確認する

意図しないファイルを誤って削除しないために、削除するファイルをlsコマンドで直接指定して、目的のファイルだけが表示されるかを確認する。

lsコマンドでファイルが正しく指定できない例
$ ls '*'
ls: *: そのようなファイルやディレクトリはありません
$ ls ''*''
ls: オプションが違います -- e

これは、シェルが「'」と「'」に囲まれた「*」をファイル名と解釈してlsコマンドに与えたためにこのようなエラーになる。この場合、ファイル名が「*」のファイルがあればエラーとならずにファイル「*」が表示される。

lsコマンドでファイルが正しく指定できた例
$ ls \'\*\'
'*'
$ ls "'*'"
'*'

シェルが「'」を解釈しないようにエスケープ文字「\」を「'」の前に入れて「\'\*\'」とするか、二重引用符で囲って「"'*'"」と指定すると正しくファイル「'*'」が表示される。

ファイル名に「'」を含むファイルを削除する

○ファイル「''」を削除する

lsコマンドで削除するファイルを見る
$ ls -l
-rw-r--r--    1 masa     users         256 10月 10 22:42 ''

rmコマンドでファイルを指定する
$ rm \'\'
または
$ rm "''"

rmコマンドで、削除するファイルのファイル名を1文字ずつエスケープ記号「\」でエスケープすると、ファイル「''」が削除される。エスケープ記号を使う代わりに、ファイル名を2重引用符「"」で囲ってもよい。

●普通にファイルを削除しようとすると

rmコマンドで単純にファイルを指定する
$ rm ''
rm: cannot lstat `': そのようなファイルやディレクトリはありません

これは、シェルが「'」と「'」に囲まれた文字数0のファイル名をrmコマンドに渡したためにこのようなエラーとなる。

○lsコマンドで削除ファイルの指定方法を確認する

意図しないファイルを誤って削除しないために、削除するファイルをlsコマンドで直接指定して、目的のファイルだけが表示されるかを確認する。

lsコマンドでファイルが正しく指定できない例
$ ls ''
ls: : そのようなファイルやディレクトリはありません
$ ls ''''
ls: : そのようなファイルやディレクトリはありません
これは、シェルが「'」と「'」に囲まれた文字数0のファイル名をrmコマンドに渡したためにこのようなエラーとなる。 lsコマンドでファイルが正しく指定できた例
$ ls \'\'
''
$ ls "''"
''

シェルが「'」を解釈しないようにエスケープ文字「\」をすべての「'」の前に入れて「\'\'」とするか、二重引用符で囲って「"''"」と指定すると正しくファイル「''」が表示される。

ファイル名に「-」を含むファイルを削除する

○ファイル「-file」を削除する

lsコマンドで削除するファイルを見る
$ ls -l
-rw-r--r--    1 masa     users         256 10月 10 18:40 -file

rmコマンドでファイルを指定する
$ rm -- -file

rmコマンドで、「--」削除するファイル「-file」指定すると、ファイル「-file」が削除される。

●普通にファイルを削除しようとすると

rmコマンドで単純にファイルを指定する
$ rm -file
rm: オプションが違います -- l

rmコマンドは、ファイル名「-file」をオプションと解釈してしまう。
「-」をオプションと解釈させないためにエスケープ文字を使ってみる。

$ rm \-file
rm: オプションが違います -- l
$ rm '-file'
rm: オプションが違います -- l
$ rm "-file"
rm: オプションが違います -- l

どれもうまくいかない。

○lsコマンドで削除ファイルの指定方法を確認する

意図しないファイルを誤って削除しないために、削除するファイルをlsコマンドで直接指定して、目的のファイルだけが表示されるかを確認する。

lsコマンドでファイルが正しく指定できない例
$ ls -file
ls: オプションが違います -- e
$ ls \-file
ls: オプションが違います -- e
$ ls '-file'
ls: オプションが違います -- e
$ ls "-file"
ls: オプションが違います -- e

ファイル名を「\-file」、「'-file'」、「"-file"」と指定しても、lsコマンドは「-file」をファイル名ではなくオプションと解釈してしまう。lsコマンドのオプションに「f,i,l」はあるが「e」がないため、「オプションが違います」というエラーになる。

lsコマンドでファイルが正しく指定できた例
$ ls -- -file
-file

lsコマンドのオプションに「--」を指定し、ファイル名「-file」を指定すると正しくファイル「-file」が表示される。これは、「--」が空のオプションを指定するからと推測される。

ファイル名に「\」を含むファイルを削除する

○ファイル「\」を削除する

lsコマンドで削除するファイルを見る
$ ls -l
-rw-r--r--    1 masa     users         256 10月 10 15:02 \

rmコマンドでファイルを指定する
$ rm '\'
または
$ rm \\

rmコマンドで、削除するファイルを引用符「'」で囲って「'\'」指定すると、ファイル「\」が削除される。エスケープ文字「\」を使ってファイル名を「\\」と指定しても削除できる。

●普通にファイルを削除しようとすると

rmコマンドで単純にファイルを指定する
$ rm \
>

「\」記号を入力して[Return]を押すと、シェルは行が続くと解釈して入力するためのプロンプト「>」を表示する。そのため、ファイル「\」を指定することができない。

○lsコマンドで削除ファイルの指定方法を確認する

意図しないファイルを誤って削除しないために、削除するファイルをlsコマンドで直接指定して、目的のファイルだけが表示されるかを確認する。

lsコマンドでファイルが正しく指定できない例
$ ls \
>
$ ls "\"
>

「\」記号を入力して[Return]を押すと、シェルは行が続くと解釈して入力するためのプロンプト「>」を表示する。そのため、ファイル「\」を指定することができない。

lsコマンドでファイルが正しく指定できた例
$ ls '\'
\
$ ls \\
\

シェルが「\」を解釈しないように引用符で囲ってファイル名を「'\'」とするか、エスケープ文字「\」をファイル名の前に入れて「\\」と指定すると正しくファイル「\」が表示される。