设为首页 收藏本站
查看: 956|回复: 0

[经验分享] linux下vim,find

[复制链接]

尚未签到

发表于 2018-5-22 08:44:38 | 显示全部楼层 |阅读模式
8-30Study

vim文本编辑工具:

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

         编辑模式:

             d:删除字符

             dd:删除整行

             y:复制字符

             yy粘贴整行

             zz:保存退出

             x:剪切单个字符

            #x: 剪切x个字符

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

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

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

            dwdedb 删除单词,支持#来指明涵盖单词个数

   

         行级别的粘贴:

                 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  %表示全文,全文替换KEEPkeep


Vim [option]… [File]…

         +# 快速定位到#

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


Vim File1 File2 File3…

         末行模式:

                   next 下一个

                   prev 前一个

                   first 第一个

                   last最后一个


    退出所有文件:

                   wqll 保存退出全部

                   wall 保存全部

                   qall  退出全部


    多窗口:

                   -o 水平分割窗口

                   -O 竖直分割窗口


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

         

         窗口也可多次分割:

                   Ctrl+ws:水平分割

                   Ctrl+wv:竖直分割


界面显示设定:

         末行模式下:开启行号:setnumber或者 set nu 关闭行号:set nonumberset 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<x<=n+1

                +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<x<=n
                -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扇区,主引导扇区

                 三部分:

                   446bytesbootloader,程序

                   64bytes:分区表

                   16bytes:标示一个分区

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

                   2bytes55AA,当前MBR信息是否有效

MBR最多支持2T分区

    文件系统:

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

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

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

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

        非日志文件系统:ext2

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



VFS:Virtual File System

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

             光驱:iso9660

             网络文件系统:ntfcifs

            集群文件系统:gfs2ocfs2

            分布式文件系统:ceph

             Windows文件系统:ntfsvfat

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

             Unix文件系统:FFSUFSJFS


文件系统管理工具:

             创建文件系统:

                   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文件中的行首的空白字符;

DSC0000.jpg

  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的所有文件;
      DSC0001.jpg
  6、查找/usr目录下不属于root、bin或hadoop的所有文件;
      DSC0002.jpg
  7、查找/etc目录下最近一周内其内容修改过,且属主不为root或hadoop的所有文件;
      DSC0003.jpg
  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文件;
   DSC0004.jpg
  14、创建目录/test/data,让某组内普通用户对其有写权限,且创建的所有文件的属组为目录所属的组;此外,每个用户仅能删除自己的文件
      DSC0005.jpg





























































   


        

        



  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-478913-1-1.html 上篇帖子: 【linux】【if】判断 下篇帖子: linux命令scp
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表