第1周(老王视频)-作业

1、常见Linux的发行版有哪些?并描述不同发行版之间的联系与区别 1)Debian分支(非商业公司维护,灵活,保留linux最好的): Ubuntu(乌班图,以桌面应用为主,基于Debian)->Mint(桌面漂亮) Google Chrome OS基于Debian 2)slackware分支 SUSE(基于Slackware,Novell公司) 3)Redhat分支 Fedora(桌面版,面向个人,1,2,3,4,5,6,7,8,9之前由redhat更新,之后由fedora社区发展) Redhat Enterperise linux(RHEL3,4,5,6,7),Oracle Enterprise Linux基于Redhat CentOS(Community<社区> enterprese OS,社区版的RHEL) 4)Gentoo分支(未编译,需要编译;也属于发行版) LFS(Linux From Scratch<起跑线>,需要编译才能使用;不是发行版,是个PDF文档): GUN/LINUX,BLFS(Byond超越),ALFS(autoinstall),CLFS(交叉编译Cross complie) 5)ArchLinux分支

2、打印显示当前时间,格式是:20181209211008 [root@centos7 ~]#date +%Y%m%d%H%M%S 20190324152659 [root@centos7 ~]#

3、实现晚上20:30自动关机,并提示用户 shutdown -h 20:30

4、总结历史命令管理以及用法 登录进shell后新执行的命令只会记录在缓存(即内存即history命令列出的)中;这些命令会在用户退出(正常退出,异常断电等不会追加)时“追加”至命令历史文件(~/.bash_history)中 重新登录shell时,会读取命令历史文件(~/.bash_history)中记录的命令 重复前一个命令,有4种方法: 1)重复前一个命令使用上方向键,并回车执行 2)按 !! 并回车执行 3)输入 !-1 并回车执行 4)按 Ctrl+p 并回车执行 !:0 执行前一条“去掉参数的”命令,如(上一条命令为cd xxxxxx):!:0 /etc/passwd 使用键盘上下键查看历史命令过程中,Ctrl + n 显示当前历史中的下一条命令,但不执行(类似键盘上下键查看历史命令的功能,用的不多) 使用键盘上下键查看历史命令过程中,Ctrl + j 执行当前命令(类似键盘上下键查看历史命令并回车的功能,用的不多) !n 执行history命令输出对应序号n的命令 !-n 执行history历史中倒数第n个命令

命令行历史: !string 重复前一个以“string”开头的命令(命令比较长的时候使用,用的比较多) !?string 重复前一个包含string的命令(命令比较长的时候使用,用的比较多) !string:p 仅打印前一个以“string”开头的命令,!而不执行

要重新调用前一个命令中最后一个参数: 1)!$ 表示 !(上一条命令的所有参数) 2)Esc, .(点击Esc键后松开,然后点击 . 键) 3)Alt+ .(按住Alt键的同时点击 . 键),需secureCRT中将options-terminal-emulation-emacs中勾选“Use ALT as meta key”(且下边的send escape for meta key要勾选) !$:p 打印输出 !$ (上一条命令的最后一个参数)的内容 [root@centos7 ~]#ls /etc/fstab /etc/motd /etc/fstab /etc/motd [root@centos7 ~]#ll !$ 注:不带:p ll /etc/motd -rw-r--r--. 1 root root 22 Feb 16 19:35 /etc/motd !:p 打印输出 !(上一条命令的所有参数)的内容 [root@centos7 ~]#ls /etc/fstab /etc/motd
/etc/fstab /etc/motd [root@centos7 ~]#ll !
注:不带:p ll /etc/fstab /etc/motd -rw-r--r--. 1 root root 595 Feb 14 18:14 /etc/fstab -rw-r--r--. 1 root root 22 Feb 16 19:35 /etc/motd

命令行历史: 使用键盘up(向上)和down(向下)键来上下浏览从前输入的命令 ctrl-r来在命令历史中搜索命令(逆向reverse-i-search)`’: ctrl+g:从历史搜索模式退出(搜出命令后不想执行时使用)

命令history,包括:内存中的历史命令和硬盘(cat ~/.bash_history)中的历史命令 -c: 清空所有命令历史(再次执行history将看不到命令历史,但退出重新登录后再执行history命令历史又从~/.bash_history重新读取过来) 彻底清除历史:先rm ~/.bash_history,再history -c 退出重新登录即可(重新登录后~/.bash_history文件会重新生成) -d offset: 删除历史中指定的第offset个命令(只删history命令中的,不会删除~/.bash_history文件中的) n: 显示最近的n条历史(n不带-) -a: 追加本次会话新执行的命令历史列表至历史文件(从内存追加到文件) -r: 读历史文件附加到历史列表(从文件追加到内存) -n: 读历史文件中未读过的行到历史列表(从文件中未读过的行到历史列表,历史列表中已有的不再重复追加) -w: 保存历史列表到指定的历史文件 -p: 展开历史参数成多行,但不存在历史列表中 即只执行命令并不将命令放入history中,如:history -p hostname uname -a -s: 展开历史参数成一行,附加在历史列表后 即只将命令放到history中并不真正执行,如: history -s 'rm -rf /' 命令历史相关环境变量(永久生效:export 变量名=值并放入:/etc/profile或~/bash_profile中) HISTSIZE:命令历史记录的条数(默认1000条)
HISTFILE:指定历史文件,默认为~/.bash_history HISTFILESIZE:命令历史文件记录历史的条数(默认1000条) cat /etc/profile|grep HIST HISTSIZE=1000 HISTTIMEFORMAT=“%F %T “ 显示时间(注:%T后有空格,避免时间与具体历史命令连在一块),且exit重新登录后~/.bash_history文件中每条命令前加了#数字(表示1970到执行命令的秒数) HISTIGNORE=“str1:str2
:… “ 忽略:str1命令(精确匹配),str2开头(模糊匹配)的历史(不记录到history中) 控制命令历史的记录方式: 环境变量:echo $HISTCONTROL ignoredups 默认,忽略重复的命令,连续且相同为“重复” ignorespace 忽略所有以空白开头的命令 需先设置:HISTCONTROL=ignorespace或export HISTCONTROL=ignorespace,如输入(命令前后空格):[root@centos7 ~]# cat /etc/shadow ignoreboth 相当于ignoredups, ignorespace的组合 erasedups 删除重复(不连续也删除)命令

5、总结Linux帮助用法

  1. help 内置命令,如:help history,help cd(type 命令确定命令是内置命令还是外置命令)(使用man 内置命令 获取内置命令的帮助信息,太详细)
  2. 外置命令 Comand --help (获取命令的选项信息)
  3. Man手册(manual)位置:/usr/share/man,如:man Command或配置文件(命令的帮助或配置文件的帮助),whatis 命令,apropos或man –k关键字(查看命令的用法概述及查看命令帮助在man的哪个章节下)
  4. Info命令:获取在线文档(仅在man手册无法获取到足够信息,或想了解程序的开发历史时才使用info),如:info passwd
  5. whatis命令(查看“命令”的用法概述及查看命令帮助在man的哪个章节下),apropos或man-k 关键字(查看“包含关键字”的用法概述及查看命令帮助在man的哪个章节下,比whateis匹配的更全),makewhatis(更新whatis及aprops所使用的索引数据库)
  6. 很多应用程序都自带有帮助文档:/usr/share/doc(看内核文件时非常关键) 7.主流发行版官方文档(redhat,suse,debian),如:http://www.redhat.com/docs 8.google或baidu