练习题
一、填空题
1.由于核心在内存中是受保护的区块,所以我们必须通过shell将我们输入的命令与_Kemel沟通,以便让Kemel可以控制硬件正确无误地工作。
2.系统合法的 shell均写在/etc/shell文件中。
3、用户默认登录取得的 shell记录于/etc/passwd的最后一个字段。
4.bash的功能主要有命令别名和快捷键、历史命令、输出重定向、通配符、Bash中的其他特殊符号
5.shell变量有其规定的作用范围,可以分为局部变量与全局变量
6.set可以观察目前bash环境下的所有变量。
7.通配符主要有*、?、[list]等。
8.正则表示法就是处理字符串的方法,是以行为单位来进行字符串的处理的。
9.正则表示法通过一些特殊符号的辅助,可以让使用者轻易地 完成查找、删除、替换 某个或某些特定的字符串。
10.正则表示法与通配符是完全不一样的。通配符代表的是bash操作接口的一个功能,但正则表示法则是一种字符串处理的表示方式。
二、简述题
1. vim的3种运行模式是什么?如何切换?
编辑模式
进入vim。之后,首先进入的就是编辑模式。进入编辑模式后,vim等待编辑命令输入而不是文本输入。也就是说,这时输入的字母都将作为编辑命令来解释。
进入编辑模式后光标停在屏幕第一行首位,用“_”表示,其余各行的行首均有一个“_”符号,表示该行为空行。最后一行是状态行,显示出当前正在编辑的文件名及其状态。如果是[New File],则表示该文件是一个新建的文件;如果输入vim带文件名后,文件已在系统中存在,则在屏幕上显示出该文件的内容,并且光标停在第一行的首位,在状态行显示出该文件的文件名、行数和字符数。
插入模式
在编辑模式下按下相应的键可以进入插入模式:插入命令i、附加命令a、打开命令。、修改命令c、取代命令r或替换命令s都可以进入插入模式。在插入模式下,用户输入的任何字符都被 vim 当作文件内容保存起来,并将其显示在屏幕上。在文本输入过程中(插入模式下),若想回到编辑模式下,按“Esc”键即可。
命令模式
在编辑模式下,用户按“:”键即可进入命令模式。此时vim会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为命令模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式下执行的。末行命令执行完后,vim 自动回到编辑模式。
若在命令模式下输入命令的过程中改变了主意,可在用退格键将输入的命令全部删除之后,再按一下退格键,即可使vim回到编辑模式。
2.什么是重定向?什么是管道?什么是命令替换?
重定向就是不使用系统的标准输入端口、标准输出端口或标准错误端口,而进行重新的指定,所以重定向分为输入重定向、输出重定向和错误重定向。
管道是直接将一个程序的标准输出与另一个程序的标准输入相连接,不需要经过任何中间文件。
命令替换是指将命令的输出结果赋值给某个变量。
3. shell 变量有哪两种?分别如何定义?
shell变量分为局部变和全局变量。
局部变量的作用范围仅限制在其命令行所在的shell或shell脚本文件中。
全局变量的作用范围则包括本shell进程及其所有子进程。
4.如何设置用户自己的工作环境?
shell环境依赖于多个文件的设置。用户并不需要每次登录后都对各种环境变量进行手工设置,通过环境设置文件,用户工作环境的设置可以在登录的时候自动由系统来完成。环境设置文件有两种,一种是系统环境设置文件,另一种是个人环境设置文件。
登录环境设置文件:/etc/profile。
非登录环境设置文件:/etc/bashrc。
注意:只有在特定的情况下才读取 profile 文件,确切地说是在用户登录的时候读取。当运行shell脚本以后,就无须再读 profile 文件。
系统中的用户环境设置文件对所有用户均生效,而用户设置的环境设置文件仅对用户自身生效。用户可以修改自己的用户环境设置文件来覆盖系统环境设置文件中的全局设置。例如,用户可以将自定义的环境变量存放在SHOME/.Bash profile 中;将自定义的别名存放在$HOME/.bashrc 中,以便在每次登录和调用子shell时生效。
5.关于正则表达式的练习,首先我们要设置好环境,输入以下命令:
[root@tes1 ~]# cd
[root@tes1 ~]# cd /etc
[root@tes1 etc]# ls -a >~/data
[root@tes1 etc]# cd
[root@tes1 ~]# ll
总用量 12
-rw-------. 1 root root 2337 10月 7 07:55 anaconda-ks.cfg
-rw-r--r--. 1 root root 2816 10月 30 10:28 data
-rw-r--r--. 1 root root 2385 10月 8 06:36 initial-setup-ks.cfg
drwxr-xr-x. 2 root root 6 10月 8 06:37 公共
drwxr-xr-x. 2 root root 6 10月 8 06:37 模板
drwxr-xr-x. 2 root root 6 10月 8 06:37 视频
drwxr-xr-x. 2 root root 6 10月 8 06:37 图片
drwxr-xr-x. 2 root root 6 10月 8 06:37 文档
drwxr-xr-x. 2 root root 6 10月 8 06:37 下载
drwxr-xr-x. 2 root root 6 10月 8 06:37 音乐
drwxr-xr-x. 2 root root 6 10月 8 06:37 桌面
这样,/etc 目录下的所有文件的列表就会保存在你的主目录下的 data文件中。
写出可以在 data文件中查找满足以下条件的所有行的正则表达式。
(1)以“P”开头。
[root@tes1 ~]# grep -n '^P' data
182:PackageKit
[root@tes1 ~]#
(2)以“y”结尾。
[root@tes1 ~]# grep -n 'y$' data
11:at.deny
26:brltty
40:cron.daily
41:cron.deny
42:cron.hourly
43:cron.monthly
45:cron.weekly
104:gssproxy
109:hosts.deny
235:securetty
236:security
271:trusted-key.key
[root@tes1 ~]#
(3)以“m”开头以“d”结尾。
[root@tes1 ~]# grep -n '^m.*d' data 或 grep -n ^'m.*d' data
149:machine-id
152:makedumpfile.conf.sample
153:man_db.conf
156:modprobe.d
157:modules-load.d
158:motd
163:my.cnf.d
[root@tes1 ~]#
(4)以“e”“g”或“I”开头。
[root@tes1 ~]# grep -n '^[egl]' data
65:e2fsck.conf
66:egl
...
84:gconf
85:gcrypt
86:gdbinit
..
132:ld.so.cache
133:ld.so.conf
134:ld.so.conf.d
135:libaudit.conf
...
(5)包含“o”,它后面跟着“u”。
[root@tes1 ~]# grep -n '[o]u' data
10:asound.conf
42:cron.hourly
97:group
98:group-
116:iproute2
170:nfsmount.conf
190:plymouth
240:setroubleshoot
275:unbound
[root@tes1 ~]#
(6)包含“o”,隔一个字母之后是“a”。
[root@tes1 ~]# grep -n '[o].u' data
157:modules-load.d
[root@tes1 ~]#
(7)以小写字母开头。
[root@tes1 ~]# grep -n '^[a-z]' data
3:abrt
4:adjtime
5:aliases
6:aliases.db
...
(8)包含一个数字
[root@tes1 ~]# grep -n '[0-9]' data
51:dbus-1
65:e2fsck.conf
99:grub2.cfg
116:iproute2
129:krb5.conf
...
[root@tes1 ~]#
(9)以“s”开头,包含一个“n”。
[root@tes1 ~]# grep -n '^s.*n.*' data
232:sane.d
237:selinux
239:sestatus.conf
...
[root@tes1 ~]#
(10)只含有4个字母。
[root@tes1 ~]# grep -E -n '^([a-zA-Z]){4}$' data
3:abrt
7:alsa
49:cups
55:dhcp
73:fcoe
123:java
158:motd
159:mtab
218:rdma
242:sgml
246:skel
252:sssd
273:udev
282:virc
[root@tes1 ~]#
(11)只含有4个字,但不包含“f”。
[root@tes1 ~]# grep -E -n '^([A-Za-ce-z]){4}$' data
3:abrt
7:alsa
49:cups
73:fcoe
123:java
159:mtab
242:sgml
246:skel
282:virc
[root@tes1 ~]#