vim&find&bash&

vim 文本编辑器

一 vim是什么?

Vim 是一个文本编辑器软件,可以对文本文件执行快速的增加、删除、修改,以及支持使用正则表达式对文本文件的内容进行匹配过滤等操作,同时支持高亮显示语法等程序编辑功能,并可进行多文件同时编辑或多屏幕编辑。

文本文件是指,存储的内容不包含除字符本身根据指定的编码规则所能被转化为计算机识别的二进制内容以外的其他内容和属性的文件。

Vim 是vi编辑器的增强版本,在大多数的linux发行版中被内置,并且大多数软件接口默认调用的文本编辑器为vim,所以vim 是熟练使用linux的利器。

在linux系统中涉及对文本文件进行操作都可以使用vim来进行。

Vim是一个模式化的编辑器软件,常用的模式有以下几种:

命令模式,插入模式,末行模式,视图模式,多文件模式

1.各种模式之间的切换

1.1执行命令 vim  FILENAME 进入文件,默认vim进入命令模式

1.2在命令模式中使用如下命令均可进入vim的插入模式

i:在当前光标处进行插入

a:在当前光标所在位置的后一个字符进行插入

o:在当前光标所在行的下方,插入一个新行

I: 在光标所在行的行首进行插入

A:跳至当前光标所在行的行尾进行插入

O:在光标所在行的上方插入一个新行

1.3进入末行模式

1.3.1 命令模式进入末行模式,输入 ":";

1.3.2 插入模式进入末行模式,输入"Esc"再输入":";

1.4退出vim 及保存文件

1.4.1 退出当前的编辑器,进入末行模式在输入q,强制退出为q!

1.4.2保存当前的编辑,进入末行模式再输入如下的命令:

wq 保存退出

x 保存退出

wq!强制保存退出

1.4.3命令模式下使用命令 ZZ 也可以保存退出。

2 vim的命令模式及其使用

2.1 在命令模式中,可以使用指定的命令对文件进行指定位置的查看,编辑等操作

2.2      使用光标的跳转,可使文件按照指定的方式和位置进行浏览

2.3  光标移动相关命令

2.3.1 字符间跳转,键入如下的命令,可以使文件中的光标按照如下的方向每次移动一个          字符:    h:左 l:右 j:下 k:上;

2.3.2 单词之间的跳转,如下命令,可以使文中的光标按照如下的方向每次移动一个单词:

w:下一个单词的词首;

e:当前或下一个单词的词尾;

b:当前或上一单词的词首;

2.3.3 行中的跳转:

^: 跳转至行首的第一个非空白字符;

0:跳转至行首;

$: 跳转至行尾;

2.3.4 文件内的移动:

1G, gg:文件的首行

G:到文件的最后一行;

2.3.5 句子之间移动:

(:光标跳转至上一句句首;

):光标跳转至下一句句首;

2.3.6 段落之间移动:

{ :上一个段落的首部;

} :下一个段落的首部;

2.4命令模式中的编辑操作

2.4.1字符编辑:

x:  删除光标所在处的字符

xp: 删除光标所在处的字符,粘贴在下一个字符的位置

r + 字符: 使用字符替换光标所在处的单个字符;

2.4.2删除命令:

d 用来执行删除操作,通常跟其他控制字符的命令结合使用,以达到光标移动所经过             的字符便为删除的内容的效果,如下组合:

d^ :删除光标所在处向前一个字符至行首非空白字符的内容

d$ :删除光标所在处至行尾的内容

d0 :删除光标所在处向前一个字符至行首的内容

dd : 删除光标所在行

dw : 删除光标所在位置至下一个单词的词首

de : 删除光标所在位置至本词的词尾

db :删除光标所在位置的向前一个字符至本单词的词首

注意:删除的内容会被vim编辑器保存至缓冲区当中;

2.4.3复制命令:

y使用方法与删除d相同

yy: 复制行

2.4.4改变命令:

c 用法与d命令相似,删除后直接进入插入模式

c$、C: 删除当前光标至行尾,并进入插入操作

c^, c0:删除当前光标至行首,并进入插入模式

cc: 删除光标所在行并进入插入操作

2.4.5粘贴:p (paste, put)

如果此复制或删除的内容不是一个完整行

p:粘贴至当前光标所在处后面;

P:粘贴至当前光标所在处前面;

如果复制的内容是完整行(可以不止一行而是多行)

p: 粘贴至当前光标所在行下方;

P:行上方;

2.4.6撤消此前的编辑操作:

u: 撤消此前编辑操作;

Ctrl+r:恢复此前的撤消操作

.: 重复前一个编辑操作

2.4.7翻屏操作:

Ctrl+f: 向文件尾部翻一屏;

Ctrl+b:向文件首部翻一屏;

Ctrl+d: 向文件尾部翻一屏,光标停留在屏幕中间的行首

Ctrl+u: 向文件首部翻一屏,光标停留在屏幕中间的行首

3 vim的末行模式

3.1 地址,定界

:start_pos,end_pos

#:第#行;

#,#:第#行的当前行

#,+#:#行到#+#行(+ 向下#行)

#,-#:#行到#-#行(-向上#行)

.: 当前行

$: 最后一行

%: 全文,相当于1,$

/pat1/:第一次被此模式所匹配到的行;

#,/pat1/

/pat1/,/pat2/

后可跟编辑命令:

d, y

w, r

3.2 查找

/PATTERN:向尾部进行

?PATTERN:向首部进行

n: 与命令同方向

N:与命令反方向

3.3 查找替换

s: 在末行模式下,在地址定界的范围内完成查找替换操作;有命令历史纪录功能

s/要查找的内容/替换为的内容/修饰符

要查找的内容:可使用模式

替换为的内容:不能使用模式,但可以使用后向引用符号,以引用前面模式                中的分组括号所匹配到的内容;

\1, \2, ...

&:引用“要找的内容”匹配到的整个内容;

修饰符:

i: 忽略大小写

g: 全局替换

/:用于分隔符,所以,要查找的内容或替换为的内容中出现此符号,要使用\对其转              义,使用格式:\/

分隔符可替换为其它字符:例如@,#等;

4 多文件模式:

vim FILE1 FILE2 ...

:next 切换至下一个个文件

:first 切换回第一个文件

:prev  切换回上一个

:last 切换回最后一个

:wqall 全部的文件保存并推出

:q!all 强制退出全部的文件

5 多文件窗口分割:

vim -o|-O FILE1 FILE2 ...

-o 窗口上下分割 -O 窗口左右分割

Ctrl+w, 在多个窗口间切换

单文件窗口分割:

Ctrl+w, s:  水平分割split

Ctrl+w, v:  垂直分割vertical

6 定制vim的某些工作特性:

6.1 行号

显示:set nu

禁用:set nonu

6.2 括号匹配

显示:set sm

禁用:set nosm

6.3 自动缩进:

set ai

set noai

6.4 高亮搜索

set hlsearch

set nohlsearch

6.5 语法着色

syntax on

syntax off

6.6 忽略字符大小写

set ic

set noic

:help 获取帮助

:help SUBJECT

7 特性设定的永久生效方式:

全局配置文件:/etc/vimrc

用户个人的配置文件:~/.vimrc

二 find 命令

1 查找文件的命令,指定文件的查找条件,并且在查找过后可以执行指定的处理操作的命令,查找文件时可以做到实时的精确查找

2 find命令:

find [OPTION]... [查找路径] [查找条件] [处理动作]

查找路径:默认为当前路径;

查找条件:指定的查找标准,可以根据文件名、大小、属主属组、类型等进行;默认为找出指             定路径下的所有文件;

处理动作:对符合条件的文件做什么操作;默认为输出至屏幕;

3 查找条件:

3.1根据文件名进行查找:

-name "文件名称": 支持使用glob;

*, ?, []

-iname "文件名称":不区分字符大小写,支持使用glob;

-regex "PATTERN":以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称;

3.2根据属主、属组查找:

-user USERNAME: 查找属主为指定用户的文件;

-group GROUPNAME:

-uid UserID: 查找文件的属主指定uid的文件;

-gid GroupID:

-nouser: 查找没有属主的文件;

-nogroup:查找没有属组的文件;

3.3根据文件类型进行查找:

-type TYPE

f: 普通文件

d: 目录

l: 符号链接

b: 块设备

c: 字符设备

p: 命名管道

s: 套接字

3.4组合查找条件:

与条件:-a

或条件:-o

非条件:-not或使用 “!”

3.5根据文件大小来查找:

-size [+|-]#UNIT

单位:k, M, G

#UNIT: (#-1,#] 假设#=5,此范围为大于4小于等于5

+#UNIT: (#,+oo) 假设#=5,此范围为等于大于5

-#UNIT:[0,#-1] 假设#=5,此范围为等于小于4,大于0

3.6根据时间戳:

以“天”为单位

-atime 访问时间  [+|-]# 假设#=5

#:[#,#+1)  5-6天前之间

+#: [#+1,oo] 6天之前

-#: [0,#) 5天前到现在

-mtime 修改时间

-ctime 改变世界

以“分钟”为单位 时间的表示方法与-atime相同

-amin 访问

-mmin 修改

-cmin 改变

3.7根据权限:

-perm [/|-]MODE

MODE: 精确权限匹配

/MODE:任何一类对象(u,g,o)的任何一位权限符合条件即可;隐含或条件;

/400

-MODE:为每一类对象指定的每一位权限都必须同时存在方为符合条件;隐含与条件;

4 处理动作:

-print: 默认处理动作

-ls:类似于对查找到的每个文件做"ls -l"的操作;

-delete: 删除查找到的文件;

-fls /path/to/somefile:查找到的文件的详细路径信息保存至指定文件中;

-ok COMMAND {} \;

对每个文件执行指定的命令之前需要用户事先确认;

-exec COMMAND {} \;

无需用户确认;

三 bash环境变量

bash环境配置:

配置文件,生效范围划分,存在两类:

全局配置:

/etc/profile, /etc/profile.d/*.sh

/etc/bashrc

个人配置:

~/.bash_profile

~/.bashrc

按功能划分,存在两类:

profile类:为交互式登录的shell提供配置

/etc/profile, /etc/profile.d/*.sh

~/.bash_profile

功用:

(1) 定义环境变量,例如PATH、PS1

(2) 运行命令或脚本

bashrc类:为非交互式登录shell提供配置

/etc/bashrc

~/.bashrc

功用:

(1) 定义命令别名;

(2) 定义本地变量;

变量:内存空间,变量名

类型:

环境变量:作用范围当前shell进程及其子进程

本地变量:作用范围当前shell进程

局部变量:作用范围仅为当前shell进程中某代码片断(通常为函数上下文)

位置变量:$1, $2

特殊变量:$?

变量定义方式:

bash内置变量:可直接调用,内置了许多环境变量,例如PATH等

自定义变量:

变量赋值:变量名=值

bash弱类型:

变量存储数据时,默认均采用字符形式;任何变量可以不经声明,直接引用;

120:24bits

120: 8bits

定义本地变量:

name=value

查看命令:set

撤消变量:

unset name

定义环境变量:

export name=value

declare -x name=value

查看命令:env, printenv, export

引用变量:

${name}, $name

bash中的引用符号:

‘‘: 强引用,变量替换不会发生

"":弱引用

``: 命令引用

shell登录类型:

交互式登录:

直接通过终端进行的登录;

通过su -l Username命令实现的用户切换;

非交互式登录:

图形界面下打开的命令行窗口;

执行脚本;

su Username;

配置文件作用次序:

交互式登录:

/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc -->             /etc/bashrc

非交互式登录:

~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh

编辑配置文件定义的新配置如何生效?

(1) 重新登录;

(2) 让当前shell进程去重新读取指定的配置文件;

source /PATH/TO/SOMEFILE

. /PATH/TO/SOMEFILE

注意:副作用

四 Linux文件系统上的特殊权限

权限模型:

u, g, o

r, w, x

进程的安全上下文:

前提:进程有属主(进程以哪个用户的身份运行);文件有属主和属组;

(1) 用户是否能够把某个可执行程序文件启动为进程,取决于用户对程序文件是否拥              有执行权限;

(2) 程序启动为进程后,此进程的属主为当前用户,也即进程的发起者;进程所属的              组,为发起者的基本组;

(3) 进程拥的访问权限,取决其属主的访问权限:

(a) 进程的属主,同文件属主,则应用文件属主权限;

(b) 进程的属主,属于文件的属组,则应用文件属组权限;

(c) 则应用其它权限;

SUID:

(1) 任何一个可执行程序文件能不能启动为进程:取决于发起者对程序文件是否有执行权限;

(2) 启动为进程之后,其属主不是发起者,而程序文件自己的属主;这种机制即为SUID;

权限设定:

chmod u+s FILE...

chmod u-s FILE...

注意:

s: 属主原本拥有x权限;

S: 属主原本无x权限;

SGID:

默认情况下,用户创建文件时,其属级为此用户所属的基本组;

一旦某目录被设定了SGID权限,则对此目录拥有写权限的用户在此目录中创建的文件            所属的组为目录的属组,而非用户的基本组;

权限设定:

chmod g+s FILE...

chmod g-s FILE...

Sticky:

对于一个多人可写的目录,此权限用于限制每个仅能删除自己的文件;

权限设定

chmod o+t FILE...

chmod o-t FILE...

作业练习:

1、复制/etc/grub.cfg配置文件至/tmp目录,用查找替换命令删除/tmp/grub.cfg文件中的行首的空白字符;

:%[email protected]^[[:space:]]\[email protected]@

2、复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行的行首加一个#; 原有空白字符保留;

:%[email protected]^[[:space:]]\[email protected]#&@

3、替换/tmp/functions文件中的/etc/sysconfig/init为/var/log;

:%[email protected]\/\<etc\>\/\<sysconfig\>\/\<init\>@\/var\/[email protected]

4、删除/tmp/functions文件中所以#开头,且#后面至少跟了一个空白字符的行的行首#;

:%[email protected]^#\([[:space:]]\+\)@\[email protected]

5、查找/var目录属主为root,且属组为mail的所有文件;

[[email protected] tmp]# find /var -user root -a -group mail -ls

6、查找/usr目录下不属于root、bin或hadoop的所有文件;

[[email protected] tmp]# find /usr -not -user root -a -not -user bin -a -not -user hadoop -ls

7、查找/etc目录下最近一周内其内容修改过,且属主不为root或hadoop的所有文件;

[[email protected] tmp]# find /etc -mtime -7 -a -not -user root -a -not -user hadoop -ls

8、查找当前系统上没有属主或属组,且最近一周内曾被访问过的所有文件;

[[email protected] tmp]# find / -atime -7  -nouser -o -nogroup

9、查找/etc目录下大于20k且类型为普通文件的所有文件;

[[email protected] tmp]# find /etc -size +20k -exec ls -hl {} \;

10、查找/etc目录下所有用户都没有写权限的文件;

[[email protected] tmp]# find /etc -not -perm /222 -ls

11、查找/etc目录下至少有一类用户没有执行权限的文件;

[[email protected] tmp]# find /etc -not -perm -111 -ls

12、查找/etc/init.d目录下,所有用户都有执行权限,且其它用户拥有写权限的文件;

[[email protected] tmp]# find /etc/init.d -perm -113  -ls

13、让普通用户能使用/tmp/cat去查看/etc/shadow文件;

[[email protected] tmp]#chmod u+s /etc/shadown

vim&find&bash&

时间: 2024-10-08 16:15:36

vim&find&bash&的相关文章

Linux学习4——Vim和Bash

一.写在前面  本将将介绍Linux自带的强大的文本编辑器Vim和Bash的相关知识. 二.完成目标 1.了解Vim和Bash的基本概念 2.定制自己的vim 3.Bash中的一些命令 4.管道命令 三.基本概念 1.什么是Vi? Vi是Unix及Linux系统下标准的编辑器.学会它后,您将在Linux的世界里畅行无阻.更多 2.什么是Vim? Vim是一个类似于Vi的著名的功能强大.高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性.Vim是纯粹的自由软件.更多 3.为什么要学习Vim

vim编写Bash脚本

vim编写Bash脚本,可以说是类unix系统下的原生应用啊,想到初vi编辑器可是每个unix自带的哦. 缩进:在.vimrc中添加 filetype plugin indent on 未完待续,以后多写点.

vim、bash等

使用vim编辑多个文件 vim file1 file2 file3 ... :next查看或编辑后一个文档的内容 :prev查看或编辑前一个文档的内容 :first查看或编辑第一个文档的内容 :last查看或编辑最后一个文档的内容 vim -o|-O file1 file2 file3 -o:水平显示多个文件 -O:垂直显示多个文件 Ctrl+w arrow(箭头) 光标移动 Ctrl+w,s讲一个文件水平分屏显示 Ctrl+w,v将一个文件垂直分屏显示 :qa 全部退出 :wa 全部保存 将其

vim find bash 文件系统

一 vim vi visual interface 全屏文本编辑器 行文本编辑器sed 全屏:vi/vim  nano vim = vi improved  模式:  编辑模式,命令模式  输入模式  末行模式 编辑模式-->输入模式  i   insert,原地插入  a append,之后插入  o 新起一行插入  I 行首插入  A 行尾插入  O 当前行上方插入新行 输入模式-->编辑模式  按ESC键 编辑模式-->末行模式  按  :wq 保存退出 末行模式-->编辑模

linux下vim和bash配置文件 源文件

1. ~/.vimrc "去掉讨厌的有关vi一致性模式,避免以前版本的一些bug和局限 set nocompatible set autoread " 文件修改之后自动载入 set completeopt=longest,menu " 自动完成 set history=1000 "记录历史的行数 set backspace=2 " 设置退格键可用,正常处理indent, eol, start等 set vb t_vb= "当vim进行编辑时,如果

vim和bash

Vim程序编辑器 基本上vi共分为三种模式,分别是一般指令模式.编辑模式与指令列命令模式 一般指令模式:打开一个文件就进去了,他可以删除,复制,粘贴等操作,但不能编辑.光标到最后一行在按wq保存. vim 文件名(不管文件存不存在,都可以打开) 编辑模式:按下任意键进去编辑模式,会到一般模式按esc 命令行模式:按: / ?任意一个都可以到最后一行.然后就可以输入命令. 按下crte+z 可以退出vim程序编辑器 Kill -9 % 1 这个命令是可以模拟短线停止vim工作的命令. Vim可以多

vim 文本编辑器、shell脚本:

vim 文本编辑器:    三种主要模式:        命令模式(默认):移动光标,剪切/粘贴文本        插入(编辑)模式:修改文本 输入i 进入插入模式        扩展模式:保存,退出等        快键           i: insert, 在光标所在处输入        I:在当前光标所在行的行首输入        a: append, 在光标所在处后面输入        A:在当前光标所在行的行尾输入        o: 在当前光标所在行的下方打开一个新行      

vim golang dev

1.vundle 2. Plugin 'fatih/vim-go' 3 vim +GoInstallBinaries 4 cd $GOPATH/src/github.com/nsf/gocode/vim./update.bashgocode set propose-builtins truegocode set lib-path "/home/anjun/go/path/pkg/linux_amd64"

ubuntu下定制Vim/Gvim及使用技巧

vim是linux下的编辑器之神,是玩linux的必备工具,同样emacs是神的编辑器,两个编辑器是各有千秋,看个人的喜好,青菜萝卜各有所爱.我是比较喜欢vim,用vim编写bash,perl,python脚本,以及修改配置文件等等,本文就主要介绍在Ubuntu下gvim环境的搭建,希望对大家有所帮助. 一. Ubuntu安装gvim方法 安装gvim的方法,最简单方法是在Ubuntu软件中心搜索gvim,然后点击安装即可,如下图: 如果使用命令行可以打开终端,输入sudo apt-get in