1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
常用的文件管理工具有: cp mv rm
cp 命令 : copy 的简写
语法格式:
1) 单源复制 cp [OPTION]… [-T] SOURCE DEST
若 DEST 不存在,则事先创建此文件,并复制内容到 DEST 中,
若 DEST 存在,1.若 DEST 是非目录文件,则覆盖目标文件 2. 若 DEST 是目录文件,则先在 DEST 目录下创建一个与源文件同名的文件,并复制其数据流
2) 多源复制 cp [OPTION]… SOURCE… DIRECTORY 或 cp [OPTION]… -t DIRECTORY SOURCE…
如果 DEST 不存在 ,报错
如果 DEST 存在,1. 若 DEST 是非目录文件,错误 2. 若 DEST 是目录文件,则分别复制每个文件至目标目录中,并保持原名
常用选项:
-i : 交互式复制
-f : 强制覆盖目标文件
-r,-R : 递归复制目录
-d : 复制符号链接文件本身,而非其指向的源文件
-a : -dR –preserve=all, archive
–preserv=
mode 权限
ownership 从属关系
timestamps 时间戳
context 安全属性
xattr 扩展属性
links 符号链接
all 上述所有属性
示例:
[root@432895f7d850 ~]# ls # 展示当前目录所包含的一般文件
anaconda-ks.cfg
[root@432895f7d850 ~]# cp anaconda-ks.cfg anaconda-ks-copy.cfg # 复制一个文件
[root@432895f7d850 ~]# ls # 查看是否复制成功
anaconda-ks-copy.cfg anaconda-ks.cfg
[root@432895f7d850 ~]# cp anaconda-ks.cfg /tmp/anaconda-ks-copy.cfg # 复制文件到另一个目录
[root@432895f7d850 ~]# ls /tmp
anaconda-ks-copy.cfg ks-script-LRoSA2 yum.log
[root@432895f7d850 ~]# cp anaconda-ks.cfg /tmp/ # 复制文件到另一个目录
[root@432895f7d850 ~]# ls /tmp
anaconda-ks-copy.cfg anaconda-ks.cfg ks-script-LRoSA2 yum.log
[root@432895f7d850 ~]# mkdir a
[root@432895f7d850 ~]# cp a b # 复制目录
cp: omitting directory ‘a’
[root@432895f7d850 ~]# cp -r a b
[root@432895f7d850 ~]# ls # 复制目录成功
a anaconda-ks-copy.cfg anaconda-ks.cfg b
mv 命令: move (rename) file 移动或重命名文件
语法格式:
mv [OPTION]… [-T] SOURCE DEST
mv [OPTION]… SOURCE… DIRECTORY
mv [OPTION]… -t DIRECTORY SOURCE…
常用选项:
-i,–interactive 在覆盖文件时进行提示
-f,–force 在覆盖文件时不进行提示
-n, –no-clobber 不覆盖一个现存的文件
示例:
[root@432895f7d850 ~]# ls
a anaconda-ks-copy.cfg anaconda-ks.cfg b
[root@432895f7d850 ~]# mv anaconda-ks-copy.cfg anaconda-ks-COPY.cfg # 重命名文件
[root@432895f7d850 ~]# ls
a anaconda-ks-COPY.cfg anaconda-ks.cfg b
[root@432895f7d850 ~]# mv /tmp/yum.log ~/ # 移动文件
[root@432895f7d850 ~]# ls
a anaconda-ks-COPY.cfg anaconda-ks.cfg b yum.log
rm 命令: remove files or directories
语法格式:
rm [OPTION]… [FILE]…
常用选项:
-i : 交互式移除
-f : 强制移除目标文件
-r,-R : 递归移除目录
示例:
[root@432895f7d850 ~]# ls
a anaconda-ks-COPY.cfg anaconda-ks.cfg b yum.log
[root@432895f7d850 ~]# rm anaconda-ks-COPY.cfg # 移除文件
rm: remove regular file ‘anaconda-ks-COPY.cfg’? y
[root@432895f7d850 ~]# rm -f yum.log # 强制移除文件
[root@432895f7d850 ~]# rm -r a # 移除目录
rm: remove directory ‘a’? y
[root@432895f7d850 ~]# rm -rf b # 强制移除目录
[root@432895f7d850 ~]# ls
2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
bash的工作特性之命令执行状态返回值
说明:
bash 通过状态返回值来输出此结果: 0 表示成功,其他值(1-255)表示失败
命令执行完成之后,其状态返回值保存于bash的特殊变量$?
中;
命令正常执行时,有的还回有命令返回值,根据命令及其功能不同,结果各不相同;
示例:
[root@432895f7d850 tmp]# ls
a_c a_d b_c b_d mylinux
[root@432895f7d850 tmp]# echo $?
0
[root@432895f7d850 tmp]# useradd lc
useradd: user ‘lc’ already exists
[root@432895f7d850 tmp]# echo $?
9
[root@432895f7d850 tmp]# lss
bash: lss: command not found
[root@432895f7d850 tmp]# echo $?
127
bash的工作特性之命令行展开
说明:
在 bash 中,~
会被自动展开为用户的家目录;
{}
可承载一个以逗号(,
)分隔的路径列表,并能够将其展开为多个路径
示例:
[root@432895f7d850 tmp]# mkdir -pv /tmp/x/{p1/{a,b},/p2}
mkdir: created directory ‘/tmp/x’
mkdir: created directory ‘/tmp/x/p1’
mkdir: created directory ‘/tmp/x/p1/a’
mkdir: created directory ‘/tmp/x/p1/b’
mkdir: created directory ‘/tmp/x//p2’
[root@432895f7d850 tmp]# tree /tmp/x
/tmp/x
|– p1
| |– a
| -- b<br />
— p2
4 directories, 0 files
3、请使用命令行展开功能来完成以下练习:
(1)、创建/tmp目录下的:a_c, a_d, b_c, b_d
(2)、创建/tmp/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
(1) 命令如下
[root@432895f7d850 tmp]# touch /tmp/{a,b}_{c,d}
[root@432895f7d850 tmp]# ls # 确认是否创建成功
a_c a_d b_c b_d
(2)命令如下
[root@432895f7d850 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@432895f7d850 tmp]# tree -L 3 mylinux/ # 确认是否创建成功
mylinux/
|– bin
|– boot
| -- grub<br />
— init.d
|-- dev<br />
|-- etc<br />
| |-- rc.d<br />
| |
| -- sysconfig<br />
— network-scripts
|
|– lib
| -- modules<br />
— sys
|-- lib64<br />
|-- proc<br />
|-- sbin<br />
|
|– tmp
|– usr
| -- local<br />
— sbin
| |-- bin<br />
|
-- var<br />
— run
|-- lock<br />
|-- log<br />
4、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
文件的元数据包括:
File 文件名,
Size 文件大小,Blocks:数据块,IO Block:IO 块
Links 文件链接数,Uid 属主, Gid 属组
Acess 最近一次访问文件的时间
Modify 最近一次修改文件的时间
Change 最近一次改变文件的时间
可以使用 stat
命令来查看这些元数据信息。
语法格式是: stat [OPTION]… FILE…
可以使用 touch
命令来修改文件的时间戳信息。
语法格式
touch [OPTION]… FILE…
常用选项
-c:指定的文件路径不存在时不予创建
-a:仅修改access times
-m:仅修改modify times
-t STAM:[[CC]YY]MMDDhhmm[.ss]
示例:
[root@432895f7d850 ~]# stat anaconda-ks.cfg
File: ‘anaconda-ks.cfg’
Size: 3354 Blocks: 8 IO Block: 4096 regular file
Device: fe01h/65025d Inode: 23068819 Links: 1
Access: (0600/-rw——-) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-02-24 11:33:29.008304390 +0000
Modify: 2016-12-14 14:59:34.000000000 +0000
Change: 2017-02-24 11:23:16.131313547 +0000
Birth: –
[root@432895f7d850 ~]# touch -a -t 201702272036 anaconda-ks.cfg # 居然也可以定义一个未来的时间!!
[root@432895f7d850 ~]# stat anaconda-ks.cfg
File: ‘anaconda-ks.cfg’
Size: 3354 Blocks: 8 IO Block: 4096 regular file
Device: fe01h/65025d Inode: 23068819 Links: 1
Access: (0600/-rw——-) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-02-27 20:36:00.000000000 +0000
Modify: 2016-12-14 14:59:34.000000000 +0000
Change: 2017-02-24 12:37:02.560563384 +0000
Birth: –
5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
- 可以使用
alias
来查看、定义一个命令的别名
—–
查看别名:alias
定义别名:alias 别名=‘COMMAND’
注意:仅对当前的shell有效
撤销别名:unalias 别名
示例:
[root@432895f7d850 ~]# alias
alias cp=’cp -i’
alias egrep=’egrep –color=auto’
alias fgrep=’fgrep –color=auto’
alias grep=’grep –color=auto’
alias l.=’ls -d .* –color=auto’
alias ll=’ls -l –color=auto’
alias ls=’ls –color=auto’
alias mv=’mv -i’
alias rm=’rm -i’
[root@432895f7d850 ~]# alias clc=’clear’
[root@432895f7d850 ~]# alias | grep clc
alias clc=’clear’
[root@432895f7d850 ~]# unalias clc - 要引用另一个命令的结果,可以用 反引号 或者
$()
包裹命令示例:
[root@432895f7d850 ~]# pwd
/root
[root@432895f7d850 ~]# ls -al $(pwd)
total 24
dr-xr-x— 2 root root 114 Feb 24 11:51 .
drwxr-xr-x 17 root root 273 Feb 24 11:27 ..
-rw-r–r– 1 root root 18 Dec 29 2013 .bash_logout
-rw-r–r– 1 root root 176 Dec 29 2013 .bash_profile
-rw-r–r– 1 root root 176 Dec 29 2013 .bashrc
-rw——- 1 root root 3354 Dec 14 14:59 anaconda-ks.cfg
6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
所用命令为: ls -dl /var/l*[[:digit:]]*[a-z]
或者 ls -dl /var/l*[0-9]]*[a-z]
演示:
[root@432895f7d850 var]# touch l2a a3c l33a lll
[root@432895f7d850 var]# mkdir l22b b33c aaa
[root@432895f7d850 var]# ls -dl /var/l[[:digit:]][a-z]
drwxr-xr-x 2 root root 6 Feb 24 13:05 l22b
-rw-r–r– 1 root root 0 Feb 24 13:05 l2a
-rw-r–r– 1 root root 0 Feb 24 13:05 l33a
7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
所用命令为: ls -dl /etc/[0-9]*[^0-9]
或者 ls -dl /etc/[0-9]*[^[:digit:]]
演示:
[root@432895f7d850 etc]# touch 3a a3 33
[root@432895f7d850 etc]# mkdir 2a a2 22
[root@432895f7d850 etc]# ls -dl [0-9]*[^0-9]
drwxr-xr-x 2 root root 6 Feb 24 13:12 2a
-rw-r–r– 1 root root 0 Feb 24 13:12 3a
8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
所用命令为: ls -dl /etc/[^[:alpha:]][[:alpha:]]*
演示:
[root@432895f7d850 ~]# touch 3a23
[root@432895f7d850 ~]# mkdir 2a23
[root@432895f7d850 ~]# ls -dl [^[:alpha:]][[:alpha:]]*
drwxr-xr-x 2 root root 6 Feb 24 13:12 2a
drwxr-xr-x 2 root root 6 Feb 24 13:20 2a23
-rw-r–r– 1 root root 0 Feb 24 13:12 3a
-rw-r–r– 1 root root 0 Feb 24 13:20 3a23
9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
所用命令为: touch /tmp/tfile-$(date +%F-%H-%M-%S)
演示:
[root@432895f7d850 ~]# touch /tmp/tfile-$(date +%F-%H-%M-%S)
[root@432895f7d850 ~]# ls /tmp/tfile*
/tmp/tfile-2017-02-24-13-27-33
10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
所用命令为: cp -r /etc/p*[^0-9] /tmp/mytest1
演示:
[root@432895f7d850 ~]# mkdir /tmp/mytest1
[root@432895f7d850 ~]# touch /etc/{pp,p2}
[root@432895f7d850 ~]# mkdir /etc/{pP,Pp}
[root@432895f7d850 ~]# cp -r /etc/p*[^0-9] /tmp/mytest1
[root@432895f7d850 ~]# ls -al /tmp/mytest1/
total 0
drwxr-xr-x 3 root root 26 Feb 24 13:32 .
drwxrwxrwt 8 root root 307 Feb 24 13:32 ..
drwxr-xr-x 2 root root 6 Feb 24 13:32 pP
-rw-r–r– 1 root root 0 Feb 24 13:32 pp
11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
所用命令为: cp -r /etc/*.d /tmp/mytest2
演示:
[root@432895f7d850 ~]# mkdir /tmp/mytest2
[root@432895f7d850 ~]# touch /etc/{2,3}.d
[root@432895f7d850 ~]# cp -r /etc/*.d /tmp/mytest2
[root@432895f7d850 ~]# ls -al /tmp/mytest2
total 4
drwxr-xr-x 22 root root 4096 Feb 24 13:37 .
drwxrwxrwt 9 root root 322 Feb 24 13:35 ..
-rw-r–r– 1 root root 0 Feb 24 13:37 2.d
-rw-r–r– 1 root root 0 Feb 24 13:37 3.d
drwxr-xr-x 2 root root 28 Feb 24 13:37 bash_completion.d
drwxr-xr-x 2 root root 6 Feb 24 13:37 binfmt.d
drwxr-xr-x 2 root root 6 Feb 24 13:37 chkconfig.d
drwxr-xr-x 2 root root 23 Feb 24 13:37 depmod.d
drwxr-xr-x 2 root root 6 Feb 24 13:37 dracut.conf.d
lrwxrwxrwx 1 root root 11 Feb 24 13:37 init.d -> rc.d/init.d
drwxr-xr-x 2 root root 6 Feb 24 13:37 krb5.conf.d
drwxr-xr-x 2 root root 6 Feb 24 13:37 ld.so.conf.d
drwxr-xr-x 2 root root 17 Feb 24 13:37 logrotate.d
drwxr-xr-x 2 root root 6 Feb 24 13:37 modprobe.d
drwxr-xr-x 2 root root 6 Feb 24 13:37 modules-load.d
drwxr-xr-x 2 root root 280 Feb 24 13:37 pam.d
drwxr-xr-x 2 root root 6 Feb 24 13:37 popt.d
drwxr-xr-x 2 root root 38 Feb 24 13:37 prelink.conf.d
drwxr-xr-x 2 root root 84 Feb 24 13:37 profile.d
drwxr-xr-x 10 root root 127 Feb 24 13:37 rc.d
lrwxrwxrwx 1 root root 10 Feb 24 13:37 rc0.d -> rc.d/rc0.d
lrwxrwxrwx 1 root root 10 Feb 24 13:37 rc1.d -> rc.d/rc1.d
lrwxrwxrwx 1 root root 10 Feb 24 13:37 rc2.d -> rc.d/rc2.d
lrwxrwxrwx 1 root root 10 Feb 24 13:37 rc3.d -> rc.d/rc3.d
lrwxrwxrwx 1 root root 10 Feb 24 13:37 rc4.d -> rc.d/rc4.d
lrwxrwxrwx 1 root root 10 Feb 24 13:37 rc5.d -> rc.d/rc5.d
lrwxrwxrwx 1 root root 10 Feb 24 13:37 rc6.d -> rc.d/rc6.d
drwxr-xr-x 2 root root 25 Feb 24 13:37 rsyslog.d
drwxr-xr-x 2 root root 6 Feb 24 13:37 sysctl.d
drwxr-xr-x 2 root root 6 Feb 24 13:37 tmpfiles.d
drwxr-xr-x 2 root root 6 Feb 24 13:37 xinetd.d
drwxr-xr-x 2 root root 187 Feb 24 13:37 yum.repos.d
12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。
所用命令为: cp /etc/{l,m,n}*.conf /tmp/mytest3
演示:
[root@432895f7d850 ~]# touch /etc/m{2,3}.conf
[root@432895f7d850 ~]# mkdir /tmp/mytest3
[root@432895f7d850 ~]# cp /etc/{l,m,n}*.conf /tmp/mytest3
[root@432895f7d850 ~]# ls -al /tmp/mytest3
total 24
drwxr-xr-x 2 root root 135 Feb 24 13:40 .
drwxrwxrwt 10 root root 4096 Feb 24 13:40 ..
-rw-r–r– 1 root root 28 Feb 24 13:40 ld.so.conf
-rw-r—– 1 root root 191 Feb 24 13:40 libaudit.conf
-rw-r–r– 1 root root 2391 Feb 24 13:40 libuser.conf
-rw-r–r– 1 root root 19 Feb 24 13:40 locale.conf
-rw-r–r– 1 root root 0 Feb 24 13:40 m2.conf
-rw-r–r– 1 root root 0 Feb 24 13:40 m3.conf
-rw-r–r– 1 root root 1742 Feb 24 13:40 nsswitch.conf
原创文章,作者:FSSlc,如若转载,请注明出处:http://www.178linux.com/69961
评论列表(1条)
写的不错,请注意排版格式