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开启两个档案;

2vim 中先使用 :files 文件数据。

3vim 的环境下输入:n 会来到第二个编辑的档案,亦即/etc/hosts 内;

4/etc/hosts 下按 G 到最后一列,再输入『 p 』贴上;

5按下多次的 u 来还原原本的档案资料;

6最终按下 :q 来离开vim

 

多窗口功能

在指令列模式输入:sp 文件名字      即可

ctrl+w+↑ctrl+w+↓就可以在两个窗口上切换。

BASH

BASH是一个shellshell 是一个命令语言解释器,提示符下输入的每个命令都由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来使自定义变量变成环境变量
e
xport PATH

例如:我想要name=tian在下一个shell程序中运行。

name=tian

bash

echo $tian

exit

export tian

bash

echo $name

exit

8取消变量的方法为使用unsetunset变量名称例如取消myname的设定:
u
nset 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的主要内容,如果未能解决你的问题,请参考以下文章

docker 下备份和恢复mongodb

一键同步脚本

Bash笔记

几种常见的Shell

2Shell中的变量

shell专题:Shell中的变量