文件基础管理命令
1. pwd
#显示当前所在的工作目录
案例:
[root@oldboy ~]# pwd
/root
[root@oldboy ~]# cd /etc/sysconfig/
[root@oldboy sysconfig]# pwd
/etc/sysconfig
2. cd
#切换目录
[root@oldboy /etc/sysconfig]# cd ~ #快速的回到家目录
[root@oldboy ~]# cd #快速的回到家目录
[root@oldboy ~]# cd . #保持当前目录不变
[root@oldboy ~]# cd .. #当前目录的上一级的目录
[root@oldboy /]# cd - #切换到上一次所在的位置
/root
[root@oldboy ~]# cd / #切换到根目录
3. tree
#以树状型显示目录结构
默认没有安装
yum install -y tree
选项:
-a #显示所有文件,包括隐藏文件
-d #只显示目录
-F #给不同的文件加上标识符,为了快速区分文件类型
-L #显示不同层级的目录结构,后面跟数字
[root@oldboy /usr/local]# tree #不加路径的情况下,默认针对的是当前目录操作
.
├── bin
├── etc
├── games
├── include
├── lib
├── lib64
├── libexec
├── sbin
├── share
[root@oldboy ~]# tree -a #显示所有的文件和目录,包括隐藏文件,以点开头的文件就是隐藏文件
.
├── 123
├── anaconda-ks.cfg
├── .bash_history
├── .bash_logout
├── .bash_profile
├── .bashrc
├── .cshrc
├── klefgrjm
├── .pki
│ └── nssdb
└── .tcshrc
2 directories, 9 files
[root@oldboy ~]# tree
.
├── 123
├── anaconda-ks.cfg
└── klefgrjm
0 directories, 3 files
[root@oldboy ~]# tree -d /var/log #只显示目录
/var/log
├── anaconda
├── audit
├── mariadb
├── nginx
├── php-fpm
├── rhsm
└── tuned
7 directories
[root@oldboy ~]# tree -F /var/log/ #给不同的文件加上一个标识符
* #可执行文件
= #socket文件,套接字文件
/ #表示目录
| #管道文件
@ #链接文件
> #普通文件
[root@oldboy ~]# tree -L 2 / #显示目录的层级
4. ls
#显示目录的列表信息
选项:
-l #以长格式进行显示目录列表
-1 #数字,以行的形式显示目录列表
-a #显示所有,包括隐藏文件
-h #以人类可读的形式显示文件大小
-p #给目录加上根的标识符
-F #给不同的文件加上不同的标识符
-t #根据修改时间进行排序,默认最先显示时间最新的
-S #根据文件大小进行排序
-r #倒叙排序
-i #显示inode号
[root@oldboy ~]# ls -l #以长格式的形式显示目录的详细信息
total 8
-rw-r--r--. 1 root root 8 Nov 28 17:32 123
-rw-------. 1 root root 1429 Nov 26 20:28 anaconda-ks.cfg
-rw-r--r--. 1 root root 0 Nov 28 17:21 klefgrjm
[root@oldboy ~]# ls -1 #数字1,以行的形式显示目录列表
123
anaconda-ks.cfg
klefgrjm
[root@oldboy ~]# ls -la #显示所有的文件
total 32
dr-xr-x---. 3 root root 174 Nov 28 18:25 .
dr-xr-xr-x. 18 root root 236 Nov 28 18:22 ..
-rw-r--r--. 1 root root 8 Nov 28 17:32 123
-rw-------. 1 root root 1429 Nov 26 20:28 anaconda-ks.cfg
-rw-------. 1 root root 762 Nov 28 18:53 .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
-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
-rw-r--r--. 1 root root 0 Nov 28 17:21 klefgrjm
drwxr-----. 3 root root 19 Nov 26 21:51 .pki
-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc
[root@oldboy ~]# ll #系统别名 === ls -l
total 8
-rw-r--r--. 1 root root 8 Nov 28 17:32 123
-rw-------. 1 root root 1429 Nov 26 20:28 anaconda-ks.cfg
-rw-r--r--. 1 root root 0 Nov 28 17:21 klefgrjm
[root@oldboy ~]# ll -h /var/log/ #以人类的可读的形式显示文件大小
total 1.1M
drwxr-xr-x. 2 root root 176 Nov 26 20:28 anaconda
drwx------. 2 root root 23 Nov 26 20:30 audit
-rw-------. 1 root root 0 Nov 29 03:15 boot.log
-rw-------. 1 root root 8.3K Nov 27 03:08 boot.log-20191127
-rw-------. 1 root root 16K Nov 28 03:49 boot.log-20191128
-rw-------. 1 root root 16K Nov 29 03:15 boot.log-20191129
-rw-------. 1 root utmp 384 Nov 27 19:51 btmp
[root@oldboy ~]# ll -p /var/log/ #只跟目录加上一个根,方便表示目录
total 1092
drwxr-xr-x. 2 root root 176 Nov 26 20:28 anaconda/
drwx------. 2 root root 23 Nov 26 20:30 audit/
-rw-------. 1 root root 0 Nov 29 03:15 boot.log
-rw-------. 1 root root 8489 Nov 27 03:08 boot.log-20191127
-rw-------. 1 root root 15865 Nov 28 03:49 boot.log-20191128
[root@oldboy ~]# ll -F /bin/ #给不同的文件加上不同的标识符
* #可执行文件
= #socket文件,套接字文件
/ #表示目录
| #管道文件
@ #链接文件
> #普通文件
[root@oldboy ~]# ll -t #根据修改时间进行排序,默认最新的日期放在最上面
total 8
-rw-r--r--. 1 root root 8 Nov 28 17:32 123
-rw-r--r--. 1 root root 0 Nov 28 17:21 klefgrjm
-rw-------. 1 root root 1429 Nov 26 20:28 anaconda-ks.cfg
[root@oldboy ~]# ll -rt #倒叙排序
total 8
-rw-------. 1 root root 1429 Nov 26 20:28 anaconda-ks.cfg
-rw-r--r--. 1 root root 0 Nov 28 17:21 klefgrjm
-rw-r--r--. 1 root root 8 Nov 28 17:32 123
[root@oldboy ~]# ll -S #根据文件大小进行排序
total 8
-rw-------. 1 root root 1429 Nov 26 20:28 anaconda-ks.cfg
-rw-r--r--. 1 root root 8 Nov 28 17:32 123
-rw-r--r--. 1 root root 0 Nov 28 17:21 klefgrjm
[root@oldboy ~]# ll -d #只查看目录本身信息
dr-xr-x---. 3 root root 174 Nov 28 18:25 .
[root@oldboy ~]# ll -i #显示inode号码
total 8
67157611 -rw-r--r--. 1 root root 8 Nov 28 17:32 123
67157603 -rw-------. 1 root root 1429 Nov 26 20:28 anaconda-ks.cfg
67157607 -rw-r--r--. 1 root root 0 Nov 28 17:21 klefgrjm
5. mkdir
#创建目录
选项:
-p #递归创建,创建多级目录
-m #创建目录时并设置权限
-v #显示创建过程
[root@oldboy ~]# mkdir /data #绝对路径创建
[root@oldboy ~]# mkdir data #相对路径创建
[root@oldboy ~]# mkdir data #已存在时,再次创建会报错。
mkdir: cannot create directory ‘data’: File exists
[root@oldboy ~]# mkdir -p test/data #创建多级目录
[root@oldboy ~]# ll
total 8
-rw-r--r--. 1 root root 8 Nov 28 17:32 123
-rw-------. 1 root root 1429 Nov 26 20:28 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 Nov 29 19:29 data
-rw-r--r--. 1 root root 0 Nov 28 17:21 klefgrjm
drwxr-xr-x. 3 root root 18 Nov 29 19:32 test
[root@oldboy ~]# ll test/
total 0
drwxr-xr-x. 2 root root 6 Nov 29 19:32 data
[root@oldboy ~]# mkdir -m 700 oldboy #给新创建的目录指定权限
[root@oldboy ~]# ll
total 8
-rw-r--r--. 1 root root 8 Nov 28 17:32 123
-rw-------. 1 root root 1429 Nov 26 20:28 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 Nov 29 19:29 data
-rw-r--r--. 1 root root 0 Nov 28 17:21 klefgrjm
drwx------. 2 root root 6 Nov 29 19:34 oldboy
drwxr-xr-x. 3 root root 18 Nov 29 19:32 test
[root@oldboy ~]# mkdir -v data1 #创建目录的时候显示创建过程
mkdir: created directory ‘data1’
#批量操作
[root@oldboy ~]# mkdir oldboy{1..5} #批量创建oldboy1..5
[root@oldboy ~]# ll
total 8
-rw-r--r--. 1 root root 8 Nov 28 17:32 123
-rw-------. 1 root root 1429 Nov 26 20:28 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 Nov 29 19:29 data
drwxr-xr-x. 2 root root 6 Nov 29 19:35 data1
-rw-r--r--. 1 root root 0 Nov 28 17:21 klefgrjm
drwx------. 2 root root 6 Nov 29 19:34 oldboy
drwxr-xr-x. 2 root root 6 Nov 29 19:38 oldboy1
drwxr-xr-x. 2 root root 6 Nov 29 19:38 oldboy2
drwxr-xr-x. 2 root root 6 Nov 29 19:38 oldboy3
drwxr-xr-x. 2 root root 6 Nov 29 19:38 oldboy4
drwxr-xr-x. 2 root root 6 Nov 29 19:38 oldboy5
[root@oldboy ~]# mkdir oldboy{a..z} #生成字母序列
[root@oldboy ~]# mkdir old{qls,zeng,jia} #创建无序的多个目录,使用逗号分隔
[root@oldboy ~]# ll
drwxr-xr-x. 2 root root 6 Nov 29 19:40 oldjia
drwxr-xr-x. 2 root root 6 Nov 29 19:40 oldqls
drwxr-xr-x. 2 root root 6 Nov 29 19:40 oldzeng
drwxr-xr-x. 3 root root 18 Nov 29 19:32 test
[root@oldboy ~]# mkdir -p data/test{1..10}/data{1..10}/oldboy{1..10}
1110 directories, 0 files
[root@oldboy opt]# mkdir DATA #linux系统中,是区分大小写的
[root@oldboy opt]# ll
total 0
-rw-r--r--. 1 root root 0 Nov 29 19:50 cd
drwxr-xr-x. 2 root root 6 Nov 29 19:48 data
drwxr-xr-x. 2 root root 6 Nov 29 19:53 DATA
{} 特殊字符,通配符 作用:生成序列
6. touch
#创建新文件,修改已存在的文件或者目录的时间戳
[root@oldboy opt]# touch test.txt
[root@oldboy opt]# ll
total 0
-rw-r--r--. 1 root root 0 Nov 29 19:46 test.txt
[root@oldboy opt]# touch test.txt
[root@oldboy opt]# ll
total 0
-rw-r--r--. 1 root root 0 Nov 29 19:47 test.txt
[root@oldboy opt]# mkdir data
[root@oldboy opt]# ll
total 0
drwxr-xr-x. 2 root root 6 Nov 29 19:47 data
-rw-r--r--. 1 root root 0 Nov 29 19:47 test.txt
[root@oldboy opt]# touch data
[root@oldboy opt]# ll
total 0
drwxr-xr-x. 2 root root 6 Nov 29 19:48 data
-rw-r--r--. 1 root root 0 Nov 29 19:47 test.txt
[root@oldboy opt]# touch data{1..10}.txt #创建10个不同的文件
[root@oldboy opt]# ll
total 0
-rw-r--r--. 1 root root 0 Nov 29 19:50 cd
drwxr-xr-x. 2 root root 6 Nov 29 19:48 data
-rw-r--r--. 1 root root 0 Nov 29 19:51 data10.txt
-rw-r--r--. 1 root root 0 Nov 29 19:51 data1.txt
-rw-r--r--. 1 root root 0 Nov 29 19:51 data2.txt
-rw-r--r--. 1 root root 0 Nov 29 19:51 data3.txt
-rw-r--r--. 1 root root 0 Nov 29 19:51 data4.txt
-rw-r--r--. 1 root root 0 Nov 29 19:51 data5.txt
-rw-r--r--. 1 root root 0 Nov 29 19:51 data6.txt
-rw-r--r--. 1 root root 0 Nov 29 19:51 data7.txt
-rw-r--r--. 1 root root 0 Nov 29 19:51 data8.txt
-rw-r--r--. 1 root root 0 Nov 29 19:51 data9.txt
7. cp
#复制,拷贝
选项:
-r #递归复制
-p #保持属性
-d #保持链接文件
-a ===-pdr
-i #文件存在时,提示是否覆盖
-t #把源目标和目标的位置进行调换
[root@oldboy opt]# cp test.txt /mnt
[root@oldboy opt]# ll /mnt
total 0
-rw-r--r--. 1 root root 0 Nov 29 19:59 test.txt
[root@oldboy opt]# cp -p data9.txt /mnt #复制的同时,保持文件的属性
[root@oldboy opt]# ll /mnt
total 0
-rw-r--r--. 1 root root 0 Nov 29 19:51 data9.txt
-rw-r--r--. 1 root root 0 Nov 29 19:59 test.txt
[root@oldboy opt]# cp -p data9.txt /mnt/data.log #复制的时候,可以重命名
[root@oldboy opt]# ll /mnt
total 0
-rw-r--r--. 1 root root 0 Nov 29 19:51 data9.txt
-rw-r--r--. 1 root root 0 Nov 29 19:51 data.log
-rw-r--r--. 1 root root 0 Nov 29 19:59 test.txt
[root@oldboy opt]# cp data10.txt test.log #使用相对路径复制
[root@oldboy opt]# cp data/ /mnt
cp: omitting directory ‘data/’
[root@oldboy opt]# cp -r data/ /mnt #复制目录要使用-r 递归复制
[root@oldboy opt]# ll /mnt
total 0
drwxr-xr-x. 2 root root 6 Nov 29 20:03 data
-rw-r--r--. 1 root root 0 Nov 29 19:51 data9.txt
-rw-r--r--. 1 root root 0 Nov 29 19:51 data.log
-rw-r--r--. 1 root root 0 Nov 29 19:59 test.txt
[root@oldboy opt]# cp -d /etc/grub2.cfg ./grub2.cfg.log #保持软连接
[root@oldboy opt]# ll
lrwxrwxrwx. 1 root root 22 Nov 29 20:05 grub2.cfg.log -> ../boot/grub2/grub.cfg
[root@oldboy opt]# cp -rd /bin /binn #递归复制,并保持软连接
[root@oldboy opt]# ll /binn -d
lrwxrwxrwx. 1 root root 7 Nov 29 20:07 /binn -> usr/bin
[root@oldboy opt]# cp /bin /binnn
cp: omitting directory ‘/bin’
[root@oldboy opt]# cp -a /bin /binnn #-a ==== -pdr
[root@oldboy opt]# ll -d /binnn
lrwxrwxrwx. 1 root root 7 Nov 26 20:22 /binnn -> usr/bin
[root@oldboy opt]# ll -d /bin
lrwxrwxrwx. 1 root root 7 Nov 26 20:22 /bin -> usr/bin
[root@oldboy opt]# cp data9.txt /mnt #对方文件已经存在,复制时会提示是否覆盖 -i 系统默认的别名
cp: overwrite ‘/mnt/data9.txt’? n
[root@oldboy opt]# \cp data9.txt /mnt #强制覆盖
[root@oldboy opt]# cp -t ./ /mnt/data.log #把源目标和目标文件进行位置调换
8. mv
#移动和重命名
选项:
-f #强制覆盖
-i #提示是否覆盖
-t #把源目标和目标文件进行位置调换
[root@oldboy opt]# mv data.log /tmp
[root@oldboy opt]# ll /tmp/
total 4
-rw-r--r--. 1 root root 0 Nov 29 20:17 data.log
[root@oldboy opt]# mv data/ /tmp #移动目录,不需要递归
[root@oldboy opt]# ll /tmp/
total 4
drwxr-xr-x. 2 root root 6 Nov 29 19:48 data
-rw-r--r--. 1 root root 0 Nov 29 20:17 data.log
[root@oldboy opt]# mv test.txt /tmp/data.log #文件存在时,提示是否覆盖 -i
mv: overwrite ‘/tmp/data.log’? n
[root@oldboy opt]# mv -f test.txt /tmp/data.log #强制复制
[root@oldboy opt]# mv -t ./ /tmp/data.log #把源目标跟目标文件的位置进行调换
9. rename
#重命名命令
[root@oldboy opt]# rename data10 test data10.txt
命令 旧的字符串 新的字符串 文件名
10. rm
#删除
[root@oldboy opt]# rm bin #提示是否删除 -i 系统默认的别名
rm: remove symbolic link ‘bin’? n
[root@oldboy opt]# rm -f bin #强制删除
[root@oldboy opt]# rm -f DATA/
rm: cannot remove ‘DATA/’: Is a directory
[root@oldboy opt]# rm -rf DATA/ #递归删除
[root@oldboy opt]# rm -rf ./* #删除一个命令下面的所有内容
[root@oldboy ~]# rm -rf /root/* #删除目录的下所有内容