linux文件管理命令与命令行展开

linux文件管理命令与命令行展开

一、 Linux上的文件管理类命令有哪些,其常用的使用方法及相关示例演示

  1. rmdir: 删除空目录,如果目录里面有内容,需要删除的话,则需要使用rm命令

格式: rmdir [options] directory…

选项: -p: 递归删除

示例:在 /tmp下创建了a/b/c的目录,首先,我们删除/tmp/a目录,看系统如何提示。 第二步,使用-p选项删除这些目录。

[root@localhost tmp]# mkdir -p /tmp/a/b/c

[root@localhost tmp]# tree /tmp/a

/tmp/a

└── b

└── c

 

[root@localhost tmp]# rmdir a

rmdir: 删除 “a” 失败: 目录非空

 

[root@localhost tmp]# rmdir -p a/b/c

 

 

 

 

  1. mkdir: 创建目录

格式: mkdir [选项] 目录…

选项: -m MODE: 创建目录时,设定目录的访问权限,默认权限为755,可以使用此选项更改目录的权限,权限可以是8进制数字格式,也可以指定ugo的权限

-p: 递归创建目录,创建一个目录,如果其父目录不存在,则递归创建其父目录

示例:

[root@localhost tmp]# mkdir -m 777 a

[root@localhost tmp]# ls -ld a

drwxrwxrwx. 2 root root 6 12月 10 20:06 a

 

[root@localhost tmp]# mkdir -m u=rwx,g=rw,o=rw b

[root@localhost tmp]# ls -ld b

drwxrw-rw-. 2 root root 6 12月 10 20:07 b

 

 

[root@localhost tmp]# mkdir /e/f/g

mkdir: 无法创建目录”/e/f/g”: 没有那个文件或目录

[root@localhost tmp]# mkdir -p /e/f/g

[root@localhost tmp]#

 

 

  1. touch: 创建文件或者修改文件的时间属性

atime和mtime都可以更改,但ctime不能使用命令更改,通过更改atime和mtime,ctime会自动修改。

格式: touch [-acm][-r ref_file(参照文件)|-t time(时间值)] file(文件名)…

 

用法描述: touch 修改每个指定文件 file 的存取(access)和/或修改(modifica‐ tion)时间戳记. 除非使用-r或-t选项,这些时间戳记都将修改为当前的时间. 使用-r选项时,这些戳记将按照文件–ref_file的时间戳记来修改(即变得和ref_file时间戳记值相同).使用-t选项,则这些戳记将按照给定的时间值 time 进行修改.同时使用或同时不使用选项-a和-m,存取和修改两个戳记都将被更改.若只使用选项-a,则只修改存取戳记.同样,只使用选项-m,则只修改修改戳记.若要修改戳记的文件尚不存在,除非使用-c选项,touch将创建它(作为空文件,并赋予0666的模式且受umask值的限制)

 

选项:

-a, –time=atime, –time=access, –time=use

只修改存取时间.

-c, –no-create

如果要修改的文件不存在,此选项使touch不去创建它.

 

-m, –time=mtime, –time=modify

只修改修改时间.

-r file, –reference=file

使用参照文件 file 的时间戳记值修改指定文件的时间戳记.

-t decimtime

这里时间值 decimtime 的格式为MMDDhhmm[[CC]YY][.ss]

从左至右分别是月份,日期,小时,分钟,可选的世纪和

年,以及可选的秒. touch 将用这组数值修改指定文件的

时间戳记.请注意,这个格式与POSIX标准所规定的格式并

不一样.

实际的时间格式为年年年年月月日日时时分分[秒秒]

 

示例:

1) 使用touch创建文件file1

[root@localhost tmp]# touch file1

[root@localhost tmp]# ll file1

-rw-r–r–. 1 root root 0 12月 10 20:16 file1

[root@localhost tmp]#

 

[root@localhost tmp]# stat file1

文件:”file1″

大小:0 块:0 IO 块:4096 普通空文件

设备:fd00h/64768d Inode:67167337 硬链接:1

权限:(0644/-rw-r–r–) Uid:( 0/ root) Gid:( 0/ root)

环境:unconfined_u:object_r:user_tmp_t:s0

最近访问:2017-12-10 20:16:52.075000000 +0800

最近更改:2017-12-10 20:16:52.075000000 +0800

最近改动:2017-12-10 20:16:52.075000000 +0800

创建时间:-

 

 

 

2) 修改file1的atime为2012年10月20日19点16分

[root@localhost tmp]# touch -a -t 201210201916 file1

 

[root@localhost tmp]# stat file1

文件:”file1″

大小:0 块:0 IO 块:4096 普通空文件

设备:fd00h/64768d Inode:67167337 硬链接:1

权限:(0644/-rw-r–r–) Uid:( 0/ root) Gid:( 0/ root)

环境:unconfined_u:object_r:user_tmp_t:s0

最近访问:2012-10-20 19:16:00.000000000 +0800

最近更改:2017-12-10 20:16:52.075000000 +0800

最近改动:2017-12-10 20:33:04.285000000 +0800

创建时间:-

 

 

3) 使用touch -c,并不真正创建文件,但如果文件存在,会更新文件的三个时间戳

[root@localhost tmp]# touch -c file1

[root@localhost tmp]# stat file1

文件:”file1″

大小:0 块:0 IO 块:4096 普通空文件

设备:fd00h/64768d Inode:67167337 硬链接:1

权限:(0644/-rw-r–r–) Uid:( 0/ root) Gid:( 0/ root)

环境:unconfined_u:object_r:user_tmp_t:s0

最近访问:2017-12-10 20:34:47.505000000 +0800

最近更改:2017-12-10 20:34:47.505000000 +0800

最近改动:2017-12-10 20:34:47.505000000 +0800

创建时间:-

[root@localhost tmp]# touch -c file2

 

 

4) 修改文件file1的mtime时间为2012年10月20日19点16分

[root@localhost tmp]# touch -m -t 201210201916 file1

[root@localhost tmp]# stat file1

文件:”file1″

大小:0 块:0 IO 块:4096 普通空文件

设备:fd00h/64768d Inode:67167337 硬链接:1

权限:(0644/-rw-r–r–) Uid:( 0/ root) Gid:( 0/ root)

环境:unconfined_u:object_r:user_tmp_t:s0

最近访问:2017-12-10 20:34:47.505000000 +0800

最近更改:2012-10-20 19:16:00.000000000 +0800

最近改动:2017-12-10 20:42:13.486000000 +0800

创建时间:-

 

 

5) 使用file1的时间戳来创建file3,注意ctime没有同步

[root@localhost tmp]# stat file1

文件:”file1″

大小:0 块:0 IO 块:4096 普通空文件

设备:fd00h/64768d Inode:67167337 硬链接:1

权限:(0644/-rw-r–r–) Uid:( 0/ root) Gid:( 0/ root)

环境:unconfined_u:object_r:user_tmp_t:s0

最近访问:2017-12-10 20:34:47.505000000 +0800

最近更改:2012-10-20 19:16:00.000000000 +0800

最近改动:2017-12-10 20:42:13.486000000 +0800

创建时间:-

 

[root@localhost tmp]# touch -r file1 file3

 

[root@localhost tmp]# stat file3

文件:”file3″

大小:0 块:0 IO 块:4096 普通空文件

设备:fd00h/64768d Inode:67167358 硬链接:1

权限:(0644/-rw-r–r–) Uid:( 0/ root) Gid:( 0/ root)

环境:unconfined_u:object_r:user_tmp_t:s0

最近访问:2017-12-10 20:34:47.505000000 +0800

最近更改:2012-10-20 19:16:00.000000000 +0800

最近改动:2017-12-10 21:03:39.538000000 +0800

创建时间:-

 

 

 

 

  1. cp: 复制文件和目录

格式: cp SOURCE DEST

说明:

复制文件时,如果目录是目录,则将文件复制到目录下,使用原文件名;如果目标是文件,且文件不存在,则会创建这个文件,将源文件的内容复制到目标文件中; 如果目标是文件且存在,则会提 示是否覆盖

多源复制,指源为多个文件时,指定的目标应该是一个目录, 如果目标目录不存在,则报错

如果目标目录存在,是非目录文件,则报错,如果目标目录存在,是目录文件,则将源复制到这个目录下

 

选项:

-i: 覆盖之前提醒用户进行确认,有的版本,使用 cp命令时,别名有加-i选项

-f: force 如果目标文件存在,则强制覆盖

-r: recursive,递归复制目录及目录中的内容到目标目录

-d: 在复制符号链接作为符号链接而不是复制它指向的文件,并且保护在副本中原文件之间的硬链接

-a: 复制时,尽可能保持文件的结构和属性,(但不保持目录 结构)等同于-dpR archive,用于实现归档;

–preserv=

mode 权限

ownership 属主属组

timestamps 时间戳

context 安全标签

xattr: 扩展属性

all: 上述所有属性

 

示例:

1) 使用单源复制时,如果目标是目录,则将文件复制到目录中,不改名; 如果目标是文件,且不存在,则会创建文件,将源文件中的数据流复制到目标文件;如果目标文件存在,则会提示是否覆盖

[root@localhost ~]# cp /etc/fstab /tmp

[root@localhost ~]# cd /tmp

[root@localhost tmp]# ls

fstab ks-script-rDmdoC yum.log

[root@localhost tmp]# cp /etc/fstab /tmp/fstab2

[root@localhost tmp]# cp /etc/fstab /tmp/fstab2

cp:是否覆盖”/tmp/fstab2″?

 

2) 在CentOS中,cp命令是使用了alias的,默认添加了-i选项,即目标存在时,会提示是否覆盖

 

3) 使用-r选项,会强制覆盖已经存在的目标文件

[root@localhost tmp]# ls /tmp

fstab passwd

[root@localhost tmp]# cp -r /etc/fstab /tmp

cp:是否覆盖”/tmp/fstab”? n

[root@localhost tmp]# \cp -r /etc/fstab /tmp

 

4) 带权限复制文件,复制文件时,默认不复制文件的相关属性,使用-a选项,带属性复制。 非管理员不能复制文件的相关属性。

[root@localhost tmp]# cp -a fstab2 fstab3

[root@localhost tmp]# ll

总用量 16

-rw-r–r–. 1 root root 541 12月 10 21:54 fstab

-rw-r–r–. 1 liuqing liuqing 541 12月 10 22:05 fstab2

-rw-r–r–. 1 liuqing liuqing 541 12月 10 22:05 fstab3

-rw-r–r–. 1 root root 1151 12月 10 21:38 passwd

[root@localhost tmp]# cp fstab2 fstab4

[root@localhost tmp]# ll

总用量 20

-rw-r–r–. 1 root root 541 12月 10 21:54 fstab

-rw-r–r–. 1 liuqing liuqing 541 12月 10 22:05 fstab2

-rw-r–r–. 1 liuqing liuqing 541 12月 10 22:05 fstab3

-rw-r–r–. 1 root root 541 12月 10 22:05 fstab4

-rw-r–r–. 1 root root 1151 12月 10 21:38 passwd

 

 

 

 

 

  1. rm: 移除文件或者目录

格式: rm [options] file…

选项:

-f: force,在删除时,不出现提示

-i: 进行确认提示,在删除文件时,会提示

-r: 递归地移除目录中的内容

 

示例:

# 显示/tmp目录下的的文件及目录

[root@localhost ~]# tree /tmp

/tmp

├── a

│   └── b

│   └── c

│   └── d

│   └── e

├── fstab

├── fstab2

├── fstab3

├── fstab4

└── passwd

 

5 directories, 5 files

 

# 使用rm不带参数来删除一个目录,显示无法删除

[root@localhost ~]# rm /tmp/a

rm: 无法删除”/tmp/a”: 是一个目录

 

# 使用fm -rf来强制删除一个目录,且递归进行删除

[root@localhost ~]# rm -rf /tmp/a

[root@localhost ~]# tree /tmp

/tmp

├── fstab

├── fstab2

├── fstab3

├── fstab4

└── passwd

 

 

 

  1. mv: 移动文件或者对文件改名

格式: mv [选项]… 源文件 目标文件

mv [选项]… 源文件… 目录

mv [选项]… –target-directory=DIRECTORY SOURCE…

示例:

#将当前目录下的fstab移动到当前目录下,改名叫fstab

[root@localhost tmp]# ll

总用量 20

-rw-r–r–. 1 root root 541 12月 10 21:54 fstab

-rw-r–r–. 1 liuqing liuqing 541 12月 10 22:05 fstab2

-rw-r–r–. 1 liuqing liuqing 541 12月 10 22:05 fstab3

-rw-r–r–. 1 root root 541 12月 10 22:05 fstab4

-rw-r–r–. 1 root root 1151 12月 10 21:38 passwd

 

[root@localhost tmp]# mv fstab fstab5

 

[root@localhost tmp]# ll

总用量 20

-rw-r–r–. 1 liuqing liuqing 541 12月 10 22:05 fstab2

-rw-r–r–. 1 liuqing liuqing 541 12月 10 22:05 fstab3

-rw-r–r–. 1 root root 541 12月 10 22:05 fstab4

-rw-r–r–. 1 root root 541 12月 10 21:54 fstab5

-rw-r–r–. 1 root root 1151 12月 10 21:38 passwd

 

# 将当前目录下的fstab5移动到下一级目录a下

[root@localhost tmp]# mv fstab5 a/

[root@localhost tmp]# ll

总用量 16

drwxr-xr-x. 2 root root 20 12月 11 18:29 a

-rw-r–r–. 1 liuqing liuqing 541 12月 10 22:05 fstab2

-rw-r–r–. 1 liuqing liuqing 541 12月 10 22:05 fstab3

-rw-r–r–. 1 root root 541 12月 10 22:05 fstab4

-rw-r–r–. 1 root root 1151 12月 10 21:38 passwd

[root@localhost tmp]# tree

.

├── a

│   └── fstab5

├── fstab2

├── fstab3

├── fstab4

└── passwd

 

# 使用–target-directory长选项移动文件

[root@localhost tmp]# mv –target-directory=’/tmp/a’ fstab3

[root@localhost tmp]# tree a

a

├── fstab3

├── fstab4

└── fstab5

 

 

 

 

二、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示

  1. bash的工作特性之命令执行状态返回值:

命令执行状态的返回值不同于命令的执行结果,当命令在bash中正常完成,其值为0,如果命令在bash中运行出错,其值为1-255,使用 echo $?来查看结果

 

# 命令运行成功,其执行状态结果为0

[root@localhost ~]# ls /tmp &> /dev/null

[root@localhost ~]# echo $?

0

 

# 命令执行不成功,其结果为1-255之间的一个值

[root@localhost ~]# ls /tmpp &> /dev/null

[root@localhost ~]# echo $?

2

 

  1. bash的工作特性之命令行展开

在bash中,可以使用一些特定的字符来代替参数

 

1) ~表示用户的家目录

# 快速切换到用户的家目录

[root@localhost tmp]# pwd

/tmp

[root@localhost tmp]# cd ~

[root@localhost ~]# pwd

/root

 

2) {}可以承载一个以逗号为分割符的列表,进行展开

# 使用{}进行命令行展开

[root@localhost ~]# mkdir {a,b}_{c,d}

[root@localhost ~]# ls

a_c a_d anaconda-ks.cfg b_c b_d

 

 

 

三、使用命令行展开功能来完成以下练习

  1. 创建/tmp目录下的a_c,a_d,b_c,b_d

[root@localhost tmp]# mkdir {a,b}_{c,d}

 

 

  1. 创建/tmp/mylinux目录下的以下目录

[root@localhost tmp]# mkdir -p mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}}

 

[root@localhost tmp]# tree mylinux

mylinux

├── bin

├── boot

│   └── grub

├── dev

├── etc

│   ├── rc.d

│   │   └── init.d

│   └── sysconfig

│   └── network-scripts

├── lib

│   └── modules

├── lib64

├── proc

├── sbin

├── sys

├── tmp

├── usr

│   └── local

│   ├── bin

│   └── sbin

└── var

├── lock

├── log

└── run

 

 

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

(0)
神策神策
上一篇 2017-12-11
下一篇 2017-12-11

相关推荐

  • keepalived+lvs负载均衡两个httpd

    准备4台主机172.16.71.2 172.16.71.3 172.16.71.4 172.16.71.5 前两个做后端httpd服务器。后两个做keepalived 首先配置好后端主机172.16.71.2 和172.16.71.3 # 172.16.71.2yum install httpdcd /var/www/…

    Linux干货 2017-02-13
  • vim编辑器和bash算术入门

    vim末行模式:       内建的命令行接口      (1)地址界定          :start_pos[,end_pos]          #: 特定的第#行,例如5即第5行; &nbsp…

    Linux干货 2016-12-23
  • 7.28_Linux_ext数据结构inode的原理浅析、软硬链接的区别

    inode表结构浅析 下图以ext文件系统为参考,以4k块大小分区,简单描述一下ext文件系统的数据结构原理,如果有任何错误,烦请各位指出 inode 索引节点 硬盘上的每个磁道被等分为若干个弧段,这些弧段便是磁盘的扇区。硬盘的读写以扇区为基本单位。 扇区的大小,是2的N次方倍。分区的大小可以有多样,1k、2k、4k…以4k块大小来说明。4k块大…

    Linux干货 2016-08-03
  • 用户和组相关的配置文件总结

    前言: 在用户管理,组管理过程中,最基本的四个文件就是/etc下面的passwd,shadow,group,gshadow。他们记录了与用户和组相关的信息。是学习和深入了解用户,组的基本。 除了这些基本的配置文件 还有与初始化相关的配置文件。定义用户添加时初始状态的配置文件/etc/default/useradd。 以及用户家目录的内容文件参考目录/etc/…

    Linux干货 2016-10-24
  • bash特性及bash脚本编程初步

    终端,附着在终端的接口程序: GUI:KDE, GNome, Xfce CLI:/etc/shells bash zsh fish   bash的特性: 命令行展开:~, {} 命令别名:alias, unalias 命令历史:history 文件名通配:glob 快捷键:Ctrl+a, e, u, k, l 命令补全:$PATH 路径补全: &n…

    Linux干货 2016-11-21
  • 基于NFS服务的mariadb数据库实现

    实验要求:     (1) nfs server导出/data/目录;     (2) nfs client挂载/data/至本地的/mydata目录;本地的mysqld或mariadb服务的数据目录设置为/mydata, 要求服务能正常启动,且可正常 存储数据;   (3)用另一台主机,…

    2017-06-11