第七章 Linux系统文件管理之基础命令

一、文件管理之基础命令-pwd

1.含义

pwd命令来自于英文词组”print working directory“的缩写,其功能是用于显示当前工作目录的路径,即显示所在位置的绝对路径。

在实际工作中,我们经常会在不同目录之间进行切换,为了防止”迷路“,可以使用pwd命令快速查看当前所处的工作目录路径,方便开展后续工作。

语法格式:pwd [参数]

2.常用示例

[root@jindada ~]# cd /usr/
[root@jindada usr]# pwd
/usr
[root@jindada usr]# cd local/
[root@jindada local]# pwd
/usr/local

二、文件管理之基础命令-cd

1.含义

cd命令来自于英文词组”change directory“的缩写,其功能是用于更改当前所处的工作目录,路径可以是绝对路径,也可以是相对路径,若省略不写则会跳转至当前使用者的家目录。

语法格式:cd [参数] [目录名]

2.常用参数:

-P 如果切换的目标目录是一个符号链接,则直接切换到符号链接指向的目标目录
-L 如果切换的目标目录是一个符号链接,则直接切换到符号链接名所在的目录
-- 仅使用”-“选项时,当前目录将被切换到环境变量”OLDPWD”对应值的目录
~ 切换至当前用户目录
.. 切换至当前目录位置的上一级目录

3.常用示例

切换当前工作目录至/etc:

[root@jindada ~]# cd /etc
[root@jindada etc]#

切换至当前用户的家目录:

[root@jindada etc]# cd ~
[root@jindada ~]# 

进入到上一级所在目录(家目录→根目录):

[root@jindada ~]# cd ..
[root@jindada /]# 

返回到上一次所在目录(根目录→家目录):

[root@jindada /]# cd -
/root
[root@jindada ~]# 

三、文件管理之基础命令-ls

1.含义

ls是最常被使用到的Linux命令之一,来自于英文单词list的缩写,也正如list单词的英文意思,其功能是列举出指定目录下的文件名称及其属性。

默认不加参数的情况下,ls命令会列出当前工作目录中的文件信息,经常与cd和pwd命令搭配使用,十分方便。而带上参数后,我们则可以做更多的事情,作为最基础、最频繁使用的命令,有必要仔细了解下其常用功能。

语法格式: ls [参数] [文件]

2.常用参数:

-a 显示所有文件及目录 (包括以“.”开头的隐藏文件)
-l 使用长格式列出文件及目录的详细信息
-r 将文件以相反次序显示(默认依英文字母次序)
-t 根据最后的修改时间排序,最新的时间在最上面
-A 同 -a ,但不列出 “.” (当前目录) 及 “..” (父目录)
-S 根据文件大小排序,从大到小显示
-R 递归列出所有子目录
-d 查看目录的信息,而不是里面子文件的信息。/ 目录 * 可执行文件 = 套接字文件,socker文件 | 管道文件
-i 输出文件的inode节点信息,索引节点信息
-h 以字节大小显示文件大小 B KB MB GB
-F 给不同的文件加上不同的标识符
-m 水平列出文件,以逗号间隔
-X 按文件扩展名排序
--color 输出信息中带有着色效果

3.常用示例

输出当前目录中的文件(默认不含隐藏文件):

[root@jindada ~]# ls
anaconda-ks.cfg  Documents  initial-setup-ks.cfg  Pictures  Templates
Desktop          Downloads  Music                 Public    Videos

输出当前目录中的文件(含隐藏文件):

[root@jindada ~]# ls -a
.                .bashrc  Documents             Music      Videos
..               .cache   Downloads             Pictures   .viminfo
anaconda-ks.cfg  .config  .esd_auth             .pki
.bash_history    .cshrc   .ICEauthority         Public
.bash_logout     .dbus    initial-setup-ks.cfg  .tcshrc
.bash_profile    Desktop  .local                Templates

输出文件的长格式,包含属性详情信息:

[root@jindada ~]# ls -l #系统自带别名相当于[root@jindada ~]# ll
total 8
-rw-------. 1 root root 1430 Dec 14 08:05 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 Dec 14 08:37 Desktop
drwxr-xr-x. 2 root root    6 Dec 14 08:37 Documents
drwxr-xr-x. 2 root root    6 Dec 14 08:37 Downloads
-rw-r--r--. 1 root root 1585 Dec 14 08:34 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 Dec 14 08:37 Music
drwxr-xr-x. 2 root root    6 Dec 14 08:37 Pictures
drwxr-xr-x. 2 root root    6 Dec 14 08:37 Public
drwxr-xr-x. 2 root root    6 Dec 14 08:37 Templates
drwxr-xr-x. 2 root root    6 Dec 14 08:37 Videos

输出指定目录中的文件列表:

[root@jindada ~]# ls /etc
adjtime                     hosts                     pulse
aliases                     hosts.allow               qemu-ga
alsa                        hosts.deny                qemu-kvm
alternatives                hp                        radvd.conf
anacrontab                  idmapd.conf               ras
asound.conf                 init.d                    rc0.d
at.deny                     inittab                   rc1.d
………………省略部分输出信息………………

输出文件名称及inode属性块号码:

[root@jindada ~]# ls -i
35290115 anaconda-ks.cfg  35290137 initial-setup-ks.cfg  35290164 Templates
 1137391 Desktop          17840039 Music                 51609597 Videos
 1137392 Documents        35290165 Pictures
17840038 Downloads        51609596 Public

搭配通配符一起使用,输出指定目录中所有以sd开头的文件名称:

[root@jindada ~]# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2

依据文件大小进行排序,输出指定目录中文件属性详情信息:

[root@jindada ~]# ls -Sl /etc
total 1348
-rw-r--r--.  1 root root    692241 Sep 10  2018 services
-rw-r--r--.  1 root root     66482 Dec 14 08:34 ld.so.cache
-rw-r--r--.  1 root root     60352 May 11  2017 mime.types
-rw-r--r--.  1 root dnsmasq  26843 Aug 12  2018 dnsmasq.conf
-rw-r--r--.  1 root root     25696 Dec 12  2018 brltty.conf
-rw-r--r--.  1 root root      9450 Aug 12  2018 nanorc
-rw-r--r--.  1 root root      7265 Dec 14 08:03 kdump.conf
-rw-------.  1 tss  tss       7046 Aug 13  2018 tcsd.conf

以字节大小显示文件信息

[root@jindada ~]# ll -h
total 12K
-rw-------.  1 root root 1.4K Jul  8 12:26 anaconda-ks.cfg
-rw-r--r--   1 root root   30 Jul  8 12:09 day01.txt
-rw-------.  1 root root 2.3K Jul  3 14:31 dead.letter
drwxr-xr-x  12 root root  106 Jul  8 12:18 oldboy
drwxr-xr-x   2 root root   46 Jul  6 12:20 qingshu_dir
-rwxr-xr-x   1 root root    0 Jul  7 20:40 test.txt

显示所有的文件,隐藏文件,并从大到小显示

[root@jindada ~]# ll -aS		
total 48
-rw-------   1 root root 6003 Jul  7 18:40 .viminfo
-rw-------.  1 root root 3258 Jul  8 00:48 .bash_history
-rw-------.  1 root root 2276 Jul  3 14:31 dead.letter
-rw-------.  1 root root 1350 Jul  8 12:26 anaconda-ks.cfg
dr-xr-x---.  5 root root  272 Jul  8 12:29 .
dr-xr-xr-x. 18 root root  236 Jul  3 16:31 ..
-rw-r--r--.  1 root root  176 Dec 29  2013 .bash_profile
-rw-r--r--.  1 root root  176 Dec 29  2013 .bashrc
-rw-------   1 root root  170 Jul  7 11:04 .mysql_history
-rw-r--r--.  1 root root  129 Dec 29  2013 .tcshrc
drwxr-xr-x  12 root root  106 Jul  8 12:18 oldboy
-rw-r--r--.  1 root root  100 Dec 29  2013 .cshrc
drwxr-xr-x.  2 root root   68 Jul  6 12:20 .certs
drwxr-xr-x   2 root root   46 Jul  6 12:20 qingshu_dir
-rw-r--r--   1 root root   30 Jul  8 12:09 day01.txt
-rw-r--r--.  1 root root   18 Dec 29  2013 .bash_logout
-rwxr-xr-x   1 root root    0 Jul  7 20:40 test.txt

显示所有文件,隐藏文件并根据时间进行排序

[root@jindada ~]# ll -at
total 48
dr-xr-x---.  5 root root  272 Jul  8 12:29 .
-rw-------.  1 root root 1350 Jul  8 12:26 anaconda-ks.cfg
drwxr-xr-x  12 root root  106 Jul  8 12:18 oldboy
-rw-r--r--   1 root root   30 Jul  8 12:09 day01.txt
-rw-------.  1 root root 3258 Jul  8 00:48 .bash_history
-rwxr-xr-x   1 root root    0 Jul  7 20:40 test.txt
-rw-------   1 root root 6003 Jul  7 18:40 .viminfo
-rw-------   1 root root  170 Jul  7 11:04 .mysql_history
drwxr-xr-x.  2 root root   68 Jul  6 12:20 .certs
drwxr-xr-x   2 root root   46 Jul  6 12:20 qingshu_dir
dr-xr-xr-x. 18 root root  236 Jul  3 16:31 ..
-rw-------.  1 root root 2276 Jul  3 14:31 dead.letter
-rw-r--r--.  1 root root   18 Dec 29  2013 .bash_logout
-rw-r--r--.  1 root root  176 Dec 29  2013 .bash_profile
-rw-r--r--.  1 root root  176 Dec 29  2013 .bashrc
-rw-r--r--.  1 root root  100 Dec 29  2013 .cshrc
-rw-r--r--.  1 root root  129 Dec 29  2013 .tcshrc

显示所有文件,隐藏文件并根据时间顺序进行倒序排序

[root@jindada ~]# ll -atr
total 48
-rw-r--r--.  1 root root  129 Dec 29  2013 .tcshrc
-rw-r--r--.  1 root root  100 Dec 29  2013 .cshrc
-rw-r--r--.  1 root root  176 Dec 29  2013 .bashrc
-rw-r--r--.  1 root root  176 Dec 29  2013 .bash_profile
-rw-r--r--.  1 root root   18 Dec 29  2013 .bash_logout
-rw-------.  1 root root 2276 Jul  3 14:31 dead.letter
dr-xr-xr-x. 18 root root  236 Jul  3 16:31 ..
drwxr-xr-x   2 root root   46 Jul  6 12:20 qingshu_dir
drwxr-xr-x.  2 root root   68 Jul  6 12:20 .certs
-rw-------   1 root root  170 Jul  7 11:04 .mysql_history
-rw-------   1 root root 6003 Jul  7 18:40 .viminfo
-rwxr-xr-x   1 root root    0 Jul  7 20:40 test.txt
-rw-------.  1 root root 3258 Jul  8 00:48 .bash_history
-rw-r--r--   1 root root   30 Jul  8 12:09 day01.txt
drwxr-xr-x  12 root root  106 Jul  8 12:18 oldboy
-rw-------.  1 root root 1350 Jul  8 12:26 anaconda-ks.cfg
dr-xr-x---.  5 root root  272 Jul  8 12:29 .

显示所有文件,隐藏文件并根据文件大小进行倒序排序

[root@jindada ~]# ll -aSr
total 48
-rwxr-xr-x   1 root root    0 Jul  7 20:40 test.txt
-rw-r--r--.  1 root root   18 Dec 29  2013 .bash_logout
-rw-r--r--   1 root root   30 Jul  8 12:09 day01.txt
drwxr-xr-x   2 root root   46 Jul  6 12:20 qingshu_dir
drwxr-xr-x.  2 root root   68 Jul  6 12:20 .certs
-rw-r--r--.  1 root root  100 Dec 29  2013 .cshrc
drwxr-xr-x  12 root root  106 Jul  8 12:18 oldboy
-rw-r--r--.  1 root root  129 Dec 29  2013 .tcshrc
-rw-------   1 root root  170 Jul  7 11:04 .mysql_history
-rw-r--r--.  1 root root  176 Dec 29  2013 .bashrc
-rw-r--r--.  1 root root  176 Dec 29  2013 .bash_profile
dr-xr-xr-x. 18 root root  236 Jul  3 16:31 ..
dr-xr-x---.  5 root root  272 Jul  8 12:29 .
-rw-------.  1 root root 1350 Jul  8 12:26 anaconda-ks.cfg
-rw-------.  1 root root 2276 Jul  3 14:31 dead.letter
-rw-------.  1 root root 3258 Jul  8 00:48 .bash_history
-rw-------   1 root root 6003 Jul  7 18:40 .viminfo

显示所有文件,隐藏文件并加上不同的标识符

[root@jindada ~]# ll -aF
total 48
dr-xr-x---.  5 root root  272 Jul  8 12:29 ./
dr-xr-xr-x. 18 root root  236 Jul  3 16:31 ../
-rw-------.  1 root root 1350 Jul  8 12:26 anaconda-ks.cfg
-rw-------.  1 root root 3258 Jul  8 00:48 .bash_history
-rw-r--r--.  1 root root   18 Dec 29  2013 .bash_logout
-rw-r--r--.  1 root root  176 Dec 29  2013 .bash_profile
-rw-r--r--.  1 root root  176 Dec 29  2013 .bashrc
drwxr-xr-x.  2 root root   68 Jul  6 12:20 .certs/
-rw-r--r--.  1 root root  100 Dec 29  2013 .cshrc
-rw-r--r--   1 root root   30 Jul  8 12:09 day01.txt
-rw-------.  1 root root 2276 Jul  3 14:31 dead.letter
-rw-------   1 root root  170 Jul  7 11:04 .mysql_history
drwxr-xr-x  12 root root  106 Jul  8 12:18 oldboy/
drwxr-xr-x   2 root root   46 Jul  6 12:20 qingshu_dir/
-rw-r--r--.  1 root root  129 Dec 29  2013 .tcshrc
-rwxr-xr-x   1 root root    0 Jul  7 20:40 test.txt*
-rw-------   1 root root 6003 Jul  7 18:40 .viminfo

显示/root/目录本身信息

[root@jindada ~]# ll -d /root/
dr-xr-x---. 5 root root 272 Jul  8 12:29 /root/

显示/目录下的文件

[root@jindada ~]# ls /
bin   data  etc   lib    media  opt   root  sbin  sys  usr
boot  dev   home  lib64  mnt    proc  run   srv   tmp  var

四、文件管理之基础命令-tree

1.含义

tree命令的功能是用于以树状图形式列出目录内容,帮助运维人员快速了解到目录的层级关系。

语法格式:tree [参数]

2.常用参数

-a 显示所有文件和目录
-A ASNI绘图字符形式
-C 彩色显示
-d 仅显示目录名称
-D 显示文件更改时间
-f 显示完整的相对路径名称
-g 显示文件所属群组名称
-i 不以阶梯状列出文件或目录名称
-I<范本样式> 不显示符合范本样式的文件或目录名称
-l 直接显示连接文件所指向的原始目录
-n 不在文件和目录清单上加上色彩
-N 直接列出文件和目录名称
-p 列出权限标示
-P<范本样式> 只显示符合范本像是的文件或目录名称
-q 用“?”号取代控制字符,列出文件和目录名称
-s 列出文件或目录大小
-t 用文件和目录的更改时间排序
-u 列出文件或目录的拥有者名称
-x 将范围局限在现行的文件系统中
-L 层级显示
-F 给不同类型的文件加上不同的标识符。/ 目录,* 可执行文件,= 套接字文件 socker文件,| 管道文件

3.常用示例

显示当前目录的目录列表

[root@jindada ~]# tree		
.
├── anaconda-ks.cfg
├── day01.txt
├── dead.letter
├── qingshu_dir
│   ├── qingshu1.txt
│   └── qingshu2.txt
└── test.txt

1 directory, 6 files

显示当前目录的全部文件。隐藏文件列表

[root@jindada ~]# tree -a
.
├── anaconda-ks.cfg
├── .bash_history
├── .bash_logout
├── .bash_profile
├── .bashrc
├── .certs
│   ├── cert8.db
│   ├── key3.db
│   ├── qq.crt
│   └── secmod.db
├── .cshrc
├── day01.txt
├── dead.letter
├── .mysql_history
├── qingshu_dir
│   ├── qingshu1.txt
│   └── qingshu2.txt
├── .tcshrc
├── test.txt
└── .viminfo

2 directories, 18 files

只显示目录及目录的数量

[root@jindada ~]# tree -d /var/log
/var/log
├── anaconda
├── audit
├── mariadb
├── nginx
├── ntpstats
├── rhsm
├── sa
└── tuned

8 directories

显示文件的大小

[root@jindada ~]# tree -h /var/log/
/var/log/
├── [ 176]  anaconda
│   ├── [ 41K]  anaconda.log
│   ├── [3.9K]  ifcfg.log
│   ├── [1.9M]  journal.log
│   ├── [   0]  ks-script-gg9B9N.log
│   ├── [200K]  packaging.log

显示家目录下2级的文件或者目录

[root@jindada ~]# tree  -L 2 /root/
/root/
├── anaconda-ks.cfg
├── day01.txt
├── dead.letter
├── qingshu_dir
│   ├── qingshu1.txt
│   └── qingshu2.txt
└── test.txt

1 directory, 6 files

以绝对路径的形式显示文件列表

[root@sh-jindada ~]# tree -f  /root
/root
├── /root/10.txt
├── /root/1.txt
├── /root/2.txt
├── /root/3.txt
├── /root/4.txt
├── /root/5.txt
├── /root/6.txt
├── /root/7.txt
├── /root/8.txt
└── /root/9.txt

五、文件管理之基础命令-mkdir

1.含义

mkdir命令来自于英文词组“make directories”的缩写,其功能是用来创建目录文件。使用简单,但需要注意若要创建的目标目录已经存在,则会提示已存在而不继续创建,不覆盖已有文件。而目录不存在,但具有嵌套的依赖关系,例如a/b/c/d/e/f,要想一次性创建则需要加入-p参数,进行递归操作。

语法格式 : mkdir [参数] 目录

2.常用参数:

-p 递归创建多级目录
-m 建立目录的同时设置目录的权限
-z 设置安全上下文
-v 显示目录的创建过程
{} 生成序列 有规律和无规律 有规律使用..分割 无规律的使用逗号分割
* 通配符 所有的意思

3.常用示例

在当前工作目录中,建立一个目录文件

[root@jindada ~]# mkdir dir1

在当前工作目录中,创建一个目录文件并设置700权限,不让除所有主以外任何人读、写、执行它

[root@jindada ~]# mkdir -m 700 dir2

在系统根目录中,一次性创建多个有嵌套关系的目录文件

[root@jindada ~]# mkdir -p /dir1/dir2/dir3/dir4/dir5

在系统根目录中,一次性创建多个有嵌套关系的目录文件

[root@jindada ~]# mkdir  test/data{01..10}		#批量创建10个目录 
[root@jindada ~]# ll test/
total 0
drwxr-xr-x. 2 root root 6 Jul  8 20:09 data01
drwxr-xr-x. 2 root root 6 Jul  8 20:09 data02
drwxr-xr-x. 2 root root 6 Jul  8 20:09 data03
drwxr-xr-x. 2 root root 6 Jul  8 20:09 data04
drwxr-xr-x. 2 root root 6 Jul  8 20:09 data05
drwxr-xr-x. 2 root root 6 Jul  8 20:09 data06
drwxr-xr-x. 2 root root 6 Jul  8 20:09 data07
drwxr-xr-x. 2 root root 6 Jul  8 20:09 data08
drwxr-xr-x. 2 root root 6 Jul  8 20:09 data09
drwxr-xr-x. 2 root root 6 Jul  8 20:09 data10

[root@jindada ~]# echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z
[root@jindada ~]# echo {a..g}
a b c d e f g
[root@jindada ~]# echo {A..Z}
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

[root@jindada ~]# mkdir  test/oldboy-{a..g}


[root@jindada ~]# ll  -d  test/oldboy-*
drwxr-xr-x. 2 root root 6 Jul  8 20:11 test/oldboy-a
drwxr-xr-x. 2 root root 6 Jul  8 20:11 test/oldboy-b
drwxr-xr-x. 2 root root 6 Jul  8 20:11 test/oldboy-c
drwxr-xr-x. 2 root root 6 Jul  8 20:11 test/oldboy-d
drwxr-xr-x. 2 root root 6 Jul  8 20:11 test/oldboy-e
drwxr-xr-x. 2 root root 6 Jul  8 20:11 test/oldboy-f
drwxr-xr-x. 2 root root 6 Jul  8 20:11 test/oldboy-g


[root@jindada ~]# mkdir  data-{a,c,d,h}
[root@jindada ~]# ll
total 4
-rw-------.  1 root root 1429 Jul  6 02:17 anaconda-ks.cfg
drwxr-xr-x.  2 root root    6 Jul  8 19:51 data
drwxr-xr-x.  2 root root    6 Jul  8 20:02 data01
drwx------.  2 root root    6 Jul  8 20:04 data02
drwxr-xr-x.  2 root root    6 Jul  8 20:12 data-a
drwxr-xr-x.  2 root root    6 Jul  8 20:12 data-c
drwxr-xr-x.  2 root root    6 Jul  8 20:12 data-d
drwxr-xr-x.  2 root root    6 Jul  8 20:12 data-h

[root@jindada ~]# mkdir  -p  oldboy/{01..10}/data{01..10}/test{01..10}

在Linux系统中,文件是区分大小写的

[root@jindada ~]# mkdir  a
[root@jindada ~]# mkdir  A
[root@jindada ~]# ll
total 4
drwxr-xr-x.  2 root root    6 Jul  8 12:25 a
drwxr-xr-x.  2 root root    6 Jul  8 12:25 A

4.常见问题

[root@jindada ~]# mkdir  /root/data
mkdir: cannot create directory ‘/root/data’: File exists

File exists			#文件已经存在 
	
解决:  
1. 你要创建的目录已经存在,无需再次进行创建 
2. 你要创建的目录路径书写错误  

六、文件管理之基础命令-touch

1.含义

touch命令的功能是用于创建空文件与修改时间戳。如果文件不存在,则会创建出一个空内容的文本文件;如果文件已经存在,则会对文件的Atime(访问时间)和Ctime(修改时间)进行修改操作,管理员可以完成此项工作,而普通用户只能管理主机的文件。

语法格式:touch [参数] 文件

2.常用参数:

-a 改变档案的读取时间记录
-m 改变档案的修改时间记录
-r 使用参考档的时间记录,与 --file 的效果一样
{} 生成序列 有规律和无规律 有规律使用..分割 无规律的使用逗号分割
-c 不创建新文件
-d 设定时间与日期,可以使用各种不同的格式
-t 设定档案的时间记录,格式与 date 命令相同
--no-create 不创建新文件
--help 显示帮助信息
--version 列出版本讯息

3.常见示例

创建出一个指定名称的空文件

[root@jindada ~]# touch File.txt

结合通配符,创建出多个指定名称的空文件

[root@jindada ~]# touch File{1..5}.txt

修改指定文件的查看时间和修改时间

[root@jindada ~]# touch -d "2022-05-08 15:44" anaconda-ks.cfg 
[root@jindada ~]# stat anaconda-ks.cfg 
  File: anaconda-ks.cfg
  Size: 1256      	Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 35319937    Links: 1
Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:admin_home_t:s0
Access: 2022-05-08 15:44:00.000000000 +0800
Modify: 2022-05-08 15:44:00.000000000 +0800
Change: 2022-05-06 15:43:47.843170709 +0800
 Birth: -

七、文件管理之基础命令-cp

1.含义

cp命令来自于英文单词copy的缩写,用于将一个或多个文件或目录复制到指定位置,亦常用于文件的备份工作。-r参数用于递归操作,复制目录时若忘记加则会直接报错,而-f参数则用于当目标文件已存在时会直接覆盖不再询问,这两个参数尤为常用。

语法格式:cp [参数] 源文件 目标文件

2.常用参数:

-f 若目标文件已存在,则会直接覆盖原文件
-i 若目标文件已存在,则会询问是否覆盖,系统自带的别名
-p 保留源文件或目录的所有属性
-t 把源文件的位置根目标目录的位置进行调换 在批量拷贝文件时使用
-r 递归复制文件和目录
-d 当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录
-l 对源文件建立硬连接,而非复制文件
-s 对源文件建立符号连接,而非复制文件
-b 覆盖已存在的文件目标前将目标文件备份
-v 详细显示cp命令执行的操作过程
-a 等价于“pdr”选项

3.常用示例

在当前工作目录中,将某个文件复制一份,并定义新文件名称

[root@jindada ~]# cp anaconda-ks.cfg kickstart.cfg

在当前工作目录中,将某个目录复制一份,并定义新目录名称

[root@jindada ~]# cp -r Documents Doc

复制某个文件时,保留其原始权限及用户归属信息

[root@jindada ~]# cp -a kickstart.cfg ks.cfg

将某个文件复制到/etc目录中,并覆盖已有文件,不进行询问

[root@jindada ~]# cp -f ks.cfg /etc

将多个文件一同复制到/etc目录中,如已有目标文件名称则默认询问是否覆盖

[root@jindada ~]# cp  /etc/hosts   ./
cp: overwrite ‘./hosts’? n

[root@jindada ~]# alias 
alias cp='cp -i'


#强制覆盖不提示    临时取消别名 
[root@jindada ~]# \cp  /etc/hosts  ./

把源文件的位置根目标目录的位置进行调换

[root@jindada ~]# cp  -t  ./   /etc/fstab 
[root@jindada ~]# ll
total 16
lrwxrwxrwx. 1 root root   7 Jul  6 02:13 bin -> usr/bin
-rw-r--r--. 1 root root 501 Jul  9 09:21 fstab
lrwxrwxrwx. 1 root root  22 Jul  9 09:16 grub2.cfg -> ../boot/grub2/grub.cfg
-rw-r--r--. 1 root root 158 Jul  9 09:11 hosts
drwxr-xr-x. 2 root root   6 Jul  9 09:14 opt
-rw-r--r--. 1 root root 873 Jul  9 09:11 passwd
-rw-r--r--. 1 root root  51 Jul  9 09:11 resolv.conf

八、文件管理之基础命令-mv

1.含义

mv命令来自于英文单词move的缩写,其功能与英文含义相同,用于对文件进行剪切和重命名。

这是一个高频使用的文件管理命令,我们需要留意它与复制命令的区别。cp命令是用于文件的复制操作,文件个数是增加的,而mv则为剪切操作,也就是对文件进行移动(搬家)操作,文件位置发生变化,但总个数并无增加。

在同一个目录内对文件进行剪切的操作,实际应理解成重命名操作,例如下面的实例一所示。

语法格式:mv [参数] 源文件 目标文件

2.常用参数:

-i 若存在同名文件,则向用户询问是否覆盖
-f 覆盖已有文件时,不进行任何提示
-b 当文件存在时,覆盖前为其创建一个备份
-u 当源文件比目标文件新,或者目标文件不存在时,才执行移动此操作
\ 临时取消别名的含义

3.常用示例

在当前工作目录中,对某个文件进行剪切后粘贴(重命名)操作

[root@jindada ~]# mv anaconda-ks.cfg ks.cfg

将某个文件移动到/etc目录中,保留文件原始名称

[root@jindada ~]# mv ks.cfg /etc

将某个目录移动到/etc目录中,并定义新的目录名称

[root@jindada ~]# mv Documents /etc/docs

将/home目录中所有的文件都移动到当前工作目录中,遇到已存在文件则直接覆盖

[root@jindada ~]# mv -f /home/* .

把原位置跟目标位置进行调换

[root@jindada ~]# mv -t  ./  /opt/hosts
[root@jindada ~]# ll
total 16
-rw-r--r--. 1 root root 4201 Jun 15 12:24 grub2.cfg
-rw-r--r--. 1 root root  158 Jun 16 09:05 hosts
drwxr-xr-x. 2 root root    6 Apr 11  2018 opt
-rw-r--r--. 1 root root 1013 Jun 16 09:09 passwd
[root@jindada ~]# ll /opt/
total 0
drwxr-xr-x. 2 root root 23 Jun 15 12:22 test

重命名文件

[root@jindada ~]# mv grub2.cfg  123.txt
[root@jindada ~]# ll
total 16
-rw-r--r--. 1 root root 4201 Jun 15 12:24 123.txt
-rw-r--r--. 1 root root  158 Jun 16 09:05 hosts
drwxr-xr-x. 2 root root    6 Apr 11  2018 opt
-rw-r--r--. 1 root root 1013 Jun 16 09:09 passwd
[root@jindada ~]# mv opt/  test
[root@jindada ~]# ll
total 16
-rw-r--r--. 1 root root 4201 Jun 15 12:24 123.txt
-rw-r--r--. 1 root root  158 Jun 16 09:05 hosts
-rw-r--r--. 1 root root 1013 Jun 16 09:09 passwd
drwxr-xr-x. 2 root root    6 Apr 11  2018 test

九、文件管理之基础命令-rename

1.含义

rename命令的功能是用于批量修改文件名称。与mv命令一次只能修改一个文件名不同,rename命令能够基于正则表达式对文件名进行批量修改,但要求是把匹配规则准确的描述给系统。

rename命令的参数有三项:其一是当前文件名中要被修改的字符,其二是其要被修改为的新字符,其三是要被执行的对象文件列表。初次可能有点难理解,动手尝试下吧~

语法格式:rename 原字符 新字符 文件

2.常用参数:

? 可替代单个字符
* 可替代多个字符

3.常用示例

将当前工作目录下后缀为.cfg的文件,改成.txt后缀结尾:

[root@linuxcool ~]# rename .cfg .txt *

将当前工作目录下文件名中的小写a改成大写A:

[root@linuxcool ~]# rename a A *

十、文件管理之基础命令-rm

1.含义

rm命令来自于英文单词remove的缩写,其功能是用于删除文件或目录,一次可以删除多个文件,或递归删除目录及其内的所有子文件。

rm也是一个很危险的命令,使用的时候要特别当心,尤其对于新手更要格外注意,如执行rm -rf /*命令则会清空系统中所有的文件,甚至无法恢复回来。所以我们在执行之前一定要再次确认下在哪个目录中,到底要删除什么文件,考虑好后再敲击回车,时刻保持清醒的头脑。

语法格式:rm [参数] 文件

2.常用参数:

-f 强制删除(不二次询问)
-i 删除前会询问用户是否操作
-r/R 递归删除
-v 显示指令的详细执行过程

3.常用示例

删除某个文件,默认会进行二次确认,敲击y进行确认。

[root@jindada ~]# rm anaconda-ks.cfg 
rm: remove regular file 'anaconda-ks.cfg'? y

删除某个文件,强制操作不需要二次确认:

[root@linuxcool ~]# rm -f initial-setup-ks.cfg 

删除某个目录及其内的子文件或子目录,一并都强制删除:

[root@jindada ~]# rm -rf Documentsb

强制删除当前工作目录内的所有以.txt为后缀的文件

[root@jindada ~]# rm -f *.txt

删除一个目录下的所有内容 排除隐藏文件 确认好自己在那里

[root@jindada ~]# rm -rf ./*

【离职小妙招,谨慎!!!】强制清空服务器系统内的所有文件:

[root@jindada ~]# rm -rf /*

4.常见问题

4.1 删除‘-’开头的文件

# 1.查看目录下有-开头的文件
[root@cos-ftp ~]# ll
总用量 8
-rwxr-xr-x 1 root root 107 10月 19 23:14 delete_sync_nio.sh
-rw-r--r-- 1 root root   0 10月 15 16:43 -itd
-rw-r--r-- 1 root root   0 10月 15 16:43 -p
-rwxr-xr-x 1 root root 369 10月 21 17:50 sync_nio.sh
-rw-r--r-- 1 root root   0 10月 15 16:43 -v

# 2.使用常规删除方式无法删除
[root@cos-ftp ~]# rm -rf -itd
rm:无效选项 -- t
Try 'rm ./-itd' to remove the file "-itd".
Try 'rm --help' for more information.
[root@cos-ftp ~]# rm -rf\ -itd
rm:无效选项 --  
Try 'rm --help' for more information.

# 3.删除方法,在文件名前加--
[root@cos-ftp ~]# rm -rf -- -itd
[root@cos-ftp ~]# rm -rf -- -p
[root@cos-ftp ~]# rm -rf -- -v

# 4.再次查看发现已经成功删除
[root@cos-ftp ~]# ll
总用量 8
-rwxr-xr-x 1 root root 107 10月 19 23:14 delete_sync_nio.sh
-rwxr-xr-x 1 root root 369 10月 21 17:50 sync_nio.sh
posted @ 2020-07-09 17:31  年少纵马且长歌  阅读(249)  评论(0编辑  收藏  举报