(一).第一周作业

1).Linux常见发行版本以及区别

  1.  	debian: ubuntu,mint
    
  2.  	slackware:SUSE Linux Enterprise Server (SLES) 
         OpenSuse桌面
    
  3.  	redhat: RHEL: RedHat Enterprise Linux
     				每18个月发行一个新版本
     				CentOS:兼容RHEL的格式
     		        中标麒麟:中标软件
     		        Fedora:每6个月发行一个新版本
    
  4.  	ArchLinux:轻量简洁
    
  5.  	Gentoo:极致性能,不提供传统意义的安装程序
      摘自CSDN:
     	      Linux发行版,就是在内核的基础上,加入用户界面,各种软件的支持 所以发行版很多, 因为各个公司可以配置使用不同的用户界面,和软件,就出现了不同的发行版。总而言之,不同的发行版之间的联系在于它们所使用的内核是相同的。而区别在于不同的厂商制作出的发行版里的命令和软件都有细微的不同。
    

2).打印显示当前时间,格式是:2018 1209 21 10 08

						~]# date +%Y(显示当前年份)
						~]# date +%m(显示当前月份)
						~]# date +%d(显示当前日)
						~]# date +%H(显示当前小时)
						~]# date +%M(显示当前分)
						~]# date +%S(显示当前秒)
				按照要求的格式显示
						~]# date +%Y%m%d%H%M%S
				其它具体操作查看man帮助

3).实现晚上20:30自动关机,并提示用户

					~]# shutdown -P 23:30 Hello everyone ! The computer will shut down at 23:30 

4).总结历史命令管理以及用法

					查看命令历史history
					保存的路径 /ls/.bash_hisory.  命令保存于内存中,只有在退出时会保存在磁盘内。
								~]# echo $ HISTSIZE
									查看命令历史保存上限
								~】# cat /etc/profile
									查看相关参数
								~]# HISTSIZE=n
										保存上限被修改为n
		history [-c] [-d offset] [n] 
		history -anrw [filename] 
		history -ps arg [arg...]
							-c: 清空命令历史
							-d offset: 删除历史中指定的第offset个命令
							n: 显示最近的n条历史
							-a: 追加本次会话新执行的命令历史列表至历史文件
							-r: 读历史文件附加到历史列表
							-w: 保存历史列表到指定的历史文件
							-n: 读历史文件中未读过的行到历史列表
							-p: 展开历史参数成多行,但不存在历史列表中
							-s: 展开历史参数成一行,附加在历史列表后

	**命令行历史**
					保存你输入的命令历史。可以用它来重复执行命令登录shell时,
					会读取命令历史文件中记录下的命令~/.bash_history。登录进
					shell后新执行的命令只会记录在缓存中;这些命令会用户退出
					时“追加”至命令历史文件中
		  **重复前一个命令,有4种方法**
					1.重复前一个命令使用上方向键,并回车执行
					2.按 !! 并回车执行
					3.输入 !-1 并回车执行
					4.按 Ctrl+p 并回车执行
						~】# !:0 执行前一条命令(去除参数)
						~】# Ctrl + n 显示当前历史中的下一条命令,但不执行
						~】# Ctrl + j 执行当前命令
						~】# !n 执行history命令输出对应序号n的命令
						~】# !-n 执行history历史中倒数第n个命令
						~】# !string 重复前一个以“string”开头的命令
						~】# !?string 重复前一个包含string的命令
						~】# !string:p 仅打印命令历史,而不执行
						~】# !$:p 打印输出 !$ (上一条命令的最后一个参数)的内容
						~】# !*:p 打印输出 !*(上一条命令的所有参数)的内容
						~】# ^string 删除上一条命令中的第一个string
						~】# ^string1^string2 将上一条命令中的第一个string1替换为string2
						~】# !:gs/string1/string2 将上一条命令中所有的string1都替换为 string2
						~】# 使用up(向上)和down(向下)键来上下浏览从前输入的命令
						~】# ctrl-r来在命令历史中搜索命令
							(reverse-i-search)`’:
							Ctrl+g:从历史搜索模式退出
		                   要重新调用前一个命令中最后一个参数
							!$ 表示
							Esc, .(点击Esc键后松开,然后点击 . 键)
							Alt+ .(按住Alt键的同时点击 . 键)

	****调用历史参数****
					~】# command !^ 利用上一个命令的第一个参数做cmd的参数
					~】# command !$ 利用上一个命令的最后一个参数做cmd的参数
					~】# command !* 利用上一个命令的全部参数做cmd的参数
					~】# command !:n 利用上一个命令的第n个参数做cmd的参数
					~】# command !n:^ 调用第n条命令的第一个参数
					~】# command !n:$ 调用第n条命令的最后一个参数
					~】# command !n:m 调用第n条命令的第m个参数
					~】# command !n:* 调用第n条命令的所有参数
					~】# command !string:^ 从命令历史中搜索以 string 开头的命令,并获取它的第一个参数
					~】# command !string:$ 从命令历史中搜索以 string 开头的命令,并获取它的最后一个参数
					~】# command !string:n 从命令历史中搜索以 string 开头的命令,并获取它的第n个参数
					~】# command !string:* 从命令历史中搜索以 string 开头的命令,并获取它的所有参数

	**命令历史相关环境变量**

					HISTSIZE:命令历史记录的条数
					HISTFILE:指定历史文件,默认为~/.bash_history
					HISTFILESIZE:命令历史文件记录历史的条数
					HISTTIMEFORMAT=“%F %T “ 显示时间
					HISTIGNORE=“str1:str2*:… “ 忽略str1命令,str2开头的历史
					控制命令历史的记录方式:
		  **环境变量:HISTCONTROL**
							~]# HISTCONTROL=ignoredups 默认,忽略重复的命令,连续且相同为“重复”
							~]# HISTCONTROL=ignorespace 忽略所有以空白开头的命令
							~]# HISTCONTROL=ignoreboth 相当于ignoredups, ignorespace的组合
							~]# HISTCONTROL=erasedups 删除重复命令
						export 变量名="值“
						存放在 /etc/profile 或 ~/.bash_profile命令history

5).Linux使用帮助

					获取帮助的能力决定了技术的能力!
					多层次的帮助
							(1) 命令自带简要格式的使用帮助
							(2) 使用手册:manual
							(3) info COMMAND
							(4) 很多应用程序会自带帮助文档:/usr/share/doc/APP-VERSION
							(5) 主流发行版官方文档
							(6) 程序官方的文档
							(7) 搜索引擎
							whatis
							command -h ;--help
							man and info
							/usr/share/doc/
							Red Hat documentation
							其它网站和搜索
			whatis:
						显示命令的简短描述
						使用数据库
						刚安装后不可立即使用
						makewhatis(CentOS6) | mandb(Centos7)制作启用数据库
						使用示例:
						whatis cal 或 man –f cal
	1.内部命令
						help COMMAND 或 man bash
	2外部命令
				(1) 命令自带简要格式的使用帮助
							~] # COMMAND --help | ~]# COMMAND -h
							显示用法总结和参数列表
							使用的大多数,但并非所有的
							示例:
						date --help 
							Usage: date [OPTION]... [+FORMAT] or: date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
				 (2) 使用手册:manual
					          位置:/usr/share/man
	***		# man COMMAND***

					SECTION:
										NAME:功能性说明
										SYNOPSIS:语法格式
										DESCRIPTION:描述
										OPTIONS:选项
										EXAMPLES:使用示例
										AUTHOR: 作者
										BUGS: 报告程序bug的方式
										SEE ALSO: 参考
										...

					SYNOPSIS: 
									[]:可选内容;
									<>:必须提供的内容;
									a|b|c:多选一;
									...:同类内容可出现多个;

					使用手册:压缩格式的文件,有章节之分;
							/usr/share/man
									man1, man2, ...

									1:用户命令;
									2:系统调用;
									3:C库调用;
									4:设备文件及特殊文件;
									5:文件格式;(配置文件格式)
									6:游戏使用帮助;
									7:杂项;
									8:管理工具及守护进行;

									~]# man CHAPTER COMMAND

					注意:并非每个COMMAND在所有章节下都有手册;
							查看:
											~]# whatis COMMAND
												查看哪些章节有使用手册
					注意:其执行过程是查询数据库进行的;
											手动更新数据库:
											~]# makewhatis

			man命令打开手册以后的操作方法:
				翻屏:
						空格键:向文件尾翻一屏;
						b: 向文件首部翻一屏;
						Ctrl+d:向文件尾部翻半屏;
						Ctrl+u:向文件首部翻半屏;
						回车键:向文件尾部翻一行;
						k: 向文件首部翻一行;
						G:跳转至最后一行;
						nG: 跳转至指定的第n行;
						1G:跳转至文件首部;

			文本搜索:
						/keyword(关键词):从文件首部向文件尾部依次查找;不区分字符大小写;
						?keyword:从文件尾部向文件首部依次查找;	
						n: 与查找命令方向相同;
						N: 与查找命令方向相反;

			退出:
					q: quit

			选项:
				   -M /PATH/TO/SOMEDIR:到指定目录下查找命令手册并打开之;

			练习:获取useradd命令的用法
						(1) 添加用户gentoo;
							# useradd gentoo
						验证方法# id gentoo
						(2) 添加用户slackware,要求指定其所用的shell为/bin/tcsh;
							# useradd -s /bin/tcsh slackware
							# tail -1 /etc/passwd

		(3) info COMMAND
			     获取命令的在线文档;

		(4) 很多应用程序会自带帮助文档:/usr/share/doc/APP-VERSION
					README:程序的相关的信息;
					INSTALL: 安装帮助;
					CHANGES:版本迭代时的改动信息;

		(5) 主流发行版官方文档
					http://www.redhat.com/doc

		(6) 程序官方的文档:
			    官方站点上的“Document”

		(7) 搜索引擎
			   google

		
				...