zoukankan      html  css  js  c++  java
  • Linux笔记:文件和目录常用操作

    本文讲了一些文件和目录本身的基础知识和操作,如新建、复制、移动等,并不涉及文件内容的查看、编辑、搜索等操作。 

    文件归属

    文件的归属只有三种关系:

    • 所有者u:即文件的拥有者,并且一个文件同时只能有一个所有者,一般是谁创建的文件,这个文件的所有者就是谁。
    • 所属组g:文件归属的组,并且一个文件同时只能归属于一个组,只有组中的成员才能操作此文件。
    • 其他人o:非前两者关系的用户就是其他人。

    文件权限

    Linux中权限的表示由四部分组成,如-rw-r--r--,第一部分为第一个字符,表示文件类型,常用文件类型有-(二进制文件)、d(目录)和l(软连接文件,相当于Windows中的快捷方式)。接下来每三个字符为一组的三个部分,分别代表该文件所有者u、所属组g和其他人o所拥有的权限,而每个部分的权限由三个字符表示其拥有的r读、w写和x执行权限,如果有该权限则用对应的字母表示,如果没有该权限则用-表示。

    目录的rwx权限如下(文件的rwx权限很好理解,但是目录的rwx权限是有些差别的):

    • r:可以列出目录中的内容。
    • w:可以在目录中创建和删除文件。
    • x:可以进入目录。

    ls命令

    ls [选项] [目录]:列出目录下的所有文件及子目录。

    选项:

    • -a:显示目录下的所有内容,包括隐藏文件(Linux中以点“.”开头的文件或目录为隐藏文件)。
    • -l:显示目录下内容的详细信息,分别为权限、引用系数(相当于引用计数)、文件所有者、文件所属组、文件大小(单位Byte)、文件最后一次修改时间(Linux中没有创建时间的概念)、文件名。
    • -h:人性化显示,将文件等内容的大小以较为人性化的方式显示,如M、G等,而不是默认的单位字节。
    • -d:显示当前所在目录或指定目录本身。
    • -i:显示文件或目录的id号(也称为i节点号)。

    mkdir命令

    mkdir [-p] 目录 [目录1 目录2 ...]:用于创建一个或多个空白目录。-p选项是用于递归创建目录。

    cd命令

    cd [目录]:切换到指定目录,目录还以使用一个点“.”表示当前目录,两个点“..”表示上一级目录。

    pwd命令

    显示当前目录的绝对路径。

    rmdir命令

    rmdir 目录:删除一个空目录。

    rm命令

    rm [-rf] 文件或目录:删除文件或目录,不加选项则默认删除文件。

    • -r:删除目录。
    • -f:强制执行。

    cp命令

    cp [-rp] 一个或多个原文件或目录 目标文件或目录:复制文件或目录,如果不加选项,则默认复制文件。当目标文件或目录不存在时,相当于复制并重命名。

    • -r:复制目录。
    • -p:保留文件属性,如最后一次修改时间等。

    mv命令

    mv 原文件或目录 目标文件或目录:移动(剪切)文件或目录。当目标文件或目录不存在时,则相当于剪切并重命名。

    文件或目录重命名:Linux中没有直接的重命名命令,但是一般使用mv来实现文件或目录的重命名,即将文件或目录移动到“原位置”,但是名称却变了,如“mv /tmp/test.txt /tmp/linux_test.txt”就可以将test.txt重命名为linux_test.txt。

    touch命令

    touch 一个或多个文件或目录:如果文件不存在,则会创建一个或多个空白文件(多个空白文件使用空格隔开,如果文件名中含有空格,文件名需要使用双引号括起来,但建议不要使用空格来命名文件)。如果文件或目录已经存在,则会根据指定的选项修改文件的时间属性,如最后一次修改时间(这里没有列出相应的选项,需要时可自行查看)。

    注意:新建的文件是没有执行权限的,所以如果新建的文件是脚本,则需要先赋予它执行权限才能执行这个脚本。

    ln命令

    ln [-s] 原文件 目标文件:生成链接文件(即目标文件,它指向原文件),默认生成硬链接文件。-s选项指定生成软链接文件。

    软链接:类似Windows中的快捷方式,只是一个指向另一个文件的链接而已,并且Linux中的软链接文件的权限永远都是lrwxrwxrwx,以及大小都是固定的很小的字节数。

    硬链接:硬链接的信息与原文件的信息都是一样的,并且其中一个文件更新后,硬链接文件也会同步更新,相当于cp -p命令再加上同步跟新的功能。之所以它能同步更新,是因为硬链接的i节点和原文件的i节点是相同的(而Linux就是通过i节点来识别不同的文件)。

    软链接与硬链接的差别(或者说硬链接的特点):

    • 硬链接是不能跨分区的。
    • 硬链接是不能指向目录的。

    locate命令
    locate -i 文件名:在文件资料库中查找文件。(默认区分大小写,-i选项表示不区分大小写)
    这个命令搜索速度非常快,几乎秒搜,find命令是去硬盘上搜索,而find是在自己维护的一个文件资料库中查找,这个文件资料库会定期自动更新。但是文件资料库是不会收录/tmp目录下的文件的。
    updatedb:手动更新文件资料库。

    find命令
    find 搜索范围 匹配条件:搜索文件。
    find是直接在硬盘上搜索,所以它的消耗是非常大的,所以使用的时候应该尽量缩小搜索范围,匹配条件也越精确越好。而且最好不要在系统负载较高时使用这个命令。
    常用选项:

    • -name:根据文件名搜索。如“find / -name init”表示在根目录的范围内搜索文件名为init的文件(精确匹配)。如果想要模糊匹配,可以使用通配符,如find / -name *init*(星号*匹配任意字符,问号?匹配单个字符)。
    • -iname:不区分大小写进行文件查找。
    • -size:根据文件大小进行搜索,+表示大于,-表示小于,=表示等于。查找大小的单位为一个数据块,Linux中一个数据块的大小为512字节,即0.5KB,所以搜索的时候需要自己转换以下。如“find / -size +204800”表示在根目录下查找大于100MB的文件(100MB=102400KB=204800个数据块)。
    • -user:根据所有者来进行搜索。
    • -group:根据所属组来进行搜索。
    • -amin:根据文件访问时间查找,时间单位为分钟。
    • -cmin:根据文件属性(属性即ls -l能查看到的内容)的改变时间查找,时间单位为分钟。如“find /etc -cmin -5”表示在/etc目录下查找5分钟内文件属性被修改过的文件。
    • -mmin:根据文件内容的改变时间查找,时间单位为分钟。
    • -a:连接选项,逻辑与,表示需要两个条件同时满足。如find /etc -size +1638840 -a -size -204800。
    • -o:连接选项,逻辑或,表示两个条件满足其中任意一个即可。
    • -type:根据文件类型查找,f表示文件,d表示目录,l表示软链接。
    • -exec/-ok 命令 {};:使用-exec(直接执行,不会询问)或-ok(执行命令时会进行询问)对查找结果执行某个命令,{};是固定的写法,{}表示查找结果,只是对后面分号;的转义而已。如“find /etc -name init -exec ls -l {};”。
    • -inum:根据i节点查找。
  • 相关阅读:
    【Java】快速排序、归并排序、堆排序、基数排序实现总结
    【Java】二分查找、插值查找、斐波那契查找的实现,及分析
    【Java】Java实现常见的七种排序
    【C】常见的排序
    栈,迷宫问题
    海量数据处理问题
    【C】 布隆过滤器BloomFilter
    哈希变形---位图
    C实现Hash表,链式结构
    C实现Hash表,开放定址法
  • 原文地址:https://www.cnblogs.com/guyuyun/p/12688947.html
Copyright © 2011-2022 走看看