本周作业内容:
1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
1. 文件管理:
查看:cat, tac, head, tail, less, more
时间戳管理:touch
复制:cp
移动:mv
查看元数据属性:stat
文本编辑器:nano, vi
cat
连接文件并打印到标准输出设备上
cat(选项)(参数) -n输出的行数编号
[rex@localhost ~]$ cat test
tac
用于将文件已行为单位的反序输出
tac(选项)(参数)
[rex@localhost ~]$ tac test
head
用于显示文件的开头的内容。在默认情况下,head命令显示文件的头10行内容
head(选项)(参数)
[rex@localhost ~]$ tac test
tail
用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行
tail(选项)(参数)
[rex@localhost ~]$ tail test
less
用来浏览文字档案的内容
less(选项)(参数)
[rex@localhost ~]$ less test space全页 enter半页
more
它以全屏幕的方式按页显示文本文件的内容
more(选项)(参数)
[rex@localhost ~]$ more -dc test
touch
有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建新的空文件。
touch(选项)(参数)
[rex@localhost ~]$ touch test1 && touch -a
cp
将一个或多个源文件或者目录复制到指定的目的文件或目录
cp(选项)(参数)
[rex@localhost ~]$ cp test1 test /tmp
mv
用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中
mv(选项)(参数)
mv test1 test2
stat:
显示文件的元数据
mv(选项)(参数)
[rex@localhost ~]$ stat test
2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
echo $? 返回命令运行状态信息
[rex@localhost ~]$ touch "hallo world" >> test
[rex@localhost ~]$ echo $?
0
-bash: toucd: command not found
[rex@localhost ~]$ echo $?
127
{}如果用花括号包括,而且里面用逗号分隔,这样花括号里的内容会被展开成用空格分开的一个列表
[rex@localhost ~]$ touch {a,b,c} 建立a,b,c文件
~在波浪号后面的字符串作为一个可能的登录名:如果为空,被展开成该用户的HOME变量,如果HOME变量未设置,则用用户执行shell的主目录替换。如果不为空,则按照该登录名的主目录替换
echo ~ # 显示$HOME内容
echo ~+ # 显示$PWD
echo ~- # 显示$OLDPWD
3、请使用命令行展开功能来完成以下练习:
(1)、创建/tmp目录下的:a_c, a_d, b_c, b_d
[rex@localhost ~]$ touch /tmp/{a,b}_{c,d}
(2)、创建/tmp/mylinux目录下的:
mkdir -p /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,log,run}
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
4、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
任何文件系统中的数据分为数据和元数据。数据是指普通文件中的实际数据,而元数据指用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者以及文件数据块的分布信息(inode...)等等
使用stat stat [filename]
access time:表示我们最后一次访问(仅仅是访问,没有改动)文件的时间
modify time:表示我们最后一次修改文件的时间
change time:表示我们最后一次对文件属性改变的时间,包括权限,大小,属性等等。
修改访问时间 touch -a [filename]
修改修改时间 touch -m [filename]
改变时间:会随着修改时间或访问时间而更新
5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
alisa rex='cd /home/rex'
rex #回到home/rex目录
#对当前用户:~/.bashrc
#对所有用户:/etc/bashrc
读取命令别名:source path文件
:. path文件
6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
ls -d /var/l*[0-9]*[[:lower:]]
7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
ls -d /etc/[0-9]*[[:alpha:]]
8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
ls -d /etc[^[:alpha:]]*[a-z]*
9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-08-06-09-32-22。
touch tfile-"$(date +'%F-%H-%M-%S')"
10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
cp -a /etc/p*[^0-9] /tmp/mytest1
11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
cp -a /etc/*.d /tmp/mytest2
12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。
cp -a /etc/[l,m,n]*.conf /test/mytest3