linux运维练习-vim编辑和文件查找(8月30)

1、总结文本编辑工具vim的使用方法;
   光标跳转:
       字符跳转:
        h:向左移动一个字符
        l:向右移动一个字符
        h:向上移动一个字符
        j:向下移动一个字符
       在(hjkl)前加上数字,表示跳转几个字符
  单词跳转:
       w:后单词的词首
       e:当前或者后一个单词的词尾
       b:当前或者前一单词的词首
       在(web)前加上数字,表示多次移动
  行间移动:
      #G:第#行的行首
      gg:文档的行首
      G:文档的行尾
  句间移动:
      (:上一句
      ):下一句
  段落间移动:
      {:上一段
      }:下一段
  
 编辑命令:
        字符编辑:
            x:删除光标所在处的字符,前面加上#(数字)表示删除光标后的#个字符
        xp:剪切和粘贴,在光标后面粘贴上删掉的字符
         r:替换光标所在处的字符,#r表示把从光标开始的连续几个字符更换为某个字符,如4rd表示,将

更换为dddd
  删除命令:
      d:
         d^:删掉本行第一个非空白字符到本光标间字符(不包含光标所在处的字符)
        d$和D:删掉本行光标后的字符(包含光标所在处的字符),如果在后面加上#(数字),表示到从光标开始到第#行行尾
     d0:表示删除从当前光标到光标所在行首的内容(不包含光标所在处的字符)
     dw:删除光标所在处的单词(包括空格)
     de:删除当前光标所在处的单词(当光标所在位置为非空格时)或者光标所在处后一个单词(当光标所在位置为空格时)
     db:删除当前光标到词首的字符(不包括当前光标所在处的字符)
    dd:删除光标所在行
   都支持#COMMAND
 复制命令:
         y(支持选项与删除命令d一样)
           y$:复制光标所在处到行尾的内容
          y^:复制当前光标到行首非空白字符见得内容
          y0:
          ye:
          yw:
          yb:
          yy:复制行
         支持#COMMAND
     
    粘贴命令:
         p
          如果复制或者删除的内容不是一个完成行
              p:粘贴至当前光标所在处的后面
              P:......................前面
         如果复制或者删除的内容是一个完成行(有可能不止一行)
              p:粘贴至当前光标所在行的下方
              P:......................上方
    改变命令:
         c
           c$,c^,c0,cb,ce,cw
          cc:改变行
         也支持#COMMAND
 撤销命令:
         u:撤销此前的编辑操作,#u,表示撤销前#次操作
         Ctrl+r:恢复此前的撤销操作
         .:重复前一个编辑操作
 翻屏操作:
     Ctrl+f:向后翻一屏
     Ctrl+b:向前翻一屏
      Ctrl+d:向后翻半屏
     Ctrl+u:向前翻一屏
   vim末行模式
      (1)地址,定界
       start_pos,end_pos
    #:第#行
       如:#,#:从某行到某行
       #,+#:从某行到以后的几行
    .:当前行
    $:最后一行
    %:全文,相当于1,$
       /part/:第一次被模式匹配到的行
           #,/part/:表示从第#行到被/part/第一次匹配到的行
   后面可以跟编辑命令:
         d:删除
       y:复制
      w:保存,相当于另存为:如1,100w /to_PATH/,表示将1,100行的内容另存到其他文件
      r:在本文档中读取某个文档:如:100r /to_PATH/,表示将某个文件内容读取到本文档100行后面
  (2)查找
        /PATTERN:向尾部进行查找
     ?PATTERN:享首部进行查找
            n:下一个匹配到内容,与命令方向相同
      N:下一个匹配到内容,于命令方向相反
  (3)查找替换
        s:在末行模式下,在地址定界的范围内完成查找替换操作;
       格式:s/要查找的内容/替换为的内容/修饰符
           要查找的内容:可以使用模式
          替换为的内容:不能使用模式,但可以使用后向引用符号,以引用前面模式中分组括号所匹配到的内容
                      \1,\2.....
          &:引用"要查找的内容"匹配到的整个内容
      /:用于分隔符,所以,要查找的内容或替换为的内容中出现此符号,要使用\对其转义,使用格式:\/分隔符可替换为其它字符:例如@,#等;
         
   
 多文件模式:
             vim:FILE1 FILE2 ....
                 :next:下一个文件
                 :first:第一个文件
                 :prev:前一个文件
                 :last:最后一个文件
                 :wqall,退出所有文件并保存
                 :q!all,强制退出所有文件 
    多文件窗口分割:    
            vim -o FILE1 FILE2(竖排打开)
      vim -O FILE1 FILE2(横排打开),Ctrl+w,方向键
 单文件窗口分割:
            Ctrl+w,s:水平分割
      Ctrl+w,v:垂直分割
    定制vim的某些工作特性
            (1)行号
             显示:set nu
       禁用:set nonu
      (2)括号匹配
             显示:set sm
       禁用:set nosm
      (3)自动缩进
             启用:set ai
       禁用:set noai
      (4)高亮搜索
             启用:set hlsearch
       禁用:set nohlsearch
      (5)语法着色
             启用:syntax on
       禁用:syntax off
      (6)忽略字母大小写
             忽略:set ic
       区分:set noic
2、总结文件查找命令find的使用方法
    文件查找:locate,find
     locate: 非实时查找工具;依赖于事先构建的索引;索引的构建是在系统较为空闲时自动进行(周期性任务);手动更新此数据库(updatedb);查找速度快;模糊查找;
  find:实时查找;查找速度略慢;精确查找;
 find命令:
     find [OPTIONS] ... [查找路径] [查找条件] [处理动作]
       查找路径:默认为当前路径
    查找条件:指定的查找标准,可以根据文件名、大小、属主属组、类型等进行;默认为找出路径下的所有文件
    处理动作:对符合条件的文件的操作;默认为输出至屏幕
  查找条件:
      根据文件名进行查找:
        -name "FILE_NAME":区分大小写,支持使用glob;*,?,[]
     -iname "FILE_NAME":不区分大小写,支持使用glob
     -regex "PATTERN":以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称
   根据属主、属组查找:
                 -user UAERNAME:查找属主为指定用户的文件 
                 -group GROUPNAME:查找属组为指定组的文件
                 -uid USERID:查找文件的属主为指定UID的文件
                 -gid GROUPID:查找文件的属组为指定GID的文件
                 -nouser:查找没有属主的文件
                 -nogroup:查找没有属组的文件
            根据文件类型进行查找:
                 -type TYPE
                    f:普通文件
                    d:目录
                    l:符号链接
                    b:块设备
                    c:字符设备
                    p:命名管道
                    s:套接字
            组合查找条件:
                与条件:-a
                或条件:-o
                非条件:-not,!
            根据文件大小来查找:
                 -size [+|-] #UNIT
                     单位:K,M,G
                     #UNIT:(#-1,#]UNIT
                     +#UNIT:(#,+∞)UNIT
                     -#UNIT:(0,#-1]UNIT
   根据时间戳:
                以天为单位
          -atime [+|-]#:最近访问时间
      #:[#,#+1)
      +#: [#+1,oo]
      -#: [0,#)
     -mtime:最近修改时间,文件内容修改
     -ctime:文件改变时间,包括文件内容修改以及文件属性的修改

以“分钟”为单位
     -amin
     -mmin
     -cmin
   根据权限:
       -perm [/|-]MODE
        MODE:精确权限匹配
     /MODE:任何一类对象(u,g,o)的任何一位权限符合条件即可;隐含或条件
           如:/222,表示(u,g,o)中任何一类用户具有写权限即可
        -MODE:为每一类对象指定的每一位权限都必须同时存在方为符合条件;隐含与条件;
                          如:-222,表示(u.g,o)中每一类型用户都必须有写权限才符合
  处理动作:
      -print:默认处理动作
   -ls:对于查找到的每个文件做"ls -l"的操作
   -delete:删除查找到的文件
   -fls /path/to/somefile:查找到的文件的详细路径信息保存至指定文件中
   -ok COMMAND {} \;对每个文件执行指定的命令之前需要用户事先确认,{}表示占位符,代表查找到的文件  
   -exec COMMAND {} \;对每个查找到的文件执行指定的命令时无需用户确认
3、总结bash环境变量的相关内容
    bash环境配置:
        配置文件,按照生效范围划分,存在2类:
            全局配置:
                /etc/profile,/etc/profile.d/*.sh
                /etc/bashrc
            个人配置:
                ~/.bash_profile
                ~/.bashrc
        按功能划分,也存在2类
            profile类:为交互式登录的shell提供配置
                /etc/profile,/etc/profile.d/*.sh
                ~/.bash_profile
                功用:
                    (1)定义环境变量,例如PATH、PS1
                    (2)定义要运行的命令或者脚本 
            bashrc类:为非交互式登录的shell提供配置
                /etc/bashrc
                ~/.bashrc
                功用:
                    (1)定义命令别名,如alias
                    (2)定义本地变量
        变量:内存空间,变量名
      类型:
       环境变量:作用范围当前shell进程及其子进程
       本地变量:作用范围当前shell进程
       局部变量:作用范围仅为当前shell进程中某代码片断(通常为函数上下文)
 
       位置变量:$1, $2
       特殊变量:$?

变量定义方式:
       bash内置变量:可直接调用,内置了许多环境变量,例如PATH等
       自定义变量:
        变量赋值:变量名=值

bash弱类型:
       变量存储数据时,默认均采用字符形式;任何变量可以不经声明,直接引用;
            120:24bits(以字符存储)
            120: 8bits (以数值存储),还包括整型和浮点型
     定义本地变量:
      name=value

查看:set

定义环境变量:
      export name=value
      declare -x name=value

查看:env, printenv, export

撤消变量:
      unset name

引用变量:
      ${name}, $name
  bash中的引用符号:
      ‘‘: 强引用,变量替换不会发生,如设置a=dog,则echo ‘$a‘结果为$a
      "":弱引用,变量替换会发生,如设置a=dog,则echo "$a"结果为dog
      ``: 命令引用
  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
    注意:副作用(可能有重复的环境变量)
4、总结Linux文件系统上的特殊权限(SUID、SGID、Sticky)的知识点;
    Linux文件系统上的特殊权限
     进程的安全上下文:
      前提:进程有属主(进程以哪个用户的身份运行);文件有属主和属组;
      (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...    
5、总结Linux磁盘管理、文件系统相关知识点及其相关命令的使用方法;
    Linux磁盘管理
 机械式硬盘:
     机械式:
      track:磁道
      sector: 512bytes
      cylinder: 柱面,分区的基本单位;

MBR:Master Boot Record(0磁道0扇区),
       512bytes
        446: bootloader
        64: (FAT)filesystem allocation table
         16: 标识一个分区
        2:55AA,用来标记此MBR内的数据是否有效,如果为55AA则为有效,其他则为无效
 
 磁盘接口类型:
  IDE (ATA):133MB/s,/dev/hd
  SCSI: 640MB/s
  SATA:6Gbps
  SAS:6Gbps
  USB:480MB/s
  识别硬盘设备:/dev/sd
   标记不同的硬盘设备:/dev/sd[a-z]
   标记同一设备上的不同分区:/dev/sd[a-z][1-]
    1-4: 主或扩展分区标识
    5+:逻辑分区标识
        设备文件:特殊文件
       设备号:major,minor
        major:设备类型,主要作用之一是让内核去识别配套的设备驱动
     minor:同一类型下的不同设备,主要作用在于让驱动程序去识别同一种驱动程序上所映射到的不同设备
     
   “块”:block,随机设备,标识类型为B
   “字符”:character,线性设备,标识类型为C
  分区工具:
      fdisk, parted, sfdisk
   fdisk工具:
       p: 显示
       n: 创建
       d: 删除
       t: 修改分区ID
       l: 列出所有支持ID类型
       w: 保存退出
       q: 放弃修改并退出
       m: 获取帮助
   
  创建完成之后,查看内核是否已经识别新的分区:
   # cat /proc/partitions

有三个命令可以让内核重读磁盘分区表:
    CentOS 5: partprobe [DEVICE]
    CentOS 6,7:
     partx
     kpartx

partx命令:
     partx DEVICE
     partx -a DEVICE
     partx -a -n M:N DEVICE
      M
      M:
      :N

kpartx命令:
     kpartx -af DEVICE
 Linux文件系统管理
     文件系统:
      VFS:Virtual File System
      Linux:ext2,ext3,ext4,reiserfs,xfs,btrfs,swap等
   (1)日志型文件系统
       非日志型文件系统:如ext2
    日志型文件系统:如ext3
   (2)swap
     创建文件系统:
       在分区上执行格式化(高级格式化)
        要使用某种文件系统,满足两个条件:
    内核中:支持此种文件系统
    用户空间:有文件系统管理工具

创建工具:mkfs (make filesystem)
       mkfs -t type DEVICE

mkfs.type DEVICE

ext系列文件系统的专用管理工具:
      mke2fs -t {ext2|ext3|ext4} DEVICE
      -b BLOCK: 1024, 2048, 4096
     -L ‘LABEL‘: 设定卷标

blkid命令:
        blkid DEVICE

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

命令:  %s/^ \+//g

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

命令:%s/^ /# /g

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

命令:%[email protected]/etc/sysconfig/[email protected]/var/[email protected]

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

命令: %s/^#\( \+\)/\1/g

替换前:

替换后:

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

find -group root -user mail

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

find /usr/ ! -user root -a ! -user bin -a ! -user hadoop

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

find /etc/ -mtime -7 -a ! -user root -a ! -user hadoop

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

find / -nouser -o -nogroup -a -atime -7

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

find /etc/ -size +20k -a -type f

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

find /etc/ ! -perm  /222

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

find /etc/ ! -perm -111 -ls | more

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

find /etc/init.d/ -perm -113 2>/dev/null  -ls

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

chmod  u+s /tmp/cat

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

用户hadoop,属于Hadoop组

usermod -a -G hadoop openstack

chown :hadoop /test/data

chmod g+w data

chmod g+s /test/data/

chmod o+t /test/data/

时间: 2024-10-14 03:32:20

linux运维练习-vim编辑和文件查找(8月30)的相关文章

Linux运维 第二阶段 (六)文件系统管理

Linux运维第二阶段(六)文件系统管理 一.硬盘: 逻辑结构:扇区sectors(磁盘的最小存贮单位).磁道.柱面cylinders: 硬盘大小:磁头数*柱面数*扇区数*每个扇区的大小 注:柱面数表示硬盘每一盘片有几条磁道,扇区数表示每条磁道上有几个扇区 二.文件系统: >超级块(superblock)记录整个文件系统的信息,包括block与inode的总量,已经使用的,未使用的,文件系统的挂载时间,最近一次的写入时间,最近一次的磁盘检验时间: >数据块(datablock)用来实际保存数据

linux运维实战练习-高级班-2015年10月18日-10月24日课程作业(练习)安排

一.作业(练习)内容: 1.阐述Linux HA Cluster的使用背景: 2.总结Linux HA Cluster的系统组成,HA Cluster的工作模型: 3.通过LAMP组合,基于heartbeat v2 crm实现HA:要求,部署wordpress,用于编辑的文章中的任何数据在节点切换后都能正常访问: 二.完成时间: 2015年10月24日之前. 三.提交方式: 请将作业的博文链接地址以评论本博客的形式提交. 格式如: 学员编号+姓名   http://mageedu.blog.51

Linux运维学习之——vim基础

linux下的vim文本编辑器的常用选项. vim(Visual interface Improved)是vi编辑器的增强版,体积小但是功能强大,是linux系统使用最频繁的文本编辑器,所以学好vim也是学好linux必不可少的技能! vim的命令格式: vim [options] [file ..] eg: [[email protected] ~]# vim hello.txt #用vim打开hello.txt文件 vim打开文件后的默认方式为编辑模式(也叫命令模式). 编辑模式(命令模式)

Linux下创建文件和文件夹的方法-老男孩Linux运维学习笔记2

我们可以在Linux里面通过多个命令来创建文件: touch命令创建文件: -创建单个文件: [[email protected] oldboy]# touch oldboy [[email protected] oldboy]# ll 总用量 0 4325378 -rw-r--r-- 1 root root 0 2017-05-27 13:30 oldboy -创建多个文件: [[email protected] oldboy]# touch oldboy1 oldboy2 oldboy3 

Linux运维 第二阶段 (七)高级文件系统管理

Linux运维第二阶段(七)高级文件系统管理 一.磁盘配额: 多用户共同使用一个硬盘,管理员应适当限制硬盘的空间,以妥善分配系统资源. #grepCONFIG_QUOTA /boot/config-2.6.32-279.el6.i686 #rpm–qa | grep quota 用户配额和组配额:磁盘容量限制和文件个数限制:软限制和硬限制:宽限时间. 注:如果用户的空间处于软限制和硬限制之间,系统会在用户登录时警告将满,宽限时间默认7天,如果达到了宽限时间未调整,软限制就会升级为硬限制. #mo

【Linux运维】如何查找大文件或大目录

[Linux运维]如何查找大文件或大目录 目录 [Linux运维]如何查找大文件或大目录 一.如何查找大文件 case1: 查找当前系统中有哪儿文件的大小超过800MB case2: 查找当前系统中有哪儿文件的大小超过800MB,并且向看下文件的其他属性 case3:查找当前系统中有哪儿文件的大小超过800MB,并查看下文件的具体大小 case4:查找当前系统中有哪些文件的大小超过800MB, 并查看文件的具体大小,并对结果做个排序 二.如何查找Linux下的大目录 一.如何查找大文件 case

Linux运维常用命令

Linux运维常用的150个命令 命令 功能说明 线上查询及帮助命令(2个) man 查看命令帮助,命令的词典,更复杂的还有info,但不常用. help 查看Linux内置命令的帮助,比如cd命令. 文件和目录操作命令(18个) ls 全拼list,功能是列出目录的内容及其内容属性信息. cd 全拼change directory,功能是从当前工作目录切换到指定的工作目录. cp 全拼copy,其功能为复制文件或目录. find 查找的意思,用于查找目录及目录下的文件. mkdir 全拼mak

Linux运维 第二阶段 (五)权限管理

Linux运维第二阶段(五)权限管理 一.权限管理(解决用户和身份不足的问题) >#dumpe2fs  -h /dev/sda2             (查询指定分区详细文件系统信息的命令,-h仅显示超级块中的详细信息) #mount  -o remount,acl  /             (重新挂载根分区,加入acl权限) >acl基本命令: #getfacl  文件名                      (查询文件的acl权限) #setfacl  -m  u:用户名:权限

linux运维自动化之puppet简单应用(二)

上篇博客介绍了在单机环境下的puppet应用,这次我们基于C/S模式来介绍下puppet! 一.实验环境 服务器角色 IP地址 安装软件 主机名 服务器端 172.16.8.1 puppet-server www.gulong.com 客户机端 172.16.8.2 puppet node1.gulong.com 客户机端 172.16.8.3 puppet node2.gulong.com 三台主机时间同步: #ntpdate 172.16.0.1 三台主机可以相互解析: # vim /etc