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

相关推荐

  • 第二周博客作业

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示? cat(concatenate)#从头开始看     文本文件查看工具 SYNOPSIS:     cat [OPTION]… [FILE]… -A 输出行最后加上$号 -n 输出行号 例…

    Linux干货 2016-12-12
  • 高可用Nginx

    高可用Nginx 基于vrrp流动一个IP地址 各节点时间必须同步; 确保iptables以及selinux不会成为阻碍; 各节点之间可通过主机名互相同喜(对KA而言并非必须) 确保各节点的用于集群服务的接口支持MULTICAST通信 IPv4,D类地址224-239 环境: node1:172.16.253.223 li1.jing.io node1 no…

    Linux干货 2017-06-28
  • MySQL/MariaDB基于MMM实现读写分离及高可用

    前言 MMM(Master-Master replication managerfor Mysql,Mysql主主复制管理器)是一套灵活的脚本程序,基于perl实现,用来对mysql replication进行监控和故障迁移,并能管理mysql Master-Master复制的配置(同一时间只有一个节点是可写的)。 MMM 优缺点 优点:高可用性,扩展性好,…

    Linux干货 2015-06-24
  • 二、(2)bash的工作特性之:命令执行状态返回值及命令行展开

    bash 工作特性 命令执行状态 命令行展开

    2018-01-10
  • 创建,扩展,缩减LVM2及快照

    相关概念     lvm英文 Logical Volume Manager,逻辑卷管理类似于raid,但又有别于raid, 它是能够将一个或多个底层块设     备组织成一个逻辑设备的模块不具备容错功能,任一设备损坏或分区损坏,对数据是致命的;它主要有三个部分…

    Linux干货 2016-02-14
  • 批量部署lxc虚拟机

    前言:lxc是一种操作系统层虚拟化(Operating system–level virtualization)技术,为Linux内核容器功能的一个用户空间接口。它将应用软件系统打包成一个软件容器(Container),内含应用软件本身的代码,以及所需要的操作系统核心和库。通过统一的命名空间和共用API来分配不同软件容器的可用硬件资源,创造出应用程…

    Linux干货 2016-03-20