美文网首页
008.Linux文件目录管理命令基础

008.Linux文件目录管理命令基础

作者: CoderJed | 来源:发表于2020-04-09 10:05 被阅读0次

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/ *,而且在/目录下,同样会删除系统

相关文章

  • 008.Linux文件目录管理命令基础

    1. pwd:显示当前所在的位置 2. cd:切换目录 3. tree:以树型结构显示目录下的内容 4. mkdi...

  • 6.0 Linux - 子目录

    0.0 总目录 6.1系统内核命令 6.3目录文件管理命令 6.3基础系统工作命令 6.4用户与组管理命令 6.5...

  • 2018-07-01

    Linux的文件管理和Bash的基础特性 一:Linux的文件管理类命令 (一)目录管理命令: 1、ls:用于显示...

  • 文件管理

    回顾:文件系统、bash 的基础特性,目录管理、文件查看、时间戳管理 文件管理:cp, mv, rm 复制命令: ...

  • Linux的简单学习记录(三)

    Linux的文件目录管理一、文件和目录管理 1.cd命令与pwd命令 进入文件目录与现实当前文件目录 2.mkdi...

  • Linux操作系统学习笔记 0 ——目录

    环境配置和软件安装环境配置和软件安装地址 初识Linux——命令示例命令示例 目录管理目录管理 文件管理文件管理 ...

  • linux基本文件命令

    linux基本文件命令 文件及目录管理 .. contents:: 目录 文件管理不外乎文件或目录的创建、删除、查...

  • linux常用命令

    文件处理命令 目录处理命令 权限管理命令 文件搜索命令 帮助命令 用户管理命令 压缩解压命令 tar解压缩命令 语...

  • 90.Git基础命令 (VUE全栈开发学习笔记)

    在workspace下执行 基础命令 初次取得Git上工程: 将当前目录下所有目录文件委托Git管理: 将更新过的...

  • Linux学习笔记 -- 07 Linux文件与目录管理

    目录导读 目录与路径 文件与目录管理 文件内容查阅 文件与目录的默认权限与隐藏权限 命令与文件的查询 权限与命令间...

网友评论

      本文标题:008.Linux文件目录管理命令基础

      本文链接:https://www.haomeiwen.com/subject/saxxmhtx.html