Linux文件查看和管理类命令

1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
4、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。

      • Linux文件查看和管理类命令
        • 1. cp命令
        • 2. mv命令
        • 3. rm命令
        • 4. install命令
        • 5. stat命令
        • 6. touch命令

1. cp命令

cp – copy files and directories
cp [OPTION]… [-T] SOURCE DEST
cp [OPTION]… SOURCE… DIRECTORY
cp [OPTION]… -t DIRECTORY SOURCE…

  • 命令使用描述
    copy操作分为单源复制多源复制两种。

    • 单源复制
      cp [OPTION]… [-T] SOURCE DEST
      两种情况:

      • 如果DEST不存在,则实现创建此文件,并复制源文件的数据流至DEST中;
      • 如果DEST存在:
        1) DEST是目录文件:则现在目录下创建一个源文件同名文件,并复制其数据流至目标文件。非目录文件:则覆盖目标文件;
        2) DEST是非目录文件:则覆盖目标文件。
    • 多源复制(目标必须为目录)
      cp [OPTION]… SOURCE… DIRECTORY
      cp [OPTION]… -t DIRECTORY SOURCE…
      两种情况:

      • 如果DEST不存在:无法执行
      • 如果DEST存在:
        1) DEST是目录文件:分别复制每个文件至目标目录中,并保持原名
        1) DEST是非目录文件:无法执行
  • 常用选项

-i:–interactive:交互式复制,覆盖前提醒用户确认;
-f:–force:强制覆盖目标文件;
-r,-R:–recursive:递归复制目录;
-d:复制符号链接文件本身,而非其指向的源文件;
-a:=-dR,=–preserve=all,archive,用于实现归档(完全复制);
–preserve=

mode:权限
ownership:属主和属组
timestamp:时间戳
context:安全标签
xattr:扩展属性
links:符号链接
all:上述所有属性

  • 举例
    1. 复制/tmp/cpdir/cptest到/tmp下,并保留其所有属性
      使用-a或–preserve=all

      • cp -a /tmp/cpdir/cptest /tmp/
        [root@localhost ~]# ll /tmp/cpdir/cptest
        -rw-rw-r--. 1 test1 test1 0 Mar 11 17:00 /tmp/cpdir/cptest
        [root@localhost ~]# cp -a /tmp/cpdir/cptest /tmp
        [root@localhost ~]# ll /tmp/cptest
        -rw-rw-r--. 1 test1 test1 0 Mar 11 17:00 /tmp/cptest
      • cp –preserve=all /tmp/cpdir/cptest /tmp/
        [root@localhost ~]# cp --preserve=all /tmp/cpdir/cptest /tmp/
        [root@localhost ~]# ll /tmp/cptest
        -rw-rw-r--. 1 test1 test1 0 Mar 11 17:00 /tmp/cptest
    2. 复制/tmp/cptest.lnk链接文件本身(而非源文件)至/tmp/cpdir/
      使用-d或–preserve=links

      • cp -d /tmp/cptest.lnk /tmp/cpdir/
        [root@localhost tmp]# ll cptest.lnk
        lrwxrwxrwx. 1 root root 6 Mar 11 17:06 cptest.lnk -> cptest
        [root@localhost tmp]# cp -d /tmp/cptest.lnk /tmp/cpdir/
        [root@localhost tmp]# ll /tmp/cpdir/cptest.lnk
        lrwxrwxrwx. 1 root root 6 Mar 11 17:07 /tmp/cpdir/cptest.lnk -> cptest
      • cp –preserve=links /tmp/cptest.lnk /tmp/cpdir/
        [root@localhost tmp]# cp --preserve=links /tmp/cptest.lnk /tmp/cpdir/
        [root@localhost tmp]# ll cpdir/cptest.lnk
        -rw-r--r--. 1 root root 0 Mar 11 17:11 cpdir/cptest.lnk

        这个命令执行了,但是cptest.lnk显示是普通文件,而不是链接文件,不得其解。

2. mv命令

mv [OPTION]… [-T] SOURCE DEST
mv [OPTION]… SOURCE… DIRECTORY
mv [OPTION]… -t DIRECTORY SOURCE…

  • 常用选项

-i:交互
-f:force强制

  • 举例
    1. 更改/tmp/mvtest文件名为mvtest1,要求使用交互方式。
      使用-i选项

      • mv -i /tmp/mvtest /tmp/mvtest1
        [root@localhost tmp]# mv -i /tmp/mvtest /tmp/mvtest1
        [root@localhost tmp]# ls mvtest1
        mvtest1

        因为目标文件不存在,所以没有询问。
        再次创建一个文件mvtest,将它更名为mvtest1,因为这时mvtest1已经存在,所以出现询问:
        [root@localhost tmp]# touch mvtest
        [root@localhost tmp]# mv /tmp/mvtest /tmp/mvtest1
        mv: overwrite ‘/tmp/mvtest1’? y

        mv本身是mv -i的alias,所以不用加-i也同样会询问。
        [root@localhost tmp]# alias mv
        alias mv='mv -i'
    2. 用/tmp/mvtest2强制覆盖/tmp/mvtest1。
      使用-f选项

      • mv -f /tmp/mvtest2 /tmp/mvtest1
        [root@localhost tmp]# cat mvtest1 mvtest2
        I am mvtest1
        I am mvtest2
        [root@localhost tmp]# mv -f mvtest2 mvtest1
        [root@localhost tmp]# ls mvtest*
        mvtest1
        [root@localhost tmp]# cat mvtest1
        I am mvtest2

3. rm命令

rm [OPTION]… FILE…

  • 常用选项

-i:interactive
-f:force
-r:recursive

  • 举例
    1. 强制删除/tmp/rmdir下的所有文件和子目录
      使用选项-r(递归)和-f(强制)

      • rm -rf /tmp/rmdir
        [root@localhost /]# ls rmdir
        passwd pcp.conf pcp.sh php.ini printcap protocols
        passwd- pcp.env pear.conf pinforc profile
        [root@localhost /]# rm -rf rmdir
        [root@localhost /]# ls rmdir
        ls: cannot access rmdir: No such file or directory
    2. rm在bash中是rm -i的alias
      [root@localhost /]# alias rm
      alias rm='rm -i'

      -i选项的使用都一样,不做示例。

4. install命令

install – copy files and set attributes
单源复制:
install [OPTION]… [-T] SOURCE DEST
多源复制:
install [OPTION]… SOURCE… DIRECTORY
install [OPTION]… -t DIRECTORY SOURCE…
创建目录:
install [OPTION]… -d DIRECTORY…

  • 命令使用描述
    install命令类似于cp,但可以复制文件的同时设置目标文件的属性。
  • 常用选项

-m:–mode=MODE:设定目标文件权限(默认为755)
-o:–owner=OWNER:设定目标文件属主
-g, –group=GROUP:设定目标文件属组

  • 举例
    1. 比如现在复制/etc/vimrc到/tmp/installtest/路径下,并设置文件的权限为属主可读写可执行、属组可读可执行、其他只读,设置文件属主为user2,属组为test1
      • install -m 754 -o user2 -g test1 /etc/vimrc /tmp/installtest
        [root@localhost tmp]# install -m 754 -o user2 -g test1 /etc/vimrc /tmp/installtest
        [root@localhost tmp]# ll installtest/vimrc
        -rwxr-xr--. 1 user2 test1 1982 Mar 17 20:54 installtest/vimrc

        如果不指定-m参数,默认设置文件权限为755:
        [root@localhost installtest]# install -o user2 -g test1 /etc/vimrc /tmp/installtest
        [root@localhost installtest]# ll
        total 4
        -rwxr-xr-x. 1 user2 test1 1982 Mar 17 20:57 vimrc
  • Tips
    1. install命令不能复制目录。

5. stat命令

stat – display file or file system status
stat [OPTION]… FILE…

  • 命令使用描述
    每一个文件都有两类数据:元数据和数据本身

    • 元数据
      metadata,使用stat看到的就是元数据。
      元数据描述文件的属性,如访问权限、文件拥有者、文件数据块的分布信息(inode)、时间戳等。
      文件的时间戳信息由三种:

      • atime:access time:访问时间
      • mtime:modify time:更改时间(数据本身改变)
      • ctime:change time:改动时间(元数据改变),不能手动修改
    • 数据
      data,使用cat等命令查看的是数据。
  • 举例
    1. 使用stat命令查看/tmp/stattest文件的元数据
      • stat /tmp/stattest
        [root@localhost tmp]# stat stattest
        File: ‘stattest’
        Size: 0 Blocks: 0 IO Block: 4096 regular empty file
        Device: 801h/2049d Inode: 1166347 Links: 1
        Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
        Context: unconfined_u:object_r:user_tmp_t:s0
        Access: 2018-03-17 20:13:40.790174621 +0800
        Modify: 2018-03-17 20:13:40.790174621 +0800
        Change: 2018-03-17 20:13:40.790174621 +0800
        Birth: -

        Access、Modify、Change分别是访问时间、更改时间和改动时间,因为文件时刚创建的,没有被访问、更改和改动,三个时间是一样的。

6. touch命令

touch
touch – change file timestamps
touch [OPTION]… FILE…
可以改变文件的atime和mtime,无法改变ctime

  • 命令使用描述
    touch命令用来创建文件、修改目录或文件的时间戳信息。
  • 常用选项

-c:指定的文件路径不存在时,不予创建;
-a:只更改access time;
-m:只更改modify time;
-t STAMP:更改为指定时间,而不是当前时间

use [[CC]YY]MMDDhhmm[.ss] instead of current time

  • 举例
    1. 在/tmp下创建一个空文件touchtest
      • touch /tmp/touchtest
        [root@localhost tmp]# touch /tmp/touchtest
        [root@localhost tmp]# ll /tmp/touchtest
        -rw-r--r--. 1 root root 0 Mar 17 20:25 /tmp/touchtest
    2. 分别修改/tmp/touchtest的访问时间和修改时间为当前时间
      • touch -a /tmp/touchtest
      • touch -m /tmp/touchtest
        [root@localhost tmp]# touch -a touchtest
        [root@localhost tmp]# stat touchtest
        File: ‘touchtest’
        Size: 0 Blocks: 0 IO Block: 4096 regular empty file
        Device: 801h/2049d Inode: 1166348 Links: 1
        Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
        Context: unconfined_u:object_r:user_tmp_t:s0
        Access: 2018-03-17 20:26:29.480238254 +0800
        Modify: 2018-03-17 20:25:02.158231025 +0800
        Change: 2018-03-17 20:26:29.480238254 +0800
        Birth: -

        可以看到访问时间已被更改,而且,因为修改了访问时间,相当于对文件做了改动,所以改动时间也随之更改。
    3. 修改/tmp/touchtest的访问时间和修改时间为2018-3-10-08:08:08
      • touch -mat 201803100808.08 /tmp/touchtest
        [root@localhost tmp]# touch -mat 201803100808.08 /tmp/touchtest
        [root@localhost tmp]# stat touchtest
        File: ‘touchtest’
        Size: 0 Blocks: 0 IO Block: 4096 regular empty file
        Device: 801h/2049d Inode: 1166348 Links: 1
        Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
        Context: unconfined_u:object_r:user_tmp_t:s0
        Access: 2018-03-10 08:08:08.000000000 +0800
        Modify: 2018-03-10 08:08:08.000000000 +0800
        Change: 2018-03-17 20:30:59.678260621 +0800
        Birth: -

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/92595

(0)
上一篇 2018-03-17 21:00
下一篇 2018-03-17 21:11

相关推荐

  • Linux用户和组管理(第三周)

    第三周作业 1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可 [root@localhost ~]# who | cut -d" " -f1 | sort | uniq 2.取出最后登录到当…

    Linux干货 2016-09-15
  • DNS 及 bind的简单配置

    bind的简单配置 摘要:DNS  bind简单配置        FQDN        http://www.178linux.com.  WWW是主机名  .178linux.COM.是私有域名&nbsp…

    Linux干货 2015-10-18
  • 初涉Linux基本要点概括(2)

    linux上的文件查看与管理类命令 mkdir 作用: 创建目录 语法: mkdir [OPTION]… DIRECTORY… 示例: mkdir -p /tmp/x/y/z             &nb…

    Linux干货 2016-10-15
  • Linux运维学习历程-第四天-Linux的使用帮助和快捷键

    本章内容     命令存放位置     命令帮助      help     man帮助     其它帮助        命令历史     快捷键 一、命令存放位置   &nbsp…

    Linux干货 2016-08-03
  • 文件查找——藏的在深也没用

    locate 依赖与事先构建好的数据库查找          系统自动实现(周期性任务)          手动更新数据库(updatedb) 工作特性    …

    Linux干货 2016-08-15
  • Linux三剑客之grep

    grep(Globel Search Regular Expression and Printing out the line)全面搜索正则表达式并把行打印出来)是一个强大的文本搜索工具,使用正则表达式搜索文本的文本,并把结果打印出来。Unix家族包括grep、egrep和fgrep。egrep是扩张的正则表达式它支持更多的字符,fgrep是fast gre…

    Linux干货 2016-08-12