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)
GeniusyqcGeniusyqc
上一篇 2018-03-17
下一篇 2018-03-17

相关推荐

  • 三.Linux博客-2016年7月24日帮助、history、别名、tree

    格式说明: 操作 概念 命令 说明及举例 三-1.帮助、history、别名、tree touch /etc/nologin 使普通用户不能登录(创建了一个文件,删掉就可以登陆)   ll /etc/nologin 查看那个文件 -rm -f /etc/  删…

    Linux干货 2016-08-23
  • 关于 文本处理工具、正则表达式、grep 的简单举例

                              文本处理工具 抽取文本的工具 文件内容:less和cat 文件截取:head和tail 按列抽取:cut 按关键字抽取:grep 文件查看命令:cat,tac,rev cat […

    系统运维 2016-08-08
  • 权限管理练习题

    权限管理练习题:     1、当用户xiaoming对/testdir 目录无执行权限时,意味着无法做哪些操作?         不能cd到该目录下,不能ls -l访问目录里面文件元数据的信息    &nbsp…

    Linux干货 2016-08-04
  • Linux上glob用于实现文件名的通配、IO重定向及管道

    Linux中所谓的通配是指,显示以指定条件为条件的文件;即通配的含义是指搜寻以已知条件为前提的目标文件。 常用文件通配符有: 文件通配符 含义 例子 * 任意长度的任意字符 如a*,搜寻所有以a为首的文件名的文件 ? 任意的单一字符 如a?,搜索所有的以a开头的两个字符的文件名的文件 [] 匹配指定范围内的任意的单个字符 如[a-z],匹配任意单个字母(不区…

    Linux干货 2017-04-04
  • 26期网络班

    26期网络班

    Linux干货 2016-12-26
  • 手动自制Mini Linux

        linux系统内核非常的精简,而且基于一切皆文件的思想,使得我们可以再现有系统上挂载一个空硬盘,利用现有系统编译一个内核和相关程序文件并拷贝到空硬盘上。我们就可以用空硬盘来单独运行一个精简的linux系统,这对于依赖于注册表的windows系统来说是不可能实现的。本文简要介绍一下一个mini linux的安装制…

    Linux干货 2016-05-03