Linux熟练使用vim程序编辑器与shell复习题

练习题

一、填空题
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环境依赖于多个文件的设置。用户并不需要每次登录后都对各种环境变量进行手工设置,通过环境设置文件,用户工作环境的设置可以在登录的时候自动由系统来完成。环境设置文件有两种,一种是系统环境设置文件,另一种是个人环境设置文件。

  1. 系统中的用户环境设置文件。

登录环境设置文件:/etc/profile。

非登录环境设置文件:/etc/bashrc。

  1. 用户设置的环境设置文件。
    登录环境设置文件:$HOME/.Bash _profile。
    非登录环境设置文件:$HOME/.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 ~]#

你可能感兴趣的:(linux基础命令,linux,复习,bash,vim,linux)