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

相关推荐

  • N26-第四周

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其他用户均没有任何访问权限。[root@localhost home]# cp -R /etc/skel/ /home/tuser1 && chmod -R g=,o= /home/tuser1 [root@localhost …

    Linux干货 2017-03-07
  • Bash shell 脚本编程全攻略(上篇)

    Bash shell 脚本编程全攻略(上篇)   什么是shell脚本呢? 当命令不在命令行上执行,而是通过一个文件执行时,该文件就称为shell脚本,脚本以非交互的方式运行。Shell脚本把命令通过一些语法组织起来,便能实现特定的功能。   Shell脚本主要运用在系统运维中,主要功能有: 自动化常用命令; 执行系统管理和故障排除; 创…

    Linux干货 2016-08-29
  • SHELL网络爬虫实例剖析

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1552472        前天简单分享了用 shell 写网络爬虫的一些见解,今天特地把代码发出来与51博…

    Linux干货 2016-08-15
  • 前三天基础-Linux文件系统概论

    Linux之我见     在2016农历丙申年2016年猴年,对于小白的我来说接触到了江湖流传的武功秘籍之-Linux心法,第一次接触到命令行,知道在键盘上随便敲击命令就可以满屏跑数据,就像看过的美国大片里黑客帝国里面的画面,感觉学会好后可以装逼了,废话不多说了,允许在下斗胆介绍Linux文件系统。     &nbsp…

    Linux干货 2016-03-24
  • 马哥linux0728课程内容

    课堂学习内容   -ahistory list –.bash_histroy 保存历史列表到历史文件 -cclear history list 清空历史列表 -d deletehistory entru 清除历史列表某一条命令 -rread .bash_history 读历史文件中的命令到历史列表…

    Linux干货 2016-08-04
  • 文件查找和压缩

    文件查找     在文件系统上查找符合条件的文件;       文件查找:locate, find        非实时查找( 数据库查找) :locate        实时查找:find locate &n…

    Linux干货 2016-08-18