1、按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别
发行版本有: Red Hat Linux 、 SuSE 、 centos 、 Gentoo 、 Debian 、 Ubuntu 、Fedora Core 等。
CentOS ( Community ENTerprise Operating System )是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。
Debian, 或者称 Debian 系列,包括 Debian 和 Ubuntu 等。 Debian 是社区类 Linux 的典范,是迄今为止最遵循 GNU 规范 Linux 系统。
Ubuntu 严格来说不能算一个独立的发行版本, Ubuntu 是基于 Debian 的 unstable 版本加强而来,可以这么说 Ubuntu 就是一个拥有 Debian 所有的优点,以及自己所加强的优点的近乎完美的 Linux 桌面系统。
Gentoo, 伟大的 Gentoo 是 Linux 世界最年轻的发行版本,正因为年轻,所以能吸取在她之前的所有发行版本的优点,这也是 Gentoo 被称为最完美的 Linux 发行版本的原因之一。
2、说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相应的示例来阐述。
命令介绍
ifconfig
描述:ifconfig (ifconfig – configure a network interface) 配置网络接口
使用格式
ifconfig [interface]
ifconfig interface [aftype] options | address
(1)不带[OPTION]情况
[root@stady7 ~]# ifconfig eno16777736: flags=4163mtu 1500 inet 10.1.1.10 netmask 255.255.255.0 broadcast 10.1.1.255 inet6 fe80::20c:29ff:fe0b:e32a prefixlen 64 scopeid 0x20 ether 00:0c:29:0b:e3:2a txqueuelen 1000 (Ethernet) RX packets 494 bytes 377407 (368.5 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 351 bytes 38990 (38.0 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 0 (Local Loopback) 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
(2)带[OPTION]情况
interface 网卡接口的名称
[root@stady7 ~]# ifconfig eno16777736 eno16777736: flags=4163mtu 1500 inet 10.1.1.10 netmask 255.255.255.0 broadcast 10.1.1.255 inet6 fe80::20c:29ff:fe0b:e32a prefixlen 64 scopeid 0x20 ether 00:0c:29:0b:e3:2a txqueuelen 1000 (Ethernet) RX packets 509 bytes 381703 (372.7 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 356 bytes 40480 (39.5 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
up 跟在被指定接口后面表示启用该接口,如果一个地址被分配给该接口则它是默认指定开启状态。
down 指定网络口被禁用。
-arp 启用或禁用网络接口上使用ARP协议
echo
描述:显示一行文字
使用格式
echo [SHORT-OPTION]… [STRING]…
(1)不带[OPTION]情况
直接显示一行文字结果,例:
[root@stady7 ~]# echo "stady123" stady123
(2)带[OPTION]情况
-n 显示文件后不换行
[root@stady7 ~]# echo -n "stady123" stady123[root@stady7 ~]#
-e 使用反斜杠转义
\\ 反斜杠 转义使之成为一个字符
[root@stady7 ~]# echo -e "stady \\ 456" stady \ 456
\n 换一行
[root@stady7 ~]# echo -e "stady\n789" stady 789
其它转义用法使用man echo查询
-E 禁用反斜杠转义(默认)
tty
描述:显示控制终端的文件名称
使用格式
tty [OPTION]…
(1)不带[OPTION]情况
显示当前终端文件名
[root@stady7 ~]# tty /dev/pts/0
(2)带[OPTION]情况
-s, –silent, –quiet 不显示任何信息,只返回一个退出状态
[root@stady7 ~]# tty -s [root@stady7 ~]# echo $? 0
startx
描述:用来启动X Windwos 桌面命令
可用Ctrl+ALT+F1~F7来切换
export
描述:设置和显示环境变量
使用格式 :
export 变量名="值"
[root@stady7 ~]# export name="stady" [root@stady7 ~]# echo $namestady
pwd
描述:显示当前目录
[root@stady7 ~]# pwd /root
history
描述:管理命令历史
登录shell时,会读取命令历史文件中记录下的命令:~/.bash_history
登录进shell后新执行的命令只会记录在缓存中;这些命令会在用户退出时“追加”至命令历史文件中;
使用格式
不带参数
[root@stady7 ~]# history 27 ifconfig 28 ifconfig eno16777736 29 echo "stady123" 30 echo -n "stady123" 31 echo -e "stady \\ 456" 32 echo -e "stady \\ 789" 33 echo -e "stady\789" 34 echo -e "hello\nworld" 35 echo -e "stady\edu" 36 echo -e "stady\eduedu" 37 echo -e "stady\n789" 38 tty 39 tty -s 40 echo $?
带参数
-a:追加本次会话新执行的命令历史列表至历史文件中;
[root@stady7 ~]# history 46 echo $namestady 47 echo $stady 48 pwd 49 history 50 history -a 51 history
-d:删除历史中指定的命令;
[root@stady7 ~]# history -d 36 42 [root@stady7 ~]# history 26 yum install net-tools.x86_64 -y 27 ifconfig 28 ifconfig eno16777736 29 echo "stady123" 30 echo -n "stady123" 31 echo -e "stady \\ 456" 32 echo -e "stady \\ 789" 33 echo -e "stady\789" 34 echo -e "hello\nworld" 35 echo -e "stady\edu" 36 echo -e "stady\n789" 37 tty 38 tty -s 39 echo $? 40 export UserName="root" 41 export $UserNameroot 42 export UserName="li" 43 echo $UserNameli 44 export name="stady" 45 echo $namestady 46 echo $stady 47 pwd 48 history 49 history -a 50 history 51 history -d 36 42 52 history
-c:清空命令历史
[root@stady7 ~]# history -c [root@stady7 ~]# history 1 history [root@stady7 ~]#
poweroff、reboot
描述:关机命令和重启
使用格式
poweroff [OPTIONS…]
reboot [OPTIONS]
shutdown
描述:参数中包含了关机、重启
使用格式
shutdown [OPTIONS…] [TIME] [WALL…]
参数
-r 重启
-p 关机(默认)
-h 关机
-c 取消关机命令
hwclock
描述:显示硬件时钟
使用格式
hwclock [function] [option…]
参数
-s –hctosys 把系统时间设成跟硬件一样
-w –systohc 把硬件时钟设成跟系统一样
date
描述:显示或设置系统时间
使用格式
date [OPTION]… [+FORMAT]
FORMAT:格式符号
%D
[root@stady7 ~]# date +%D 12/10/16
%F
[root@stady7 ~]# date +%F 2016-12-10
%T
[root@stady7 ~]# date +%T 15:38:13
3、如何在Linux系统上获取命令的帮助信息,请详细列出,并描述man文档的章节是如何划分的。
命令可分内部命令和外部命令
内部命令帮助可用:# help COMMAND
外部命令帮助可用:
(1) #COMMAND –help
#COMMAND -h
(2)使用手册(manual)
#man COMMAND
(3)信息页
#info COMMAND
(4)程序自身的帮助文档
README
INSTALL
Changelog
(5)程序官方文档
官方站点:Documentation
(6)发行版的官方文档
(7)Google
man章节详分如下:
手册页路径: /usr/share/man
man1 … man8
man1:用户命令
man2:系统调用
man3:C库调用
man4:设备文件及特殊文件
man5:配置文件格式
man6:游戏
man7:杂项
man8:管理类的命令
4、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
cp, mv, rm
1.复制命令: cp
cp [Option] ...[-T] src(源) DEST(目的)
(如果目标不存在,则新建DEST, 并将src中的内容填充至DEST中。
如果目标存在:如果DEST是文件,将src内容覆盖至DEST中。此时建议为cp命令使用-i选项。
如果DEST是目录,在DEST下新建与原文件同名的文件,并将src中内容填充至DEST中)
实例:cp /etc/fstab /tmp/out.tmp (out.tmp为文件)
cp /etc/fstab/tmp/out (out为目录)
cp [Option] ... src(原文件)...(可多个文件) DIRECTORY(新目录)(表示复制到哪个目录中)
如src 为多个文件,Directory必须存在,且为目录,其它情形均为错。
cp src DEST src是目录:
此时使用选项: -r (recursive 递归)
如果dest不存在则创建指定目录,复制src目录中所有目录至DEST中
如果dest存在:
如果dest是文件,则报错
如果dest是目录,则复制到此目录中
常用选项:
-i: 交互式
-r: 递归复制目录及其内部所有内容
-a: 归档, 相当于 -dR --preserv=all (即保留源文件或目录的属性,包括所有者、所属组、权限与时间)
-d: --no-dereference --preserv=links (如果原文件是链接,则保留原链接格式)
--preserv=[Attr_list](保留属性)
mode:权限
ownership:属主属组
timestamp:时间戳
links: 链接
xattr:特殊属性
context: 上下文
all:所有
-p =--preserve=mode, ownership, timestamp
-v 显示详细信息
-t 复制时可把目标放在前面
-f --force 强制复制 (危险)
如:cp /etc/apache2 /tmp/apache2 (/etc/apache2,/tmp/apache2 为目录,)
cp -P /var/tmp/a.txt ./temp/ (保留属性)
2.移动文件命令: mv
mv [Option]...[_T]SOURCE DEST 把源文件移动至目标文件,即改名
mv {Option]...SOURCE... DIRECTORY 把源文件移动至目标文件目录中
mv [Option]... -tDIRECTORY SOURCE 将DIRECTORY 作为移动目标
option:
-i 交互式, 有提示操作
-f 强制
如:mv test.log test1.txt (改名为test.txt)
mv test1.txttemp/ (移动至temp目录)
3.删除命令:rm
rm [OPTION]...FILE...
常用选项:
-i: 交互式
-f:强制删除
-r: 递归
rm -f a.log (强行删除文件)
rm -r tmp/ (删除tmp目录及其子目录和文件)
5、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
1)bash特性:
(1)命令别名
获取当前用户可用的别名的定义
[root@stady7 ~]# 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' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
(2)命令历史
shell进程会保存其会话中用户曾经执行过的命令;命令通过其“历史文件”来持久保存此前执行过的命令;每个用户都有其自己专用的历史文件;
HISTSIZE:shell进程的缓冲区保留的历史命令的条数;
HISTFILESIZE:命令历史文件可保存的历史命令的条数;
history -c:清空命令历史;
history -d OFFSET:删除指定的条目;
(3)快捷键
Ctrl+a:跳至命令行首;
Ctrl+e:跳至命令行尾;
Ctrl+k:删除光标所在处至尾部的内容;
Ctrl+u:删除行首至光标所在处的内容;
(4)命令补全和路径补全
命令补全:
shell程序在接收到用户执行命令的请求且分析完成之后,最左侧字符串将被当作命令去查找;
查找机制:
① 查找内部命令;
② 查找外部命令:
1、去$PATH变量所指定的各路径下,自左而右逐个搜索各目录下的文件名;
2、给定的打头的字符串如果能惟一标识某命令程序文件的文件名,则直接补全;
3、不能惟一标识,再击tab可给列表;
4、错误:没有任何命令可被此打头字符串标识;
路径补全:
在给定的起始路径的上级目录下,以对应路径下的打头字符串来逐一匹配上级目标下的每个文件:
惟一标识:tab补全;
不能惟一标识:tab, tab给出列表;
错误路径:没有响应;
(5)命令展开
把命令行的给定的特殊符号自动替换为相应字符串的机制;
~: 自动替换为用户家目录;
~USERNAME:自动替换为指定用户的家目录;
{}:可承载一个以逗号分隔的路径列表,能够将其展开为多个独立路径;
(6)命令的执行状态结果
命令的正常输出结果:命令的返回值;
通过引用来保存下来或直接调用——”命令引用“
(7)变量
程序:指令+数据
数据:文件、变量;
变量:内存空间,有名称,名称即为变量名,对应的内存空间中的数据即为变量的值;
变量赋值:左边=右边(把右边存储到左边指向的内存空间)
2)命令执行的返回状态值
用 $? 取出最后一个带返回值的函数调用.
如果你确定某个命令或函数有返回值,就可以在调用这条命令后用 $? 取出返回值并处理.在bash中习惯用返回值0代表一切正常.
比如最常用的 ls 命令,有三个返回值: (翻译自man手册)
0 : 一切正常
1: 小问题 (比如无法访问某个子目录)
2: ×××烦 (比如找不到命令所需参数)
在终端执行了 ls 命令后,就可以用 echo $? 来查看返回值.
注意 $? 取出的是最后一个返回值,意思是如果某个命令没有返回值,那么 $? 会返回最后一个有返回值的命令的返回值.
3)命令行展开所涉及的示例演示
[root@stady7 tmp]# mkdir -p /tmp/cn/{s,a,f}[root@stady7 tmp]# tree /tmp/cn//tmp/cn/├── a├── f└── s
6、请使用命令行展开功能来完成以下练习:
(1)、创建/tmp目录下的:a_c, a_d, b_c, b_d
[root@stady7 tmp]# mkdir -p /tmp/{a,b}_{c,d}[root@stady7 tmp]# lsa_c a_d b_c b_d cn
(2)、创建/tmp/mylinux目录下的:
[root@stady7 tmp]# mkdir -p /tmp/mylinux/{bin,boot/gtub,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@stady7 tmp]# tree mylinux/mylinux/├── bin├── boot│ └── gtub├── dev├── etc│ ├── rc.d│ │ └── init.d│ └── sysconfig│ └── network-scripts├── lib│ └── modules├── lib64├── proc├── sbin├── sys├── tmp├── usr│ └── local│ ├── bin│ └── sbin└── var ├── lock ├── log └── run24 directories, 0 files
7、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
1.文件的元数据是指文件的属性、大小、创建时间、访问时间、属主属组等信息。
2.三个时间戳:
access time:访问时间,简写atime,读写文件内容
modify time: 修改时间,mtime,改变文件内容(数据)
change time:改变时间,ctime,元数据发生改变
3.修改文件的时间戳:touch
touch [OPTION]...FILE...
-a:only atime
-m:only mtime
-s STAMP:
[[CC]YY]MMDDhhmm[.ss]
-c:如果文件不存在,则不予创建
[root@stady7 tmp]# touch -a stady/ [root@stady7 tmp]# stat stat: missing operand Try 'stat --help' for more information. [root@stady7 tmp]# stat stady/ File: ‘stady/’ Size: 6 Blocks: 0 IO Block: 4096 directory Device: 803h/2051dInode: 67510075 Links: 2 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:user_tmp_t:s0 Access: 2016-12-10 16:31:18.303914057 +0800 Modify: 2016-12-10 16:30:45.876914631 +0800 Change: 2016-12-10 16:31:18.303914057 +0800 Birth: - [root@stady7 tmp]#
8、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
[root@stady7 tmp]# mkdir /var/l7b[root@stady7 tmp]# ls -d /var/l*[[:digit:]]*[[:lower:]]/var/l7b
9、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
[root@stady7 tmp]# mkdir /etc/6yt[root@stady7 tmp]# ls -d /etc/[[:digit:]]*[^[:digit:]]/etc/6abc /etc/6yt[root@stady7 tmp]#
10、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
[root@stady7 tmp]# mkdir /etc/615iyt7aa[root@stady7 tmp]# ls -d /etc/[^a-z]*[a-z][a-z]/etc/615iyt7aa /etc/6abc /etc/6yt[root@stady7 tmp]#
11、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-09-20-09-32-22。
[root@stady7 tmp]# touch /tmp/tfile-$(date +"%F-%H-%M-%S")[root@stady7 tmp]# lsa_c a_d b_c b_d cn ks-script-KUr0a0 mylinux stady tfile-2016-12-10-16-54-00 yum.log
12、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
[root@stady7 tmp]# mkdir -p /tmp/mytest2[root@stady7 tmp]# cp -ap /etc/*.d /tmp/mytest2[root@stady7 tmp]# ls -l /tmp/mytest2total 24drwxr-xr-x. 2 root root 48 Dec 4 14:48 bash_completion.ddrwxr-xr-x. 2 root root 6 Sep 15 22:28 binfmt.ddrwxr-xr-x. 2 root root 6 May 12 2016 chkconfig.ddrwxr-xr-x. 2 root root 20 Dec 4 14:54 cron.ddrwxr-xr-x. 2 root root 22 Dec 4 14:54 depmod.ddrwxr-xr-x. 2 root root 6 Sep 15 22:30 dnsmasq.ddrwxr-xr-x. 2 root root 6 Jun 24 01:19 dracut.conf.ddrwx------. 2 root root 4096 Dec 4 14:54 grub.dlrwxrwxrwx. 1 root root 11 Dec 4 14:54 init.d -> rc.d/init.ddrwxr-xr-x. 2 root root 4096 Dec 4 14:56 ld.so.conf.ddrwxr-xr-x. 2 root root 60 Dec 9 2015 logrotate.ddrwxr-xr-x. 2 root root 22 Dec 4 14:55 modprobe.ddrwxr-xr-x. 2 root root 6 Sep 15 22:28 modules-load.ddrwxr-xr-x. 2 root root 30 Dec 4 14:56 my.cnf.ddrwxr-xr-x. 2 root root 4096 Dec 4 14:55 pam.ddrwxr-xr-x. 2 root root 6 Jun 10 2014 popt.ddrwxr-xr-x. 2 root root 75 Dec 4 14:54 prelink.conf.ddrwxr-xr-x. 2 root root 4096 Dec 4 14:54 profile.dlrwxrwxrwx. 1 root root 10 Dec 4 14:54 rc0.d -> rc.d/rc0.dlrwxrwxrwx. 1 root root 10 Dec 4 14:54 rc1.d -> rc.d/rc1.dlrwxrwxrwx. 1 root root 10 Dec 4 14:54 rc2.d -> rc.d/rc2.dlrwxrwxrwx. 1 root root 10 Dec 4 14:54 rc3.d -> rc.d/rc3.dlrwxrwxrwx. 1 root root 10 Dec 4 14:54 rc4.d -> rc.d/rc4.dlrwxrwxrwx. 1 root root 10 Dec 4 14:54 rc5.d -> rc.d/rc5.dlrwxrwxrwx. 1 root root 10 Dec 4 14:54 rc6.d -> rc.d/rc6.ddrwxr-xr-x. 10 root root 4096 Dec 4 14:54 rc.ddrwxr-xr-x. 2 root root 24 Dec 4 14:54 rsyslog.ddrwxr-xr-x. 2 root root 6 Aug 3 00:15 rwtab.ddrwxr-xr-x. 2 root root 6 Aug 3 00:15 statetab.ddrwxr-x---. 2 root root 6 Apr 1 2016 sudoers.ddrwxr-xr-x. 2 root root 27 Dec 4 14:54 sysctl.ddrwxr-xr-x. 2 root root 24 Sep 15 22:28 tmpfiles.ddrwxr-xr-x. 2 root root 6 Aug 12 2015 xinetd.ddrwxr-xr-x. 2 root root 4096 Dec 3 2015 yum.repos.d
13、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。
[root@stady7 tmp]# mkdir -p /tmp/mytest3[root@stady7 tmp]# cp /etc/[lmn]*.config /tmp/mytest3cp: cannot stat ‘/etc/[lmn]*.config’: No such file or directory[root@stady7 tmp]# ls /tmp/mytest3[root@stady7 tmp]#