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

[经验分享] Vim编辑器,find命令及bash环境配置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-9-8 08:20:04 | 显示全部楼层 |阅读模式
                      1、总结文本编辑工具vim的使用方法;
  全屏幕的编辑器:VIM
  vi: visual interface
  sed:行编辑器
  vi, vi iMproved
  vim:
  模式化:
  编辑模式:命令模式
  输入模式:
  末行模式:
  编辑模式 --> 输入模式:
  i: insert,
  a:append,
  o:new line,
  I: 行首
  A:行尾
  O:上方新建行
  输入模式 --> 编辑模式:
  ESC
  编辑模式 --> 末行模式:
  :
  末行模式 --> 编辑模式
  ESC
  打开vim:
  # vim
  # vim /PATH/TO/SOMEFILE
  +#:#为行号;
  +/PATTERN
  关闭vim:
  :q
  :q!
  :wq
  :x
  ZZ:保存退出
  光标跳转:
  字符间跳转:
  h:
  l:
  j:
  k:
  #COMMAND:
  单词间跳转:
  w:后单词的词首
  e:当前或后一个单词的词尾;
  b:当前或前一单词的词首;
  #COMMAND:
  行内跳转:
  ^: 跳转至行首的第一个非空白字符;
  0:跳转至行首;
  $: 跳转至行尾;
  行间移动:
  #G:
  1G, gg
  G
  句间移动:
  )
  (
  段落间移动:
  }
  {
  编辑命令:
  字符编辑:
  x: 删除光标所在处的字符
  #x:
  xp:
  r: 替换光标所在处的字符;
  删除命令:
  d:
  d^
  d$
  d0
  dw, de, db
  dd:
  #COMMAND
  注意:删除的内容会被vim编辑器保存至缓冲区当中;
  粘贴:p (paste, put)
  如果此复制或删除的内容不是一个完整行
  p:粘贴至当前光标所在处后面;
  P:粘贴至当前光标所在处前面;
  如果复制的内容是完整行(可不止一行)
  p: 粘贴至当前光标所在行下方;
  P:行上方;
  复制命令:y, yank
  y
  y$, y^, y0
  ye, yw, yb
  yy: 复制行
  #COMMAND
  改变命令:c, change
  c$, c^, c0
  cb, ce, cw
  cc:
  #COMMAND
  撤消此前的编辑操作:
  u: undo
  撤消此前编辑操作;
  #u
  Ctrl+r:
  恢复此前的撤消操作
  .: 重复前一个编辑操作
  翻屏操作:
  Ctrl+f: 向后一屏;
  Ctrl+b:向前一屏;
  Ctrl+d: 向后半屏
  Ctrl+u: 向前半屏
  vim内建教程:
  vimtutor
  vim的末行模式
  (1) 地址,定界
  :start_pos,end_pos
  #:第#行;
  #,#
  #,+#
  .: 当前行
  $: 最后一行
  %: 全文,相当于1,$
  /pat1/:第一次被此模式所匹配到的行;
  #,/pat1/
  /pat1/,/pat2/
  后可跟编辑命令:
  d, y
  w, r
  (2) 查找
  /PATTERN:向尾部进行
  ?PATTERN:向首部进行
  n: 与命令同方向
  N:与命令反方向
  (3) 查找替换
  s: 在末行模式下,在地址定界的范围内完成查找替换操作;
  s/要查找的内容/替换为的内容/修饰符
  要查找的内容:可使用模式
  替换为的内容:不能使用模式,但可以使用后向引用符号,以引用前面模式中的分组括号所匹配到的内容;
  \1, \2, ...
  &:引用"要找的内容"匹配到的整个内容;
  修饰符:
  i: 忽略大小写
  g: 全局替换
  /:用于分隔符,所以,要查找的内容或替换为的内容中出现此符号,要使用\对其转义,使用格式:\/
  分隔符可替换为其它字符:例如@,#等;
  多文件模式:
  vim FILE1 FILE2 ...
  :next
  :first
  :prev
  :last
  :wqall
  :q!all
  多文件窗口分割:
  vim -o|-O FILE1 FILE2 ...
  Ctrl+w, ARROW
  单文件窗口分割:
  Ctrl+w, s: split, 水平分割
  Ctrl+w, v: vertical, 垂直分割
  定制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
  :help 获取帮助
  :help SUBJECT
  特性设定的永久生效方式:
  全局配置文件:/etc/vimrc
  用户个人的配置文件:~/.vimrc
  2、总结文件查找命令find的使用方法;
  find命令:
  find [OPTION]... [查找路径] [查找条件] [处理动作]
  查找路径:默认为当前路径;
  查找条件:指定的查找标准,可以根据文件名、大小、属主属组、类型等进行;默认为找出指定路径下的所有文件;
  处理动作:对符合条件的文件做什么操作;默认为输出至屏幕;
  查找条件:
  根据文件名进行查找:
  -name "文件名称": 支持使用glob;
  *, ?, []
  -iname "文件名称":不区分字符大小写,支持使用glob;
  -regex "PATTERN":以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称;
  根据属主、属组查找:
  -user USERNAME: 查找属主为指定用户的文件;
  -group GROUPNAME:
  -uid UserID: 查找文件的属主指定uid的文件;
  -gid GroupID:
  -nouser: 查找没有属主的文件;
  -nogroup:查找没有属组的文件;
  根据文件类型进行查找:
  -type TYPE
  f: 普通文件
  d: 目录
  l: 符号链接
  b: 块设备
  c: 字符设备
  p: 命名管道
  s: 套接字
  组合查找条件:
  与条件:-a
  或条件:-o
  非条件:-not, !
  !A -o !B = !(A -a B)
  !A -a !B = !(A -o B)
  根据文件大小来查找:
  -size [+|-]#UNIT
  单位:k, M, G
  #UNIT: (#-1,#]
  +#UNIT: (#,+oo)
  -#UNIT:[0,#-1]
  根据时间戳:
  以"天"为单位
  -atime [+|-]#
  #:[#,#+1)
  +#: [#+1,oo]
  -#: [0,#)
  -mtime
  -ctime
  以"分钟"为单位
  -amin
  -mmin
  -cmin
  根据权限:
  -perm [/|-]MODE
  MODE: 精确权限匹配
  /MODE:任何一类对象(u,g,o)的任何一位权限符合条件即可;隐含或条件;
  /400
  -MODE:为每一类对象指定的每一位权限都必须同时存在方为符合条件;隐含与条件;
  处理动作:
  -print: 默认处理动作
  -ls:类似于对查找到的每个文件做"ls -l"的操作;
  -delete: 删除查找到的文件;
  -fls /path/to/somefile:查找到的文件的详细路径信息保存至指定文件中;
  -ok COMMAND {} \;
  对每个文件执行指定的命令之前需要用户事先确认;
  -exec COMMAND {} \;
  无需用户确认;
  3、总结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
  定义环境变量:
  export name=value
  declare -x name=value
  查看:env, printenv, export
  撤消变量:
  unset name
  引用变量:
  ${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
  4、总结Linux文件系统上的特殊权限(SUID、SGID、Sticky)的知识点;
  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...
  5、总结Linux磁盘管理、文件系统相关知识点及其相关命令的使用方法;
  Linux磁盘管理
  硬盘:
  机械式硬盘
  SSD
  机械式:
  track
  sector: 512bytes
  cylinder: 分区的基本单位;
  MBR:Master Boot Record
  512bytes
  446: bootloader
  64: filesystem allocation table
  16: 标识一个分区
  2: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,随机设备
  "字符":character,线性设备
  GPT
  分区:分隔存储空间为多个小的空间,每个空间可独立使用文件系统;
  分区工具:
  fdisk, parted, sfdisk
  fdisk工具的使用:
  最多支持在一块硬盘上的15个分区;
  分区管理子命令:
  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
  光盘:iso9660
  Windows: fat32(vfat), ntfs
  Unix: ffs, ufs, jfs, jfs2
  网络文件系统:nfs, cifs
  集群文件系统:ocfs2, gfs2
  分布式文件系统:ceph,
  moosefs, mogilefs, hdfs, gfs, glusterfs
  (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
  LABEL, UUID, TYPE
  Vim编辑器的练习
  1、复制/etc/grub2.cfg配置文件至/tmp目录,用查找替换命令删除/tmp/grub2.cfg文件中的行首的空白字符;(CentOS6为: /etc/grub.conf)
   wKiom1Xq8j_yx0U2AAE-W9JvDQs725.jpg
  2、复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行的行首加一个#; 原有空白字符保留;
   wKiom1Xq8kCwZC9_AAHbqXwSVxo366.jpg
  3、替换/tmp/functions文件中的/etc/sysconfig/init为/var/log;
   wKiom1Xq8kGSR3B5AAG2xMy7u7Y231.jpg
  4、删除/tmp/functions文件中所以#开头,且#后面至少跟了一个空白字符的行的行首#;
   wKiom1Xq8kLhiE5VAAG5BcaJK4A454.jpg
  文件查找中find命令练习
  1、查找/var目录属主为root,且属组为mail的所有文件;
   wKioL1Xq9GjQ79LJAABemZopDYE765.jpg
  2、查找/usr目录下不属于root、bin或hadoop的所有文件;
   wKiom1Xq8kKx_FO9AABlWFyC2Hs896.jpg
  3、查找/etc目录下最近一周内其内容修改过,且属主不为root或hadoop的所有文件;
   wKioL1Xq9GihGztxAABdpG_KDyg764.jpg
  4、查找当前系统上没有属主或属组,且最近一周内曾被访问过的所有文件;
   wKioL1Xq9GnTwzl_AAHA6TMMVQc029.jpg
  5、查找/etc目录下大于20k且类型为普通谁的的所有文件;
   wKiom1Xq8kSjzG6wAAO3E24cg_0176.jpg
  6、查找/etc目录下所有用户都没有写权限的文件;
   wKiom1Xq8kXDvl2pAAKr_vOa7Nw549.jpg
  7、查找/etc目录下至少有一类用户没有执行权限的文件;
   wKioL1Xq9GzDYsRnAAIUP_xysLE859.jpg
  8、查找/etc/init.d目录下,所有用户都有执行权限,且其它用户拥有写权限的文件;
   wKiom1Xq8kbglyyPAABVCqiy-rg739.jpg
  bash环境配置的练习
  1、让普通用户能使用/tmp/cat去查看/etc/shadow文件;
   wKioL1Xq9G3TYzozAALBOG83l2g741.jpg
  2、创建目录/test/data,让某组内普通用户对其有写权限,且创建的所有文件的属组为目录所属的组;此外,每个用户仅能删除自己的文件;
   wKioL1Xq9G7Tn9_rAAJgizT5h-c854.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-110767-1-1.html 上篇帖子: Linux系统任务计划(at、crontab)的使用方法 下篇帖子: Linux系统磁盘管理及文件系统管理中各类命令使用 编辑器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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