美文网首页
Linux的基础文件管理命令

Linux的基础文件管理命令

作者: 摩羯座的鱼 | 来源:发表于2018-05-16 15:11 被阅读0次

    Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。

    • cat命令

    cat是linux的基本文本输出命令,通常用于查看文件内容。

    语法

    cat [OPTION]... [FILE]...

    参数

    -n 或 --number:由1开始对所有输出的行数编号。
    -b 或 --number-nonblank:和-n相似,只不过对于空白行不编号。
    -s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。
    -v 或 --show-nonprinting:使用^和M-符号,除了LFD和TAB之外。
    -E或--show-ends:在每行结束处显示$。
    -T或--show-tabs:将TAB字符显示为^|。
    -e:等价于-vE。
    -A,--show-all:等价于-vET。
    -t:等价于"-vT"选项。
    cat主要功能
    1、一次显示文件的所有内容 cat filename
    2、从磁盘创建一个新文件cat >filename(只能创建新文件不能编辑已有文件)
    3、将几个文件合并为一个文件cat file1 file2 > file

    实例
    cat.png cat -v.png cat -b.png cat -E.png cat两个文件合并成一个文件.png
    • chattr命令

    chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,如果Linux内核版本低于2.2,那么许多功能不能实现。同样-D检查压缩文件中的错误的功能,需要2.5.19以上内核才能支持。另外,通过chattr命令修改属性能够提高系统的安全 性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var目录。

    • chattr和touch、chown、chmod等命令的比较
      chmod只是改变文件的读写、执行权限,touch只能修改文件的创建时间,而chattr是基于内核的更底层的属性控制。
    • 这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:
      a:让文件或目录仅供附加用途。
      b:不更新文件或目录的最后存取时间。
      c:将文件或目录压缩后存放。
      d:将文件或目录排除在倾倒操作之外。
      i:不得任意更动文件或目录。
      s:保密性删除文件或目录。
      S:即时更新文件或目录。
      u:预防意外删除。
    语法

    chattr [-RVf] [-+=AacDdeijsSu] [-v version] files...

    + :在原有参数设定基础上,追加参数。
    -:在原有参数设定基础上,移除参数。
    = :更新为指定参数设定。

    参数

    -R 递归处理,将指定目录下的所有文件及子目录一并处理。
    -v<版本编号> 设置文件或目录版本。
    -V 显示指令执行过程。
    +<属性> 开启文件或目录的该项属性。
    -<属性> 关闭文件或目录的该项属性。
    =<属性> 指定文件或目录的该项属性。

    实例

    用chattr命令防止系统中某个关键文件被修改:

    chattr +i /etc/resolv.conf
    lsattr /etc/resolv.conf

    会显示如下属性

    ----i-------- /etc/resolv.conf

    让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件:

    chattr +a /var/log/messages

    • chmod命令

    Linux/Unix 的文件调用权限分为三级 : 文件拥有者、群组、其他。利用 chmod 可以藉以控制文件如何被他人所调用。

    语法

    chmod [-cfvR] [--help] [--version] mode file...

    参数

    mode : 权限设定字串,格式如下 :

    [ugoa...][[+-=][rwxX]...][,...]

    • u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
      • 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
    • r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
      其他参数说明:
    • -c : 若该文件权限确实已经更改,才显示其更改动作
    • -f : 若该文件权限无法被更改也不要显示错误讯息
    • -v : 显示权限变更的详细资料
    • -R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
    • --help : 显示辅助说明
    • --version : 显示版本
    • 其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
    r=4,w=2,x=1

    若要rwx属性则4+2+1=7;
    若要rw-属性则4+2=6;
    若要r-x属性则4+1=5。

    实例
    同一个群体者可写入,但其他以外的人则不可写入 chmod 777
    • chown命令

    利用 chown 可以将档案的拥有者加以改变。这个指令只有是由系统管理者(root)所使用,一般使用者没有权限可以改变别人的档案拥有者,也没有权限可以自己的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限

    语法

    chown [-cfhvR] [--help] [--version] user[:group] file…

    参数
    • -c或-change:作用与-v相似,但只传回修改的部分
    • -f或–quiet或–silent:不显示错误信息
    • -h或–no-dereference:只对符号链接的文件做修改,而不更改其他任何相关文件
    • -R或-recursive:递归处理,将指定目录下的所有文件及子目录一并处理
    • -v或–verbose:显示指令执行过程
    • –dereference:作用和-h刚好相反
    • –help:显示在线说明
    • –reference=<参考文件或目录>:把指定文件或目录的所有者与所属组,统统设置成和参考文件或目录的所有者与所属组相同
    • –version:显示版本信息
    实例
    • cp命令
    语法

    cp [options] source dest 或 cp [options] source... directory

    参数
    • -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
    • -d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。
    • -f:覆盖已经存在的目标文件而不给出提示。
    • -i:与-f选项相反,在覆盖目标文件之前给出的提示,要求用户确认是否覆盖,回答“y”时目标文件将被覆盖。
    • -p:除复制文件的内容外,还把修改时间和访问权限也复制道心文件中。
    • -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
    • -l:不复制文件,只是生成链接文件。
    实例

    $ cp –r test/ newtest


    • ln命令

    ln命令用来为文件创件连接,连接类型分为硬连接和符号连接两种,默认的连接类型是硬连接。如果要创建符号连接必须使用"-s"选项。

    注意:符号链接文件不是一个独立的文件,它的许多属性依赖于源文件,所以给符号链接文件设置存取权限是没有意义的。

    语法

    In (选项) (参数)

    选项
    • -b或--backup:删除,覆盖目标文件之前的备份;
    • -d或-F或——directory:建立目录的硬连接;
    • -f或——force:强行建立文件或目录的连接,不论文件或目录是否存在;
    • -i或——interactive:覆盖既有文件之前先询问用户;
    • -n或--no-dereference:把符号连接的目的目录视为一般文件;
    • -s或——symbolic:对源文件建立符号连接,而非硬连接;
    • -S<字尾备份字符串>或--suffix=<字尾备份字符串>:用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,预设的备份字符串是符号“~”,用户可通过“-S”参数来改变它;
    • -v或——verbose:显示指令执行过程;
    • -V<备份方式>或--version-control=<备份方式>:用“-b”参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这个字符串不仅可用“-S”参数变更,当使用“-V”参数<备份方式>指定不同备份方式时,也会产生不同字尾的备份字符串;
    参数
    • 源文件:指定连接的源文件。如果使用-s选项创建符号连接,则“源文件”可以是文件或者目录。创建硬连接时,则“源文件”参数只能是文件;
    • 目标文件:指定源文件的目标连接文件。
    实例

    将目录/usr/mengqc/mub1下的文件m2.c链接到目录/usr/liu下的文件a2.c

    cd /usr/mengqc
    ln /mub1/m2.c /usr/liu/a2.c

    在执行ln命令之前,目录/usr/liu中不存在a2.c文件。执行ln之后,在/usr/liu目录中才有a2.c这一项,表明m2.c和a2.c链接起来(注意,二者在物理上是同一文件),利用[ls](http://man.linuxde.net/ls "ls命令") -l命令可以看到链接数的变化。

    在目录/usr/liu下建立一个符号链接文件abc,使它指向目录/usr/mengqc/mub1

    ln -s /usr/mengqc/mub1 /usr/liu/abc

    执行该命令后,/usr/mengqc/mub1代表的路径将存放在名为/usr/liu/abc的文件中。

    • locate命令
    语法

    locate命令其实是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。

    命令参数
    • -e 将排除在寻找的范围之外。
    • -1 如果 是 1则启动安全模式。在安全模式下使用者不会看到权限无法看到的档案。这会使速度减慢因为 locate 必须至实际的档案系统中取得档案的 权限资料。
    • -f 将特定的档案系统排除在外例如我们没有道理要把 proc 档案系统中的档案 放在资料库中。
    • -q 安静模式不会显示任何错误讯息。
    • -n 至多显示 n个输出。
    • -r 使用正规运算式 做寻找的条件。
    • -o 指定资料库存的名称。
    • -d 指定资料库的路径
    • -h 显示辅助讯息
    • -V 显示程式的版本讯息
    实例
    • lsattr命令
    语法

    lsattr [-adlRvV] [文件或目录...]

    参数
    • -a  显示所有文件和目录,包括以"."为名称开头字符的额外内建,现行目录"."与上层目录".."。
    • -d  显示,目录名称,而非其内容。
    • -l  此参数目前没有任何作用。
    • -R  递归处理,将指定目录下的所有文件及子目录一并处理。
    • -v  显示文件或目录版本。
    • -V  显示版本信息。
    实例
    • mv命令
    语法

    mv (选项) (参数)

    选项

    --backup=<备份模式>:若需覆盖文件,则覆盖前先行备份;
    -b:当文件存在时,覆盖前,为其创建一个备份;
    -f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
    -i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。
    --strip-trailing-slashes:删除源文件中的斜杠“/”;
    -S<后缀>:为备份文件指定后缀,而不使用默认的后缀;
    --target-directory=<目录>:指定源文件要移动到目标目录;
    -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

    参数
    • 源文件:源文件列表。
    • 目标文件:如果“目标文件”是文件名则在移动文件的同时,将其改名为“目标文件”;如果“目标文件”是目录名则将源文件移动到“目标文件”下。
    实例

    将文件ex3改名为new1

    mv ex3 new1

    将目录/usr/men中的所有文件移到当前目录(用.表示)中:

    mv /usr/men/* .

    • rm命令

    rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。

    注意:使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以,在删除文件之前,最好再看一下文件的内容,确定是否真要删除。rm命令可以用-i选项,这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项,系统会要求你逐一确定是否要删除。这时,必须输入y并按Enter键,才能删除文件。如果仅按Enter键或其他字符,文件不会被删除。

    语法

    rm (选项)(参数)

    参数

    -d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
    -f:强制删除文件或目录;
    -i:删除已有文件或目录之前先询问用户;
    -r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
    --preserve-root:不对根目录进行递归操作;
    -v:显示指令的详细执行过程。

    实例

    交互式删除当前目录下的文件test和example

    rm -i test example
    Remove test ?n(不删除文件test)
    Remove example ?y(删除文件example)

    删除当前目录下除隐含文件外的所有文件和子目录

    rm -r *

    • tee命令

    读取标准输入的数据,并将其内容输出成文件。
    tee命令用于将数据重定向到文件,另一方面还可以提供一份重定向数据的副本作为后续命令的stdin。简单的说就是把数据重定向到给定文件和屏幕上。



    存在缓存机制,每1024个字节将输出一次。若从管道接收输入数据,应该是缓冲区满,才将数据转存到指定的文件中。若文件内容不到1024个字节,则接收完从标准输入设备读入的数据后,将刷新一次缓冲区,并转存数据到指定文件。

    语法

    tee(选项)(参数)

    选项

    -a:向文件中重定向时使用追加模式;
    -i:忽略中断(interrupt)信号。

    参数

    文件:指定输出重定向的文件。

    实例

    在终端打印stdout同时重定向到文件中:

    ls | tee out.txt
    1.sh
    1.txt
    2.txt
    eee.tst
    EEE.tst
    one
    out.txt
    string2
    www.pdf
    WWW.pdf
    WWW.pef

    ls | tee out.txt | cat -n
    1 1.sh
    2 1.txt
    3 2.txt
    4 eee.tst
    5 EEE.tst
    6 one
    7 out.txt
    8 string2
    9 www.pdf
    10 WWW.pdf
    11 WWW.pef

    • touch命令

    touch命令有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动的保留下来;二是用来创建新的空文件。

    语法

    touch(选项)(参数)

    选项

    -a:或--time=atime或--time=access或--time=use 只更改存取时间;
    -c:或--no-create 不建立任何文件;
    -d:<时间日期> 使用指定的日期时间,而非现在的时间;
    -f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题;
    -m:或--time=mtime或--time=modify 只更该变动时间;
    -r:<参考文件或目录> 把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同;
    -t:<日期时间> 使用指定的日期时间,而非现在的时间;
    --help:在线帮助;
    --version:显示版本信息。

    参数

    文件:指定要设置时间属性的文件列表。

    实例

    touch ex2

    在当前目录下建立一个空文件ex2,然后,利用ls -l命令可以发现文件ex2的大小为0,表示它是空文件。

    • umask命令

    umask命令用来设置限制新建文件权限的掩码。当新文件被创建时,最初的权限由文件创建的掩码决定。用户每次注册进入系统时,umask命令都被执行,并自动设置掩码mode来限制新文件的权限。用户可以通过再次执行umask命令来改变默认值,新的权限将会把旧的覆盖掉。

    语法

    umask(选项)(参数)

    选项

    -p:输出的权限掩码可直接作为指令来执行;
    -S:以符号方式输出权限掩码。

    参数

    权限掩码:指定权限掩码。

    实例

    利用umask命令可以指定哪些权限将在新文件的默认权限中被删除。例如,可以使用下面的命令创建掩码,使得用户的写权限,其他用户的读、写和执行权限都被取消:

    umask u=,g=w,o=rwx

    执行该命令以后,对于下面创建的新文件,其文件主的权限未做任何改变,而组用户没有写权限,其他用户的所有权限都被取消。
    不能直接利用umask命令创建一个可执行的文件,用户只能在其后利用chmod命令使它具有执行权限。假设执行了命令umask u=, g=w, o=rwx,虽然在命令行中,没有删去文件主和组用户的执行权限,但默认的文件权限还是640(即 rw-r-----),而不是750(rwxr-x---)。但是,如果创建的是目录或者通过编译程序创建的一个可执行文件,将不受此限制。在这种情况 下,会设置文件的执行权限。

    也可以使用八进制数值来设置mode。由于在umask中所指定的权限是要从文件中删除的,所以,如果该文件原来的初始化权限是777,那么执行命令umask 022以后,该文件的权限将变为755:如果该文件原来的初始化权限是666,那么该文件的权限将变为644。
    可以使用下面的命令检查新创建文件的默认权限

    umask -s

    选项-s表示以字符形式显示当前的掩码。如果直接输入umask命令,不带任何参数,那么将以八进制形式显示当前的掩码。系统默认的掩码是0022。

    • whereis命令

    whereis命令用来定位指令的二进制程序、源代码文件和[man]手册页等相关文件的路径。

    whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。

    和find命令相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis和下面即将介绍的locate命令时,会从数据库中查找数据,而不是像find命令那样,通 过遍历硬盘来查找,效率自然会很高。 但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。

    语法

    whereis(选项)(参数)

    选项

    -b:只查找二进制文件;
    -B<目录>:只在设置的目录下查找二进制文件;
    -f:不显示文件名前的路径名称;
    -m:只查找说明文件;
    -M<目录>:只在设置的目录下查找说明文件;
    -s:只查找原始代码文件;
    -S<目录>只在设置的目录下查找原始代码文件;
    -u:查找不包含指定类型的文件。

    参数

    指令名:要查找的二进制程序、源文件和man手册页的指令名。

    实例

    将相关的文件都查找出来

    [root@localhost ~]# whereis tomcat
    tomcat:

    [root@localhost ~]# whereis svn
    svn: /usr/bin/svn /usr/local/svn /usr/share/man/man1/svn.1.gz

    说明:tomcat没安装,找不出来,svn安装找出了很多相关文件

    只将二进制文件查找出来

    [root@localhost ~]# whereis -b svn
    svn: /usr/bin/svn /usr/local/svn

    [root@localhost ~]# whereis -m svn
    svn: /usr/share/man/man1/svn.1.gz

    [root@localhost ~]# whereis -s svn
    svn:

    说明:whereis -m svn 查出说明文档路径,whereis -s svn找source源文件。

    • which命令

    which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

    语法

    which(选项)(参数)

    选项

    -n<文件名长度>:制定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名;
    -p<文件名长度>:与-n参数相同,但此处的<文件名长度>包含了文件的路径;
    -w:指定输出时栏位的宽度;
    -V:显示版本信息。

    参数

    指令名:指令名列表。

    实例

    查找文件、显示命令路径:

    [root@localhost ~]# which pwd
    /bin/pwd
    [root@localhost ~]# which adduser
    /usr/sbin/adduser

    说明:which是根据使用者所配置的 PATH 变量内的目录去搜寻可运行档的!所以,不同的 PATH 配置内容所找到的命令当然不一样的!

    相关文章

      网友评论

          本文标题:Linux的基础文件管理命令

          本文链接:https://www.haomeiwen.com/subject/ryjfcftx.html