shell
- 系统的命令解释器,翻译成中文也就叫壳,就是最表面的,用于操作系统与用户的通信,相当于Dos中的command。Red Hat Linux 默认的shell 是Bash !
- Bash是GNU计划的一个组件,与Unix上的Bourne Shell完全兼容。支持命令行输入、操作历史查询、快捷键、使用变量等功。
- 一个用户使用什么shell 可以在 /etc/passwd中查看
- nologin 是个很特殊的shell,也很重要。意思是不允许用户交互式登录系统。
Linux shell的变量分类
- 在Shell中有三种变量:
1、内部变量:系统提供,不用定义,不能修改
2、环境变量:系统提供,不用定义,可以修改,可以利用export将用户变量转为环境变量.
3、用户变量:用户定义,可以修改
内部变量(系统变量,环境变量,参数变量,预定义变量)
- 内部变量是Linux所提供的一种特殊类型的变量,这类变量在程序中用来作出判断。在shell程序内这类变量的值是不能修改的。
命令 | 功能 |
---|
$n | $1 表示第一个参数,$2 表示第二个参数 … |
$# | 命令行参数的个数 |
$0 | 当前程序的名称 |
$? | 前一个命令或函数的返回码 |
$* | 以"参数1 参数2 … " 形式保存所有参数 |
$@ | 以"参数1" “参数2” … 形式保存所有参数 |
$$ | 本程序的(进程ID号)PID |
环境变量
- Linux环境(也称为shell环境)由许多变量及这些变量的值组成,由这些变量和变量的值决定环境外观。这些变量就是环境变量。
包括两部分,一是,由系统设置的,主要包括: HOME,LOGNAME,MAIL,PATH,PS1,PWD,SHELL,TERM
二是,用户在命令行中设置的,使用export命令,但是用户注销时值将丢失
用户变量(私有变量,本地变量)
- 在bash中有很多预定义环境变量 ,用户可以用set或env查询当前的环境变量
- 常用的预定义变量:
HOME:当前用户的主目录
PATH:当前用户的可执行文件搜索路径
LANG:程序应该使用的默认语言 - 注意,我们系统中环境变量是很多的,但是我们需要注意的只要这几个,LINUX下面的变量名字基本都是大写字母哈.
可以用 echo $变量名字 来查看变量 - 用户变量是用户在编写shell过程中,可以在shell程序内任意使用和修改的变量。(以字母或下划线开头,通常字母是大写母)
赋值:变量名=变量值
获取变量值 ${变量名}
也可以使用printf来产生各种格式的输出
- 在bash中输入history指令可以查询用户的过往操作
内存中记录的过往指令数根据环境变量中HISTSIZE而定。(/etc/profile)
命令行表达式
命令行输出——“ ” 将一串字符当成一个字符串来对待,如果字符串中包含特殊含义的字符,则转义。
命令行输出——‘ ’ 将一串字符当成一个字符串来对待,如果字符串中包含特殊含义的字符,不转义。
执行引用符——
引用命令的执行结果
别名
- bash 在用户登录时从四个文件中读取环境设定:
全局设置文件: —对全部用户生效
① /etc/profile
② /etc/bashrc
用户设置文件: —对单个用户生效
③ ~/.bash_profile
④ ~/.bashrc - alias 别名
在shell下键入alias可以查询当前alias列表。
用户可以alias来为一条命令取一个简单的别名
用户也可以用unalias来取消一条别名记录。
alias记录在shell中总是先行。
如果使你的更改永久生效,需要把他写入该用户家目录下面的配置文件 .bashrc
文件处理命令
- wc
wc用来统计一个文件的行数(-l)、词数(-w)、字符数(-c)并送到标准输出。 - grep
grep用来从一个文件中找出匹配指定关键字的那一行,并送到标准输出,结合管道,我们通常用它来过滤搜索结果 - diff
diff用于比较两个文件之间的区别,并送到标准输出。输出时先报告两个文件的哪一行不同。 - cut
可以根据一个指定的标记(默认是tab)来为文本划分列,然后将此列显示,例如:
[root@stationXX root] $ cut –f 1 –d : /etc/passwd
-d表示以什么分隔符,-f显示第几列
输入、输出、重定向
- 输入:过滤器的数据来源
标准输入stdin(0):默认是键盘 - 输出:过滤器的数据去向
标准输出stdout (1):默认是终端屏幕 - 错误输出 :报错讯息与标准输出走不同的I/O通道
标准错误输出stderr(2):默认是终端屏幕 - 重定向:标准输入、输出与错误输出,都可以用特定符号改变数据来源或去向
使用>进行输出重定向,文件的原内容会被覆盖
使用>>可以将输出追加入文件
使用2>将报错讯息重定向入一个文件
使用2>>将报错讯息追加入一个文件 - cat file1 > file2
拷贝file1到file2 - cat file* > file
将数个小文件合并成一个文件
Vim
- vim和vi
两者都是多模式编辑器;
Vim是Vi升级版,再兼容Vi所有指令的同时增加了一些新功能支持; - 特点:
语法加亮:使用不同的颜色加亮代码;
多级撤销:Vi只能撤销一次操作,Vim可以无限次撤销;
可视化操作:可以在终端模式运行,也可以在Xwindows模式运行; - Vim的四种模式
1、命令模式(Command):默认模式,只能输入指令,不能输入编辑文字;
2、插入模式(Insert):按 i 就会进入插入模式,此时才可以输入文字,编辑文档,按 Esc 回到命令模式。
3、末行模式:有一個冒号在那,等待输入命令;在命令模式下输入 :键
可视模式:可以突出显示字符、行或者大块文本,并对他们进行操作;v
插入模式,编辑文件:
命令 | 功能 |
---|
A | 在行尾后补 |
a | 在当前字符处的下一个位置 |
o | 在当前行的下面插入一个新行 |
O | 在当前行的上面插入一个新行 |
$ | 快速移动到行尾 ^快速移动到行首 |
末行模式,保存、退出Vim:
命令 | 功能 |
---|
w | 保存文件 |
wq | 保存退出 |
q! | 强制不保存退出 |
wq! | 强制保存退出 |
x | 保存退出 |
命令模式
光标移动
命令 | 功能 |
---|
字符移动 | 方向键按一下移动一个字符; |
数字+方向移动 | 向这个方向移动1个字数倍个; |
单词移动 | w、b |
句子移动 | )、( |
段落移动 | }、{ |
跳到第几行 | XG,X是行数 建议大家用:行数 |
Ctrl-f | 向前、向下翻页 |
Ctrl-b | 向后、向上翻页 |
G | 移至文档结尾 |
gg | 移至文档首 |
删除内容
命令 | 功能 |
---|
x | 刪除光标所在处字符,在中文指一個中文字 |
X | 刪除光标前的字符。Backspace 鍵,只能在插入模式 |
dd | 刪除一整行(delete line), Xdd:删除X行 |
dw | 刪除一個单词(delete word) |
dG | 从当前光标处刪至文档结尾 |
d1G | 刪至文档头 |
d0 | 刪至行首 |
D | 刪至行尾 |
剪切、粘贴
命令 | 功能 |
---|
cc | 剪切整行,当前行内容剪切走 |
cw | 剪切一个单词 |
C | 剪切至行尾 |
c0 | 剪切至行首 |
shift+~ | 光标所在处的字符大小写互换 |
p | 粘贴,把前一个剪切的内容粘贴到当前位置 |
复制
命令 | 功能 |
---|
yy | 复制所光标在行整行。Xyy可以复制X行 |
yw | 复制一个单词 |
yG | 复制到文档结尾 |
y1G | 复制到文档首 |
y0 | 复制至行首不含光标所在处的字符 |
Y | 复制至行尾,含光标所在处的字符 |
撤销、重做
命令 | 功能 |
---|
u | 撤销,vim可以无限制撤销 |
Ctrl-r | 重做上一个被撤销的改变 |
搜索查找
替换
:x,y s/被替换目标/替换内容/g
x,y 指定范围,x,y指行行号;
%s /被替换目标/替换内容/g
%表示全文
g替换所有目标,默认一行如果有多个被替换目标则只替换1个,加上g替换所有;
例: :%s/安装/anzhuang /g 文中所有“安装”替换成“anzhuang ”
可视模式
- 可视模式:
可以突出显示字符、行或者大块文本,并对他们进行操作; - 进入可视模式:
命令 | 功能 |
---|
v | 进入面向字符的可视模式; |
V | 进入面向行的可视模式; |
Ctrl-v | 进入面向块的可视模式; |
命令 | 功能 |
---|
c | 剪切选中文本,和p组合可实现移动文本操作; |
d | 删除选中文本; |
y | 复制选中文本; |
命令 | 功能 |
---|
set(se) | 配置项目(项目简写) |
set nu | 显示行号 |
set nonu | 隐藏行号 |
- 查看相关配置项目:
set all - 常用配置项目:
number /nonumber (nu/nonu):显示或者隐藏行号;
set ignorecase (se ic/se noic):搜索文件时是否不区分大小写 - 查看Vim帮助:
命令 | 功能 |
---|
next | 切换至下一个文件 |
prev | 切换至前一个文件 |
last | 切换至最后一个文件 |
frist | 切换至第一个文件 |
命令 | 功能 |
---|
Ctrl+w,s | 水平拆分窗口 |
Ctrl+w | 下键 |
Ctrl+w,v | 垂直拆分窗口 |
- 设置自动缩进
Set autoindent - 查找到的文本高亮显示
set hlseach
set nohlsearch - 语法着色:
synatax on