首页 > 代码库 > Linux基础命令1:cp、mv、rm、tree、mkdir、rmdir
Linux基础命令1:cp、mv、rm、tree、mkdir、rmdir
cp:复制文件和目录
语法:
cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
说明:
cp命令用在复制文件或目录,如同时指定两个以上文件,其最后的目的目标是一个已存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。而最后的目标并非是一个已存在的目录,则会出现错误信息。
目录 源 | 不存在 | 存在且为文件 | 存在且为目录 |
一个文件 | 新建DEST,并将SRC中内容填充至DEST中 | 将SRC中的内容覆盖至DEST中 注意数据丢失风险!建议用 –i 选项 | 在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中 |
多个文件 | 报错 | 报错 | 在DEST下新建与原文件同名的文件,并将原文件内容复制进新文件中 |
目标 须使用-r选项 | 创建指定DEST 同名目录,复制SRC目录中所有文件至DEST下 | 报错 | 在DEST下新建与原目录同名的目录,并将SRC中内容复制至新目录中 |
选项:
-a:--archive,等价于-dpR
-d:--no-dereference --preserv=links当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录
-f:--force强行复制文件或目录,不论目标文件或目录是否已存在
-i:覆盖已有文件之前先询问用户
-l:对源文件建立硬连接,而非复制文件
-p:等同--preserv=mode,ownership,timestamp,保留源文件或目录的属性
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理; 如果需要复制目录,则需要加上此选项
-s:对源文件建立符号连接,而非复制文件
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀
-b:覆盖已存在的文件目标前将目标文件备份
-v:--verbose详细显示命令执行的操作
--preserv[=ATTR_LIST]
mode: 权限
ownership: 属主属组
timestamp:
links
xattr
context
all
示例:
[root@localhost testdir]# cp -r /root/bin/ . #复制指定目录到当前目录下
[root@localhost testdir]# ls
bin
[root@localhost testdir]# ll file1
-rw-r--r--. 1 root root 0 Aug 29 11:26 file1
[root@localhost testdir]# cp -l file1 2 #建立硬链接
[root@localhost testdir]# ll file1
-rw-r--r--. 2 root root 0 Aug 29 11:26 file1
[root@localhost testdir]# ll 2
-rw-r--r--. 2 root root 0 Aug 29 11:26 2
[root@localhost testdir]# cp -s /bin/ls ls #建立软链接
[root@localhost testdir]# ll ls
lrwxrwxrwx. 1 root root 7 Aug 29 11:38 ls -> /bin/ls
[root@localhost testdir]# cp -sr /root/bin/ rootbin #如果针对目录需要加-r,否则会报错
[root@localhost testdir]# ll -d rootbin/
drwxr-xr-x. 5 root root 4096 Aug 29 11:38 rootbin/
mv:移动和重命名
语法:
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
说明:
mv命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中SOURCE表示源文件或目录,DEST表示目标文件或目录。如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖。
mv命令可以用来将源文件移至一个目标文件中,或将一组文件移至一个目标目录中。源文件被移至目标文件有两种不同的结果:
1、如果目标文件是到某一目录文件的路径,源文件会被移到此目录下,且文件名不变。
2、如果目标文件不是目录文件,则源文件名(只能有一个)会变为此目标文件名,并覆盖己存在的同名文件。如果源文件和目标文件在同一个目录下,mv的作用就是改文件名。当目标文件是目录文件时,源文件或目录参数可以有多个,则所有的源文件都会被移至目标文件中。所有移到该目录下的文件都将保留以前的文件名。
注意事项:mv与cp的结果不同,mv好像文件“搬家”,文件个数并未增加。而cp对文件进行复制,文件个数增加了。
选项:
-b:--backup=<备份模式>:若需覆盖文件,则覆盖前先行备份
-b:当文件存在时,覆盖前,为其创建一个备份
-f:--force若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录
-i:--interactive交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖
--strip-trailing-slashes:删除源文件中的斜杠“/”
-S<后缀>:为备份文件指定后缀,而不使用默认的后缀
--target-directory=<目录>:指定源文件要移动到目标目录
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作
示例:
[root@localhost testdir]# mv test/ test1 #将test目录名改为test1
[root@localhost testdir]# mv /root/bin/ . #将root下的bin目录移动到当前目录中
rm:删除文件或目录
语法:
rm [OPTION]... FILE...
说明:
rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。
注意:使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以,在删除文件之前,最好再看一下文件的内容,确定是否真要删除。rm命令可以用-i选项,这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项,系统会要求你逐一确定是否要删除。这时,必须输入y并按Enter键,才能删除文件。如果仅按Enter键或其他字符,文件不会被删除。
选项:
-d:直接把欲删除的目录的硬连接数据删除成0,删除该目录
-f:强制删除文件或目录
-i:删除已有文件或目录之前先询问用户
-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理
--preserve-root:不对根目录进行递归操作
-v:显示指令的详细执行过程
-i: 交互式
-f: 强制删除
-r: 递归
--no-preserve-root
示例:
[root@localhost testdir]# rm -rf * #删除当前目录下的所有文件,要小心注意
tree 显示目录树
语法:
tree [-acdfghilnpqrstuvxACDFQNSUX] [-H baseHREF] [-T title ] [-L level [-R]]
[-P pattern] [-I pattern] [-o filename] [--version] [--help] [--inodes]
[--device] [--noreport] [--nolinks] [--dirsfirst] [--charset charset]
[--filelimit[=]#] [--si] [--timefmt[=]<f>] [<directory list>]
选项:
-a:显示所有文件和目录
-A:使用ASNI绘图字符显示树状图而非以ASCII字符组合
-C:在文件和目录清单加上色彩,便于区分各种类型
-d:先是目录名称而非内容
-D:列出文件或目录的更改时间
-f:在每个文件或目录之前,显示完整的相对路径名称
-F:在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*","/","@","|"号
-g:列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码
-i:不以阶梯状列出文件和目录名称;
-l:<范本样式> 不显示符号范本样式的文件或目录名称
-l:如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录
-L level:指定显示的层级数目
-n:不在文件和目录清单加上色彩
-N:直接列出文件和目录名称,包括控制字符
-p:列出权限标示
-P pattern: 只显示由指定pattern匹配到的路径
-q:用“?”号取代控制字符,列出文件和目录名称
-s:列出文件和目录大小
-t:用文件和目录的更改时间排序
-u:列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码
-x:将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该目录予以排除在寻找范围外。
示例:
[root@localhost ~]$ tree -L 1 #显示当前目录下的一级目录结构
.
├── backup
├── bin
├── Desktop
├── Documents
├── Downloads
├── function
├── Music
├── Pictures
├── Public
├── repo
├── select
├── Server
├── software
└── Videos
[root@localhost ~]$ tree -L 1 /testdir/ #显示指定目录下的一级目录结构
/testdir/
├── a
└── test1
2 directories, 0 files
mkdir 创建目录
语法:
mkdir [OPTION]... DIRECTORY...
说明:
指定要创建的目录列表,多个目录之间用空格隔开。如果一个目录中有空格需要用双引号引起来,如果不加引号就被视为是两个目录。还可以建立目录的同时设置目录的权限。
选项:
-p:或--parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;
-m<目标属性>:或--mode<目标属性>建立目录的同时设置目录的权限;
-Z:设置安全上下文,当使用SELinux时有效;
示例:
建立子目录test,并且只有文件主有读、写和执行权限,其他人无权访问
[root@localhost testdir]# mkdir -m 700 test
[root@localhost testdir]# ll -d test/
drwx------. 2 root root 6 Aug 29 14:35 test/
[root@localhost testdir]# tree test/
test/
└── linux
└── c1
2 directories, 0 files
在当前目录中递归建立目录,权限设置为文件主可读、写、执行,同组用户可读和执行,其他用户无权访问
[root@localhost testdir]# mkdir -p -m 750 test/linux/c1
[root@localhost testdir]# ll -d test/linux/c1/
drwxr-x---. 2 root root 6 Aug 29 14:37 test/linux/c1/
rmdir 删除空目录
语法:
rmdir [OPTION]... DIRECTORY...
说明:
rmdir命令可以从一个目录中删除一个或多个空的子目录。删除目录时,必须具有对其父目录的写权限。
注意:子目录被删除之前应该是空目录。就是说,该目录中的所有文件必须用rm命令全部,另外,当前工作目录必须在被删除目录之上,不能是被删除目录本身,也不能是被删除目录的子目录。
选项:
-p或--parents:删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除
--ignore-fail-on-non-empty:此选项使rmdir命令忽略由于删除非空目录时导致的错误信息
-v或-verboes:显示命令的详细执行过程
示例:
[root@localhost testdir]$ rmdir gh #删除gh空目录
[root@localhost testdir]$ rmdir test1/ #如果删除的目录不为空,则会报错
rmdir: failed to remove ‘test1/’: Directory not empty
[root@localhost a]$ rmdir -p b
rmdir: failed to remove ‘b’: Directory not empty
[root@localhost a]$ rmdir -p b --ignore-fail-on-non-empty #忽略错误信息
[root@localhost b]$ rmdir -v c/ #显示命令的执行过程
rmdir: removing directory, ‘c/’
本文出自 “Linux路上” 博客,请务必保留此出处http://dreamlinuxc.blog.51cto.com/5733156/1843975
Linux基础命令1:cp、mv、rm、tree、mkdir、rmdir