美文网首页
Linux 文件及目录管理命令(CentOS7)

Linux 文件及目录管理命令(CentOS7)

作者: 一个扫地的垃圾 | 来源:发表于2019-07-23 14:10 被阅读0次

    linux文件系统结构

    • 显示linux根目录下所有文件,其中/为根目录
    ls -l /
    
    total 24
    lrwxrwxrwx.   1 root root    7 Jun 30 23:11 bin -> usr/bin
    dr-xr-xr-x.   5 root root 4096 Jul 11 13:03 boot
    drwxr-xr-x.  21 root root 3360 Jul 11 13:23 dev
    drwxr-xr-x. 143 root root 8192 Jul 11 13:23 etc
    drwxr-xr-x.   3 root root   25 Jun 30 23:19 home
    lrwxrwxrwx.   1 root root    7 Jun 30 23:11 lib -> usr/lib
    lrwxrwxrwx.   1 root root    9 Jun 30 23:11 lib64 -> usr/lib64
    drwxr-xr-x.   2 root root    6 Apr 11  2018 media
    drwxr-xr-x.   2 root root    6 Apr 11  2018 mnt
    drwxr-xr-x.   3 root root   16 Jun 30 23:14 opt
    dr-xr-xr-x. 226 root root    0 Jul 11 13:23 proc
    dr-xr-x---.   5 root root  184 Jun 30 23:21 root
    drwxr-xr-x.  40 root root 1220 Jul 11 13:24 run
    lrwxrwxrwx.   1 root root    8 Jun 30 23:11 sbin -> usr/sbin
    drwxr-xr-x.   2 root root    6 Apr 11  2018 srv
    dr-xr-xr-x.  13 root root    0 Jul 11 13:23 sys
    drwxrwxrwt.  25 root root 4096 Jul 11 13:25 tmp
    drwxr-xr-x.  13 root root  155 Jun 30 23:11 usr
    drwxr-xr-x.  21 root root 4096 Jun 30 23:21 var
    

    路径表示

    • 文件路径,例如在cat文件的完整目录名为/home/cat,有两个特殊的工作目录,一个是用户当前工作目录.,另一个是当前目录的上一层目录..
    cd ..
    
    • 绝对路径是指从根目录开始一直写到所需文件为止,例如我要查找panjianqiao文件
    cd /home/panjianqiao
    
    • 相对路径是指在当前的工作目录下,直接查找所在目录及以下的文件,例如我现在在panjianqiao文件夹下,要寻找Desktop文件
    cd Desktop
    

    假如我在Desktop下要切换到Downloads,可以有两种办法:

    绝对路径

    cd /home/panjianqiao/Downloads
    

    相对路径

    cd ../Downloads
    

    cd(change directory缩写)命令

    Linux 命令按照来源方式,可分为两种,分别是shell内置命令外部命令

    Shell 内置命令,就是 Shell 自带的命令,这些命令是没有执行文件的。

    外部命令就是由程序员单独开发的,是命令,所以会有命令的执行文件。

    Linux中的绝大多数命令是外部命令,而 cd 命令是一个典型的 Shell 内置命令,所以 cd 命令没有执行文件所在路径。

    cd ~ #回到自己的主目录
    cd ~panjianqiao #返回指定用户的主目录(这里为panjianqiao)
    cd - #返回上次所在目录
    cd . #返回当前所在目录
    cd .. #返回父目录
    

    pwd(print working directory)命令

    [panjianqiao@localhost ~]$ whoami #用于返回当前登陆用户
    panjianqiao
    [panjianqiao@localhost ~]$ pwd #显示当前工作路径
    /home/panjianqiao
    

    ls(list)命令

    [panjianqiao@localhost ~]$ ls -a #返回全部文件,包括隐藏文件
    .              .bash_profile  .dbus      .esd_auth      Music     Templates
    ..             .bashrc        Desktop    .ICEauthority  Pictures  Videos
    .bash_history  .cache         Documents  .local         .pki
    .bash_logout   .config        Downloads  .mozilla       Public
    
    [panjianqiao@localhost ~]$ ls -A #返回全部文件,不包括.和..文件
    .bash_history  .bashrc  .dbus      Downloads      .local    Pictures  Templates
    .bash_logout   .cache   Desktop    .esd_auth      .mozilla  .pki      Videos
    .bash_profile  .config  Documents  .ICEauthority  Music     Public
    
    [panjianqiao@localhost ~]$ ls -l #使用长格式列出文件和目录信息
    total 0
    drwxr-xr-x. 2 panjianqiao panjianqiao 40 Jul 11 13:17 Desktop
    drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Documents
    drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Downloads
    drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Music
    drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Pictures
    drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Public
    drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Templates
    drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Videos
    

    mkdir(make directory)命令

    • -m 选项用于手动配置所创建目录的权限,而不再使用默认权限。
    • -p 选项递归创建所有目录,以创建 /home/test/demo 为例,在默认情况下,你需要一层一层的创建各个目录,而使用 -p 选项,则系统会自动帮你创建 /home、/home/test 以及 /home/test/demo。
    [panjianqiao@localhost ~]$ mkdir test
    [panjianqiao@localhost ~]$ ls
    Desktop  Documents  Downloads  Music  Pictures  Public  Templates  test  Videos
    
    [panjianqiao@localhost ~]$ mkdir -p ./test2/demo
    [panjianqiao@localhost ~]$ ls
    Desktop    Downloads  Pictures  Templates  test2
    Documents  Music      Public    test       Videos
    
    [panjianqiao@localhost ~]$ mkdir -p test3/demo
    [panjianqiao@localhost ~]$ ls
    Desktop    Downloads  Pictures  Templates  test2  Videos
    Documents  Music      Public    test       test3
    
    [panjianqiao@localhost ~]$ mkdir -m 711 test4
    [panjianqiao@localhost ~]$ ls
    Desktop    Downloads  Pictures  Templates  test2  test4
    Documents  Music      Public    test       test3  Videos
    [panjianqiao@localhost ~]$ ls -l
    total 0
    drwxr-xr-x. 2 panjianqiao panjianqiao 40 Jul 11 13:17 Desktop
    drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Documents
    drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Downloads
    drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Music
    drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Pictures
    drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Public
    drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Templates
    drwxrwxr-x. 2 panjianqiao panjianqiao  6 Jul 13 14:18 test
    drwxrwxr-x. 3 panjianqiao panjianqiao 18 Jul 13 14:19 test2
    drwxrwxr-x. 3 panjianqiao panjianqiao 18 Jul 13 14:20 test3
    drwx--x--x. 2 panjianqiao panjianqiao  6 Jul 13 14:25 test4
    drwxr-xr-x. 2 panjianqiao panjianqiao  6 Jun 30 23:22 Videos
    

    rmdir(remove empty directory)命令

    此命令只能删除空目录(此命令并不常用)

    • -p 选项递归删除所有目录
    [panjianqiao@localhost ~]$ rmdir test
    [panjianqiao@localhost ~]$ ls
    Desktop    Downloads  Pictures  Templates  test3  Videos
    Documents  Music      Public    test2      test4
    
    [panjianqiao@localhost ~]$ rmdir ./test2 #只能删除空目录,这里的test2中还存在demo
    rmdir: failed to remove ‘./test2’: Directory not empty
    
    [panjianqiao@localhost ~]$ rmdir ./test2/demo #删除了test2中的demo目录,test2还存在
    [panjianqiao@localhost ~]$ ls
    Desktop    Downloads  Pictures  Templates  test3  Videos
    Documents  Music      Public    test2      test4
    

    touch 命令

    创建文件以及修改文件参数(当文件不存在会创建文件,文件存在时会修改文件参数)

    Linux 系统中,每个文件主要拥有 3 个时间参数(通过 stat 命令进行查看),分别是文件的访问时间、数据修改时间以及状态修改时间:

    • 访问时间(Access Time,简称 atime):只要文件的内容被读取,访问时间就会更新。例如,使用 cat 命令可以查看文件的内容,此时文件的访问时间就会发生改变。
    • 数据修改时间(Modify Time,简称 mtime):当文件的内容数据发生改变,此文件的数据修改时间就会跟着相应改变。
    • 状态修改时间(Change Time,简称 ctime):当文件的状态发生变化,就会相应改变这个时间。比如说,如果文件的权限或者属性发生改变,此时间就会相应改变。
    [panjianqiao@localhost ~]$ touch bols #创建bols文件
    [panjianqiao@localhost ~]$ ls
    bols  Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
    [panjianqiao@localhost ~]$ ll --time=atime bols #查看文件的访问时间,ll相当于ls -l
    -rw-rw-r--. 1 panjianqiao panjianqiao 0 Jul 13 15:03 bols
    
    [panjianqiao@localhost ~]$ touch bols
    [panjianqiao@localhost ~]$ ll --time=atime bols #即使bols文件存在,也不会报错,只会修改访问时间
    -rw-rw-r--. 1 panjianqiao panjianqiao 0 Jul 13 15:42 bols
    [panjianqiao@localhost ~]$ ll --time=ctime bols #查看bols文件的状态修改时间
    -rw-rw-r--. 1 panjianqiao panjianqiao 0 Jul 13 15:42 bols
    

    ln 命令

    linux文件操作系统主要使用的是ext4文件系统,ext4文件系统会把分区分为两大部分,一部分为inode(节点),另一部分为block(数据块)。

    inode默认大小为128Byte,用来记录文件的权限(r,w,x)、文件的所有者和大小、文件的atime、ctime和mtime以及其真正保存文件数据的block编号。每个文件都有一个inode,其中文件名是不包含在inode中的,文件名存在于文件所在目录中的block中。

    block用于存放数据,大小可以是1KB、2KB、4KB,默认大小为4KB,如果单个block存放不下数据,则可以使用多个block,其中多个block数据可能是连续的也可能是分散的。

    因此,想要读取一个文件首先应该在目录的block中找到该文件的inode,通过inode索引到实际存放数据的block上。

    ln命令用于给文件创建链接,根据linux文件系统特点分为硬链接和软链接

    • 硬链接:通过给文件的inode信息分配多个文件名
    • 软链接:相当于给文件产生快捷方式(类比于windows)
    • 无-s:建立硬链接
    • -s :建立软链接
    • -f:强制建立链接,如果文件存在,则删除文件后再建立链接文件
    [panjianqiao@localhost ~]$ touch demo
    [panjianqiao@localhost ~]$ ln /home/panjianqiao/demo /tmp #建立硬链接,其中tmp下的文件属于临时文件,若未标识文件名则与原文件名保持一致
    [panjianqiao@localhost ~]$ touch demo2
    [panjianqiao@localhost ~]$ ln -s /home/panjianqiao/demo2 /tmp #建立软链接。注意!软链接文件路径必须为绝对路径,硬链接文件路径无此要求
    [panjianqiao@localhost ~]$ cd /tmp
    [panjianqiao@localhost tmp]$ ls #由于篇幅限制,只显示相关信息,链接文件存在于tmp文件夹下
    demo
    demo2
    

    硬链接

    [panjianqiao@localhost tmp]$ ls -i /home/panjianqiao/demo /home/panjianqiao/demo2 #查看两个文件的inode编号
    2982387 /home/panjianqiao/demo  2982388 /home/panjianqiao/demo2
    [panjianqiao@localhost tmp]$ ls -i /tmp/demo /tmp/demo2 #查看两个链接文件的inode编号
     2982387 /tmp/demo  17540877 /tmp/demo2 
    

    从上述分析可以看出,硬链接只是文件名字不同,其实两个文件名都可以映射到同一个inode编号上,因此硬链接的特点如下:

    • 无论修改原文件demo还是修改硬链接文件demo,另一个文件数据都会改变。
    • 无论删除原文件还是链接文件,只要还有一个文件存在就可以被访问。
    • 硬链接不会建立新的inode信息,同时也不能垮文件系统建立。
    • 硬链接不能链接目录,太过复杂。

    软链接(符号链接)

    [panjianqiao@localhost tmp]$ ls -il /home/panjianqiao/demo2 /tmp/demo2 #查看文件demo2和软链接文件demo2的长格式文件信息包括inode编号
     2982388 -rw-rw-r--. 1 panjianqiao panjianqiao  0 Jul 14 13:28 /home/panjianqiao/demo2
    17540877 lrwxrwxrwx. 1 panjianqiao panjianqiao 23 Jul 14 13:28 /tmp/demo2 -> /home/panjianqiao/demo2
    

    软链接可以通过命令显示中的/tmp/demo2 -> /home/panjianqiao/demo2识别出原文件的位置,软链接的原文件和链接文件的inode编号不一致,说明软链接文件存放的block为当前文件名索引到原文件inode编号信息。与硬链接相比,软链接没有了许多限制,应用的更为广泛。软链接的特点如下:

    • 无论是修改原文件还是软链接文件,另一个文件的数据都发生改变
    • 删除软链接文件,原文件不受影响,反之若删除原文件则会导致软链接文件找不到原文件。
    • 软链接文件会新建inode和block信息,而在block中不存放真正的数据。
    • 软链接可以跨文件系统
    • 软链接可以链接目录

    windows系统下产生快捷方式的原因在于原文件的位置太深,不好操作,新建一个快捷方式在桌面容易操作

    cp 命令

    此命令可以用于复制文件和目录,同时还可以用于对比两文件的新旧等。

    选项:

    • -a:相当于-d、-p、-r选项的集合
    • -d:如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接
    • -i:询问,如果目标文件已经存在,则会询问是否覆盖
    • -l:把目标文件建立为源文件的硬链接文件,而不是复制源文件
    • -s:把目标文件建立为源文件的软链接文件,而不是复制源文件
    • -p:复制后目标文件保留源文件的属性(包括所有者、所属组、权限和时间)
    • -r:递归复制,用于复制目录
    • -u:若目标文件比源文件有差异,则使用该选项可以更新目标文件,此选项可用于对文件的升级和备用

    复制文件

    [panjianqiao@localhost ~]$ ls
    bols  demo2    Documents  Music     Public     Videos
    demo  Desktop  Downloads  Pictures  Templates
    [panjianqiao@localhost ~]$ cp bols /tmp/ #复制文件
    [panjianqiao@localhost ~]$ cp bols /tmp/clangs #改名复制文件
    

    复制目录

    [panjianqiao@localhost ~]$ mkdir test
    [panjianqiao@localhost ~]$ cp -r test /tmp/ #复制目录
    

    复制软链接文件

    [panjianqiao@localhost ~]$ ls -l /tmp/demo2 #demo2文件为一个软链接文件
    lrwxrwxrwx. 1 panjianqiao panjianqiao 23 Jul 14 13:28 /tmp/demo2 -> /home/panjianqiao/demo2
    [panjianqiao@localhost ~]$ cp /tmp/demo2 /tmp/demo2_t1 #复制的文件为原文件
    [panjianqiao@localhost ~]$ cp -d /tmp/demo2 /tmp/demo2_t2 #复制的文件为软链接文件
    [panjianqiao@localhost ~]$ ls -l /tmp/demo2_t1 /tmp/demo2_t2
    -rw-rw-r--. 1 panjianqiao panjianqiao  0 Jul 16 19:04 /tmp/demo2_t1
    lrwxrwxrwx. 1 panjianqiao panjianqiao 23 Jul 16 19:04 /tmp/demo2_t2 -> /home/panjianqiao/demo2
    

    在复制软链接文件时,需要对在cp的选项添加-d,对硬链接无效。

    rm(remove)命令

    此命令用于删除文件、目录

    选项:

    • -f:强制删除(force),和 -i 选项相反,使用 -f,系统将不再询问,而是直接删除目标文件或目录。
    • -i:和 -f 正好相反,在删除文件或目录之前,系统会给出提示信息,使用 -i 可以有效防止不小心删除有用的文件或目录。
    • -r:递归删除,主要用于删除目录,可删除指定目录及包含的所有内容,包括所有的子目录和文件。
    [panjianqiao@localhost ~]$ ls
    bols  demo2    Documents  Music     Public     test
    demo  Desktop  Downloads  Pictures  Templates  Videos
    [panjianqiao@localhost ~]$ rm bols
    [panjianqiao@localhost ~]$ rm -i demo
    rm: remove regular empty file ‘demo’? y
    [panjianqiao@localhost ~]$ rm -ir /tmp/test 
    rm: remove directory ‘/tmp/test’? y
    

    mv(move)命令

    此命令可以在不同的目录下移动文件或目录,也可以对文件和目录进行重命名

    选项:

    • -f:强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖
    • -i:交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项)
    • -n:如果目标文件已经存在,则不会覆盖移动,而且不询问用户
    • -v:显示文件或目录的移动过程
    • -u:若目标文件已经存在,但两者相比,源文件更新,则会对目标文件进行升级

    移动文件

    [panjianqiao@localhost ~]$ touch demo
    [panjianqiao@localhost ~]$ mv demo /tmp
    [panjianqiao@localhost ~]$ ls /tmp #由于篇幅限制,只显示相关信息
    demo
    ...
    

    移动目录

    [panjianqiao@localhost ~]$ mkdir -p ./test/demo
    [panjianqiao@localhost ~]$ ls
    Desktop  Documents  Downloads  Music  Pictures  Public  Templates  test  Videos
    [panjianqiao@localhost ~]$ mv test /tmp
    [panjianqiao@localhost ~]$ ls
    Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
    [panjianqiao@localhost ~]$ ls /tmp/test
    demo
    

    文件重命名

    [panjianqiao@localhost ~]$ mv /tmp/demo /tmp/demo1 #在同一目录下移动文件相当于重命名
    [panjianqiao@localhost ~]$ ls tmp
    [panjianqiao@localhost ~]$ ls /tmp #由于篇幅限制,只显示相关信息
    demo1
    ...
    

    目录重命名

    [panjianqiao@localhost ~]$ mv /tmp/test /tmp/test_change
    [panjianqiao@localhost ~]$ ls /tmp #由于篇幅限制,只显示相关信息
    ...
    test_change
    ...
    

    相关文章

      网友评论

          本文标题:Linux 文件及目录管理命令(CentOS7)

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