Linux 文件基础管理命令

文件基础管理命令

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/*     #删除目录的下所有内容

点赞

发表回复