目录
一、Shell命令概述
1.Shell 简介
2.常用的Shell命令
1.目录的创建与删除命令
2.改变工作目录命令cd
3.显示路径的命令
4.显示目录内容命令ls
5.显示文件内容命令
6.文件内容查询命令grep(老师没讲,我不想记了)
7.文件查找命令find
8.文件内容统计命令
9.文件的复制、移动和删除命令
10.查看手册命令man
11.清屏命令clear
二、BASH的应用
1.自动补齐命令
2.自动补齐文件名或目录名
3.命令历史记录histsize
4.命令别名
5.通配符?
四、文本编辑器Vim
1.Vim的三种模式
2.Vim的进入与退出
3.Vim的基本操作命令
1.移动光标命令
2.添加文本命令
3.删除文本命令
4.文本替换命令
5. 复制和粘贴命令
6.查找和替换命令
7.重复命令
8. 取消命令
4.Vim 的高级命令
1.多文件编辑命令
2.在Vim 中运行Shell 命令
3.块标记命令
4. Vim 环境设置命令
五、Shell编程
1. 分为编译型和解释性语言
2.Shell特点
3.第一个Shell脚本
4.运行Shell脚本
一、Shell命令概述
1.Shell 简介
? ? ? ? Shell是Linux的一个特殊程序,也是内核与用户的接口,它还是命令语言、命令解释程序及程序设计语言的统称。Shell是一个命令语言解释器,它拥有内置的Shell命令集,Shell也被系统中其他应用程序所调用。
2.常用的Shell命令
1.目录的创建与删除命令
(1)mkdir命令
格式:mkdir [选项] 目录
功能:创建目录
-m :创建目录的同时设置目录访问权限
- p : 一次性创建多级项目
(2)mkdir命令
格式:mkdir [选项] 目录
功能:从一个目录中删除一个或多个子项目,要求目录在被删除之前必须为空
- p : 递归删除目录,当子目录被删除后其父目录为空时,也一同被删除
2.改变工作目录命令cd
格式:cd [目录]
功能:将当前目录改为指定目录。若没有指定目录,则返回到用户的主目录,也可以使用“cd..” 返回到系统上一级目录。该命令可以使用通配符。
3.显示路径的命令
格式:pwd
功能:显示当前目录的绝对路径
4.显示目录内容命令ls
格式:ls 【选项】?【文件】【目录】
功能:显示指定目录中的文件和子目录信息。当不指定目录时,显示当前目录下的文件和子目录信息。
-a:显示所有文件和子目录(包含隐藏文件和隐藏子目录)。RHEL中的隐藏文件和隐藏子目录以”.“开头。
-l:显示文件和目录的详细信息,如文件类型、权限、所有者和所属群组、文件大小、最后修改时间、文件名等。
-d:如果是参数目录,只显示目录信息,二不显示其中所包含文件的信息。
-t:按时间顺序显示。
-R:不仅显示指定目录下的文件和子目录信息,而且递归地显示各个子目录中地文件和子目录信息。
5.显示文件内容命令
(1)cat命令
格式:cat?[选项] 文件名
功能:依次读取其后所指文件的内容并将内容输出到标准输出设备上。另外,该命令还能用来连接两个或多个文件,形成新的文件。
(2)more 命令
格式:mkdir [选项] 文件名
功能:分屏显示文件内容。
-p:显示下一屏之前先清屏
-s:将文件中连续的空白行压缩成一个空白行显示
(3)less 命令
相似于more但能查看二进制文件
(4)head命令
格式:head?[选项] 文件名
功能:显示文件的前几行内容
-n:指定显示文件的前n行,如果没有给出n值,默认设置为10。
(5)tail 命令
格式:tail?[选项] 文件名
功能:将一个文件从指定位置到文件结束处的内容显示在标准输出上
+n:从n行以后开始显示
-n:从距文件尾n行处开始显示。如果省略n,系统默认值为10。
6.文件内容查询命令grep(老师没讲,我不想记了)
7.文件查找命令find
8.文件内容统计命令
9.文件的复制、移动和删除命令
(1)cp命令
格式:cp [选项] 源文件或源目录目标文件或目标目录
功能:将给出的文件或目录复制到另一个文件或目录中
-b:若存在同名文件,覆盖前备份原来的文件。
-f:强制覆盖同名文件
-r或-R:按递归方式,保留原目录结构复制文件。
(2)mv 命令
格式:mv [选项] 源文件或源目录目标文件或目标目录
功能:移动或重命名文件/目录
-b:若存在同名文件,覆盖前备份原来的文件
-f:强制覆盖同名文件
(3)rm命令
格式:rm?[选项] 文件或目录
功能:删除文件或目录
-f:强制删除,不出现确认信息
-r或-R:按递归方式删除目录,默认只删除文件
10.查看手册命令man
格式:man 命令名
功能:显示指定命令的手册页帮助信息
11.清屏命令clear
格式:clear
功能:清楚当前终端屏幕内容
二、BASH的应用
1.自动补齐命令
在用户输入命令时,只需要输入命令的开头字母,然后连续按两次Tab键
2.自动补齐文件名或目录名
输入字母“t”后按tab键
3.命令历史记录histsize
(1)
格式:history 【n】
功能:查看Shell命令历史记录
(2)
格式:history 【r】【w】【a】【n】【文件名】
功能:修改命令历史记录列表文件内容
-r:读出命名历史记记录列表文件的内容,并将他们当作当前的命令历史记录列表
-w:将当前命令历史记录写入文件,并覆盖文件原来内容。
-a:将当前命令历史记录追加到文件尾部
-n 【文件名】:读取文件中的内容,并加入当前命令历史记录列表中。如果没有指定文件名,history命令将用变量hisfile的值来代替。
4.命令别名
格式:alias 【别名=‘标准shell命令行’】
功能:查看和设置别名
? ? ? ? 设置别名命令 pd ,其功能时打开/ect/passwd文件。
[root@localhost ~]# alias pd='vim /etc/passwd'
[root@localhost ~]# pd
5.通配符?
三、正则表达式、管道与重定向
四、文本编辑器Vim
????????Vim(Visual Interface Improved)是RHEL系统上的全屏幕交互式文本编辑器。它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制。Vim不是一款排版软件,它不像Microspft Word 或WPS那样可以对字体、格式、段落等进行编排,它只是一款文本编辑软件。
1.Vim的三种模式
- 命令模式
- 插入模式
- 末行模式
?
2.Vim的进入与退出
? ? ? ? 进入:
- vim:鼠标光标第一行第一列
- vim file1:如果不存在,则建立此文件;如果存在则将其复制到临时缓冲区,鼠标光标第一行第一列
- vim+file1:如果不存在,则建立此文件;如果存在则将其复制到临时缓冲区,鼠标光标在最后一行第一列
- vim+#file1(#为数字):如果不存在,则建立此文件;如果存在则将其复制到临时缓冲区,鼠标光标在第#行第一列
- vim+/string file:如果不存在,则建立此文件;如果存在则将其复制到临时缓冲区,鼠标光标在第一次出现字符串string的首行位置上
- vim-r filename:如果在上次正使用Vim进行编辑时发生系统崩溃,则可以使用该命令恢复filename文件
- vim?filename1?filename2....filename n:打开多个文件,依次进行编辑。
????????退出:在退出Vim前,先按Esc键,以确保当前Vim的工作模式为命令模式,然后输入Vim。
- :w: 保存命令
- :q: 退出Vim。
- :wq: 存盘退出。
- :w filename: 指定文件另存为filename。
- :x和ZZ:功能与: wq等价,注意,ZZ前没有“:”,且要大写。
- :q!或:quit: 放弃刚才编辑的内容,强行退出Vim。
3.Vim的基本操作命令
1.移动光标命令
h:将光标左移一个字符
l:将光标右移一个字符
j:将光标移动到下一行当前列
k:将光标移动到上一行当前列
2.添加文本命令
i:在光标当前位置插入文本
a:在光标当前位置前面开始添加文本
I:在光标所在行的行首插入文本
A?:在光标所在行的行末插入文本
o:在光标所在行的下面插入一个空行
O:在光标所在行的上面插入一个空行
3.删除文本命令
????????利用Vim 提供的删除命令,用户可以删除一个或多个字符,还可以删除一个字或一行的部分或全部内容。常用的删除命令如下。 s : 删除光标后的一个字符,然后进入插入模式。
S : 删除光标所在的行,然后进入插入模莫式。
x : 删除光标所在位置的字符。
X:删除光标前的一个字符。
#x:删除#个字符,#表示数字。例如,4x表示删除从当前光标开始的4个字符。
d$:删除从当前光标位置至行尾的内容。
do:删除从当前光标位置至行首的内容。
dd:删除光标所在的当前一行。
#dd:删除#行。例如,4dd表示删除光标所在行,以及光标下面的3行。
dw:删除一个字。 #dw:删除#个单词。例如,3dw表示删除包含光标所在单词的3个连续单词,不包含空格。
Ctrl+u:删除插入模式下所输人的文本。 J:清除光标所处的行与上一行之间的空格,把光标行和上一行接在一起。
4.文本替换命令
????????替换文本是用新输入的内容替换原文档中的内容。在命令模式下和末行模式下都可以执行文本替换操作。 ????????在命令模式下的Vim中,替换的命令又可以分为取代命令、替换命令和字替换命令。
(1)取代命令 r:用即将输人的一个字符代替当前光标处的字符。 #r:用即将输入的字符取代从当前光标处开始的#个字符。例如,3rS是将当前光标处的字符及其后? ? ? ? ?的两个字符都取代为"S"。
(2)替换命令? ?s:用即将输入的文本替换当前光标处的字符。如果只输人一个新字符,s命令与r命令功能? 类似,但r命令仅完成替换,s命令在完成替换的同时,工作模式从命令模式转为插入模式。 #s:用即将输人的文本替换从光标所在字符开始的#个字符。例如,3sA命令将从当前光标开始的3个字符替换为一个字符"A"。 (3)字替换命令 cw:替换当前光标所在的字。例如在命令模式下输人cw,接着输入hello,则原先光标处的字被"hello"替换掉。该命令等同于ce命令。 ????????使用末行模式下的替换命令时,要先输入“:”,确保切换到末行模式。末行模式下的替换命 到插人 令格式为:? ????????????????[range]s/pattern/string/[选项] 常用选项说明如下。 c:每次替换前都要进行询问,要求用户确认。
e:不显示错误。
g:对指定范围内的字符完成替换,替换时不进行询问。
i:替换时不区分大小写。
示例如下所示。
:s/a/b:将当前行中所有a均用b替换
:12,23s/a/b/c;将第 12~23 行中所有a均用b替换,替换前要求用户确认。
ts/a/b/g;将文件中所有a均用b替换。
5. 复制和粘贴命令
#yw:复制从当前字开始的#个字到缓冲区。
?yy:复制光标所在行到缓冲区。
#yy:制包含光标所在行的#行数据到缓冲区。例如,3yy示将该行及下面 两行文字复制到缓冲区。
p:将缓冲区的内容粘贴到当前光标右侧,如果缓冲区内容为一行,则复制到光标下面一行。
?P:将缓冲区的内容粘贴到当前光标左侧,如果缓冲区内容为一行,则复制到光标上面一行。所有与“”制命需要与p”或“P”命令组合使用才能完成复制与粘贴功能
6.查找和替换命令
pattern:光标开始处向文件尾搜索?
pattern,若遇到文件尾,则从头再开始。
?pattern:从光标开始处向文件首搜索 pattem,若遇到文件首,则从文件尾再开始。
/pattern/+#:将光标停在包含pattern的行后面第#行上。
/pattern/-#:将光标停在包含pattern的行前面第#行上。
n:按原搜索方向重复上一次搜索命令。
N:相反向重上一次索命令。
7.重复命令
????????重复命令也是一个经常用到的命令。在文本编辑中经常会需要重复一些操作,这时就需要用到重复命令,它可以让用户方便地再执行一次前面的命令。重复命令只能在Vim 的命令模式下使用,在该模式下按“”键即可。执行一个重复命令时,其操作结果是针对光标当前位置进行的。
8. 取消命令
????????取消命令用于取消前一次的误操作,使操作恢复到这种误操作被执行之前的状态。 ????????取消上一个命令有两种形式,在命令模式下输入字符u和U,它们的功能都是取消刚才输的命令,恢复到原来的状态。大写U命令的功能是恢复到误操作命令前的状态,即如果插入命后使用U命令,就删除刚刚插入的内容;如果删除命令后使用U命令,就相当于在光标处又插刚刚删除的内容。
4.Vim 的高级命令
1.多文件编辑命令
n:编辑下一个文件。
:2n:编辑下两个文件。:N:编辑前一个文件。
:ls:列出目前 Vim 中打开的所有文件。
:f:显示当前正在编辑文件的文件名、是否被修改过,以及光标目前的位置。该命令等同于按 Ctrl+G组合键。
:e filename:在Vim中打开当前目录下的另一个文件filename
:e!:重新装入当前文件,若当前文件有改动,则放弃以前的改动。
:e#:编辑前一个文件(此处#是一个字符)。该命令等同于:N命令或按 Ctrl+^组合键。
:e+filename:使用filename 激活 Vim,并从文件尾部开始编辑。
:e+number filename:使用 filename激活 Vim,并在第 number 行开始编辑。
:rfilename:读取filename文件,并将其内容添加到当前文件后。
:r!command:执行command文件,并将其输出加到当前文件后。
:ffilename:将当前文件重命名为filename。
2.在Vim 中运行Shell 命令
????????在使用Vim的过程中,用户可以在不退出 Vim的同时执行其他Shell命令,这时需要在末行模式下操作。
:sh:启动 Shell,从 sh 中返回可按 Exit 键或 Ctrl +D组合键。
:!command:执行命令 command
:!:重新执行上次的:!command命令。
在:! command 命令中,用户可以用“%”引用当前文件名,用“#”引用上一个编辑的文件,用“!”引用最近运行的一次命令。
3.块标记命令
????????在命令模式下,用户可以标记文本的某个区域,再使用d、yp等命令对标记的内容进行删除、复制或粘贴等操作。常用标记命令如下
按下v键后移动光标,光标所经过的地方就会被标记,再按一次v键,结束标记。
按下V键后标记整行,移动上、下方向键可标记多行,再按一次V键,结束标记
Ctrl+V组合键作为块标记命令,可纵向标记矩形区域,再按一次Ctrl+V组合键结束块标记。
4. Vim 环境设置命令
????????这里的Vim 环境是指 Vim 运行时的运行方式。在末行模式下,用户可以通过set命令进行 Vim环境设置。set 后面加选项名来进行该功能选项的设置,如果选项名前输人“no”,则表示关闭该选项。 常用的 Vim 环境设置命令如下。
:set all:列出所有选项设置的情况。
:set number:在编辑文件时显示每行的行号。该命令等同于 set nu命令。
:set nonumber:不显示文件的行号。
五、Shell编程
????????Shell脚本和编程语言很相似,也有变量和流程控制语句,但Shell脚本是解释执行的,不需要编译;Shell程序从脚本中一行一行读取并执行这些命令,相当于一个用户把脚本中的命令一行一行敲到Shell提示符下执行。
1. 分为编译型和解释性语言
2.Shell特点
但是,考虑到Shell脚本的命令限制和效率问题,下列情况一般不使用Shell
(1)资源密集型的任务,尤其在需要考虑效率时(比如排序、hash等)。 (2)需要处理大任务的数学操作,尤其是浮点运算、精确运算,或者复杂的算术运算(这种情况一般使用C++或FORTRAN来处理)。 (3)有跨平台(操作系统)移植需求(一般使用C或Java)。 (4)复杂的应用,在必须使用结构化编程的时候(需要变量的类型检查、函数原型等)。(5)影响系统全局性的关键任务应用。 (6)对于安全有很高要求的任务,比如需要一个健壮的系统来防止入侵、破解、恶意破坏等。(7)项目由连串的依赖的各个部分组成。(8)需要大规模的文件操作。(9)需要多维数组的支持。 (10)需要数据结构的支持,比如链表或数组等数据结构。(11)需要产生或操作图形化界面 GUI。(12)需要直接操作系统硬件。(13)需要I/O或Socket接口。 (14)需要使用库或者遗留下来的老代码接口。 (15)需要私人的、闭源的应用(但Shell脚本把代码就放在文本文件中,“全世界”都能看到)。如果用户的应用符合上边的任意一条,那么就考虑一下更强大的语言吧,比如 Perl、Tcl、Python、Ruby,或更高层次的编译语言,比如C/C++、Java。
3.第一个Shell脚本
4.运行Shell脚本
|