linux系统之目录管理

本文详细介绍了Linux系统中关于目录与文件管理的各种操作,包括cd、pwd、mkdir、rmdir、ls、rm、mv等命令的使用,以及文件权限、路径变量$PATH、文件内容查阅等。同时,讲解了复制、删除、移动文件和目录的方法,如cp、rm、mv指令,以及如何查看和修改文件时间戳。此外,还提到了非纯文本文件的查阅、文件搜索工具如which、locate和find的使用。
摘要由CSDN通过智能技术生成

1.目录与路径

1.1 目录的相关操作

1.cd:变换(切换)目录
    * cd ~ 或者是 cd
        - 表示回到自己的家目录,也就是/root的目录
    * cd ..
        - 表示回到上一层的目录
2.pwd:查看当前目录
3.mkdir:创建一个空的目录
    * mkdir test1
    * mkdir test1/test2/test3
        - 若是test3前两个目录不存在,会报错,要先创建这个目录
    * mkdir -p test1/test2/test3
        - 加入了-p,可以自行帮你创建多层目录
    * mkdir -m 711 test2
        - 加上-m来强制设定文件权限
4.rmdir:删除一个空的目录
    * rmdir test1
    * rmdir  test1
        - 此时会报错,因为此目录里有文件或目录
    * rmdir -p test1/test2/test3
        - 连同上层或空的目录均一起删除
    * 注意:此命令仅仅只能删除空的目录哦
5.ls -ld test*:查看目录的权限
6.rm -rf:删除文件或文件目录,此命令需小心使用,若是没有注意可能会导致连系统都删除
7.特殊目录:
    * .代表此层目录
    * ..代表上一层目录
    * -代表前一个工作目录
    * ~代表[目前用户身份]所在的家目录
​

1.2 关于执行文件路径的变量:$PATH

1.哪些目录被定义出来:echo $PATH
2.不同身份使用者预设的PATH不同,默认能够随意执行的指令也不同
3.PATH是可以修改的
4.使用绝对路径或相对路径直接某个指令的文件名来执行,会比搜寻PATH来的正确
5.指令应该要放置到正确的目录下,执行才会比较方便

2.文件与目录管理

2.1 文件与目录的检视:ls

1.ls:文件与目录的检视
    * ls -a:查看全部的文件,连同隐藏文件(开头为.的文件)一起列出来【比较常用】
    * ls -A:查看全部的文件,连同隐藏文件,但不包括.与..这两个目录
    * ls -d:仅仅列出目录本身,而不是列出目录内的文件数据
    * ls -f:直接列出结果,而不进行排序(ls预设会以目录名排序)
    * ls -F:根据文件、目录等信息,给予附加数据结构
        - * 代表可执行文件
        - /  代表目录
        - =   代表socket文件
        - I  代表FIFO文件
    * ls -h:将文件以人类较易读的方式(如GB KB等等)列出来
    * ls -l:长数据串行出,包含文件的属性与权限等等【常用】
    * ls -r:将排序结果反向输出。例如原本是从小到大,反向则由大到小
    * ls -R:连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来
    * ls -S:以文件容量大小排序,而不是用原本的档名排序
    * ls -t:依据时间排序,而不是用原档名
    * --color=never:不要依据文件特性给予颜色显示
    * --color=always:显示颜色  
    * --color=auto:让系统自行依据设定来判断是否给予颜色  
    * --full-time:完整时间模式(年月日时分)输出
    * --time={atime,ctime}:输出access时间或改变权限属性时间(ctime)而非内容变更时间(modification time)
    * 案例
        - 1.将目录下的所有文件列出来(包含属性与隐藏文件)
            & ls -al
        - 2.承1,不显示颜色,但在文件名末显示出该文件名代表的类型
            & ls -alF  --color=never
        - 3.完整的呈现文件的修改时间
            & ls -al --full-time
    * 需要注意的点
        - 目录文件名是以深蓝色显示
        - ls -al 仅列出目前短格式的时间,有时不会列出年份
2.linux系统中,这个ls指令是最常被执行的指令

2.2 复制、删除与移动:cp,rm,mv

1.cp:复制
    cp 来源文件 目标文件
    cp -d:若来源文件为链接文件的属性,则复制链接文件属性而非文件本身
    cp -f:强制的意思,若目标文件已经存在且无法开启,则移除后在尝试一次
    cp -i:若目标文件已经存在时,在覆盖时会先询问动作的进行【常用】
    cp -p:连同文件的属性(权限、用户、时间)一起复制过去,而非使用默认属性【备份常用】
    cp -r:递归持续复制,用于目录的复制行为【常用】
2.rm:删除
    rm -f:就是强制的意思,忽略不存在的文件,不会出现警告讯息
    rm -i:互动模式,在删除前会询问使用者是否动作
    rm -r:递归删除,最常用在目录删除,这是危险的操作,稍有不慎,系统也会进行删除
3.mv:移动
    mv 来源文件  目标文件
    mv -f:就是强制的意思,如果目标文件已经存在,不会询问而直接覆盖
    mv -i:若目标文件已经存在是,就会询问是否覆盖
    mv -u:若目标文件已经存在,且来源文件比较新,才会更新

3.文件内容查阅

3.1 直接检视文件内容

1.cat:由第一行开始显示文件内容
    若是文件比较短可以使用cat查阅全文
    cat -A 文件名:可列出一些特殊字符而不是空白而已
    cat -b 文件名:列出行号,仅针对非空白行做行号显示,空白行不标行号
    cat -E 文件名:将结尾的断行字符$显示出来
    cat -n 文件名:打印出行号,连同空白行也会有行号
    cat -T 文件名:将【tab】按键以^I显示出来
    cat -v 文件名:列出一些看不出来的特殊字符
2.tac:从最后一行开始显示,是cat倒着写
​
3.nl:显示的时候,将行号一起输出
    nl [-bnw] 文件
    nl -b:指定行号指定方式,主要有两种
        -b a:表示不论是否为空行,也同样列出行号(类似cat -n)
        -b t:如果有空行,空的那一行不要列出行号(默认值)
    nl -n:列出行号表示的方法,主要有三种
        -n ln:行号在屏幕的最左方显示
        -n rn:行号在自己字段的最右方显示,且不加0
        -n rz:行号在自己字段的最右方显示,且加0
    nl -w:行号字段的占用的字符数

3.2 可翻页检视

1.more:一页一页的显示文件内容
    空格按键:代表向下翻一页
    enter:代表向下翻一行
    /字符串:代表在显示的内容中,向下搜寻字符串这个关键字
    :f  立刻显示出文件名以及目前显示的行数
    q:代表立刻离开more,不再显示该文件内容
    b:代表往回翻页,不过这动作只对文件有用
2.less:与more类似,但是比more更好的是,这个可以往前翻页
    空格按键:代表向下翻一页
    【pagedown】:向下翻一页
    【pageup】:向上翻一页
    /字符串:代表在显示的内容中,向下搜寻字符串这个关键字
    ?字符串:代表在显示的内容中,向上搜寻字符串这个关键字
    n:重复前一个搜寻(与/或?有关)
    N:反向的重复前一个搜寻(与/或?有关)
    g:前进到这个资料的第一行去
    G:前进到这个数据的最后一行去
    q:离开less这个程序

3.3 资料撷取

1.head:只看头几行
    head -n:后面接数字,代表显示几行的意思
        head -n 20 文件名
            展示文件的前20行
2.tail:只看尾几行 默认情况是展示最后的十行
    tail -n:后面接数字,代表显示几行的意思
        tail -n 20 文件名
            展示文件的后20行
        tail -f:表示持续侦测后面所接的档名,要等到按下ctrl+c才会结束tail的侦测

3.4 非纯文本档:od

1.od:以二进制的方式读取文件内容
    od [-t TYPE]文件
    -t:后面可以接各种类型的输出
        a:利用默认的字符来输出
        c:使用ASCII字符来输出
        d[size]:利用十进制来输出数据,每个整数占用size bytes
        f[size]:利用浮点数来输出数据,每个整数占用size bytes
        o[size]:利用八进制来输出数据,每个整数占用size bytes
        x[size]:利用十六进制来输出数据,每个整数占用size bytes
        
2.利用这个指令,可以将data file或者是bunary file的内容数据给他读出来

3.5 修改文件时间或建置新档:touch

1.三个主要的变动时间,三个时间的意义是什么呢?
    modification time(mtime):该文件的[内容数据变更时],就会更新这个时间。内容数据指的是文件的内容而不是文件的属性或权限
    status time(ctime):当该文件的[状态]改变时,就会更新这个时间,举例来说,像是权限与属性被更改了,都会更新这个时间
    access time(atime):当[该文件的内容被取用]时,就会更新这个读取时间,距离来说,我们使用cat去读取文件,就会更新这个文件的atime
2.默认的情况下,ls显示出来的是该文件的mtime,也就是这个文件的内容上次被更改的时间
3.修改文件的时间:touch
    touch [-acdmt] 文件
        -a:仅修订access time
        -c:仅修改文件的时间,若该文件不存在则不建立新文件
        -d:后面可以接欲修订的日期而不用目前的时间,也可以使用--date=“时间或日期”
        -m:仅修改mtime
        -t:后面可以接欲修订的时间而不用目前的时间,格式为[YYYYMMDDhhmm]
    案例
        新建一个文件并观察时间
            touch testtouch
        找到一个文件,假设复制完全的属性,并检查其时间
            date; ll redis.conf ;ll --time=atime redis.conf; ll --time=ctime redis.conf
        修改文件,将日期调整为两天前
            touch -d "2 days ago" redis.conf
            修改的时候ctime不会跟着改变的哦
            ctime记录的是目前的时间
    最常被使用的情况
        建立一个空的文件
        将某个文件日期修订为目前(mtime与atime)

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

1.修改目录属性:chown -R root:root /tmp/test

4.1 文件预设权限:umask

1.umask就是指定:目前用户在建立文件或目录时候的权限默认值
2.查阅的方式有两种:
    * 一种直接输入umask,就可以看到数字形态的权限设定分数
        - 四组数字,第一组是特殊权限使用的,可以不用管
    * 一种则是加入-S这个选项,就会以符号类型的方式来显示出权限了
3.umask的分数指的是该默认值需要减掉的权限
    * 022 表示user没有拿掉任何权限,不过group和others的权限拿掉了2(也就是w的这个权限)
4.修改umask:umask 002

4.2 观察文件类型:file

1.想要知道某个文件的基本数据:file 文件名

5.指令与文件的搜寻

5.1 脚本文件的搜寻

1.which [-a] command
-a:将所有由PATH目录中可以找到的指令均列出,而不止第一个被找到的指令名称
which ifconfig
2.这个指令是根据[path]这个环境变量所规范的路径,去搜寻[执行档]的档名

5.2 文件档名的搜寻

1.whereis 文件或目录名
    只查找特定的目录,没有全系统去查询
主要是针对/bin/sbin下的执行文档
    选项和参数
        -l:可以列出whereis会去查询的几个目录
        -b:只找binary格式的文件
        -m:只找在说明文件manual路径下的文件
        -s:只找source来源文件
        -u:搜寻不再上述三个项目当中的其他特殊文件
2.locate [-ir] 关键字
    选项和参数
        -i:忽略大小写差异
        -c:不输出文档名,仅计算找到的文件数量
        -l:仅输出几行的意思,例如输出五行则是 -l 5
        -S:输出locate所使用的数据库文件的相关信息,包括该数据库记录的文件/目录数量等
        -r:后面可接正规表示法的显示方式
    locate -l 5passwd
3.locate寻找数据的时候特别快,因为locate寻找的数据是由[已建立的数据库/var/lib/mlocate]里面的数据所搜寻到的
不用直接去硬盘当中存取数据
4.locate的限制:
    * 经由数据库来搜寻的,而数据库的建立默认是每天执行一次
    * 手动更新数据库:updatedb
        - 此指令会去读取/etc/updatedb.conf这个配置文件的设定,然后在去硬盘里面进行搜寻文件名的动作,最后更新整个数据库
5.find [path] [参数]
    选项和参数 
        与时间相关的参数
            -mtime n:n为数字,意义在n天之前的一天之内被更改过内容的文件
            -minte +n:列出在n天之前(不含n天本身)被更改过内容的文件档名
            -mtime -n:列出在n天之内(不含n天本身)被更改过内容的文件档名
            -newer file:file为一个存在的文件,列出比file还要新的文件档名
        与使用者或组名相关的参数
            -uid n:n为数字,这个数字是用户的账户id,即uid
            -gid n:这个数字是组名的id即GID
            -user name:name为使用者账号名称
            -group name:name为组名
            -nouser:寻找文件的拥有者不存在/etc/passwd的人
            -nogroup:寻找文件的拥有群组不存在与/etc/group的文件
            当自行安装软件,很可能该软件的属性当中并没有文件拥有者,这个时候是可能存在的,所以就可以用-nouser和-nogroup搜寻
        与文件权限及名称有关的参数
            -name filename:搜寻文件名为filename的文件
            -size [+ -]SIZE:搜寻比size要大(+)或小(-)的文件
                c:代表byte  k:代表1024bytes 
                find / -size +50K
            -type TYPE:搜寻文件类型为TYPE的,类型主要有一般正规文件(f),装置文件(b,c),目录(d),连结档(l),socket(s)及FIFO(p)等属性
            -perm mode:搜寻文件权限刚好等于mode的文件,这个mode类似chmod的属性值
            -perm -mode:搜寻文件权限必须要全部囊括mode的权限
            -perm /mode:搜寻文件权限包含任一mode的权限
    案例
        与时间相关
            1.将过去系统上面24小时内有更改过的内容(mtime)的文件列出
                find / -mtime 0
            2.寻找/etc底下的文件,如果文件日期比/etc/passwd新就列出
                find /etc -newer /etc/passwd
        与使用者或组名相关的
            1.搜寻/home下属于root的文件
                find /home -user root
            2.搜寻系统中不属于任何人的文件
                find / -nouser
        与文件权限及名称有关的参数
            1.找出文档名为passwd这个文件
                find / -name passwd
            2.找出文件名包含了passwd这个关键字的文件
                 find / -name "*passwd*"
            3.找出/run目录下,文件类型为socket的档名有哪些
                find /run -type s
            4.搜寻文件中含有SGID SUID SBIT的属性
                find / -perm /7000
            5.找出系统中,大于1MB的文件
                find / -size +1M
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值