• Linux 文件目录管理的指令


    1.知识点:绝对路径:写法从/(根目录开始) /usr/share/doc

    相对路径:不从/开始  如cd ../man

    如果清楚文件夹内部情况,建议使用相对路径在文件夹之间跳转,而不用绝对路径,每次都是一长串地址

    . 代表当前层目录

    ..代表上层目录

    ~代表自己的根目录

    ~user(user是代指用户哇!)代表到user这个人的根目录

    2.cd 与 pwd

    cd ..回到上一层目录

    cd ../home相对路径的写法

    cd /var/www/html 绝对路径的写法

    cd   回到用户的根目录

    cd ~   回到用户(个人)的根目录

    cd ~xwc  回到xwc用户的根目录

    pwd  显示当前目录(print working directory)

    3.mkdir 与 rmdir

    mkdir 目录名称  这个必须一层一层建目录

    rmdir 目录名称 这个必须一层一层的删除

    否则就会提示不为空

    要是需要(不假思索地)都删除,可以使用指令 rm-rf h

     全没了(所以不大安全)

    4.PATH环境变量

    什么是PATH呢

    当我们执行一个指令时,系统会依照PATH的设定到PATH定义的每个路径下搜寻文件,先搜寻到的指令文件先被执行。

    怎么看呢?

    指令 echo $PATH

     

    如何将/root加到PATH中呢?(知道就好)

    PATH=“$PATH”:/root(感觉跟赋值语句一样)

    5.文件与目录管理指令ls cp rm mv

    ls显示文件名称属性

    -a列出所有文件(包括隐藏)

    -l详细列出,连同文件大小,属性数据

    -S以文件大小排序

    --color=never/always/auto(不显示颜色,均显示颜色,由系统自行判断)

    ls -l的简写 ll(两个小写的L)这个命令可以说是超级方便了。

    cp 复制

    -d 我复制个快捷方式到指定位置

    -r 目录的复制

    原本是空文件夹的3里面多了个1

     -s 做成链接文件

    -u 如果源文件较新,或者没有目标文件,才会进行复制动作。可用于备份操作。

    rm 删除

    -i默认参数  询问是否删除

    -rf  疯狂删除

    mv 移动,变更文件名

    mv x x.old    重命名

    mv x1 x2 x3... /root   即把x1 x2 x3文件一并移动到root下 

    6.查看文件内容

    cat与tac

    cat -n查看信息时把行号也给我列出来

    (Concatenate 连续的缩写,不过较不常见,配合more和less比较好)

    tac  反向显示(最后一行在最上面)

    more 与less

    more ~/.txt一页一页的显示文件内容

    ls -al|more 把ll一页一页的显示出来

    相较于more,  less更灵活,

    可以按PgUp PgDn翻页

    less  还能查找,优秀

    head与tail

    查看文档文档开头,文档结尾

    tail -n 5 1.txt(只显示1.txt的后五行)

    nl 与cat -n相似

    od 读取非ASCII数据文件,此时使用vi more lesss指令看不出来内容。输出来的数据都是内存中的数据。

    7.链接文件的介绍

    what is inode?

    介绍inode之前 我们先看硬盘结构的大体介绍

    圆形 每个硬盘盘头都有一个可以读写的磁头

    磁头固定,绕硬盘盘片转一圈,轨迹就是磁道Track,

    所有盘片相同磁道号的集合成为磁柱,每一磁道被划分了很多区域,每个区域叫一个扇区。扇区是硬盘的最小存储物理量,约512字节。

    硬盘分割后,格式化。格式化要考虑两个方面,Block和inode,Block是磁盘可以记录的最小单位,由数个扇区组成。

    Block是记录文件内容数据的区域,inode是记录该文件属性及放置在哪个Block的信息,所以每个文件都会占用一个inode,所以我们就知道,一个分区被格式化为一个文件系统后,基本上他都一定会有inode table 与数据区两大块。

    ln(唉,终于要说这个指令了)

    相当于windows的快捷方式,不过链接功能要好用得多。连接分硬链接和符号链接。

    硬链接:当系统要读取一个文件时,他会先读取inode table,再建一个inode到文件Block,没有错,这两个inode都可以到我们需要的Block那里去。但是“目录”本身是消耗inode的,这样,缺点之一:硬链接就不能链接目录,第二,不能跨文件系统。

    符号链接:建个文件,相当于路牌,指向所需文件。

    测试案例:

    (cp 最后那个 "." 别忘了)

    准备工作,建文件夹

    0原始信息:

    1硬链接信息:

     

    注意看,上面那个数字变成2了(好神奇啊!!),这就表示占用了inodes。

    2符号链接信息

    注意passwd-soft会指向另一个文件,而且,最前面属性为1,此外,他是一个独立文件。先删除passwd,我们看一下内容。

    3使用more

    (好神奇)

    如果使用-s参数,符号链接虽然跟windows的快捷方式相像,但不同,在windows中,你怎么修改快捷方式那个图标,甚至内部信息,都不会对原文件有一丝一毫的影响(撑死对不上号打不开了),但是Linux不同,你修改链接文件,被指向的文件也会修改的。

    如果你:ln -s /bin /root/bin     /root/bin中的东西其实都是/bin的。

    8.文件与目录权限的指令

    chown chgrp chmod 

    -R 可以一下改变一个目录内所有文件的权限噢

    umask 可以修改建立文档时的权限噢

    用户建文档默认权限是666

    建文件夹默认是777

    你可以 umask 111

    之后再建个文件夹  就会是 666了

    chattr lsattr

    chattr +i 1.txt 如此就无法修改这个txt文档了

    chattr -i 1.txt 解除该属性

    可是我们如何看这个文件有哪些属性呢?

    没错  lsattr就是来看的

    -a 将隐藏文件的属性也显示

    -R将子目录的数据也一并显示出来

    这两个指令要谨慎使用。+i后就没法变了。

    9.搜寻文件或目录

    which查看可执行文件的位置

    whereis查看文件的位置

    locate 配合数据库查看文件位置

    find 实际搜寻硬盘查询文件名称

    which 别忘了是查看可执行文件的位置(eg: passwd)

    whereis

    (指令有的翻译了,有的没翻译。)

    从上到下依次是只找二进制,只找说明文件manual路径下的文件,只找source源文件,-u是没有说明文档的文件。

    whereis -m passwd

    仅搜寻man page 所在的目录。

    whereis 相对于find快很多,这是为什么呢

    因为Linux系统将系统内的所有文件都记录在一个数据库文件中,所以就快了(??)。

    locate 

    和whereis 一样都是从数据库文件中来找东西,但是呢,Linux的数据库默认是一周更新一次,所以你刚刚删掉的,你会再找到,你刚刚添加的,你会在下一周才能找到。如何解决这个问题呢?

    updatedb闪亮登场

    来让我们看看吧

    首先 touch 建个文档123456

    用locate去数据库文件中找,(没更新呢,怎么会找到呢)

    updatedb更新一下,

    再找,找到了,然后我们删除一下

    删除了,可是还能在数据库文件找到,更新一下,就找不到了。嗯就是这样。

    那么到底要建立哪些数据库呢,是否全部都要建立,似乎不需要,可以选择需要建立数据数据库的目录。在/etc/updatedb.conf内设定。

    find(这个不简单,我之前还天真的以为只是查找)

    (好想跳过,而且书上说了,由于find在寻找数据时,相当耗硬盘(那可是递归呀。。),所以没事不要用find,用更棒的locate和whereis代替,不过还是看看吧)

    1.时间

    -atime n 将n*24小时内被存取过的文件列出来

    -ctime n 将n*24小时内被改变、新增的文件或目录列出来

    -mtime n 将n*24小时内被修改过的文件列出来

    -newer file 把比file还要新的文件列出来

    2.使用名称

    -gid n 寻找群组ID为n的文件

    -group n 寻找群组名称为n的文件

    -uid n 寻找拥有者ID为n的文件

    -user n 寻找拥有者名称为n的文件

    -name file 找file(之前只知道这一条)

    -type type 按类型找(后面那个type可以是b,c,d,p,l,s)

    10.SetUID,SetGID,Sticky bit 与file指令

    UID用户代号

    GID群组代号

    可以用 more /etc/passwd 查看系统中所有账号

    如果新建一个用户,UID、GID都是0,那就是root身份。

    SUID、SGID又是什么?

    Set UID(SUID)的主要功能就是在某个文件执行期间具有文件拥有者的权限。

    就是下图中那个rw “s”,这里是SUID,如果是-rwxr-sr-x这里就是SGID。

     

    当一个文件具有SUID时,同时others群组拥有x,那么当others群组执行该程序时,others群组将拥有该文件的owner权限。

    (owner:?????就因为一个SUID,别人就能和我一样高贵了?)

    (可不是嘛,所以涉及到变更一个文件使之具有SUID,SGID,要万分谨慎)

    Sticky bit

    为什么 othrs的x没有用s代替的情况呢?

    没必要。

    所有人都可执行,他们自然有权限。

    这里有个新的属性(Sticky bit) t,最大的用处:具有t属性的目录,其下的文件或目录只有文件拥有者及root 才有权删除。

    在我们的系统中预设有一个这样的目录,辣就是/tmp

    最后一行的tmp  “t“引人注目

    这说明了什么,在这个目录里,普通用户可以新建修改任何文件,但是仅能删除自己建立的文件,除非你是root。

    来让我们试试吧

     root登陆

    到/tmp里建个文件夹shanbudiao

    修改权限777 

    用普通账户登陆

    尝试删除

    失败了。

    最后一个指令 file

    file 【文件名】

    可以查看文件类型,还可以看是否被加入SUID等信息。

    (文件部分的指令就到此结束了,o(* ̄▽ ̄*)ブ)

  • 相关阅读:
    JSON序列化时消除空格
    appium测试准备记录
    计算器的单元测试dome
    using关键字在C#中的3种用法
    VxWorks多任务功能
    VS2008与MATLAB R2007a混合编程配置过程
    MATLAB和C语言混合编程-----Matlab7.0 编译器设置
    C++虚函数与纯虚函数用法与区别(转载)
    printf("%f ", 3);输出结果为什么是0.000000(转载)
    浮点型数据在内存中存储的表示(转载)
  • 原文地址:https://www.cnblogs.com/xx123/p/9742863.html
Copyright © 2020-2023  润新知