linux中查看vim的绝对路径,linux下vim,find

8-30Study

vim文本编辑工具:

vim分为三种模式:编辑模式,插入模式,末行模式

编辑模式:

d:删除字符

dd:删除整行

y:复制字符

yy粘贴整行

zz:保存退出

x:剪切单个字符

#x:剪切x个字符

r 替换字符  6rT 表示当前光标往后6字符全部替换为T

d^删除光标所在处到行首

d$删除光标所在处至行尾字符(同D)

dw,de,db 删除单词,支持#来指明涵盖单词个数

行级别的粘贴:

p:当前所在光标下一行粘贴

P:当前所在光标上一行粘贴

不到行级别:

p:直接粘贴在当前光标后

P:直接粘贴在当前光标前

c:删除指定字符并自动转为输入

u撤销操作

Ctrl+r:撤销此前撤销

.重复前一条命令

输入模式:

i当前插入,I 行首插入  a当前位置向后一格插入,A行尾插入

o 新建下一行并在行首输入   O新建上一行并在行首输入

末行模式:

wq 或者x 保存退出

q!强制退出

x! 或者wq!强制保存退出

ZZ  保存退出

字符间移动:

上下左右:kjhl

单词间移动:

w:下一个单词词首

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

b:当前或前一个单词词首

#[w|e|b] 几个几个跳

0跳至绝对行首(第一个非tab字符)跳到最前面

^跳转至行首(第一个非空白字符)

$跳转至绝对行尾

句子间跳转

(

)

段落间跳转:

{

}

行间快速跳转:

#G(#目标行编号)

G文尾

1G文首

末行模式下直接输入100表示跳转到100行

快速选取:

v:选择光标左侧内容,可用jk上下移动

V:选择光标所在行,可用jk上下移动

编辑模式下的翻屏命令:

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

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

Ctrl+d:向文件尾部翻半屏

Ctrl+u:向文件首部翻半屏

文本查找:

/PATTERN

?PATTERN

n:下一个

N:上一个

地址定界符:

Startline[,endline]

#第n行

.当前行

$最后一行

%:全文

相对定界:

+#:向下多少行

-#:向下多少行

10,+5  从第10行到第15行

文本替换s

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

/:表示修饰符,可用其他字符如@,#等

要查找内容:可用正则表达式,此后要替换内容可用&代表对该内容的全部引用

要替换内容:不可用正则表达式,一般为正常文本,但可以使用\1,\2..保持内容

修饰符:

i:查找时忽略大小写

g:全局替换(不加的话一行出现多次只替换第一次)

%s/KEEP/keep/gi  %表示全文,全文替换KEEP为keep

Vim [option]… [File]…

+# 快速定位到#行

+/PATTERN 快速定位到模式第一次匹配到的行

Vim File1 File2 File3…

末行模式:

:next 下一个

:prev 前一个

:first 第一个

:last最后一个

退出所有文件:

:wqll 保存退出全部

:wall 保存全部

:qall  退出全部

多窗口:

-o 水平分割窗口

-O 竖直分割窗口

Ctrl+w,方向键  多窗口之间跳转

窗口也可多次分割:

Ctrl+w,s:水平分割

Ctrl+w,v:竖直分割

界面显示设定:

末行模式下:开启行号:setnumber或者 set nu 关闭行号:set nonumber或set nonu

语法高亮显示:syntaxon  / syntax off

搜索高亮开启关闭:sethlsearch  /set nohlsearch

自动缩进开启关闭:setautoindent或者set ai /  setnoautoindent或者set noai

区分大小写开启关闭:setignorecase (set ic)/set noignorecase (set noic)

高亮显示配对符号:set showmatch(set sm)/set noshowmatch (set nosm)

find查找文件工具:

格式:find[OPTIONS] [查找路径] [查找条件] [处理动作]

查找路径:默认为当前路径,最好使用绝对路径指定

查找条件:

按时间查找:

n:n   n

+n:n之外   x>n+1

-n:n之内   x<=n

-atime [+|-|]n:第n天外|内|访问

-ctime [+|-|]n:第n天外|内|属性变化

-mtime [+|-|]n:第n天外|内|内容变化

-amin  [+|-|]n :第n分钟外|内| 访问

-cmin  [+|-|]n :第n分钟外|内| 属性变化

-mmin  [+|-|]n :第n分钟外|内| 内容变化

-newer file: 比file更改时间更近的文件

-newer f1 !f2  :查更改时间比f1新但比f2旧的文件

按条件查找:

-user :按属主查找

-group:按属组查找

-gid  :按GID查找

-nogroup:查找没有属组的

-nouser:查找没有属主的

-inum n:按inode查找

-name  PATTERN:按模式查找名字

-iname PATTERN:按模式查找名字,不区分大小写

-path PATTERN:按路径查找

-perm mode:按权限精确查找

/mode(+mode 老用法):只要保护一位对其指定的权限即可

-mode:每位用户包含全部权限

-regex“PATTERN”按模式查找

按文件大小查找

-size [+|-]n:

n:n-1

-n:x<=n-1

+n:x>n

按文件类型查找:

-type type

c:字符设备

b:块设备

f:普通文件

d:目录文件

l:连接文件

p:管道设备

s:套接字文件

多条件时需组合条件运算

与运算:-a  可以省略  条件1 –a 条件2 –a 条件3….

或运算:-o

非运算:-not,!   -not 条件

处理动作:

-ls  显示出来

-print  打印在屏幕  (默认)

-execCOMMAND {} \;对找到的文件执行COMMAND,参数为find参数,这个命令直接执行,无需确     认,建议find没问题后再加上该项参数

-ok COMMAND{}\;  每项命令都需确认

注意:find会一次性找到所有参数并传输给之后的COMMAND,但部分命令无法接受过长参数,解决        方法:

find | xargs COMMAND

bash变量:

bash变量分为三种:

本地变量:只对当前shell进程有效的变量,对其他shell进程无效,包括shell的子进程

环境变量:对当前shell进程及其子进程有效,对其他shell无效

局部变量:对shell脚本中某段代码有效

位置变量:$1,$2....${11}进行位置指定变量

特殊变量:$?查看上次命令执行结果

set查看全部本地变量

export查看全部环境变量

修改变量只对当前shell有效,退出后无效,若想一直有效需修改配置文件

bash配置文件:

交互式登录:profile

全局设置:/etc/profile,/etc/profile.d/*.sh  (profile分开存储)

本地设置:~/.bash_profile

功能:1.设定环境变量;2.运行脚本或命令

非交互登录:

全局设置:/etc/bashrc

本地设置:~/.bashrc

功能:1.设定本地变量;2.定义命令别名;3.自定义

配置文件读取顺序:

交互式登录:

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

非交互登录:

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

最后一个读取配置生效

编辑配置文件重新加载生效:退出并重新登录

让bash重读此文件

.此配置本身

source 配置文件

SUID,SGID,Sticky

针对不同权限需求设置suid,suid,sticky权限:

suid:具备该权限时,执行该文件时能将其进程自动转化为属主权限执行

sgid:具备该权限时,在该目录下创建的文件属组全部为其目录属组

sticky:具备该权限时,在该目录下只能删除自己为属主文件

例子:

[root@localhost test1]# chown :oracle /tmp/test1

[root@localhost test1]# ls

[root@localhost test1]# ls -ld

drwxr-xr-x. 2 root oracle 6 Aug 4 00:53 .

[root@localhost test1]# chmod g+w /tmp/test1

[root@localhost test1]# ls -ld

drwxrwxr-x. 2 root oracle 6 Aug 4 00:53 .

[root@localhost test1]# usermod -a -G oracle admin

[root@localhost test1]# usermod -a -G oracle hadoop

[root@localhost test1]# id admin

uid=1000(admin) gid=1000(admin) groups=1000(admin),990(oracle)

[root@localhost test1]# id hadoop

uid=1008(hadoop) gid=1008(test7) groups=1008(test7),990(oracle)

[root@localhost test1]# su - admin

Last login: Wed Aug 12 07:39:23 PDT 2015 on pts/1

[admin@localhost ~]$ cd /tmp/test1

[admin@localhost test1]$ touch admin.a

[admin@localhost test1]$ ls -l

total 0

-rw-rw-r--.1 admin admin 0 Aug 12 07:53 admin.a      //说明此时未改sgid权限时创建的没什么不同

[hadoop@localhost test1]$ touch hadoop.a

[hadoop@localhost test1]$ ls -l

total 0

-rw-rw-r--. 1 admin  admin 0Aug 12 07:53 admin.a

-rw-r--r--. 1 hadoop test7 0 Aug 12 07:55 hadoop.a       切换到Hadoop切换也是一样

更改sgid属性

[root@localhost ~]# chmod g+s /tmp/test1

[root@localhost ~]# cd /tmp/test1

[root@localhost test1]# ls -ld

drwxrwsr-x. 2 root oracle 35 Aug 12 07:55 .

[root@localhost test1]# su - admin

Last login: Wed Aug 12 07:53:23 PDT 2015 on pts/1

[admin@localhost ~]$ touch admin.b

[admin@localhost ~]$ cd /tmp/test1

[admin@localhost test1]$ touch admin.b

[admin@localhost test1]$ ls -ld

drwxrwsr-x. 2 root oracle 49 Aug 12 07:57 .

[admin@localhost test1]$ ls -l

total 0

-rw-rw-r--. 1 admin admin  0 Aug 12 07:53 admin.a

-rw-rw-r--. 1 admin  oracle 0Aug 12 07:57 admin.b

-rw-r--r--. 1 hadoop test7  0Aug 12 07:55 hadoop.a

linux磁盘管理:

linux分区表:

MBR:0磁道0扇区,主引导扇区

三部分:

446bytes:bootloader,程序

64bytes:分区表

16bytes:标示一个分区

4个主分区,一个扩展分区à逻辑分区

2bytes:55AA,当前MBR信息是否有效

MBR最多支持2T分区

文件系统:

linux文件系统任何数据存储都为inode(index node)和相应的数据块组成。

若查找/etc/passwd文件,文件读取顺序如下:

先找到/根目录的inode及其数据块,数据块中记录着其目录下文件及子目录文件的inode号,找到etc目录         查找其inode,前往inode表读取其数据后,查找到etc的数据块,再到其中查找passwd的inode,再通过                  inode表查找

文件系统分为日志型和非日志型

非日志文件系统:ext2

日志型文件系统:ext3,ext4,xfs  etc

VFS:Virtual File System

Linux文件系统:ext2,ext3,ext4,xfs,btrfs

光驱:iso9660

网络文件系统:ntf,cifs

集群文件系统:gfs2,ocfs2

分布式文件系统:ceph

Windows文件系统:ntfs,vfat

伪文件系统:tmpfs,hugepagefs,proc,sysfs

Unix文件系统:FFS,UFS,JFS

文件系统管理工具:

创建文件系统:

Mkfs.ext2

检测文件系统:

fsck.ext2

查看其属性:dumpe2fs,tune2fs

创建文件系统:mkfs.ext2/dev/sda

blkid/dev/sda

mkfs –t ext2 /dev/sda1

mke2fs  ext专用格式化工具

mke2fs:创建ex文件系统

mke2fs [options]…/dev/Device

-t{ext2|ext3|ext4}

-b{1024|2048|4096}4096上限由内核page frame

-LLABEL:

-j :相当于-text3  格式为日志型文件系统

-I :指明inode与字节的比例   即每多少个字节创建一个inode

-N:给此文件系统直接创建多少个inode

-m#:指定预留给superuser的空间,直接表示为预留#%,默认5%,大磁盘不需预留太多

-O[^]feature 可以指明额外具有的某些特性,^表示不启用此特性

tune2fs中可以查看具体特性

e2label  e2系统的卷标管理工具

e2label /dev/DEVICE NEWLABEL修改label

e2label /dev/DEVICE 查看label

tune2fs 可以查看修改文件系统属性信息,文件块大小不可修改

tune2fs –l /dev/Device可以列出超级块信息

tune2fs修改文件属性:

tune2fs   –j :ext2->ext3

-L  :修改卷标

-m  :修改预留百分比,默认5%

-O     [^]FEATURE 开启关闭某些特权

-o  [^] acl:开启关闭某些挂载选项

-l   显示超级块信息:显示整个文件信息及布局等相关信息

dumpe2fs  只能查看文件信息,不能修改

dumpe2fs [-h]/dev/DEVICE

文件系统检测:

因意外导致的文件系统出错需进行文件系统检测,检测过程应该离线进行,先umount

fsck –t type=fsck.type

-a  自动修复(修复错误为删除错误,慎用)

-r      交互式修复

-f   强制修复

Ext文件系统专用修复:

e2fsck  -y 对所有文件系统错误自动修复

-f  强制检测所有文件系统,即使其为clean

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

f3e7e42ed30e6e96a38cb9b6ed112e58.png

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

%s/^[[:space:]]/#&/

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

%s@/etc/sysconfig@/var/log@gi

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

%s@^#[[:space:]]@ @i

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

db73d6b737ef2cbf14cac3f18fd6225b.png

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

ff0ebc6efc57a4901003257b49ad62e2.png

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

9edaf72487921cbb613ac29279e3bb0f.png

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

find / -nouser -nogroup -atime -7

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

find /etc -size +20k -type f

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

find /etc/ -not -perm /222

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

find /etc/ -not -perm -111

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

find /etc/init.d -perm 113

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

185688bc31cfa8f2357f83f85a8cf351.png

14、创建目录/test/data,让某组内普通用户对其有写权限,且创建的所有文件的属组为目录所属的组;此外,每个用户仅能删除自己的文件

a58e3c535f8401707799f105148f646a.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值