在本周学习中我们学习了vim编辑器的用法及对bash特性的简单了解,下面我们分别来解释这些内容。

一、vim编辑器

1、使用vim编辑器同时编辑多个文件时: vim FILE1 FILE2 FILE3 ........

  其中:next 查看或编辑后一个文档的内容

   prev 查看或编辑前一个文档的内容

   first 查看或编辑第一个文档的内容

   last 查看或编辑最后一个文档的内容

2、vim -o 分屏显示多个文档内容 横屏

 vim -O 分屏显示多个文档内容 竖屏

  Ctrl+w,s 将一个文件水平分屏显示

  Ctrl+w,v 将一个文件分屏竖直显示

这些命令操作主要是方便同时创建并编辑多个文件,使得一屏多显更方便对文件的编辑查看。


二、bash特性

本周我们主要学习了bash特性的主要表现及一些相关命令的操作方法。

1、命令别名:自定义命令

使用alias命令可以用来定义和显示命令的别名。但是使用alias命令定义的别名,其生命期仅为当前shell的生命值。

对于每个用户来说,都有一个私有的bash配置文件,用于保存别名。~/.bashrc

所以在这里我们需要注意的地方有以下几点:

   1).alias命令的效果仅限于当前shell的生命期

   2).如果修改.bashrc配置文件,其中保存的别名并不会立即生效,只有在重新加载该文件的内容后,才会生效,且永久生效。

   3).为了能够保证我们设置的别名有效,通常两种该操作都要做。

  撤销别名的命令:unalias:  unalias name

2、命令历史

   bash进程会保存其会话中用户曾经执行过的命令,以方便用户重复执行某个命令。

   通过bash提供的历史命令文件来持久的保存此前执行过的命令,每个用户都有其自己私有的历史文件。

   登陆shell的时候,bash会自动读取~/.bash_history文件中所记录的所有命令。

  1)、history命令:

   -c:清空历史缓冲区的历史命令

   -d OFFSET:删除特定历史命令条目

 2)、重复执行前一个命令的方法:

   1.使用上方向键,回车执行

   2.ctrl+p

   3.-1

   4.!!

 3)、重复执行历史命令中的命令:

   Number:重复执行历史命令中编号为“number”的命令。

   STRING: 从历史缓冲区中查找最近一次查找过的以“STRING”开头的命令,并执行

   -number :执行历史缓冲区中倒数第“number”条命令。。

   Ctrl+r :在历史缓冲区中实施搜索,回车执行即可。

 4)、重复使用历史命令中的一部分:

   $ :表示最后一次命令中的最后一个参数。

   Esc.   同上

   Alt+.   同上

   ^ :表示最后一次命令中第一个位置的参数。

   !:number :表示最后一次命令中第“number”个位置的参数

   SEQUENCE:NUMBER : 表示历史缓冲区中第“SEQ”个命令的第“number”个参数。

   STRING :^|$|*|NUMBER

5)、与历史相关的bash变量

   HISTSIZE

   HISTFILESIZE

   HISTTIMEFORMAT

   HISTTIMEFORMAT=%F %T

   HISTCONTROL:

Ignoredups:忽略连续且相同的命令的历史缓存

Ignorespace:忽略以空白字符的命令

Ignoreboth:以上两个命令都启用。

3、快捷键的使用方法

  C-->ctrl

  M-->Alt

  E-->esc

  DEL-->backspae

  

  C-L:clear  清屏

  Ctrl a 将光标跳转至命令行行首

  Ctrl e 将光标跳转至命令行尾

  Ctrl k 删除光标所在位置至行尾的命令行信息

  Ctrl u 删除光标所在位置至行首的命令行信息

  Ctrl c 结束前台进程,取消命令的运行

4、命令补全机制

  命令补全机制有两个方面的理解,命令本身字符串的补全,参数的补全。

shell命令的执行过程:

1).shell会根据用户键入回车来判断用户的输入结束

2).shell会将收集到的命令信息,根据空白字符来分段(token),第一个分段被理解为命令字段。

3).判断一个字段是内部命令还是外部命令,如果是内部命令,则直接运行,如果是外部命令,通过PATH变量所指示的路径信息,去查找相关的位置,以确定是否存在同名文件,如果有就执行,否则就报错。

  4).判断选项是否正确,判断参数是否正确。

使用tab键可以完成命令补全:

如果给出的字符串不能作为唯一标准,则bash不予补全。再次敲打tab键,bash会给出参考列表,如果参考列表中的内容过多,bash会询问是否显示该列表。

根据提供的参考路径来进行补全,如果参数没有任何提示信息,则默认从工作目录进行查找。

5、命令行展开

   ~bash会自动将其展开为当前登陆用户的家目录。

  ~STRING:bash会自动将其展开为以“STRING”为用户名的用户家目录。

  ~+:调用shell变量“PWD”的值

  ~—:调用shell变量“OLDPWD”的值

 {}:在花括号中可以填充一个以“,”分割开的路径列表,bash会将其展开为多个独立的路径。

6、命令的执行结果

  任何一个linux命令都有两种执行结果。

  其一:命令的正常输出结果。 跟用户需求相关的返回内容

  ``:反向单引号,反引号

  $() :标准的命令引用格式

  wc:统计一个文件中有的行数字数及字节数。(-c  -l  -w)

   命令的执行状态返回值。 跟命令执行成功与否相关的返回内容。

   保存在bash的一个特殊变量中:$?

   0:命令执行成功

   1:表示小的问题

   2:表示严重问题

   127:表示命令本身出问题

   3-126128-255:用户自定义状态信息

7、引用功能

  ‘’ :强引用

凡是被单引号引用的内容,,bash一律将其视为普通字符,即使其本身有特殊功能和作用也如此。但单引号本身是个例外。

“”:弱引用

  被双引号引用的内容中有一些特殊字符仍然会保留其特殊含义。比如$,\,“”

8、转义功能

  \: bash中定义的转义字符,只能使其后一个字符失去意义。

9、Globbing 文件名通配,简称为glob

  元字符:

*:匹配任意长度的任意字符,某些特俗位置的“.”字符不能被匹配

?:匹配任意单个字符,必须且只有一个字符被匹配

[ ]:匹配指定范围内的任意单个字符,必须且只有一个字符被匹配

[a-z]:a,A,b,B,c,C............y,Y,z

[A-Z]:A,b,B,c,C.....................y,Y,z,Z

字符集:

[:lower:]:所有小写字母

[[:lower:]]: 通配任意单个小写字母

[:upper:]: 所有大写字母

[:alpha:]: 表示所有字母

[:digit:]: 表示所有十进制数字

[alnum]  :表示所有的大小写字母以及十进制数字

[:space:]: 表示空白字符

[:punct:]: 所有的标点符号

    ^:反匹配,

10、输入输出重定向

在使用计算机的时候,实现某种功能的主体是:程序

程序=指令+数据

数据:文件,IO

可以用于输出的设备:文件,键盘文件,文件系统中的常规文件,网卡设备,声卡设备等,

可以用于输出的设备:文件,显示器,文件系统中的常规文件,网卡设备,声卡设备等

  每一种程序都有三种形式的数据流

输入数据流:为程序获取数据的数据流。默认的输入数据流就是键盘。

输出数据流:将程序所处理的数据结果展示给用户的数据流。默认的输出数据流的终点是显示器。

错误数据流:将程序无法处理或处理过程中出现问题的结果展示给用户的数据流。默认错误数据流的终点是显示器。

从键盘实现的输入数据流称为标准输入

到显示器上的输出数据流称为标准输出

到显示器上的错误数据流称为标准错误输出,简称标准错误。

 文件描述符:File DescriptorFD

  0:标准输入,stdin

  1:标准输出,stdout

  2:标准错误,stderr

 

IO重定向:采用非标准设备文件实现的IO操作

 

简单来说,

  不是从键盘设备完成的数据流输出就可以称为输入重定向或重定向输入。

不是到显示器设备的正确输出数据流就被称为输出重定向或重定向输出。

不是到显示器设备的错误输出数据流就被称为错误重定向或重定向错误。

 

 输出重定向:

>: 覆盖输出重定向

    ~]# set -C // 开启防误覆盖开关

    在此开关开启后,可以使用>|”符号继续覆盖重定向

    Set +C  //关闭防覆盖开关

>>:追加输出重定向