linux怎么查看文件的管理,Linux文件查看和管理类命令

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:上述所有属性

举例

复制/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

复制/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强制

举例

更改/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'

用/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

举例

强制删除/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

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:设定目标文件属组

举例

比如现在复制/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

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等命令查看的是数据。

举例

使用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

举例

在/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

分别修改/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: -

可以看到访问时间已被更改,而且,因为修改了访问时间,相当于对文件做了改动,所以改动时间也随之更改。

修改/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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值