问题一:文件管理类命令
常规命令:mkdir、rmdir、stat、touch、copy、mv、rm
(1).mkdir 创建目录:
注意:路径基名方为命令的作用对象;基名之前的路径必须得存在;
-p:自动按需创建父目录;
-v:显示创建过程;
-m 参数:直接给定所需权限;
例子:问题:创建 /tmp/x ; /tmp/x/y1 ; /tmp/x/y1/a ; /tmp/x/y1/b ; /tmp/x/y2
[root@localhost ~]# mkdir -pv /tmp/x/{y1/{a,b},y2}
mkdir: created directory `/tmp/x'
mkdir: created directory `/tmp/x/y1'
mkdir: created directory `/tmp/x/y1/a'
mkdir: created directory `/tmp/x/y1/b'
mkdir: created directory `/tmp/x/y2'
[root@localhost ~]# tree /tmp/x
/tmp/x
|– y1
| |– a
| `– b
`– y2
(2).rmdir 仅用于删除空目录
-p:删除某目录后,如果其父目录为空,则一并删除之;
例子:删除空目录 testdir
[root@localhost ~]# rmdir testdir
(3).stat 查看文件状态
例子:查看目录 x 的信息
[root@localhost tmp]# stat x
文件: `x'
大小: 4096 块: 8 IO 块: 4096 目录
设备: fd00h/64768d Inode: 622755 硬链接: 4
权限: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
最近访问: 2016-11-22 23:26:19.000000000 +0800
最近更改: 2016-11-22 20:30:04.000000000 +0800
最近改动: 2016-11-22 20:30:04.000000000 +0800
[root@localhost tmp]# stat x
File: `x'
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: fd00h/64768d Inode: 622755 Links: 4
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-11-22 23:26:19.000000000 +0800
Modify: 2016-11-22 20:30:04.000000000 +0800
Change: 2016-11-22 20:30:04.000000000 +0800
(4).touch 更改元数据信息
用法:
改变access(最近访问时间)和modify(最近更改时间)两个时间。
touch file:把三个时间都改为此刻的时间。
-a:只改访问时间(access);
-m:只改修改时间(modified);
-t:指定时间;
例子:修改文件b的元数据,三个时间戳都相同
[root@localhost ~]# stat b
File: `b'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 372484 Links: 1
Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-12-11 09:21:57.000000000 +0800
Modify: 2016-11-24 10:24:18.000000000 +0800
Change: 2016-11-24 10:24:18.000000000 +0800
[root@localhost ~]# touch b
[root@localhost ~]# stat b
File: `b'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 372484 Links: 1
Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-12-11 09:22:24.000000000 +0800
Modify: 2016-12-11 09:22:24.000000000 +0800
Change: 2016-12-11 09:22:24.000000000 +0800
(5).copy 文件复制
用法:
注意:复制文件只是复制文件的数据而不是元数据,但是可以保留元数据的信息。
单源复制:目录是否存在都可以
多源复制:目录必须是存在的
-i:提醒用户操作确认
-f:强行覆盖
-r:递归复制目录
-p:保留源数据
-a:用于实现归档,做备份
–preserv=
mode:权限
ownership:属主和属组
timestamps:时间戳
context:安全标签
xattr:扩展属性
links:符号链接
all:上述所有属性
例子1:复制单个文件
[root@localhost ~]# cp /etc/issue /root/test1
[root@localhost ~]# cd test1
[root@localhost test1]# ll
total 4
-rw-r–r– 1 root root 74 Dec 11 09:37 issue
例子2:复制多个文件
[root@localhost ~]# cp a.sh b.sh c.sh /root/test1
[root@localhost ~]# cd test1
[root@localhost test1]# ll
total 16
-rwxr-xr-x 1 root root 199 Dec 11 09:39 a.sh
-rw-r–r– 1 root root 64 Dec 11 09:39 b.sh
-rwxr-xr-x 1 root root 91 Dec 11 09:39 c.sh
-rw-r–r– 1 root root 74 Dec 11 09:37 issue
例子3:复制目录
[root@localhost ~]# cp -r /etc/gconf /root/test1
[root@localhost ~]# cd test1
[root@localhost test1]# ll
total 20
-rwxr-xr-x 1 root root 199 Dec 11 09:39 a.sh
-rw-r–r– 1 root root 64 Dec 11 09:39 b.sh
-rwxr-xr-x 1 root root 91 Dec 11 09:39 c.sh
drwxr-xr-x 6 root root 4096 Dec 11 09:42 gconf
-rw-r–r– 1 root root 74 Dec 11 09:37 issue
(6).mv 移动或者重命名
例子:
[root@localhost test1]# ll
-rw-r–r– 1 root root 74 Dec 11 09:37 issue
[root@localhost test1]# mv issue issue.20161211
[root@localhost test1]# ll
-rw-r–r– 1 root root 74 Dec 11 09:37 issue.20161211
(7).rm:删除
-r:递归删除目标目录下的文件
-f:强制删
问题二:bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示
1. bash的基础特性:命令的执行状态结果
bash通过状态返回值来输出此结果;
成功:0
失败:1-255
命令执行完成之后,其状态返回值保存于bash的特殊变量$中
eg:
[root@localhost ~]# echo $?
0
[root@localhost ~]# echo $?
2
注意:命令正常执行时,有的还会有命令返回值。
引用命令的执行结果:
$(command)或'command'
eg:
[root@localhost ~]# mkdir $(date +%H-%M-%S)
[root@localhost ~]# echo $?
0
[root@localhost ~]# ls
21-09-03
注:上述就是把date命令的返回值作为参数给了 mkdir 命令。
2. bash的基础特性之:命令行展开
~:自动展开为用户的家目录,或指定的用户的家目录;
{}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径;
eg:
创建 /tmp/x ; /tmp/x/y1 ; /tmp/x/y1/a ; /tmp/x/y1/b ; /tmp/x/y2
[root@localhost ~]# mkdir -pv /tmp/x/{y1/{a,b},y2}
mkdir: created directory `/tmp/x'
mkdir: created directory `/tmp/x/y1'
mkdir: created directory `/tmp/x/y1/a'
mkdir: created directory `/tmp/x/y1/b'
mkdir: created directory `/tmp/x/y2'
[root@localhost ~]# tree /tmp/x
/tmp/x
|– y1
| |– a
| `– b
`– y2
问题三:使用命令行展开完成以下练习
1. 创建/tmp目录下的:a_c,a_d,b_c,b_d
Eg:
[root@localhost ~]# ls /tmp/
[root@localhost ~]# touch /tmp/a_{c,d} /tmp/b_{c,d}
[root@localhost ~]# ls /tmp/
a_c a_d b_c b_d
2. 创建/tmp/mylinux下的目录结构
[root@localhost ~]# mkdir /tmp/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}} -pv
mkdir: 已创建目录 "/tmp/mylinux"
mkdir: 已创建目录 "/tmp/mylinux/bin"
mkdir: 已创建目录 "/tmp/mylinux/boot"
mkdir: 已创建目录 "/tmp/mylinux/boot/grub"
mkdir: 已创建目录 "/tmp/mylinux/dev"
mkdir: 已创建目录 "/tmp/mylinux/etc"
mkdir: 已创建目录 "/tmp/mylinux/etc/rc.d"
mkdir: 已创建目录 "/tmp/mylinux/etc/rc.d/init.d"
mkdir: 已创建目录 "/tmp/mylinux/etc/sysconfig"
mkdir: 已创建目录 "/tmp/mylinux/etc/sysconfig/network-scripts"
mkdir: 已创建目录 "/tmp/mylinux/lib"
mkdir: 已创建目录 "/tmp/mylinux/lib/modules"
mkdir: 已创建目录 "/tmp/mylinux/lib64"
mkdir: 已创建目录 "/tmp/mylinux/proc"
mkdir: 已创建目录 "/tmp/mylinux/sbin"
mkdir: 已创建目录 "/tmp/mylinux/sys"
mkdir: 已创建目录 "/tmp/mylinux/tmp"
mkdir: 已创建目录 "/tmp/mylinux/usr"
mkdir: 已创建目录 "/tmp/mylinux/usr/local"
mkdir: 已创建目录 "/tmp/mylinux/usr/bin"
mkdir: 已创建目录 "/tmp/mylinux/usr/sbin"
mkdir: 已创建目录 "/tmp/mylinux/var"
mkdir: 已创建目录 "/tmp/mylinux/var/lock"
mkdir: 已创建目录 "/tmp/mylinux/var/log"
mkdir: 已创建目录 "/tmp/mylinux/var/run"
问题四:文件的元数据信息有哪些,分别表示什么含义
文件有两种数据
元数据:只是文件自身的属性信息。
数据:文件内容本身。
问题五:如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果
命令别名:alias
eg:
[root@localhost ~]# alias
alias cp='cp -i'
alias l.='ls -d .* –color=tty'
alias ll='ls -l –color=tty'
alias ls='ls –color=tty'
定义别名:
alias 原命令=别名命令,但是这个是临时的
撤销别名:
unalias 别名
永久定义别名:定义在~/.bashrc或者/etc/bashrc
命令练习:
1.显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现一位任意字符的文件或目录;
[root@localhost ~]# ls -d /var/l?[[:lower:]]
[root@localhost ~]# ls -d /var/l?[[:lower:]]
/var/lib /var/log
[root@localhost ~]# cd /var
[root@localhost var]# ls -d l?[[:lower:]]
lib log
注意:-d 的参数是只列出目录。
2.显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录;
[root@localhost etc]# ls -d [[:digit:]]*[^[:digit:]]
3ab23y
[root@localhost etc]# ls -d [0-9]*[^0-9]
3ab23y
3.显示/etc目录下,以非字母开头,后面跟一个字母及其它任意长度任意字符的文件或目录;
[root@localhost etc]# ls -d [0-9][a-z]*
2fdsafsf
4.复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/xuef目录;
[root@localhost etc]# cp -r m*[^0-9] /tmp/xuef
[root@localhost etc]# cd /tmp/xuef
[root@localhost xuef]# ls
mail makedev.d mgetty+sendfax mke2fs.conf modprobe.d mtools.conf
mailcap man.config mime.types modprobe.conf motd multipath.conf
mail.rc maven minicom.users modprobe.conf~ mtab
5.复制/usr/share/man目录下,所有以man开头,后跟一个数字结尾的文件或目录至/tmp/man/目录下;
[root@localhost ~]# cp -r /usr/share/man/man[0-9] /tmp/man
[root@localhost man]# du -sh
25M
6.复制/etc目录下,所有以.conf结尾,且以m,n,r,p开头的文件或目录至/tmp/man目录下;
[root@localhost man]# cp -r /etc/[mnrp]*.conf /tmp/xuef
7. 在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名如tfile-2016-05-26-08-32-22
[root@localhost ~]]# touch /tmp/tfile-`date +%Y-%m-%d-%H-%M-%S`
原创文章,作者:N25-笔头,如若转载,请注明出处:http://www.178linux.com/63177
评论列表(1条)
总结的很详细~能用markdown格式化输出会更好~加油。