1. 按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。
Linux发行版很多,但具体的做法大同小异,就是使用Linux内核在根据需要整合需要的软件,来做成操作系统发布。在众多Linux发行版本中有几大知名版本和众多不知名的版本。
业内比较流行的版本:国内红帽的REHL系列,CENTOS系列,欧洲SUSE系列,还有Ubuntu系列当然国内也有公司使用Ubuntu作为生产环境服务器,日本的托林斯系列等。但是它们都遵循GNU相关规范。
Linux系统安装
Linux系统安装的介质通常有光盘,U盘,网络三种。
Linux系统的安装形式有图形界面安装,字符界面安装,以及无人值守的kickstart安装
详细步骤可参看网上的介绍。
2. 说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相应的示例来阐述。
系统安装好就可以登录了。如果安装时没有创建一个普通用户,就使用root用户来登录,
在命令行提示符中输入用户名root,以及root用户对应的密码
事例中使用CentOS6.6版
CentOS release 6.6(final)
Kernel 2.6.32-504.el6.x86_64 on an x86_64
localhost login:root
Password:
实际上密码在命令行是无法看到的,如果用户名和密码都正确,会登录到root用户的工作目录
[root@localhost ~]#
这时你可以使用tty命令查看,当前用户是使用那个终端登录的。
[root@localhost ~]# tty
/dev/tty3
显示的结果不一定一样,但是无非是/dev/tty1~/dev/tty6系统默认有六个虚拟终端,
如果使用SSH登录工具比如Secure Shell的话,输入tty
[root@localhost ~]# tty
/dev/pts0
这个可能会有很多,只是可能(根据具体情况)。主要是模拟终端。
通过快捷键Ctrl+Alt+F1~F6的任何一个可以切换六个虚拟终端
[root@localhost ~]# startx
在某个虚拟终端上输入startx命令可以启动一个GUI图形界面来管理(图形终端即模拟终端)。
具体什么界面不同的发行版不一样,但是图形终端在实际工作中基本不用,
所以只是简单介绍。Ctrl+Alt+Fn(n可能是1~n中的任何一个数字根据具体情况而定)可以在命令行终端和图形终端进行切换。在图形终端打开一个console窗口
[root@localhost ~]#tty
/dev/pts2
可能会显示出不同的结果可能是/dev/ptsn(n代表某个数字)
要查看当前登录用户所在的目录可以使用pwd命令
[root@localhost pts]#pwd
/dev/pts
[root@localhost pts]#cd
[root@localhost ~]#pwd
/root
练习几次就会了
如果你想查看当前用户的系统变量(环境变量)比如$PS1 $PS2(命令行提示符的设置)
可以进行如下操作
[root@localhost ~]#echo $PS1
[\u@\h \W]\$
[root@localhost ~]#echo $PS2
>
输出结果随实际的环境变量设置而不同。
显示当前用户使用的shell程序
[root@localhost ~]# echo $SHELL
/bin/bash
[root@localhost ~]# echo ${SHELL}
/bin/bash
如果你要查看或管理历史命令可以如下使用
当用户登录时,其执行的命令会放在相应的系统缓存中,当用户登出时,命令会被保存到
登录用户工作目录的.bash_history文件里。
先清空当前目录下的.bash_history文件
[root@localhost ~]# cat /dev/null > .bash_history
[root@localhost ~]# cat .bash_history
[root@localhost ~]#
文件里没有任何数据了,在命令行里输入
[root@localhost ~]# history
672 ls
673 ls -a
674 vi .bash_history
675 ll
676 cat /dev/null > .bash_history
677 vi .bash_history
678 cat .bash_history
679 history
有679条数据,登出系统
[root@localhost ~]# logout
再次进入
[root@localhost ~]# cat .bash_history
history
vi .bash_profile
vi .bash_hisotry
ll
ll -a
ls
ls -a
vi .bash_history
ll
cat /dev/null > .bash_history
vi .bash_history
cat .bash_history
history
logout
原有的历史命令消失了,新的历史命令被记录到了.bash_history文件里。
要清除当前登录用户缓存的历史命令使用如下命令
[root@localhost ~]# history -c
[root@localhost ~]# history
1 history
同时你可以使用
[root@localhost ~]# help history来查看history命令的其他相关命令行选项
有了history就可以使用!#(#代表某个历史命令序号)再次执行该命令
[root@localhost ~]# history
187 cd /var/log/
188 ls
189 less messages
部分截取,这时可使用
[root@localhost ~]# !187
cd /var/log/
[root@localhost log]# pwd
/var/log
进入/var/log目录
[root@localhost log]# !!
pwd
/var/log
使用!!执行上一条命令
207 cat messages
208 cat maillog
209 history
[root@localhost log]# !cat
cat maillog
Dec 1 12:26:59 localhost postfix/postfix-script[1763]: starting the Postfix mail system
Dec 1 12:26:59 localhost postfix/master[1765]: daemon started -- version 2.6.6, configuration /etc/postfix
利用history可以调用最近一次以命令名开头的执行过的命令
如果想查看或设置当前系统的时间可以使用date命令
使用如下方法可查看date命令的帮助
[root@localhost ~]# date --help
[root@localhost ~]# man 1 date
常用的date命令以及选项
[root@localhost ~]# date
Fri Oct 28 11:50:30 EDT 2016
[root@localhost ~]# date +%c
Fri 28 Oct 2016 11:56:02 AM EDT
不同时区的日期时间是不一样的
[root@localhost ~]# date
Sun Dec 4 13:53:13 CST 2016
[root@localhost ~]# date +%c
Sun 04 Dec 2016 01:53:16 PM CST
[root@localhost ~]# date
Fri Oct 28 11:50:30 EDT 2016
[root@localhost ~]# date +%c
Fri 28 Oct 2016 11:56:02 AM EDT
不同时区的日期时间是不一样的
[root@localhost ~]# date
Sun Dec 4 13:53:13 CST 2016
[root@localhost ~]# date +%c
Sun 04 Dec 2016 01:53:16 PM CST
[root@localhost ~]# date +%D
12/04/16
[root@localhost ~]# date +%F
2016-12-04
[root@localhost ~]# date +%T
13:56:18
[root@localhost ~]# date +%x
12/04/2016
[root@localhost ~]# date +%X
01:57:09 PM
[root@localhost ~]# date +%Z
CST
[root@localhost ~]# date +%z
+0800
[root@localhost ~]# date +%F-%H-%M-%S
2016-10-28-12-02-19
[root@localhost ~]# date +%F\ %H-%M-%S
2016-10-28 12-02-47
date 设置时间
date [MMDDhhmm[[CC]YY][.ss]]
MM: 月份
DD: 几号
hh: 小时
mm: 分钟
YY: 两位年份
CCYY: 四位年份
.ss: 秒钟
[root@localhost ~]# date 1114154016.23
Mon Nov 14 15:40:23 EST 2016
[root@localhost ~]# date 111415402016.23
Mon Nov 14 15:40:23 EST 2016
要进行Linux系统时钟和硬件时钟之间的互相同步可以使用hwclock命令
使用如下方法可查看hwclock命令的帮助
[root@localhost ~]# man 8 hwclock
[root@localhost ~]# hwclock --help
[root@localhost ~]# hwclock
Mon 14 Nov 2016 04:02:53 PM EST -0.016720 seconds
系统时钟与硬件时钟同步
[root@localhost ~]# hwclock -s
硬件时钟与系统时钟同步
[root@localhost ~]# hwclock -w
如果要关闭Linux系统可使用shutdown、poweroff命令
关闭系统
[root@localhost ~]# man 8 poweroff
[root@localhost ~]# poweroff --help
[root@localhost ~]# poweroff -p
[root@localhost ~]# man 8 shutdown
[root@localhost ~]# shutdown --help
[root@localhost ~]# shutdown -hP now
TIME:
now: 立刻
+m: 相对时间表示法,从命令提交开始多久之后,例如:+3(三分钟后)
hh:mm: 绝对时间表示,指明具体时间(24小时制)
取消关机
[root@localhost ~]# shutdown -c
重启系统
[root@localhost ~]# man 8 reboot
[root@localhost ~]# reboot --help
[root@localhost ~]# reboot
如果要修改和定义当前用户的环境变量可使用export命令
获取export命令的相关帮助
[root@localhost ~]# help export
只对当前shell进程以及其子shell有效
显示当前用户定义过的环境变量和函数
[root@localhost ~]# export -p
修改HISTCONTROL环境变量
[root@localhost ~]# echo $HISTCONTROL
ignorespace
[root@localhost ~]# export HISTCONTROL="ignoredups"
[root@localhost ~]# echo $HISTCONTROL
ignoredups
当前用户定义自己的环境变量
[mysql@localhost ~]$ export PYTHON2=/home/mysql/python2712
[mysql@localhost ~]$ echo $PYTHON2
/home/mysql/python2712
如果要查看当前系统的网卡信息,以及ip地址,网关等信息可使用ifconfig命令
获取ifconfig命令的相关帮助
[root@localhost tmp]# man 8 ifconfig
[root@localhost tmp]# ifconfig --help
最常用的用法
[root@localhost tmp]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:3E:96:BE
inet addr:192.168.1.200 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe3e:96be/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:28371 errors:0 dropped:0 overruns:0 frame:0
TX packets:25009 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2934211 (2.7 MiB) TX bytes:5896460 (5.6 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
3. 如何在Linux系统上获取命令的帮助信息,请详细列出,并描述man文档的章节是如何划分的
如果想得到Linux系统上命令的帮助信息可以使用如下途径
1 内部命令
使用type加help来找到
[root@localhost log]# type pwd
pwd is a shell builtin
[root@localhost log]# help pwd
pwd: pwd [-LP]
Print the name of the current working directory.
Options:
-L print the value of $PWD if it names the current working
directory
-P print the physical directory, without any symbolic links
By default, `pwd' behaves as if `-L' were specified.
Exit Status:
Returns 0 unless an invalid option is given or the current directory
cannot be read.
2 外部命令自带的
COMMAND --help
COMMAND -h
例如
[root@localhost log]# ls --help
[root@localhost bin]# df --help
3 使用man手册
例如
[root@localhost bin]# man bash
[root@localhost bin]# man free
4 使用info信息页
例如
[root@localhost bin]# info rm
5 使用程序自身的帮助文档
README
INSTALL
ChangeLog
/usr/share/doc
6 程序官方文档
7 发行版的官方文档
8 神器GOOGLE
man手册分为如下几大部分
man 1 User COMMAND用户命令
man 2 Linux Programmer's Manual 系统调用 Linux系统程序员手册
man 3 C Library CallingC库 Linux系统程序员手册
man 4 Device File设备 Linux系统程序员手册
man 5 Configuration File 配置文件 Linux系统程序员手册
man 6 Game游戏 Linux系统程序员手册
man 7 杂项杂项 Linux系统程序员手册
man 8 System Administration 系统管理
4. Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
文件管理命令:
cp, mv, rm
cp 复制文件(目录)
[root@localhost ~]# cp /etc/fstab /tmp/abc.txt
[root@localhost ~]# cp /etc/fstab /tmp/abc.txt
cp: overwrite `/tmp/abc.txt'? n
[root@localhost ~]# mkdir -p /tmp/abc
[root@localhost ~]# cp /etc/fstab /tmp/abc
[root@localhost ~]# ls /tmp/abc
fstab
[root@localhost ~]# cp /etc/fstab /etc/inittab /tmp/xyz
cp: target `/tmp/xyz' is not a directory
[root@localhost ~]# mkdir -pv /tmp/xyz
mkdir: created directory `/tmp/xyz'
[root@localhost ~]# cp /etc/fstab /etc/inittab /tmp/xyz
[root@localhost ~]# cp /etc/rc.d /tmp
cp: omitting directory `/etc/rc.d'
[root@localhost ~]# cp -r /etc/rc.d /tmp/
[root@localhost ~]# touch /tmp/pam.d
[root@localhost ~]# cp -rv /etc/pam.d /tmp/pam.d
cp: cannot overwrite non-directory `/tmp/pam.d' with directory `/etc/pam.d'
[root@localhost ~]# cp -rv /etc/security/ /tmp
[root@localhost ~]# ls /tmp/security/
[root@localhost ~]# mkdir -pv /tmp/securitydir
mkdir: created directory `/tmp/securitydir'
[root@localhost ~]# cp -rv /etc/security/ /tmp/securitydir/
[root@localhost ~]# rm -rf /tmp/securitydir/
[root@localhost ~]# cp -rv /etc/security/ /tmp/securitydir/
[root@localhost ~]# ls /tmp/securitydir/
[root@localhost ~]# cp -rv /etc/security/ /tmp/security
cp: cannot overwrite non-directory `/tmp/security' with directory `/etc/security/'
[root@localhost ~]# rm -rf /tmp/security
[root@localhost ~]# cp -rv /etc/security/ /tmp/security
[root@localhost ~]# mkdir -pv /tmp/security
mkdir: created directory `/tmp/security'
[root@localhost ~]# cp -rv /etc/security/ /tmp/security
[root@localhost ~]# ls /tmp/security
security
[root@localhost ~]# ls /tmp/security/security/
mv 移动文件(目录)
[root@localhost ~]# mv /tmp/abc.txt /var/tmp/ab.txt
[root@localhost ~]# mv /tmp/pam /var/tmp/pam.d
[root@localhost tmp]# mv mageedu/ mageedu.com
rm 删除文件(目录)
t@localhost tmp]# rm abc
rm: cannot remove `abc': Is a directory
[root@localhost tmp]# rm -r abc
rm: descend into directory `abc'? n
[root@localhost tmp]# rm -rf abc
绝对禁止如下操作,否则会后悔
[root@localhost ~]# rm -rf /*
[root@localhost ~]# rm -rf /
5. bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
命令的执行结果状态
成功
失败
bash使用特殊变量$?保存最近一条命令的执行状态结果:
0:成功
1-255:失败
[root@localhost ~]# ls /var
account cache crash cvs db empty games gdm lib local lock log mail nis opt preserve run spool tmp www yp
[root@localhost ~]# echo $?
0
[root@localhost ~]# mkdir /tmp/test3
[root@localhost ~]# mkdir /tmp/test3
mkdir: cannot create directory `/tmp/test3': File exists
[root@localhost ~]# echo $?
1
[root@localhost ~]# mkddir /tmp/test4
-bash: mkddir: command not found
[root@localhost ~]# echo $?
127
命令行展开
~: 展开用户的主目录(家目录)
~USERNAME:展开指定用户的主目录(家目录)
{}: 可承载一个以逗号分隔的列表,并将其展开为多个路径
/tmp/{a,b} = /tmp/a, /tmp/b
/tmp/hi/{tom, jerry}
/tmp/{tom, jerry}/hi
创建/tmp目录下的:x_m, y_m, x_n, y_n
mkdir -pv /tmp/{x,y}_{m,n}
创建/tmp目录下的:/tmp/bin, /tmp/sbin, /tmp/usr,/tmp/usr/bin, /tmp/usr/sbin
mkdir -pv /tmp/{bin,sbin,usr/{bin,sbin}}
6. 请使用命令行展开功能来完成以下练习:
创建/tmp目录下的:a_c, a_d, b_c, b_d
mkdir -pv /tmp/{a_,b_}{c,d}
创建/tmp/mylinux目录下的目录树:
mkdir -pv /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}
7. 文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
[root@localhost ~]# ls -l /etc/fstab
-rw-r--r--. 1 root root 719 Dec 2 18:13 /etc/fstab
最左侧的第一位,文件类型
-, d, l, b, c, p, s
后面九位, 文件访问权限(permissions)
后面数字 文件被硬链接的次数
后面字符 文件的所有者
后面字符 文件的所有者所在组
后面字符 文件大小
Dec 2 18:13 文件最近一次被修改的时间(文件内容改变)只要文件被修改就一定会改变
文件名称
[root@localhost tmp]# stat /etc/fstab
File: `/etc/fstab'
Size: 719 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 1048841 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-12-06 21:19:22.983011260 +0800
Modify: 2016-12-02 18:13:17.650999815 +0800
Change: 2016-12-02 18:13:17.746999963 +0800
使用touch命令可修改文件的最近一次访问时间atime,和最近一次mtime
8. 显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
ls -d /var/l*[0-9]*[[:lower:]]
ls /var | grep "^l.*[[:digit:]]\+.*[[:lower:]]$"
9. 显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
ls -d /etc/[0-9]*[^0-9]
ls /etc | grep "^[0-9].*[^0-9]$"
ls /etc | grep "^[[:digit:]].*[^[:digit:]]$"
10. 显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
ls -d /etc/[^[:alpha:]][[:alpha:]]*
ls /etc | grep "^[^[:alpha:]][[:alpha:]]\+.*"
11. 在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-09-20-09-32-22。
mkdir -pv /tmp/tfile-`date +%F-%H-%M-%S`
12. 复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
ls -d /etc/*.d
ls /etc | grep ".*.d$"
mkdir -pv /tmp/mytest2
cp -arv /etc/*.d /tmp/mytest2
cp -a /etc/*.d /tmp/mytest2
13. 复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。
ls /etc | grep "^[lmn].*.conf$"
ls /etc/[lmn]*.conf
mkdir -pv /tmp/mytest3
cp -arv /etc/[lmn]*.conf /tmp/mytest3
cp -a /etc/[lmn]*.conf /tmp/mytest3