1. pwd:显示当前所在的位置
# 显示当前工作目录的绝对路径
[15:31:44 root@node00 tmp]# pwd
/tmp
# 如果当前目录是软链接目录,则显示软链接目录的物理路径
[15:35:54 root@node00 a]# pwd -P
/tmp/a
# 如果当前目录是软链接目录,还是显示逻辑路径(默认)
[15:35:58 root@node00 a]# pwd -L
/tmp/b/a
# 使用PWD环境变量输出当前目录的绝对路径
[15:47:10 root@node00 a]# echo $PWD
/tmp/b/a
2. cd:切换目录
# 切换到home目录,由环境变量$HOME决定
[15:47:51 root@node00 a]# cd
# 切换到home目录,由环境变量$HOME决定
[15:47:51 root@node00 a]# cd ~
# 切换到上一个工作目录
[15:50:02 root@node00 ~]# cd -
# 返回上一级目录
[15:50:51 root@node00 ~]# cd ..
# 切换到软链接目录的源目录
[15:52:20 root@node00 /]# cd /tmp/b/a -P
# 切换到软链接目录的逻辑目录
[15:52:20 root@node00 /]# cd /tmp/b/a -L
3. tree:以树型结构显示目录下的内容
# 安装tree命令
[16:00:29 root@node00 tmp]# yum install -y tree
[15:56:16 root@node00 tmp]# tree /tmp
/tmp
├── a
├── b
│ └── a -> /tmp/a
├── b.txt
├── hsperfdata_root
├── systemd-private-62ed86d1fa3b4a8d8e0f50e9957c5c73-chronyd.service-UIg3EK
│ └── tmp
├── vmware-root_811-4290756501
├── vmware-root_821-4290232204
└── vmware-root_832-2730693535
# 显示所有文件,包括隐藏文件
[15:57:05 root@node00 tmp]# tree -a ~
/root
├── .bash_history
├── .bash_logout
├── .bash_profile
├── .bashrc
├── .cshrc
├── .lesshst
├── .pki
│ └── nssdb
├── .tcshrc
└── .viminfo
# 只显示目录
[15:57:05 root@node00 tmp]# tree -d /tmp
# 显示每个文件的绝对路径
[15:57:05 root@node00 tmp]# tree -f /tmp
[15:57:53 root@node00 tmp]# tree -f /tmp
/tmp
├── /tmp/a
├── /tmp/b
│ └── /tmp/b/a -> /tmp/a
├── /tmp/b.txt
├── /tmp/hsperfdata_root
├── /tmp/systemd-private-62ed86d1fa3b4a8d8e0f50e9957c5c73-chronyd.service-UIg3EK
│ └── /tmp/systemd-private-62ed86d1fa3b4a8d8e0f50e9957c5c73-chronyd.service-UIg3EK/tmp
├── /tmp/vmware-root_811-4290756501
├── /tmp/vmware-root_821-4290232204
└── /tmp/vmware-root_832-2730693535
# 不显示树枝
[15:58:53 root@node00 tmp]# tree -if /tmp
/tmp
/tmp/a
/tmp/b
/tmp/b/a -> /tmp/a
/tmp/b.txt
/tmp/hsperfdata_root
/tmp/systemd-private-62ed86d1fa3b4a8d8e0f50e9957c5c73-chronyd.service-UIg3EK
/tmp/systemd-private-62ed86d1fa3b4a8d8e0f50e9957c5c73-chronyd.service-UIg3EK/tmp
/tmp/vmware-root_811-4290756501
/tmp/vmware-root_821-4290232204
/tmp/vmware-root_832-2730693535
# 指定最大遍历层数
[16:00:25 root@node00 tmp]# tree -L 1 /tmp
/tmp
├── a
├── b
├── b.txt
├── hsperfdata_root
├── systemd-private-62ed86d1fa3b4a8d8e0f50e9957c5c73-chronyd.service-UIg3EK
├── vmware-root_811-4290756501
├── vmware-root_821-4290232204
└── vmware-root_832-2730693535
# 在文件末尾加上文件类型标识符
# /:目录
# *:执行文件
# =:Socket
# @:符号连接
# |:管道
[16:02:24 root@node00 tmp]# tree -F /tmp
/tmp
├── a/
├── b/
│ └── a -> /tmp/a/
├── b.txt
├── hsperfdata_root/
├── systemd-private-62ed86d1fa3b4a8d8e0f50e9957c5c73-chronyd.service-UIg3EK/
│ └── tmp/
├── vmware-root_811-4290756501/
├── vmware-root_821-4290232204/
└── vmware-root_832-2730693535/
4. mkdir:创建目录
# 创建目录,如果目录已经存在,则给出提示
[16:05:35 root@node00 tmp]# mkdir test
# 递归创建目录
[16:05:35 root@node00 tmp]# mkdir -p /test/a/b/c
# 打印创建目录的过程
[16:05:39 root@node00 tmp]# mkdir -pv /tmp/test/a/b/c
mkdir: created directory ‘/tmp/test/a’
mkdir: created directory ‘/tmp/test/a/b’
mkdir: created directory ‘/tmp/test/a/b/c’
# 创建目录并设置权限,递归创建的目录只有第一层目录具有该权限
[16:08:33 root@node00 tmp]# mkdir -p -m 600 /tmp/test2
# {}的特殊用法1
[root@www ~]# mkdir -pv {dir1,dir2}/{dir11,dir22}
mkdir: created directory ‘dir1’
mkdir: created directory ‘dir1/dir11’
mkdir: created directory ‘dir1/dir22’
mkdir: created directory ‘dir2’
mkdir: created directory ‘dir2/dir11’
mkdir: created directory ‘dir2/dir22’
[root@www ~]# tree -d
.
├── dir1
│ ├── dir11
│ └── dir22
└── dir2
├── dir11
└── dir22
# {}的特殊用法2
[root@www ~]# mkdir -pv dir{1..5} dir{a..e}
mkdir: created directory ‘dir1’
mkdir: created directory ‘dir2’
mkdir: created directory ‘dir3’
mkdir: created directory ‘dir4’
mkdir: created directory ‘dir5’
mkdir: created directory ‘dira’
mkdir: created directory ‘dirb’
mkdir: created directory ‘dirc’
mkdir: created directory ‘dird’
mkdir: created directory ‘dire’
# {}的特殊用法3
[root@www ~]# echo {B,C}
B C
[root@www ~]# echo A{B,C}
AB AC
[root@www ~]# echo A{,C}
A AC
- 案例:克隆目录结构
需求:A机器上有一个目录test,其下有很多的子目录和文件,子目录是多级的且深度不一,要在B机器上创建相同的目录test,要求其中的子目录一模一样。
# 查看A机器的test目录结构,--noreport:不显示最后的统计信息
tree -fid --noreport /test
/test
/test/dir
/test/dir2
/test/dir2/aaa
/test/dir2/aaa/bbb
/test/test1
/test/test1/test2
/test/test1/test2/test3
/test/test2
/test/test3
/test/test3/dir
# 上述命令的内容写入文件
tree -fid --noreport /test > test_info.txt
# 读取此文件中的内容创建目录
mkdir -p `cat test_info.txt`
5. touch:创建文件或者更该文件时间戳
# 如果文件不存在,则创建该文件,否则更新该文件的时间戳
[16:11:34 root@node00 tmp]# touch a.txt
# 创建多个文件
[16:11:34 root@node00 tmp]# touch a.txt b.txt
# 批量创建文件,注意是两个点
touch test{0..5}.txt
# 查看文件时间戳
[16:16:34 root@node00 tmp]# stat a.txt
File: ‘a.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 803h/2051d Inode: 16777289 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
# 最新访问时间
Access: 2020-04-08 16:13:23.390704295 +0800
# 最新修改时间
Modify: 2020-04-08 16:13:23.390704295 +0800
# 最新的状态改变时间
Change: 2020-04-08 16:13:23.390704295 +0800
# 只修改访问时间(修改访问时间会自动更新状态改变时间),不加参数的话默认同时修改3个时间
[16:17:46 root@node00 tmp]# touch -a a.txt
[16:19:14 root@node00 tmp]# stat a.txt
File: ‘a.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 803h/2051d Inode: 16777289 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-04-08 16:19:14.359872616 +0800
Modify: 2020-04-08 16:13:23.390704295 +0800
Change: 2020-04-08 16:19:14.359872616 +0800
# 只修改修改时间(修改修改时间会自动更新状态改变时间)
[16:19:15 root@node00 tmp]# touch -m a.txt
[16:19:36 root@node00 tmp]# stat a.txt
File: ‘a.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 803h/2051d Inode: 16777289 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-04-08 16:19:14.359872616 +0800
Modify: 2020-04-08 16:19:36.322009588 +0800
Change: 2020-04-08 16:19:36.322009588 +0800
# 手动指定修改时间 -d yyyyMMdd
[16:23:29 root@node00 tmp]# touch -d 20200408 a.txt
[16:23:36 root@node00 tmp]# stat a.txt
File: ‘a.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 803h/2051d Inode: 16777289 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-04-08 00:00:00.000000000 +0800
Modify: 2020-04-08 00:00:00.000000000 +0800
Change: 2020-04-08 16:23:36.233505783 +0800
# 手动指定修改时间 -t yyyyMMddHHmm.ss
[16:24:50 root@node00 tmp]# touch -t 202004081620.50 a.txt
[16:26:02 root@node00 tmp]# stat a.txt
File: ‘a.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 803h/2051d Inode: 16777289 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-04-08 16:20:50.000000000 +0800
Modify: 2020-04-08 16:20:50.000000000 +0800
Change: 2020-04-08 16:26:02.889420414 +0800
# 设置文件时间戳与另一个指定文件的时间戳相同
[16:23:40 root@node00 tmp]# stat b.txt
File: ‘b.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 803h/2051d Inode: 16809902 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-04-08 16:13:23.390704295 +0800
Modify: 2020-04-08 16:13:23.390704295 +0800
Change: 2020-04-08 16:13:23.390704295 +0800
Birth: -
# 将b.txt的时间戳赋给a.txt
[16:24:21 root@node00 tmp]# touch -r b.txt a.txt
[16:24:47 root@node00 tmp]# stat a.txt
File: ‘a.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 803h/2051d Inode: 16777289 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-04-08 16:13:23.390704295 +0800
Modify: 2020-04-08 16:13:23.390704295 +0800
Change: 2020-04-08 16:24:47.059947500 +0800
Birth: -
6. ls:显示目录下内容及属性信息
- ls命令使用
# 显示所有文件和目录
[16:29:31 root@node00 test]# ls
a.txt b.txt dir01 dir02
# 显示所有文件和目录,包括隐藏目录
[16:29:33 root@node00 test]# ls -a
. .. a.txt b.txt dir01 dir02
# 列出文件和目录的详细属性
[16:30:08 root@node00 test]# ls -l
total 0
-rw-r--r-- 1 root root 0 Apr 8 16:29 a.txt
-rw-r--r-- 1 root root 0 Apr 8 16:29 b.txt
drwxr-xr-x 2 root root 6 Apr 8 16:29 dir01
drwxr-xr-x 2 root root 6 Apr 8 16:29 dir02
# 根据最后修改时间进行排序,默认根据文件名进行排序
16:30:35 root@node00 test]# ls -t
dir01 dir02 a.txt b.txt
# 根据排序规则的相反顺序进行排序
[16:32:23 root@node00 test]# ls -tr
b.txt a.txt dir02 dir01
# 在文件末尾加上文件类型标识符
# /:目录
# *:执行文件
# =:Socket
# @:符号连接
# |:管道
[16:32:45 root@node00 test]# ls -F
a.txt b.txt dir01/ dir02/
# 只在目录后在"/"标识符,其他类型的不加标识符号
[16:36:28 root@node00 test]# ls -p
a.txt b.txt dir01/ dir02/
# 只显示目录,目标是目录,则显示该目录,不列出该目录下的文件
[16:36:17 root@node00 test]# ls -d dir01
dir01
# 显示Inode信息
[16:37:13 root@node00 test]# ls -i
17989879 a.txt 16809902 b.txt 34192561 dir01 50602242 dir02
# 人性化的显示文件的大小,需要与l配套使用
[16:39:31 root@node00 jdk1.8.0_241]# ls -lh
total 26M
drwxr-xr-x. 2 10143 10143 4.0K Dec 11 18:35 bin
-r--r--r--. 1 10143 10143 3.2K Dec 11 18:35 COPYRIGHT
drwxr-xr-x. 3 10143 10143 132 Dec 11 18:35 include
-rw-r--r--. 1 10143 10143 5.0M Dec 11 15:41 javafx-src.zip
drwxr-xr-x. 5 10143 10143 185 Dec 11 18:35 jre
drwxr-xr-x. 5 10143 10143 245 Dec 11 18:35 lib
-r--r--r--. 1 10143 10143 44 Dec 11 18:35 LICENSE
drwxr-xr-x. 4 10143 10143 47 Dec 11 18:35 man
-r--r--r--. 1 10143 10143 159 Dec 11 18:35 README.html
-rw-r--r--. 1 10143 10143 424 Dec 11 18:35 release
-rw-r--r--. 1 10143 10143 21M Dec 11 18:35 src.zip
-rw-r--r--. 1 10143 10143 114K Dec 11 15:41 THIRDPARTYLICENSEREADME-JAVAFX.txt
-r--r--r--. 1 10143 10143 166K Dec 11 18:35 THIRDPARTYLICENSEREADME.txt
# 显示除了"."和".."之外的所有的文件和目录,包括隐藏文件
[16:40:24 root@node00 ~]# ls -A
.bash_history .bash_logout .bash_profile .bashrc .cshrc .lesshst .pki .tcshrc .viminfo
# 根据文件大小降序排序
[16:42:36 root@node00 lib]# ls -S
tools.jar ant-javafx.jar jconsole.jar javafx-mx.jar jexec orb.idl visualvm
ct.sym sa-jdi.jar dt.jar ir.idl packager.jar missioncontrol amd64
# 递归列出所有子目录
[16:43:20 root@node00 jdk1.8.0_241]# ls -R
# 逐行列出项目而不是逐栏列出
[16:43:20 root@node00 jdk1.8.0_241]# ls -x
bin COPYRIGHT include javafx-src.zip jre lib LICENSE man README.html
release src.zip THIRDPARTYLICENSEREADME-JAVAFX.txt THIRDPARTYLICENSEREADME.txt
# 根据扩展名进行排序
[16:44:13 root@node00 jdk1.8.0_241]# ls -X
bin include lib man README.html THIRDPARTYLICENSEREADME.txt src.zip
COPYRIGHT jre LICENSE release THIRDPARTYLICENSEREADME-JAVAFX.txt javafx-src.zip
# 根据状态改变时间进行排序
[16:45:05 root@node00 jdk1.8.0_241]# ls -c
# 根据状态最后访问时间进行排序
[16:45:05 root@node00 jdk1.8.0_241]# ls -u
# 是否使用颜色来区分不同的文件
# auto:自动显示(默认)
# never:不显示
# always:总是显示
[16:47:03 root@node00 test]# ls --color=auto
a.txt b.txt dir01 dir02
# 以完整的时间格式输出
[16:47:20 root@node00 test]# ls --full-time
total 4
-rw-r--r-- 1 root root 11 2020-04-08 16:38:32.326683692 +0800 a.txt
-rw-r--r-- 1 root root 0 2020-04-08 16:29:22.658730596 +0800 b.txt
drwxr-xr-x 2 root root 6 2020-04-08 16:29:30.261785276 +0800 dir01
drwxr-xr-x 2 root root 6 2020-04-08 16:29:30.261785276 +0800 dir02
# 显示状态改变时间,与l选项配合使用(默认使用文件的最后修改时间)
[16:49:47 root@node00 test]# ls -l --time=ctime
total 4
-rw-r--r-- 1 root root 11 Apr 8 16:38 a.txt
-rw-r--r-- 1 root root 0 Apr 8 16:29 b.txt
drwxr-xr-x 2 root root 6 Apr 8 16:29 dir01
drwxr-xr-x 2 root root 6 Apr 8 16:29 dir02
# 显示最后访问时间,与l选项配合使用(默认使用文件的最后修改时间)
[16:49:53 root@node00 test]# ls -l --time=atime
total 4
-rw-r--r-- 1 root root 11 Apr 8 16:29 a.txt
-rw-r--r-- 1 root root 0 Apr 8 16:29 b.txt
drwxr-xr-x 2 root root 6 Apr 8 16:29 dir01
drwxr-xr-x 2 root root 6 Apr 8 16:29 dir02
# 设置时间格式,与l选项配合使用
[16:52:19 root@node00 test]# ls -l --time-style=full-iso
total 4
-rw-r--r-- 1 root root 11 2020-04-08 16:38:32.326683692 +0800 a.txt
-rw-r--r-- 1 root root 0 2020-04-08 16:29:22.658730596 +0800 b.txt
drwxr-xr-x 2 root root 6 2020-04-08 16:29:30.261785276 +0800 dir01
drwxr-xr-x 2 root root 6 2020-04-08 16:29:30.261785276 +0800 dir02
[16:52:25 root@node00 test]# ls -l --time-style=long-iso
total 4
-rw-r--r-- 1 root root 11 2020-04-08 16:38 a.txt
-rw-r--r-- 1 root root 0 2020-04-08 16:29 b.txt
drwxr-xr-x 2 root root 6 2020-04-08 16:29 dir01
drwxr-xr-x 2 root root 6 2020-04-08 16:29 dir02
[16:52:49 root@node00 test]# ls -l --time-style=iso
total 4
-rw-r--r-- 1 root root 11 04-08 16:38 a.txt
-rw-r--r-- 1 root root 0 04-08 16:29 b.txt
drwxr-xr-x 2 root root 6 04-08 16:29 dir01
drwxr-xr-x 2 root root 6 04-08 16:29 dir02
[16:52:57 root@node00 test]# ls -l --time-style=locale
total 4
-rw-r--r-- 1 root root 11 Apr 8 16:38 a.txt
-rw-r--r-- 1 root root 0 Apr 8 16:29 b.txt
drwxr-xr-x 2 root root 6 Apr 8 16:29 dir01
drwxr-xr-x 2 root root 6 Apr 8 16:29 dir02
# 找到最新创建的文件
[17:06:25 root@node00 test]# ls -ltr
total 4
-rw-r--r-- 1 root root 0 Apr 8 16:29 b.txt
drwxr-xr-x 2 root root 6 Apr 8 16:29 dir02
drwxr-xr-x 2 root root 6 Apr 8 16:29 dir01
-rw-r--r-- 1 root root 11 Apr 8 16:38 a.txt
- 给ls命令起别名
# 查看系统默认的ls别名
[16:53:05 root@node00 test]# alias | grep ls
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
# 自定义别名(临时生效)
[16:56:48 root@node00 test]# alias lst='ls -l --time-style=long-iso --color=auto'
[17:00:47 root@node00 test]# lst
total 4
-rw-r--r-- 1 root root 11 2020-04-08 16:38 a.txt
-rw-r--r-- 1 root root 0 2020-04-08 16:29 b.txt
drwxr-xr-x 2 root root 6 2020-04-08 16:29 dir01
drwxr-xr-x 2 root root 6 2020-04-08 16:29 dir02
# 自定义别名(永久生效)
# 编辑/etc/bashrc文件,将别名的配置加入其中
# System wide functions and aliases
# Environment stuff goes in /etc/profile
alias lst='ls -l --time-style=long-iso --color=auto'
# 保存退出然后 source /etc/bashrc
- 使用
ls -li
列出的文件或者目录的属性内容
7. cp:复制文件或目录
-
cp
命令使用
# 将a.txt复制为a2.txt
[17:10:53 root@node00 test]# cp a.txt a2.txt
# 如果a是一个软链接,则复制后的文件c也是一个软链接,由a的源文件指定c
[17:46:15 root@node00 test]# cp -d a c
[17:46:26 root@node00 test]# ll
total 12
lrwxrwxrwx 1 root root 5 2020-04-08 17:45 a -> a.txt
-rw-r--r-- 1 root root 11 2020-04-08 16:38 a.txt
lrwxrwxrwx 1 root root 5 2020-04-08 17:46 c -> a.txt
# 复制后的文件保留原文件的属性:所有者、所属组、权限以及时间戳
[17:46:15 root@node00 test]# cp -p a.txt a3.txt
[17:46:27 root@node00 test]# cp -p a.txt a3.txt
[17:49:24 root@node00 test]# stat a.txt
File: ‘a.txt’
Size: 11 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 17989879 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-04-08 17:44:23.713472120 +0800
Modify: 2020-04-08 16:38:32.326683692 +0800
Change: 2020-04-08 16:38:32.326683692 +0800
Birth: -
[17:49:28 root@node00 test]# stat a3.txt
File: ‘a3.txt’
Size: 11 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 17989880 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-04-08 17:44:23.713472120 +0800
Modify: 2020-04-08 16:38:32.326683692 +0800
Change: 2020-04-08 17:49:24.921869537 +0800
# 递归复制目录以及子目录和文件
[17:51:42 root@node00 test]# cp -r dir01 dir03
# -a:等同于-pdr
[17:51:42 root@node00 test]# cp -a dir01 dir04
# 如果目标文件存在,提示用户是否进行覆盖
# 默认cp带-i选项,因为系统定义了cp的别名
[17:52:11 root@node00 test]# cp -i a.txt a2.txt
cp: overwrite ‘a2.txt’? y/n
[17:58:40 root@node00 test]# alias | grep cp
alias cp='cp -i'
# 将多个文件复制到指定的目录中
[17:58:08 root@node00 test]# cp a.txt a2.txt dir01
[17:58:35 root@node00 test]# ls dir01/
a2.txt a.txt
# 如果目标参数在前,需要使用-t选项
[17:58:39 root@node00 test]# cp -t dir02 a.txt a2.txt
[17:58:40 root@node00 test]# ls dir02/
a2.txt a.txt
# 当文件路径重复时,可以使用{}来快捷书写
# 以下两种写法是等效的
[18:06:15 root@node00 test]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
[18:07:29 root@node00 test]# cp /etc/ssh/sshd_config{,.bak}
- 让
cp
不带-i
选项的方法
# 1.使用命令绝对路径,这样就不会使用别名
[17:59:30 root@node00 test]# which cp
alias cp='cp -i'
/usr/bin/cp
[18:01:02 root@node00 test]# /usr/bin/cp a.txt a2.txt
# 2.命令开头使用"\"
[18:01:17 root@node00 test]# \cp a.txt a2.txt
# 3.临时取消cp的别名
unalias cp
# 4.永久取消cp的别名
# 修改/root/bashrc
# User specific aliases and functions
alias rm='rm -i'
# 注释掉之后,保存退出,source /root/bashrc
# alias cp='cp -i'
alias mv='mv -i'
8. mv:移动或者重命名文件
# 将a.txt的名称修改为aa.txt
# 如果目标文件是一个已经存在的目录,则把目标文件移动到该目录下
[18:11:01 root@node00 test]# mv a.txt aa.txt
# 如果目标文件已经存在,则不会询问是否覆盖,而是直接覆盖
[18:13:41 root@node00 test]# mv -f a.txt a2.txt
# 如果目标文件已经存在,则询问是否覆盖,而不是直接覆盖
[18:13:41 root@node00 test]# mv -i a.txt a2.txt
# mv默认使用-i选项,因为系统内置了mv的别名
[18:19:20 root@node00 test]# alias | grep mv
alias mv='mv -i'
# 如果目标文件已经存在,则不会覆盖目标文件,而是什么也不做
[18:13:41 root@node00 test]# mv -n a.txt a2.txt
# 只有在源文件比目标文件新,或者目标文件不存在的时候,才进行移动
[18:13:41 root@node00 test]# mv -u a.txt a2.txt
# 移动多个文件到指定目录下
# 如果目标目录在前,需要使用-t选项
[18:13:50 root@node00 test]# mv a2.txt a3.txt dir02/
# 把dir02/a2.txt dir02/a3.txt这两个文件移动到dir03目录下
[18:17:13 root@node00 test]# mv -t dir03 dir02/a2.txt dir02/a3.txt
9. rm:删除文件或者目录
# 删除文件
[18:24:09 root@node00 test]# rm a.txt
rm: remove regular file ‘a.txt’? y
# 强制删除,忽略不存在的文件,不提示是否确认删除
[18:24:18 root@node00 test]# rm -f b
# 删除之前询问是否删除,默认询问,因为系统别名中设置了
[18:24:18 root@node00 test]# rm -i b
[18:25:29 root@node00 test]# alias | grep rm
alias rm='rm -i'
# 递归删除目录
[18:26:45 root@node00 test]# rm -rf dir01
# 在删除超过三个文件或者递归删除前要求确认
[18:28:11 root@node00 test]# rm -rI dir04
rm: remove 1 argument recursively? y
10. 危险操作
- CentOS7中,执行
rm -rf /
将会给出警告信息
[18:28:31 root@node00 test]# rm -rf /
rm: it is dangerous to operate recursively on ‘/’
rm: use --no-preserve-root to override this failsafe
-
执行
rm -rf --no-preserve-root /
将会直接删除/
-
执行
rm -rf /*
将会直接删除/
,不会给任何警告信息 -
执行
rm -rf ./*
,如果不小心多加了空格,并且命令在重要的目录执行,可能造成灾难事件,例如:原意是rm -rf ./test/*
,结果执行了rm -rf ./test/ *
,而且在/
目录下,同样会删除系统
网友评论