• 一起来学linux:目录与路径


    首先介绍目录相关的路径的表示法:

    1 . 代表此目录

    2 .. 代表上一层目录

    3 – 代表前一个工作目录

    4 ~ 代表当前用户身份的主文件夹

    5 account 代表account这个用户的主文件夹


    然后介绍下路径的2个概念:1 相对路径 2绝对路径

    绝对路径: 例如/home/zhf/zhf这个路径,路径由根目录开始写起,包含了所有经过的路径

    相对路径:路径不是由/写起。相对路径指相对于当前工作目录的路径。相对路径可以写成 cd ../test这种方式,举个例子:在zhf文件夹中有testtest1的文件夹。如果我首先进入test文件夹,此时想要转换到test1文件夹。一般的写法是cd .. 然后cd ./test1。先回退到上一级目录,然后进入test1文件夹。

    但是testtest1都属于zhf文件夹下面,所以从test转换到test1可以用cd ../test1的方式


    目录处理常见 的几个命令如下:

    1 cd: change directory. cd后面可以跟相对路径和绝对路径。比如cd /home/zhf/zhf就是到zhf这个文件夹。

    cd ~回到根目录。cd ~zhf 回到zhf/home 目录

    2 pwd: print working directoy. 顾名思义就是打印当前的工作路径

    3 mkdir: 创建文件夹。这里有2个配置参数 -m-p

    -m:配置文件的权限。当我们创建文件或者文件夹的时候,创建的文件和文件夹是默认权限的。 默认权限可以用umask 来查看。在这里我们的umask0022。大多数的系统也都是这个值

    第一位的数字忽略,也就是默认权限是022. 这代表什么意思呢。前一章讲到用户和用户权限的时候,提到文件的权限分为读写执行,rwx。分别用数字代表就是 4 2 1。文件权限有本用户,同属一个用户组的用户权限,其他用户的权限。 三者结合起来,如果所有用户都用户读写执行权限,那么文件的权限就是rwx-rwx-rwx。写成数字也就是777. 那么倒过来再看下umask就比较清楚了。umask就代表777需要减去的权限。umask022,那么默认的权限就是777-022=755。也就代表当前用户有读写执行权限,同用户组用户和其他用户有读,执行权限。也就是rwx-r—xr—x. 我们实际建立一个文件夹来看下是否是这样的。新建立的test文件夹 权限正好是rwx-r—xr--x

    如果觉得umask0022太过于抽象. 可以用umask -S来更直观的看文件的默认权限

    root@zhf-linux:/home/zhf/zhf# umask -S

    u=rwx,g=rx,o=rx


    所以这里用-m可以制定我们想用的权限。而不是用默认的权限。如下:

    root@zhf-linux:/home/zhf/zhf# mkdir -m 766 test

    root@zhf-linux:/home/zhf/zhf# ls -al

    total 7648

    drwxrwxr-x 7 zhf zhf 4096 Aug 28 21:30 .

    drwxr-xr-x 28 zhf zhf 4096 Aug 28 20:53 ..

    -rw-r--r-- 1 root zhf 37 May 24 2016 crontest.cron

    -rw-r--r-- 1 zhf zhf 7733727 Nov 7 2016 Django-1.10.3.tar.gz

    drwxr-xr-x 3 root root 4096 Jul 29 10:33 python_prj

    drwxrwxr-x 13 root zhf 4096 Aug 21 09:53 python_source

    -rw-r--r-- 1 zhf zhf 5645 Sep 26 2016 python.vim

    -rw-rw-r-- 1 zhf zhf 3646 Aug 6 14:24 result1.html

    -rw-r--r-- 1 root root 0 Aug 6 1root@zhf-linux:/home/zhf/zhf# mkdir test/test2

    mkdir: cannot create directory ‘test/test2’: No such file or directory4:24 result.html

    drwxrwxr-x 2 zhf zhf 4096 May 14 14:49 shell_test

    drwxrw-rw- 2 root root 4096 Aug 28 21:30 test

    -rw-rw-r-- 1 zhf zhf 38844 Aug 6 15:28 test.png

    -rw-rw-r-- 1 zhf zhf 145 Aug 6 13:56 test.txt

    drwxrwxr-x 2 zhf zhf 4096 Jul 28 10:31 tool_source

    -rw-r--r-- 1 root root 161 Apr 1 06:30 tst1.tar.bz2


    -p: 将所需要的目录递归的建立起来。比如我想建立多个路径的文件夹。mkdir test/test2. 执行失败。提示没有 test这个文件夹。

    root@zhf-linux:/home/zhf/zhf# mkdir test/test2

    mkdir: cannot create directory ‘test/test2’: No such file or directory

    而采用mkdir test/test2。 则可以一次性的建立test/test2文件夹。


    4 rmdir: 删除文件夹。 -p和建立的意思一样,代表连同上层的空目录一起删掉



    文件的隐藏属性:

    前面介绍了文件的读写执行权限,其实文件还有一些隐藏属性。可以用lsattrchattr来查看和更改。

    chattr有几个参数如下:

    a: 只能增加数据,既不能删除也不能修改数据,只有root用户有这个权限

    c: 读取的时候会自动亚索

    d: dump程序被执行的时候,可确保该文件不被dump备份

    i: 文件既不能被删除,改名,也无法写入或者添加数据。root用户有此权限

    s: 当某件被删除的时候,完全从这个硬盘删除

    u:与s相反,如果文件被删除了,数据内容还存在与硬盘中,还可以找回

    那么如何设置权限呢,很简单,+代表增加某个权限,-代表去掉某个权限。 我们以i这个参数来看下

    root@zhf-linux:/home/zhf/zhf# chattr +i test.txt

    root@zhf-linux:/home/zhf/zhf# rm test.txt

    rm: cannot remove 'test.txt': Operation not permitted

    root@zhf-linux:/home/zhf/zhf# chattr -i test.txt

    root@zhf-linux:/home/zhf/zhf# rm test.txt

    在设置了+i后,文件不能被删除。在-i后,文件才能被删除。在设置了权限后,通过lsattr来查看对应的权限。

    root@zhf-linux:/home/zhf/zhf# chattr +i test.txt

    root@zhf-linux:/home/zhf/zhf# lsattr test.txt

    ----i--------e-- test.txt



    文件查找:

    在一个系统中,要去查找文件是一件很头疼的事情,在windows中有各种各样的文件查找软件。比如everything。 但在Linux下,有许多命令也可以快速查找文件。

    查找命令有whereis,locate,find。通常使用的是whereislocate。因为相比find查找硬盘,whereislocate是查找数据库。速度更快一些。但是find的参数配置更灵活。也就是能更精准的找到我们想要的文件。我们重点介绍下find命令。

    命令格式:find [PATH] [option] [action]

    PATH代表查找的路径,如果没有特指的路径,也可以用/根目录开始查找

    option有很多种:

    -mtime: 根据修改时间

    -uid:根据用户的uid

    -gid:根据用户的gid

    -user name:根据用户名

    -group name:根据群组名字

    -name:根据文件名

    -size:根据文件大小

    -type:根据文件类型

    -perm +-mode: 根据文件权限 必须要全部包含或者任一mode的文件


    action: 在查找完文件后,我们想进行后处理,比如将结果保存在一个文件里面。就要用到action。命令格式位 -exec ls -l {} ; -exec {} ;都是关键字命令,其中我们要执行的动作写在-exec{}之间。find的结果就放在{}里面。


    来看一个例子,我们要找到在/home/zhf下的test.py文件。用如下的命令

    root@zhf-linux:/home/zhf/zhf/python_prj# find /home/zhf -name test.py

    /home/zhf/py_prj/test.py

    /home/zhf/zhf/python_prj/test.py

    /home/zhf/zhf/python_source/python-nmap-0.6.1/nmap/test.py

    /home/zhf/zhf/python_source/python-nmap-0.6.1/build/lib.linux-i686-2.7/nmap/test.py

    /home/zhf/zhf/python_source/Django-1.10.3/django/core/management/commands/test.py

    /home/zhf/zhf/python_source/Django-1.10.3/build/lib.linux-i686-2.7/django/core/management/commands/test.py


    查找到后需要列出所有文件的权限,也就是执行ls -l命令

    root@zhf-linux:/home/zhf/zhf/python_prj# find /home/zhf -name test.py -exec ls -al {} ;

    -rw-r--r-- 1 root zhf 427 Oct 24 2016 /home/zhf/py_prj/test.py

    -rw-r--rw- 1 root root 66 Jul 28 11:35 /home/zhf/zhf/python_prj/test.py

    -rw-r--r-- 1 zhf zhf 171 Jul 30 2016 /home/zhf/zhf/python_source/python-nmap-0.6.1/nmap/test.py

    -rw-r--r-- 1 root root 171 Jul 30 2016 /home/zhf/zhf/python_source/python-nmap-0.6.1/build/lib.linux-i686-2.7/nmap/test.py

    -rw-rw-r-- 1 zhf zhf 2794 Nov 1 2016 /home/zhf/zhf/python_source/Django-1.10.3/django/core/management/commands/test.py

    -rw-r--r-- 1 root zhf 2794 Nov 1 2016 /home/zhf/zhf/python_source/Django-1.10.3/build/lib.linux-i686-2.7/django/core/management/commands/test.py

  • 相关阅读:
    你所不知道的React Hooks
    DataRow的RowState属性变化
    gRPC详解
    Protobuf简明教程
    docker容器内没有权限
    Locust高并发情况下的性能优化与分布式场景的应用
    Docker容器日志打满机器的解决方式
    Django单测详解
    使用Flask+uwsgi+Nginx部署Flask正式环境
    Locust-分布式执行
  • 原文地址:https://www.cnblogs.com/zhanghongfeng/p/7446049.html
Copyright © 2020-2023  润新知