Linux的文件与目录管理

目录相关操作

对于目录相关的命名首先要介绍的一个命令是目录切换命令:cd

还有一些比较特殊的目录:

  • .:代表此层目录;
  • ..:代表上一层目录;
  • -:代表前一个工作目录;
  • ~:代表目前使用者身份所在的家目录
  • ~account:代表account这个使用者的家目录

处理目录的命令:

  • cd(change directory):切换目录

    命令格式:cd [相对路径或绝对路径]

    利用相对路径的写法必须确认的目前的路径才能正确地去到想要的目录

    下面看几个例子

    ##切换到tmp目录
    $ cd /tmp
    $ pwd
    /tmp
    ##回到家目录
    $ cd ~
    $ pwd
    /root
    ##回到上一次的工作目录
    $ cd -
    /tmp
    ##当前的工作目录在/tmp,回到上一级目录
    $ cd ..
    $ pwd
    /
    
  • pwd(显示目前所在的目录)

    命令格式:pwd [-p]

    ​ 选项与参数:-p:显示出真正的目录,而非使用链接路径

  • mkdir:建立新目录

    命令格式

    mkdir [-mp] 目录名称

    选项与参数:

    -m:设置文件的权限。直接设置,不需使用默认权限(umask

    -p:递归创建子目录

    下面举几个例子:

    #在当前的工作目录下创建test0目录
    $ mkdir test0
    drwxr-xr-x 2 root root 4096 Mar 19 16:58 test0
    ##在当前的工作目录下递归创建test1/test2/test3这样的多层目录
    $ mkdir -p test1/test2/test3
    

    一般创建目录大都是使用默认权限(umask),mkdir可以在创建目录时可以指定权限,例如:

    $ mkdir -m 711 test2
    drwx--x--x 2 root root 4096 Mar 19 17:07 test2
    
  • rmdir:删除“空”目录
    命令格式:rmdir [-p] 目录名称
    被删除的目录里不能存在其他的文件和目录,如果想要一次性删除一个目录以及该目录其下的子目录可以使用**rm -rf 目录名称,但这样不是太安全,还是使用rmdir**比较安全。

文件与目录管理

文件与目录查看:ls

命名格式:ls [-adlh] 文件名或目录名称

选项参数:

-a:全部的文件,包括隐藏文件(开头为.的文件)一起列出

-d:仅列出目录本身,而不是列出目录内的文件数据

-h:将文件大小以及人类易读的方式(GB,KB,MB)列出

-l:详细信息显示,包括文件的属性与权限等数据

##列出root目录下的所有文件
$ ls -al ~
dr-xr-x---.  9 root root 4096 Mar 19 17:07 .
dr-xr-xr-x. 18 root root 4096 Mar 14 16:57 ..
-rw-------   1 root root 5185 Mar 18 23:42 .bash_history
······
drwxr-xr-x   2 root root 4096 Mar 19 16:58 test0
drwxr-xr-x   3 root root 4096 Mar 19 17:00 test1
drwx--x--x   2 root root 4096 Mar 19 17:07 test2
-rw-rw-rw-   1 root root    0 Mar 18 01:49 test.txt
##列出root目录下的所有文件,以人类易读的方式
$ ls -alh ~
dr-xr-x---.  9 root root 4.0K Mar 19 17:07 .
dr-xr-xr-x. 18 root root 4.0K Mar 14 16:57 ..
-rw-------   1 root root 5.1K Mar 18 23:42 .bash_history
······
drwxr-xr-x   2 root root 4.0K Mar 19 16:58 test0
drwxr-xr-x   3 root root 4.0K Mar 19 17:00 test1
drwx--x--x   2 root root 4.0K Mar 19 17:07 test2
-rw-rw-rw-   1 root root    0 Mar 18 01:49 test.txt

复制、删除、移动:cprmmv

  • cp:复制文件或目录

    命令格式:cp [-ipr] 源文件(source) 目标文件(dest)

    选项与参数:

    -a:参考下面的**-dr**选项

    -d:若源文件为链接文件属性,则复制链接文件属性而非文件本身

    -i:若目标文件已经存在,在覆盖时会先询问操作的进行

    -p:连同文件的属性一起复制,不使用默认属性

    -r:递归复制,用于目录的复制操作

    在默认的条件中,**cp**的源文件与目标文件的权限是不同的,目标文件的拥有者通常会是命令操作本身。

  • rm(删除文件或目录)

    命令格式:rm [-fir] 文件或目录

    选项与参数:

    -f:强制的意思

    -I:交互模式,在删除之前会询问使用是否操作

    -r:递归删除

    通常这个命令在使用时要十分小心,在删除前要认真确定删除的文件或目录是否正确,避免误删除的情况

    #删除test1文件夹
    #连同目录下的所有子目录一并强制删除
    $ rm -rf test1 
    #删除文件也是如此
    
  • mv(移动文件与目录或重命名)

    命令格式:mv [-fiu] source dest

    选项与参数:

    -f:强制执行

    -i:若目标文件已经存在,会询问是否覆盖

    -u:若目标文件已存在,且source比较新,才会更新

    这里举几个例子:

    test.txt文件移动到test0文件夹中

    $ mv test.txt test0
    $ ls test0
    test.txt
    

    test0文件夹重命名为test3

    $ mv test0 test4
    $ ls .
    test3
    
  • 修改文件时间或创建新文件:touch

    命令格式:touch [-acdmt] 文件名

    选项与参数:

    -a:仅自定义access time;

    -c:仅修改文件时间,若该文件不存在则不创建新文件;

    -d:后面可以接想要自定义的日期而不用目前的日期;

    -m:修改mtime

    -t:后面可以接想要自定义的时间而不是使用目前的日期,格式为[YYYYMMDDhhmm]

    touch命令最常用的情况是:

    • 创建一个空文件
    • 将某个文件日期自定义为目前

    举几个例子:

    #创建一个空文件
    $ touch test1
    -rw-r--r--  1 root root 0 Mar 21 12:03 test1
    #修改日期为:2020/02/21 00:00
    $ touch -t 202002210000 test1
    -rw-r--r--  1 root root 0 Feb 21 00:00 test1
    

文件与目录的默认权限与隐藏权限

文件默认权限:umask

umask是指定目前用户在创建文件或者目录时的权限默认值。

#使用umask查看默认权限
$ umask
0022 //与一般权限有关的是后面三个数字
$ umask -S
u=rwx,g=rx,o=rx

默认情况下:

  • 若用户创建文件则默认没有(x)执行权限,也就是只有**rw**这两个项目,也就是最大为666,默认权限为:

    -rw-rw-rw-

  • 若用户创建目录则由于x是与是否可以进入目录有关的,因此默认为所有权限均开放,即777

    drwxrwxrwx

umaks的数字指的是该默认值需要减掉的权限

通过上面**umask=0022进行说明。因为umask=0022,user没有被拿掉任何权限,group与others的权限被拿掉了2(也就是w**权限)(r、w、x每个权限的数字在《Linux文件权限与目录简介》一篇中介绍过)那么用户:

  • 创建文件时:(-rw-rw-rw-)-(- - - - - w - - w -)==> - rw-r- -r- - ,最后创建文件时的权限:666-022=644
  • 创建目录时:(drwxrwxrwx)-(d - - - - w- - w-)==> drwxr-xr-x最后创建目录时的权限:777-022=755

创建一个文件和一个目录:

$ umask
0022
$ touch test0
666-022=644
-rw-r--r--  1 root root 0 Mar 21 12:49 test0
 6  4  4
#创建目录
$ mkdir test.d
777-022=755
drwxr-xr-x  2 root roo 4096 Mar 21 12:53 test.d
  7  5  5

文件隐藏属性

  • 配置文件隐藏属性:chattr [+-=][ASacdistu] 文件或目录名称

    常用选项与参数:
    +:增加某个特殊参数,其他原本存在参数不动;
    -:减少某个特殊参数,其他原本存在参数不动;
    =:直接设置参数,且仅有后面接的参数;
    a:当设置这个a之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有root才能设置这个属性;
    i:当设置i之后,可以让一个文件不能被删除、改名、设置链接也无法写入或新增数据;

    $ touch test23
    $ chattr +i test23
    $ rm -rf test23
    #不能删除
    rm: cannot remove test23:Operation not permitted
    
  • 显示文件隐藏属性:lsattr [-adR] 文件或目录

    选项与参数:

    -a:将隐藏文件的属性显示出来

    -d:如果接的目录,仅列出目录本身的属性而非目录内的文件名

    -R:连同子目录的数据也一并列出来

    接着上面的例子:

    $ lsattr -aR test23
    ----i--------e-- test23
    

命令与文件的查找

脚本文件查找
  • 查找执行文件:which [-a] command

    选项或参数:

    -a:将所有由PATH目录中可以找到的命令均列出,而不止第一个被找到的命令名称

    这个命令是根据【PATH】这个环境变量所规范的路径,去查找执行文件的文件名。

文件查找
  • 由一些特定的目录中查找文件:whereis [-bmsu] 文件或目录

    选项与参数:

    -l:可以列出whereis会去查询的几个主要目录;

    -b:只找binary(二进制)格式文件;

    -m:只找在说明文件manual路径下的文件;

    -s:只找source源文件;

    -u:查找不在上述三个项目当中的其他特殊文件;

  • locate [-ir] keyword

    选项与参数:

    -i:忽略大小写的差异;

    -c:不输出文件名,计算找到的文件数量;

    -l:仅输出几行的意思;

    -S:输出locate所使用的数据库文件的相关信息,包括该数据库记录文件/目录数量等;

    -r:后面可接正则表达式的显示方式;

  • **find [PATH] [option] [action]**没事别用这个命令神慢~

参考资料

《鸟哥的Linux私房菜—基础学习篇(第四版)》 鸟哥著 人民邮电出版社

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值