4、 vim&shell
vim
vim 是公认的编辑器之神,没有之一,vim教程链接
shell
Linux shell 类似于 MS-DOS 使用的 COMMAND.COM ,它是一个命令执行解释器,可以用来接受并执行命令,运行批处理文件和执行程序。
如果把 Linux 内核当作一个球体,shell 就是围绕在内核外层。当用户从 shell 或其他程序向 Linux 传递命令,内核会做出相应的反应。
由于 shell 是操作系统和用户之间的界面,所以允许用户认为 shell 就是 Linux。但是 shell 不是操作系统的一部分。
Linux 提供的shell
Linux 提供具有不同功能的各种命令 shell,他们分别是:sh, bash, tesh, csh, pdksh, zsh, ash, me.等等。
Linux 默认的 shell 是 bash shell。 Bash 放在 /bin/bash 目录中,各种 shell 用不同的方法对命令进行语法分析,根据使用 shell 的位置和使用的选项,可用 shell 命令做各种操作。
配置登录环境
无论你是系统管理员还是普通用户,想要登录 shell 都需要有 userID 和 passwd。
在用户看到 shell 提示符之前,Linux 已经建立了一个默认登录环境。Linux 环境包括你在登录时用于控制你的绘画过程的设置和数据。用户可以根据自己的需要改变设置。
设置终端环境
在终端环境控制你的终端,即控制计算机端口的活动,这个端口与你的终端用电缆相连接。
用户从终端输入的命令都必须经过设备驱动程序,设备驱动程序控制你的终端、接受你输入的字符,并在将它送到 shell 解释之前,决定用他们做什么。相反,由 shell 产生的字符也必须在送到终端之前先经过设备驱动程序。
由于终端与系统相连,所有的设备驱动程序允许你定义特殊字符(称为控制字符),把他们作为 shell 的文件结束符和行结束符。设备驱动程序还允许你定义某些正在运行的进程传送信号的控制字符(如中断信号等),你可以终端设置许多参数。
- 设置终端环境的命令为:
stty 参数
要显示当前的所有设置,输入:stty -a
设置 shell 环境
登录过程的一部分是建立用户环境。Linux环境由许多变量一级这些变量的值组成,环境是指你所使用的 shell、起始目录、正在使用的终端类型等。只要这些变量没有设置为只读,就可以随意增加或修改变量。
- 设置变量的语法为:
变量=值
在 Linux 中,主要有以下 shell 环境变量:
- HOME=/home/login:设置你的起始目录,是你开始工作的目录(家目录)。用用户 ID 代替 login 即可。
- LOGNAME=login:LOGNAME 和你的登录 ID 一样,是自动设置的。
- PATH=path:设置 shell 查找命令的目录列表。如,PATH=/usr/bin:/usr/local/bin
注意:PATH 后的各个目录之间用冒号(:)隔开。要取得变量的值,在 PATH 前加”$“,即 $PATH - PS1=prumpt:PS1 定义 shell 提示符。如果没有次定义,提示符是($)。
- PWD=directory:PWD 是被自动设置的,它定义你在文件系统中的什么位置。通过 pwd 命令显示当前目录
- SHELL=shell:定义 shell 程序所在目录。用户可以在 .profile 或 .login 文件中设置 SHELL 为 SHELL=/bin/sh,则 sh shell 就是你登录的 shell。
- TERM=termtype:把终端类型名设置为终端库中指定的名字。如用户可以在 .profile 或 .login 文件中把 TERM 设置为 TERM=vt100
shell 记录了许多特殊变量,可以使用 env
命令查看这些特殊变量。
关于 shell 更详细信息可参考:鸟哥shell教程
命令、选项和参数
语法分析是把命令行或你所键入的内容分解成要进行处理的组成部分的过程。在 Linux 中,语法分析包括许多内容,不只是简单的分解命令行。
语法分析过程为:首相把命令字符串分解成它的组成部分:扩展文件名(如果使用了通配符)、扩展 shell 变量、建立 I/O 重定向、建立任何命令组成或子 shell,一级进行命令替换。只有到这时,命令行才如输入那样被执行。
要执行 Linux 命令,简单的输入该命令文件名即可。例如要列出文件目录,直接输入命令 ls 即可。有些命令不是文件,类似于 DOS 的内部命令,这些命令在 shell 自身中,如改变目录命令 cd。
命令名是命令行的第一项,不少命令名跟选项,选项是前面有连接符(-)的单个字母,它将影响命令的执行行为。如要以长格式显示文件和他们的所有属性,命令为:ls -l
选项后面是参数,参数是字符串,参数通常是告诉这个命令去执行某些功能的文件名或字符串。如果参数本身含有空格,那么这个参数必须放在引号中,以防止 shell 扩展它。例如:查找字符串”Computer Science“,其命令为:grep "Computer Science”
通配符
Linux 与 DOS 中的文件名一样,允许使用通配符?、*、[]
代表部分文件名。
* #代表一个字符集。档它是文件名中的第一个字符时,它代表除句点以外的字符集。(* 可以出现在字符串的任何地方)
? #代表单个字符。
[] #代表在一个范围内的单个字符。例如:需要删除 1.txt 2.txt 3.txt 可以使用: rm [1-3].txt
注意:若把文件名通配符放在引号里,shell 在分析命令时,这些文件名得不到扩展。
如输入 ls ,将显示当前目录中所有文件名;若输入命令 ls "*"
,可能输出错误信息,因为 ls 去查找一个文件名为 * 的文件。
管道
经常需要将一个程序的输出作为另一个程序的输入。我们可以使用管道符号 |
重定向输入与输出
Linux 把键盘输入与名为 stdin 的文件相关联;把终端输出和名为 stdout 的文件相关联。
你可以重新定向输入输出,以便不从终端输入或输出到终端,而是文件输入或是输出到文件中。
用<
符号从定向输入到命令或程序中,以便从文件输入而不是从终端输入。
用>
符号把一个程序的输出重定向到一个文件中。程序的输出不是输出到终端屏幕,而是输出到文件中。
Linux 中的重定向符号有以下几个:
< #从文件中获得输入,如 mail abcd < report, report 文件作为输入,输入到 mail 命令中。
> #把输出送到文件中。如 date > now,把当前日期和时间保存在 now 文件中。
>> #附加到一个文件中。如 Sort < asde >> report,使用 sade 文件作为 sort 命令的输入,并将结果附加到 report 中。
Linux 的文件类型
Linux 中至少有 8 中类型,但常见的有四种:
b #块设备
c #字符设备
d #目录
l #符号链接
在 /dev 目录下通常会找到块设备和字符设备 MODEM 是字符设备,磁盘是块设备。
hare
2020.3.27