vim和bash
Posted t1486712342
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vim和bash相关的知识,希望对你有一定的参考价值。
Vim程序编辑器
基本上vi共分为三种模式,分别是一般指令模式、编辑模式与指令列命令模式
一般指令模式:打开一个文件就进去了,他可以删除,复制,粘贴等操作,但不能编辑。光标到最后一行在按wq保存。
vim 文件名(不管文件存不存在,都可以打开)
编辑模式:按下任意键进去编辑模式,会到一般模式按esc
命令行模式:按: / ?任意一个都可以到最后一行。然后就可以输入命令。
按下crte+z 可以退出vim程序编辑器
Kill -9 % 1 这个命令是可以模拟短线停止vim工作的命令。
Vim可以多人编写。
如果vim不正常结束的话可以按r来保护你未保存的工作,但是等你结束后还要删除你原来不正常结束的工作。
[O]pen Read-Only:打开此档案成为只读。
(R)ecover:就是载入暂存档的内容,用在你要救回之前未储存的工作。
(D)elete it:删除文档
(Q)uit:按下q就离开vim
(A)bort:忽略这个编辑行为,与quit差不多
记住按键说明:
块选择:
v 字元选择,会将游标经过的地方反白选择!
V 列选择,会将游标经过的列反白选择!
[Ctrl]+v 区块选择,可以用长方形的方式选择资料
y 将反白的地方复制起来
d 将反白的地方删除掉
p 将刚刚复制的区块,在游标所在处贴上
多文件编辑
:n 编辑下一个档案
:N 编辑上一个档案
:files 列出目前这个vim 的开启的所有档案
1透过vim hosts /etc/hosts指令来使用一个vim开启两个档案;
2在vim 中先使用 :files 文件数据。
3在vim 的环境下输入:n 会来到第二个编辑的档案,亦即/etc/hosts 内;
4在/etc/hosts 下按 G 到最后一列,再输入『 p 』贴上;
5按下多次的 u 来还原原本的档案资料;
6最终按下 :q 来离开vim!
多窗口功能
在指令列模式输入:sp 文件名字 即可
ctrl+w+↑及ctrl+w+↓就可以在两个窗口上切换。
BASH
BASH是一个shell,shell 是一个命令语言解释器,提示符下输入的每个命令都由shell先解释然后传给Linux。
命令行如果太长可以()来说明,全局变量=环境变量,自定义变量=局部变量
echo命令用于在shell中打印shell变量的值,或者直接输出指定的字符串,是变量的显示 命令行 echo $变量名称
命令别名:alias {“别名”=‘命令 参数’}例如讲ls –al | more的别名改为lm
alias lm=‘ls –al | more’。去掉别名就是:unalias lm
Type:
他是用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令。
-p:如果给出的指令为外部指令,则显示其绝对路径;
如何设置变量的内容
echo ${myname}
空行
myname=变量名称的内容
echo ${myname}
结果就是显示你输入的变量名称
在shell中,一个变量名称没有被设置的话,默认的内容是空
1变量与变量内容以一个等号=来连结,如下所示:
myname=VBird
2等号两边不能直接接空白,如下所示为错误:
myname = VBird或myname=VBird Tsai
3变量名称只能是英文字母与数字,但是开头不能是数字,如下为错误:
2myname=VBird
4变量内容若有空白可使用双引号"或单引号‘将变量内容结合起来,但
双引号内的特殊字元如$等,可以保有原本的特性,如下所示:
var="lang is $LANG"则echo $var可得lang is zh_TW.UTF-8
单引号内的特殊字元则仅为纯文字,如下所示:
var=‘lang is $LANG‘则echo $var可得lang is $LANG
5 可以用/来代替特殊符号
6若该变量为扩增变量内容时,则可用"$变量名称"或${变量}累加内容,如下所示:
PATH="$PATH":/home/bin或PATH=${PATH} :/home/bin
比如让name的内容多出 yes可以:
name=${name}yes
7若该变量需要在其他子程序执行,则需要以export来使自定义变量变成环境变量:
export PATH
例如:我想要name=tian在下一个shell程序中运行。
name=tian
bash
echo $tian
exit
export tian
bash
echo $name
exit
8取消变量的方法为使用unset:unset变量名称,例如取消myname的设定:
unset myname
环境变量的功能
env可以列出环境变量和常见环境变量说明
RANDOM:变量($RANDOM),在BASH的环境下, RANDOM介于0~32767之间,echo $RANDOM时,系统就会主动的随机取出一个介于0~32767的数值。
Declare –I number=$RANDOM*10/32767;echo $number
set可以查看所有的变量。
PS1(数字1):就是命令提示,执行某个指令后,最后要再次出现提示时,就会主动去读取这个变量值了。PS1的默认指令是[[email protected]h W]$
$:(关于本shell 的PID),是个变量。想要知道我们的shell 的PID ,就可以用:echo $$ ,出现的数字就是你的PID 号码。
?:问号是特殊的变量,他是上一个执行的指令所回传的值。当执行指令时,指令都会回传一个代码。如果成功的执行该指令,则会回传一个0值,如果执行过程发生错误,就会回传错误代码。但是(?)只和上一个命令有关
export:自订变量转成环境变量
export是自定义变量转换成为环境变量的命令。
命令行:export 变量名称
变量键盘读取、数组与声明:read,array,declare。
read 后面直接接变量名称,下面会出现一个空白行让你输入,输入的就转化问变量内容了。加上-t可以设置空白行存在的时间,不设置就默认30s。加上-t,就会有提示出现
read [-pt] 变量名称
p:后面可以接提示符
t:后面可以接等待的秒数
declare/typeset是声明变量的类型,后面直接加变量会吧所有的变量名称于内容显示出来。
Declare [-aixr] 变量名称
-a :将后面名为变量定义成为阵列(array) 类型
-i :将后面变量定义成为整数数字(integer) 类型
-x :用法与export 一样,就是将变量变成环境变量;
-r :将变量设定成为readonly 类型,不可被更改内容,也不能重设。
例如:
sum=100+500
echo $sum(×)
Declare –I sum=100+500
echo $sum (√)
array是变量类型,建议直接以$数组来读取。
Ulimit是文件系统及程序的限制关系
Ulimit [-SHacdfltu] 数值
-H :严格的设定,必定不能超过这个设定的数值;
-S :soft limit ,警告的设定,可以超过这个设定值,但是若超过则有警告讯息。大于-S但小于-H就会警告
-a :后面不接任何选项与参数,可列出所有的限制额度;
-c :当某些程式发生错误时,系统可能会将该程式在记忆体中的资讯写成档案(除错用),
这种档案就被称为核心档案(core file)。此为限制每个核心档案的最大容量。
-f :此shell 可以建立的最大档案容量(一般可能设定为2GB)单位为Kb
-d :程序可使用的最大断裂内存(segment)容量;
-l :可用于锁定(lock) 的内存量
-t :可使用的最大CPU 时间(单位为秒)
-u :单一使用者可以使用的最大进程(process)数量。
变量内容的删除、替换于代替
删除命令:${变量名称#/*想要删除的部分}
$是关键字,用在删除模式
#是代表从变量的最前面开始想右删除,切删除最短(第一个/与第二个/之间的数据)的那个。
但是在PATH变量中,目录用:隔开,所以删除的就是(/)和(:)中间的数据。(如果是两个#是话,就是删除最长(第一个/与最后一个/之间的数据)的那个)。
%是代表从变量最后面开始向左删除。用法和#一样
替代命令:echo ${变量名称/想要被替代的变量内容/替代的变量}-----只有第一个会被替代
如果是两个//就是所符合的内容都会被替代:echo ${变量名称//想要被替代的变量内容/替代的变量}。---------------------所有的都会被替代
例如想要把path变量的sbin代替称大写的SBIN。
(1)(/)
echo ${path/sbin/SBIN}
/usr/local/ SBIN :/usr/sbin:/home/dmtsai/.local/bin:/home/dmtsai/bin
(2)(//)
echo ${path//sbin/SBIN}
/usr/local/bin:/usr/bin:/usr/local/ SBIN :/usr/ SBIN :/home/dmtsai/.local/bin :/home/dmtsai/bin
测试变量是否存在:新变量=${就变量-变量的内容}
例如要判断test这个变量是否存在,若不存在就给予test的内容为root
echo ${test }
(出现一行空白,所以test可能不存在,也可能是空字串)
test=${test-root}
echo ${test}
root
命令别名:alias,unalias
Alias “别名=‘命令参数
比如吧lm当做ls –l | more的命令别名
alias “lm”=’la –l | more’
unalias就是取消命令别名的,直接在后面加命令别名就可以
例如取消上面的命令别名
unalias lm
历史命令(history)
-----(histfiles也就是保存历史命令的文件)
n :数字,列出最近的n个命令列表的意思!
-c :删除历史命令
-a :将目前新增的history 指令新增入histfiles 中
-r :将histfiles 的内容读到目前这个shell 的history 记忆中;
-w :将目前的history 记忆内容写入histfiles 中!
Bash的登录与欢迎信息:/etc/issue /etc/motd
/etc/issue 是记录登录界面上几行提示字符串的地方。
cat /etc/issue 可以查看提示字符串。
想要让使用者登入后取得一些讯息,直接vim进去/etc/motd里,再输入你想发的讯息。
bash的环境配置文件
以上是关于vim和bash的主要内容,如果未能解决你的问题,请参考以下文章