$ alias | grep rm aliasrm='rm -i' $ touch a b c d $ ls a b c d # -i每次删除前均提示 $ rm -i a b c d rm: remove regular empty file ‘a’? y rm: remove regular empty file ‘b’? y rm: remove regular empty file ‘c’? y rm: remove regular empty file ‘d’? y $ ls $ touch a b c d # -I删除3个以上文件时提示,只需要确认一次即可 $ rm -I a b c d rm: remove 4 arguments? y $ ls $ mkdir dir1 dir2 $ echo aaa > dir1/a # -r递归删除目录 $ rm -r dir1 rm: descend into directory ‘dir1’? y rm: remove regular file ‘dir1/a’? y rm: remove directory ‘dir1’? y # -d删除空目录 $ rm -d dir2 rm: remove directory ‘dir2’? y $ touch a b c $ mkdir dir1 $ echo aaa >dir1/.aa # 默认删除*不会删除隐藏文件,需要单独删除 $ rm -rf * $ ls -al -rw-r--r-- 1 root root 0 Feb 13 21:38 .aa $ rm .aa $ touch a{1..5} $ ls a* a1 a2 a3 a4 a5 $ rm -rfv a* removed ‘a1’ removed ‘a2’ removed ‘a3’ removed ‘a4’ removed ‘a5’
# 删除软链接目录时,目录最后一定不要加/,否则将删除源目录下的所有文件 $ tree -a ├── a ├── b -> a ├── dir1 │ └── a └── dir2 -> dir1 # 删除链接文件时,一定要确认提示信息为删除链接文件本身,而非源文件 $ rm b rm: remove symbolic link ‘b’? y $ rm -r dir2 rm: remove symbolic link ‘dir2’? n # 如果在删除软链接目录后面加了/,则表示删除源目录下的所有文件,慎重!!! $ rm -r dir2/ rm: descend into directory ‘dir2/’? y rm: remove regular file ‘dir2/a’? y rm: remove directory ‘dir2/’? y rm: cannot remove ‘dir2/’: Not a directory $ touch a $ ln -s a b $ mkdir dir1 $ echo aaa > dir1/a $ ln -s dir1 dir2 $ tree ├── a ├── b -> a ├── dir1 │ └── a └── dir2 -> dir1 # 软链接目录后不加/,表示删除软链接本身 $ rm -rf dir2 $ tree ├── a ├── b -> a └── dir1 └── a $ ln -s dir1 dir2 # 软链接目录后加/,表示删除源目录下的所有文件,而非软链接本身 $ rm -rf dir2/ $ tree ├── a ├── b -> a ├── dir1 └── dir2 -> dir1 $ ll dir1 total 0
# 防止文件误删除 # +i禁止更改和删除文件 $ chattr +i a $ lsattr a ----i----------- a $ echo aaa > a -bash: a: Permission denied $ echo aaa >> a -bash: a: Permission denied $ rm a rm: remove regular empty file ‘a’? y rm: cannot remove ‘a’: Operation not permitted # a可以修改文件但不能删除 $ chattr =a a $ lsattr a -----a---------- a $ echo aaa > a -bash: a: Operation not permitted $ echo aaa >> a $ more a aaa aaa $ rm a rm: remove regular file ‘a’? y rm: cannot remove ‘a’: Operation not permitted # 取消所有特殊属性,即还原文件原始状态 $ chattr = a # 或 $ chattr -ia a $ lsattr a ---------------- a
# 防止目录误删除 # +a可以新增和修改目录下的文件,但不能删除文件 $ chattr +a dir1 $ lsattr -d dir1 -----a---------- dir1 $ echo aa >> dir1/a $ echo bbb > dir1/b $ rm dir1/b rm: remove regular file ‘dir1/b’? y rm: cannot remove ‘dir1/b’: Operation not permitted # 通过vim编辑目录下的文件时可能会提示"E207: Can't delete backup file",即无法删除vim自动生成的备份文件b~ $ ll dir1 -rw-r--r-- 1 root root 7 Feb 13 22:23 a -rw-r--r-- 1 root root 9 Feb 13 22:23 b -rw-r--r-- 1 root root 4 Feb 13 22:23 b~ $ rm -rf dir1 rm: cannot remove ‘dir1/a’: Operation not permitted rm: cannot remove ‘dir1/b’: Operation not permitted rm: cannot remove ‘dir1/b~’: Operation not permitted # 取消限制 $ chattr -a dir1 $ rm -rf dir1