首页 > 代码库 > Linux+Python高端运维班第一次作业
Linux+Python高端运维班第一次作业
Linux+Python高端运维班第一次作业
1、按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。
1)linux的发行版介绍
slackware:Slackware Linux是由Patrick Volkerding开发的GNU/Linux发行版,一直坚持KISS原则。
suse:在欧洲比较流行的linux发行版本
sles:suse企业版
opensuse:suse桌面免费发行版本
debian:服务器版,消耗资源少,稳定。
ubuntu
mint
redhat:成立于1992年
rhel:redhat enterprise linux,用于企业商用,为了保证服务器稳定,每18个月发行一个新版本
centos:开源版本,和RHEL几乎一样,兼容rhel的格式,已被redhat收购。
fedora:linux免费桌面版,得到redhat官方支持,用于测试新软件,每6个月发行一个新版本
Archlinux
Gentoo
LFS:Linux From scratch
Androld:kernel+busybox+java虚拟机,主要用于移动终端
2)不同发行版之间的联系
都是在开源的linux内核代码进行再次开发而形成不同的发行版,而且必须支持GNU中包含的自由软件协定,GNU包含的自由软件协定包含GPLv2、GPLv3、LGPL。各发行版其中SLES是suse的企业版本,opensuse是suse的免费桌面版,ubuntu和mint都是基于dibian的桌面版,RHEL为redhat面向企业商用的服务器版,fedora属于redhat的桌面版本,由redhat赞助fedora社群免费维护,centos主要面向企业服务器,由开源社区提供免费技术支持,后来被redhat收购,目前仍然免费。
3)各发行版之间的区别
包管理系统不同,SLES、Fedora、openSUSE、centos、RHEL采用rpm包管理系统,包文件以rpm为扩展名;Ubuntu系列,Debian系列采用DPKG包管理系统。
2、说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相应的示例来阐述。
1)linux系统命令的使用格式
COMMAND [OPTIONS...] [ARGUMENTS...]
OPTIONS:用于启用或关闭命令的某个功能,支持长选项(例如--long、--human--readable)和短选项(例如-a、-l),多个短选项还可以合并(例如-a -l可以合并为-al)
argument:命令的作用对象,向命令提供的数据。
2)ifconfig命令说明
命令介绍:ifconfig命令主要用于显示与配置网络接口;
参数:
-a:显示所有接口状态
示例:
[root@localhost ~]# ifconfig -a
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.138.128 netmask 255.255.255.0 broadcast 192.168.138.255
inet6 fe80::20c:29ff:fe54:7f72 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:54:7f:72 txqueuelen 1000 (Ethernet)
RX packets 3867 bytes 371830 (363.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1439 bytes 214471 (209.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 56 bytes 4796 (4.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 56 bytes 4796 (4.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 00:00:00:00:00:00 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0-nic: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 52:54:00:ff:68:92 txqueuelen 500 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
-s:通过短格式显示当前所有网络接口的状态
示例:
[root@localhost ~]# ifconfig -s
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eno16777 1500 3911 0 0 0 1451 0 0 0 BMRU
lo 65536 56 0 0 0 56 0 0 0 LRU
virbr0 1500 0 0 0 0 0 0 0 0 BMU
virbr0-n 1500 0 0 0 0 0 0 0 0 BMU
-v:显示更详细的信息,包含一些错误条件。
示例:
[root@localhost ~]# ifconfig -v
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.138.128 netmask 255.255.255.0 broadcast 192.168.138.255
inet6 fe80::20c:29ff:fe54:7f72 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:54:7f:72 txqueuelen 1000 (Ethernet)
RX packets 4203 bytes 402414 (392.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1519 bytes 237445 (231.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 56 bytes 4796 (4.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 56 bytes 4796 (4.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 00:00:00:00:00:00 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0-nic: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 52:54:00:ff:68:92 txqueuelen 500 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
interface(接口):在命令后指定特定接口名称可单独显示此接口的当前状态信息
示例:
[root@localhost ~]# ifconfig lo
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 56 bytes 4796 (4.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 56 bytes 4796 (4.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
down:关闭指定的网络接口
示例:
[root@localhost Desktop]# ifconfig eno16777736 down
[root@localhost Desktop]# ifconfig eno16777736
eno16777736: flags=4098<BROADCAST,MULTICAST> mtu 1500
ether 00:0c:29:54:7f:72 txqueuelen 1000 (Ethernet)
RX packets 5603 bytes 541048 (528.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2017 bytes 333258 (325.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
up:启动指定的网络接口
示例:
[root@localhost Desktop]# ifconfig eno16777736 up
[root@localhost Desktop]# ifconfig eno16777736
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.138.128 netmask 255.255.255.0 broadcast 192.168.138.255
inet6 fe80::20c:29ff:fe54:7f72 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:54:7f:72 txqueuelen 1000 (Ethernet)
RX packets 5617 bytes 542752 (530.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2048 bytes 337901 (329.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
arp:开启关闭指定网卡的arp协议
ifconfiginterface -arp:关闭arp协议,此时使用ssh无法连接linux主机
ifconfiginterface arp:开启arp协议,此时ssh连接linux主机正常
promisc:开启关闭指定网卡的混杂模式,混杂模式主要用于网络诊断
ifconfiginterface -promisc:关闭指定网卡的混杂模式
ifconfiginterface promisc:开启指定网卡的混杂模式
allmulti:开启关闭指定网卡的组播模式
ifconfiginterface -multicast:关闭指定网卡组播
ifconfiginterface multicast:开启指定网卡组播
mtu n:设置指定网卡的最大传输速率
示例:
[root@localhost ~]# ifconfig eno16777736 mtu 800
[root@localhost ~]# ifconfig eno16777736
eno16777736: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 800
inet 192.168.138.128 netmask 255.255.255.0 broadcast 192.168.138.255
ether 00:0c:29:54:7f:72 txqueuelen 1000 (Ethernet)
RX packets 6460 bytes 622692 (608.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2561 bytes 414568 (404.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
dstaddr:设置指定网络接口点对点连接,重启失效。
示例:
ifconfig eno16777736 dstaddr 192.168.38.0
netmask:设置指定网卡的子网掩码
add addr/prefixlen:设置指定网卡IPv6的IP地址
del addr/prefixlen:删除指定网卡的IPv6的IP地址
tunnel aa.bb.cc.dd:建立IPv6与IPv4间的隧道通信协议
irq addr:设置网卡的中断号
[-]pointopoint [addr] :与指定地址的网络设备建立直接连线,此模式具有保密功能,不能通过SSH远程连接使用此命令。
示例:
ifconfig eno16777736 -pointopoint192.168.138.1
address:为指定网卡设置临时IP地址,重启后失效。
3)echo命令说明
echo为回显命令
示例:
[root@localhost ~]# echo "How areyou"
How are you
-n:禁止自动增加换行符号
示例:
[root@localhost ~]# echo -n "How areyou"
How are you[root@localhost ~]#
-e: 允许使用转义符;
\n: 换行
\t: 制表符
示例:
[root@localhost ~]# echo -e "Hi \nboy \n Hi \t girl"
Hi
boy
Hi girl
echo "$VAR_NAME": 变量会替换,双引号表弱引用
echo ‘$VAR_NAME‘: 变量不会替换,强引用
示例:
[root@localhost ~]# echo "$PATH"
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]# echo ‘$PATH‘
$PATH
4)tty命令说明
用途:查看当前的终端设备
示例:
[root@localhost ~]# tty
/dev/pts/0
[root@localhost ~]# tty --version
tty (GNU coreutils) 8.22
5)startx
用途:用于在服务器或终端商启动X会话
强制启动X会话
startx -w
为 X 终端启动 X 会话,并注销用户的 telnet 会话
startx; kill -9 $$
6)export命令说明
用途:用于为变量赋值,单独使用时可打印当前系统所有环境变量。
[root@localhost ~]# export a=b
[root@localhost ~]# echo $a
b
7)pwd命令说明
用途:用于显示当前目录
示例:
[root@localhost etc]# pwd
/etc
8)history命令说明
用途:用来管理命令的历史记录,当前命令记录保存在内存中,当登出系统时会追加到用户家目录的隐藏文件 .bash_history中。
环境变量:
HISTSIZE:记录的命令行数
HISTFILE:命令历史文件
HISTFILESIZE:命令历史文件最大记录命令数
示例:
[root@localhost ~]# echo $HISTSIZE
1000
[root@localhost ~]# echo $HISTFILE
/root/.bash_history
[root@localhost ~]# echo $HISTFILESIZE
1000
命令参数:
-a:追加本地登录新执行的命令历史列表到命令历史文件中,例:history -a
-d offset:通过命令编号删除命令历史中指定命令,例:history -d 30
-c:清空命令历史,例:history -c
调用历史中的命令:
!#:调用命令历史中第#号命令,例:!30
!string:调用命令历史中最近一个以string开头的命令,例:!h
!!:重复运行上一条命令,例如:!!
调用前一条命令的参数
!$:调用上一条命令的参数
[root@localhost etc]# cd /root
[root@localhost ~]# ls -l !$
ls -l /root
total 15480
-rw-------. 1 root root 1441 Nov 28 04:59 anaconda-ks.cfg
-rw-------. 1 root root 5304320 Nov 27 21:37 core.13122
-rw-------. 1 root root 5210112 Dec 1 13:54 core.7223
-rw-------. 1 root root 5328896 Dec 1 14:00 core.7730
drwxr-xr-x. 2 root root 22 Dec 1 14:05 Desktop
drwxr-xr-x. 2 root root 6 Nov 28 20:58 Documents
drwxr-xr-x. 2 root root 6 Nov 28 20:58 Downloads
-rw-------. 1 root root 1489 Nov 27 21:11 initial-setup-ks.cfg
drwxr-xr-x. 2 root root 6 Nov 28 20:58 Music
drwxr-xr-x. 2 root root 6 Nov 28 20:58 Pictures
drwxr-xr-x. 2 root root 6 Nov 28 20:58 Public
drwxr-xr-x. 2 root root 6 Nov 28 20:58 Templates
drwxr-xr-x. 2 root root 6 Nov 28 20:58 Videos
ESC,.:功能同上,先输入命令,然后按ESC后在按.号可以直接调用前一条命令的参数。
HISTCONTROL:history的环境变量
ignoredups:忽略重复且连续的命令,例如连续输入多次‘ls -l’,则history仅记录一条
ignorespace:忽略以空格开始的命令,例如输入命令‘ ls-l’,history将不记录此命令
ignoreboth:ignoredups和ignorespace将同时生效。
HISTCONTROL环境变量配置方法:
[root@localhost ~]# echo $HISTCONTROL
ignoredups
[root@localhost ~]# export HISTCONTROL=‘ignoreboth‘
[root@localhost ~]# echo $HISTCONTROL
ignoreboth
9)shutdown命令说明
用途:用于操作系统退出、注销、关机、重启等操作,还可以指定关机时间。
命令格式:shutdown [option]... TIME[MASSAGE]
参数解析:
-r:立即重启,例:shutdown -r
-h:立即关机,例:shutdown -h
-c:取消关机操作,例:shutdown -c
TIME使用解析:
now:立刻执行,例:shutdown now
+m:相对于现在多少分钟后关机,例:shutdown +m
hh:mm:绝对时间,具体关机时间,例:shutdown 10:30
10)poweroff命令说明
用途:关机。
参数:
-f:不调用shutdown,强制关机
-p:关机且切断电源
11)reboot命令说明
用途:重启命令
参数:
-f:强制重启,例:reboot -f
12)hwclock命令说明
用途:显示和设置硬件、系统时钟同步
格式:hwclock [-ARGUMENT]
参数:
-s:将系统时钟同步为硬件时钟
-w:将硬件时钟同部为系统时钟
13)date命令说明
用途:显示和设置时间
格式:
显示:date [OPTION]... [+FORMAT]
参数:
%D:按照年/月/日的方式显示时间
%F:按照年-月-日的方式显示时间
%T:按照时-分-秒的方式显示时间
示例:
[root@localhost ~]# date +%F-%D-%T
2016-12-01-12/01/16-21:00:04
设置:date [MMDDhhmm[[CC]YY][.ss]]
参数:
MM: 月分
DD:几号
hh: 小时
mm: 分钟
YY: 两位年份
CCYY: 四位年份
.ss: 秒钟
示例:
[root@localhost ~]# date 120121002016.40
Thu Dec 1 21:00:40 CST 2016
3、如何在Linux系统上获取命令的帮助信息,请详细列出,并描述man文档的章节是如何划分的。
1)linux帮助信息获取方法
命令的路径与帮助文档查询方式:
which:查询命令的二进制文件存放路径
whereis:查询命令所有帮助文档章节存放路径
[root@localhost ~]# which cd
/usr/bin/cd
[root@localhost ~]# whereis cd
cd: /usr/bin/cd /usr/share/man/man1/cd.1.gz /usr/share/man/man1p/cd.1p.gz
内部命令查看帮助的方法
help COMMAND
[root@localhost ~]# help cd
cd: cd [-L|[-P [-e]]] [dir]
Change the shell working directory.
Change the current directory to DIR. The default DIR is the value of the
HOME shell variable.
The variable CDPATH defines the search path for the directory containing
DIR. Alternative directory names in CDPATH are separated by a colon (:).
A null directory name is the same as the current directory. If DIR begins
with a slash (/), then CDPATH is not used.
If the directory is not found, and the shell option `cdable_vars‘ is set,
the word is assumed to be a variable name. If that variable has a value,
its value is used for DIR.
Options:
-L force symbolic links to be followed
-P use the physical directory structure without following symbolic
links
-e if the -P option is supplied, and the current working directory
cannot be determined successfully, exit with a non-zero status
The default is to follow symbolic links, as if `-L‘ were specified.
Exit Status:
Returns 0 if the directory is changed, and if $PWD is set successfully when
-P is used; non-zero otherwise.
外部命令查看帮助的方法
COMMAND --help;COMMAND -h
[root@localhost ~]# ls --help
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
Mandatory arguments to long options are mandatory for short options too.
-a, --all do not ignore entries starting with .
-A, --almost-all do not list implied . and ..
--author with -l, print the author of each file
[root@localhost ~]# copy -h
bash: copy: command not found...
[root@localhost ~]# useradd -h
Usage: useradd [options] LOGIN
useradd -D
useradd -D [options]
使用手册(manual);man COMMAND
[root@localhost test]# man ls
LS(1) User Commands LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
DESCRIPTION.......
信息页info COMMAND
[root@localhost test]# clear
[root@localhost test]# info tree
File: *manpages*, Node: tree, Up: (dir)
程序自身的帮助文档:README,INSTALL,Changelog
发行版的官方文档
2)man的章节划分
man1:用户命令
man2: 系统调用
man3: C库调用
man4: 设备文件及特殊文件
man5: 配置文件格式
man6: 游戏
man7: 杂项
man8: 管理类的命令
man手册存放在/usr/share/man中,有些命令不止在一个章节,具体存在的章节可以通过whatis进行查看。
4、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
1)Linux上的文件管理命令主要有:cp、mv、rm
2)复制命令:cp
cp使用命令格式:
cp [OPTION]... [-T] SOURCEDEST
cp [OPTION]... SOURCE...DIRECTORY
cp [OPTION]... -t DIRECTORYSOURCE...
cp src(源) DEST(目标)
src是文件
DEST是文件
DEST不存在:cp命令会在在目标中创建一个DEST的文件,并将src文件的内容填充至DEST
示例:
[root@localhost test]# ls
file1
[root@localhost test]# cp file1 /root/test/file2
[root@localhost test]# ls
file1 file2
DEST存在:cp命令会将src中的内容填充到DEST文件中,俗称覆盖,建议加‘-i’参数
示例:
-rw-r--r--. 1 root root 16 Dec 4 14:48 file1
-rw-r--r--. 1 root root 16 Dec 4 14:50 file2
[root@localhost test]# cp file1 file2
cp: overwrite ‘file2’? y
cp src...DEST
src为多个文件
DEST必须存在,且为目录
cp -r src DEST
src是目录
如果DEST不存在:则会创建DEST目录,然后将制定文件复制到DEST目录中
示例:
[root@localhost test]# ll
total 0
drwxr-xr-x. 2 root root 6 Dec 4 15:00 d1
[root@localhost test]# cp -r d1 d2
[root@localhost test]# ll
total 0
drwxr-xr-x. 2 root root 6 Dec 4 15:00 d1
drwxr-xr-x. 2 root root 6 Dec 4 15:01 d2
如果DEST是目录且已存在:则会将src复制到DEST目录下
示例:
[root@localhost test]# ll
total 0
drwxr-xr-x. 2 root root 6 Dec 4 15:00 d1
drwxr-xr-x. 2 root root 6 Dec 4 15:01 d2
[root@localhost test]# cp -r d1 d2
[root@localhost test]# ll d2
total 0
drwxr-xr-x. 2 root root 6 Dec 4 15:03 d1
如果DEST是文件:则会报错
示例:
[root@localhost test]# ll
total 0
drwxr-xr-x. 2 root root 6 Dec 4 15:00 d1
-rw-r--r--. 1 root root 0 Dec 4 15:05 d2
[root@localhost test]# cp -r d1 d2
cp: cannot overwrite non-directory ‘d2’ with directory ‘d1’
cp常用选型:
-i:交互式,当文件存在时提示是否覆盖
-r, -R: 递归复制目录及内部的所有内容;
-a: 归档,相当于-dR --preserv=all:复制时保留源文件和目录的所有属性
-d:--no-dereference --preserv=links:复制时保留源文件的链接
--preserv[=ATTR_LIST]
mode: 权限
ownership: 属主属组
timestamp: 时间戳
links:链接
xattr:扩展属性
context:连接上下文
all:以上所有属性
-p: --preserv=mode,ownership,timestamp:保留文件权限、属主属组、时间戳属性
-v: --verbose:显示过程
-f: --force:强制覆盖。
2)移动命令mv
命令使用格式:
mv [OPTION]... [-T] SOURCEDEST
mv [OPTION]... SOURCE...DIRECTORY
mv [OPTION]... -t DIRECTORYSOURCE...
常用选项:
-i: 交互式,当文件存在时提示是否覆盖
-f: 强制覆盖
3)删除命令rm
命令使用格式:
rm [OPTION]... FILE...
常用选项:
-i: 交互式
-f: 强制删除
-r: 递归删除目录及内部的所有内容;
5、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
1)命令执行状态返回值
说明:bash使用一个特殊的环境变量$?保存最近一条命令的执行状态结果,如果执行成功则$?返回值为0,如果执行失败$?则返回值1-255其中的任何一个数字。
示例:
[root@localhost ~]# la
bash: la: command not found...
[root@localhost ~]# echo $?
127
[root@localhost ~]# ls
anaconda-ks.cfg core.7730 Downloads Pictures Videos
core.13122 Desktop initial-setup-ks.cfg Public
core.7223 Documents Music Templates
[root@localhost ~]# echo $?
0
2)命令行展开
说明:bash可以已bash可以解释的符号来代替命令中的某些参数
~:表示当前用的家目录
示例:
[root@localhost ~]# cd /
[root@localhost /]# cd ~
~USERNAME:表示进入某个用户的家目录
示例:
[root@localhost ~]# cd ~zhangsan
[root@localhost zhangsan]#
{}:可承载一个以逗号分隔的列表,并将其展开为多个路径
示例:
[root@localhost 1]# mkdir -v {a,b}_{c,d}
mkdir: created directory ‘a_c’
mkdir: created directory ‘a_d’
mkdir: created directory ‘b_c’
mkdir: created directory ‘b_d’
6、请使用命令行展开功能来完成以下练习:
1)、创建/tmp目录下的:a_c, a_d, b_c, b_d
[root@localhost tmp]# mkdir -v /tmp/{a,b}_{c,d}
mkdir: created directory ‘/tmp/a_c’
mkdir: created directory ‘/tmp/a_d’
mkdir: created directory ‘/tmp/b_c’
mkdir: created directory ‘/tmp/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
[root@localhost tmp]# mkdir -vp /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconnfig/network-scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/{local/{bin,sbin}},var,lock,log,run}
mkdir: created directory ‘/tmp/mylinux’
mkdir: created directory ‘/tmp/mylinux/bin’
mkdir: created directory ‘/tmp/mylinux/boot’
mkdir: created directory ‘/tmp/mylinux/boot/grub’
mkdir: created directory ‘/tmp/mylinux/dev’
mkdir: created directory ‘/tmp/mylinux/etc’
mkdir: created directory ‘/tmp/mylinux/etc/rc.d’
mkdir: created directory ‘/tmp/mylinux/etc/rc.d/init.d’
mkdir: created directory ‘/tmp/mylinux/etc/sysconnfig’
mkdir: created directory ‘/tmp/mylinux/etc/sysconnfig/network-scripts’
mkdir: created directory ‘/tmp/mylinux/lib’
mkdir: created directory ‘/tmp/mylinux/lib/modules’
mkdir: created directory ‘/tmp/mylinux/lib64’
mkdir: created directory ‘/tmp/mylinux/proc’
mkdir: created directory ‘/tmp/mylinux/sbin’
mkdir: created directory ‘/tmp/mylinux/sys’
mkdir: created directory ‘/tmp/mylinux/tmp’
mkdir: created directory ‘/tmp/mylinux/usr’
mkdir: created directory ‘/tmp/mylinux/usr/{local’
mkdir: created directory ‘/tmp/mylinux/usr/{local/bin}’
mkdir: created directory ‘/tmp/mylinux/usr/{local/sbin}’
mkdir: created directory ‘/tmp/mylinux/var’
mkdir: created directory ‘/tmp/mylinux/lock’
mkdir: created directory ‘/tmp/mylinux/log’
mkdir: created directory ‘/tmp/mylinux/run’
[root@localhost mylinux]# tree
.
|-- bin
|-- boot
| `-- grub
|-- dev
|-- etc
| |-- rc.d
| | `-- init.d
| `-- sysconnfig
| `-- network-scripts
|-- lib
| `-- modules
|-- lib64
|-- lock
|-- log
|-- proc
|-- run
|-- sbin
|-- sys
|-- tmp
|-- usr
| `-- {local
| |-- bin}
| `-- sbin}
`-- var
7、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
1)文件的元数据信息
atime:access time 文件访问时间
mtime:modify time 文件修改时间
ctime: change time 元数据atime、mtime改变时间,这个数值是不能自行修改
2)元数据查看命令stat
[root@localhost ~]# stat 1
File: ‘1’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 207178860 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2016-12-03 19:47:31.927239446 +0800
Modify: 2016-12-03 19:47:31.927239446 +0800
Change: 2016-12-03 19:47:31.927239446 +0800
Birth: -
3)文件时间戳修改方式
touch FILENAME:同时修改atime、mtime、ctime三个时间戳
示例:
[root@localhost ~]# stat 1
File: ‘1’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 207178860 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2016-12-03 19:50:20.315781438 +0800
Modify: 2016-12-03 19:50:20.315781438 +0800
Change: 2016-12-03 19:50:20.315781438 +0800
Birth: -
[root@localhost ~]# touch 1
[root@localhost ~]# stat 1
File: ‘1’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 207178860 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2016-12-03 19:50:45.119450475 +0800
Modify: 2016-12-03 19:50:45.119450475 +0800
Change: 2016-12-03 19:50:45.119450475 +0800
Birth: -
touch -a FILENAME:修改文件访问时间为当前时间
示例:
[root@localhost ~]# touch -a 1
[root@localhost ~]# stat 1
File: ‘1’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 207178860 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2016-12-03 19:53:15.623510063 +0800
Modify: 2016-12-03 19:50:45.119450475 +0800
Change: 2016-12-03 19:53:15.623510063 +0800
Birth: -
touch -m FILENAME:修改文件文件修改时间为当前时间
示例:
[root@localhost ~]# touch -m 1
[root@localhost ~]# stat 1
File: ‘1’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 207178860 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2016-12-03 19:53:15.623510063 +0800
Modify: 2016-12-03 19:54:32.904594588 +0800
Change: 2016-12-03 19:54:32.904594588 +0800
Birth: -
touch {-a,-m} -t [[CC]YY]MMDDhhmm[.ss]:修改文件访问时间或文件修改时间为指定之间
示例:
[root@localhost ~]# touch -a -t 201505041130.30 1
[root@localhost ~]# stat 1
File: ‘1’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 207178860 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2015-05-04 11:30:30.000000000 +0800
Modify: 2016-12-03 19:54:32.904594588 +0800
Change: 2016-12-03 19:57:19.990101432 +0800
Birth: -
8、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
[root@localhost ~]# ls -al /var/l*[0-9]*[[:lower:]]
9、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
[root@localhost ~]# ls -l /etc/[0-9]*[^0-9]
10、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
[root@localhost ~]# ls -l /etc/[^a-z]*[^a-z]*
11、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-09-20-09-32-22。
[root@localhost ~]# touch /tmp/tfile-`date +"%Y-%m-%d-%H-%M-%S"`
[root@localhost ~]# ll /tmp/tfil*
-rw-r--r--. 1 root root 0 Dec 4 20:42 /tmp/tfile-2016-12-04-20-42-59
12、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
[root@localhost tmp]# mkdir /tmp/mytest2;cp -vr /etc/*.d /tmp/mytest2
13、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。
[root@localhost tmp]# mkdir /tmp/mytest3;cp -vr /etc/[l,m,n]*.conf /tmp/mytest3
‘/etc/ld.so.conf’ -> ‘/tmp/mytest3/ld.so.conf’
‘/etc/libaudit.conf’ -> ‘/tmp/mytest3/libaudit.conf’
‘/etc/libuser.conf’ -> ‘/tmp/mytest3/libuser.conf’
‘/etc/locale.conf’ -> ‘/tmp/mytest3/locale.conf’
‘/etc/logrotate.conf’ -> ‘/tmp/mytest3/logrotate.conf’
‘/etc/man_db.conf’ -> ‘/tmp/mytest3/man_db.conf’
‘/etc/mke2fs.conf’ -> ‘/tmp/mytest3/mke2fs.conf’
‘/etc/mtools.conf’ -> ‘/tmp/mytest3/mtools.conf’
‘/etc/nfsmount.conf’ -> ‘/tmp/mytest3/nfsmount.conf’
‘/etc/nsswitch.conf’ -> ‘/tmp/mytest3/nsswitch.conf’
‘/etc/numad.conf’ -> ‘/tmp/mytest3/numad.conf’
本文出自 “学海无涯” 博客,谢绝转载!
Linux+Python高端运维班第一次作业