Linux常用命令:cp,mv,rm

时间:2021-11-29 17:45:32

cp(copy)


  cp命令可以复制文件或者目录,还可以建立链接文件。

[root@Linux ~]# cp [-adfilprsu] 来源文件(source) 目标文件(destination)
[root@linux ~]# cp [options] source1 source2 source3 .... directory

-R, -r, --recursive      copy directories recursively
-p     same as--preserve=mode,ownership,timestamps
-a, --archive     same as -dR--preserve=all [可以保留链接文件],一般只有root执行,常用于归档备份

复制文件

1、可不可以把一个文件复制成另一个文件? Ok

2、可不可以把一个文件复制成多个文件? Not ok

3、可不可以把多个文件复制成一个文件? Not ok

4、可不可以把多个文件复制到一个目录? Ok


规则:如果命令需要指定 src , dst 两个参数时, dst通常是最后一个参数作为目标并且有且只有一个。


# cp a b c d   # 什么意思? source: a b c , destination: d , 把 a b c 拷贝到目录 d

如果有多个 src 源,那么dst 目的地一定必须是目录。


# cp /etc/a.txt  /tmp/b

如果b是目录且存在: 则把 a.txt 复制到 b 目录下,并保持原文件名

如果b是文件:

    如果b不存在,则复制a.txt并重命名为b

    如果b存在,则提示是否覆盖


# cp -r /etc/init.d/  /tmp/b

如果b是目录:

    b目录已存在: 则把 init.d 复制到 b 目录下,并保持原文件名

    b目录不存在: 则把 init.d 复制到 /tmp 目录下,重命名为 b

如果b是文件且存在: Error , 可以执行,但是结果错误


以上情况, 可以先考虑: 文件是否存在, 然后再考虑是目录 or 文件, 应该更合理。



复制目录

# cp /etc  /tmp

cp: omitting directory '/etc'

# cp -r /etc /tmp  # 复制目录需要使用 -r 递归选项


复制隐藏文件

用 cp * /tmp 这种类型的操作中,怎么能把隐藏文件一起拷贝过去呢?

我们打上面这条命令只能将非隐藏的文件全部复制。 原因是:(通配符无法文件名匹配以"."开头的文件) 


# cp -a . /tmp  # right

# cp .* /tmp   # 仅仅拷贝隐藏文件



mv(move)


  mv命令通常用于【移动文件】,以及【重命名】。

mv 在操作目录时, 不需要指定 -r 选项就直接可以。


# mv /etc/somedir /tmp/somefile    # error, 不能用目录去覆盖文件

# mv /etc/somedir /tmp/somedir     # yes 

    如果/tmp/somedir 存在, 则保存在 /tmp/somedir/ 目录下

    如果/tmp/somedir 不存在, 则保存在 /tmp/ 目录下,并重命名



rm(remove)


  rm命令用于删除文件及目录。 有了它基本不会再用 rmdir 这个了。


rm -rf 命令使用规则:

1、生产环境中,不要一直以root用户登录

2、操作时,比的是慢和仔细,而不是快, 按下 ENTER 之前,一定要反复检查

3、关键业务操作,最好找一个同事在旁边看,作证

4、开启模拟终端软件日志记录功能 



本文出自 “Share your knowledge” 博客,请务必保留此出处http://skypegnu1.blog.51cto.com/8991766/1934756