码迷,mamicode.com
首页 > 其他好文 > 详细

学习笔记(8)

时间:2018-04-20 14:33:08      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:学习笔记

1.在/etc/profile.d/env.sh中写入的配置信息不需要#!/bin/bash

2.cmd='hostname' #cmd 执行cmd所指向的命令 hostname

3.[[  ]] 支持扩展正则表达式,[[ == *i* ]] 匹配包含i的字符串 man bash 查找[[,要使用转义字符  pattern matching

4.cmd1 || cmd2 && cmd3 逻辑判断说明

  cmd2 is always true

  cmd1 true  cmd2 不执行,cmd3 执行

  cmd1 false cmd2 执行,cmd3 不执行


  cmd1 && cmd2 || cmd3

  cmd2 is always true

  cmd1 is true cmd2 执行,cmd3 不执行

  cmd1 is false cmd2不执行,cmd3 执行

5.read x y z << 'i j k' 使用文件赋值需要使用空格分隔

  read x y z < f1

6.补充正则表达式 yes or No

  [[ $ANS =~ ^[Yy]+([Ee][Ss])?$ ]] && echo "yes" 

  [[ $ANS =~ ^[Nn]+[Oo]?$ ]] && echo "No"

7.source . 运行脚本在当前的shell中运行,用于导入脚本中的变量导入当前shell

8.脚本中不支持别名的使用,一般不在脚本中使用别名

9.全局配置和局部配置中的通用文件:~/.bashrc, etc/bashrc, /etc/profile.d/*.sh

   全局用户配置文件(执行顺序):/etc/profile, /etc/profile.d/*.sh, ~/.bash_profile, ~/.bashrc, /etc/bashrc

   局部用户配置文件(执行顺序): ~/.bashrc, /etc/bashrc, /etc/profile.d/*.sh

10.~/bash_logout 配置文件可以用来退出删除文件等等,如添加rm -rf /tmp/*

11.$-符号在/etc/profile 中有用到

   h: hashall ,hash所有外部命令的 set +h 将h选项关闭

   i: 包含i说明当前shell是一个交互式的shell

   m: 监控模式,可以控制进程的启动、停止,前台执行和后台执行

   B: 大括号扩展

   H: 展开历史命令,可使用!!,!n 等

12.新添加的PATH变量的尽量放到前面,防止新添加变量与PATH中自带的命令有冲突

13.只有bash中使用.或source来读取变量,如vimrc 是自动调用,不需要。

14./var/lib/mlocate/mlocate.db 可以通过该数据库文件的时间来判断数据库的更新时间,如果需要更新可以使用 updatedb

15.locate -r "^/etc/.*\.conf$"  可以指定路径,匹配的是全路径的结尾包含.conf所有的文件

16.find /data --maxdepth 3 --mindepth 3 -name f1 指定只在第三级目录中的f1文件

   find /data -name "*f1*"  通配符而不是正则表达式,注意要加双引号

   find 搜索节点编号可以查找相同 硬链接

   find /home -user wang -ls 长格式

   find /home -user wang -name "*.sh" -ls  并且关系(等价于-a选项,默认是并且关系)

17.systemctl restart sshd 重启sshd

18.pdf 实验

19.空文件占用inode 可以考虑查找后删除, # find / -type f -empty  查找空文件

20.mspaint 画图(windows中)

21.find中的括号要使用转义 防止当成子shell执行如:find /tmp \(-not -user root -a -not -name "f*"\) -ls

22.find -prune 去除某个目录搜索

   # find /etc -path '/etc/sane.d' -a -prune -o name "*.conf"

23.find -perm -666   110 110  为位有没有权限, 至少有rw权限,777包含在内

   find -perm /002 或者关系  检查权限 0 不检查  1检查  /并集  -交集

   + 和/ 的含义相同  一个6版本 一个7版本

24. -delete 不提示 慎用 -ls

25.find -name "f*" -ok rm {} \; 有提示 -exec 不提示

26.find  .. mv {} {}.bak \; 改名

   ...cp {} {}.orig \;

27.find / -size +10M -exec mv {} /data{}

28.xagrs -0 切割成换行 参数在一行需要分行 -n2 两个一组传递给touch

29.echo f{1..10000}|xargs -n1 touch  每行一个参数,一个一个传递给touch

30.-n 控制一次传多少参数 xargs -n2 将以空格分隔的一行内容以2个一组独立分行,用于无法接受太多参数的情况

31.compress file 直接压缩

32.compress -c f > file.z

33.zcat m.z > mm

34.压缩工具要查看后缀名,对于压缩后的文件如果删除或者修改后缀名将无法解压缩

35.压缩文件不需要指定后缀名,系统会自动添加响应的后缀名

36.tar -zcpvf data.tar.gz /data

37.xvf 不看后缀统统可以解压缩,xz bz2 gz

38.tar -T -X 使用的是文件列表

39.cat 可以合并使用split -b 1M -d  mybackup.tar.gz mybackup-parts分割的文件

    cat mybackup-parts > mybackup.tar.gz

40.cpio 压缩文件和解压缩文件、查看文件需要使用重定向符号(cpio命令是通过重定向的方式将文件进行打包备份)

   如: cpio -tv < /boot/initramfs-3.10.0-514.el7.x86_64.img  查看该cpio压缩文件里的文件内容

       cpio -idv < /boot/initramfs-3.10.0-514.el7.x86_64.img 

       find ./kernel | cpio -ov kernel.cpio  使用find查找目录中的所有文件并压缩

41.sed -n  关闭模式空间的默认打印

42.pattern 正则表达式 除 [[]]  ==

43.sed  -n '/root/p' /etc/passwd

   sed  -n '$p' 

44.sed 支持正则表达式 扩张正则表达式

45.sed -n -e '2p' -e '6p' f1

46.sed '2d' f1 sed '2!d' 除了第二行全删,模式匹配的后面为取反号

47.模式空间单行处理,默认打印输出

48.sed -n '/root/=' /etc/passwd =加行号

$= 就是文件的最后一行

49.sed '2,5a=====' f1 追加

50.sed -i.bak '**' ... 修改前加备份  好用

51.单双引号有冲突是 区分开就可以

52.sed '2,5a\   ====' 斜线便是开始 后面是附加的内容 注意有空格

53.sed '2,5c\ ====' 代替

54.sed '2w f2' f1 符合条件的行保存至f2 r是读入

55.sed 没有地址默认全文档

56.sed 支持正则表达式 也支持后向引用

57.sed -r 's/(.*)/\1magedu/' /etc/passwd

58.sed -r 's/(.*)/magedu\1/' /etc/passwd

59.sed -r 's@/(bin/bash)$@/s\1@' /etc/passwd

60.sed -r 's/(quiet)"$/\1 xyz' /etc/default/grub

61.sed -r '/GRUB_CMDLINE_LINUX/s/"$/ xyz"/' /etc/default/grub

62.ip地址替换 ifconfig ens33 2!d;s@... 直接处理第2行  全行替换某一个,去除行中内容

63.sed  -r 's/(.*\/)([^/]+\/?$)/\2/' echo "/etc/sysconfig/network"

64.&引用前面的字符串

65.去除ifconfig ens33的ip地址

   ifconfig ens33 |sed -n '2p' | sed -r 's/.*inet (.*)( netmask.*)/\1/'

   ifconfig ens33 |sed -n '2p' | sed -r 's/.*inet //' | sed -r 's/ netmask.*//'

   ifconfig ens33 |sed -r '2!d;s/.*inet (.*) net.*/\1/'   2!d 除了第2行的其余的行全部删除

66.取出某一行的文本内容可以使用 

   sed -n '2p' /etc/passwd 只打印第2行的内容

   sed '2!d' /etc/passwd  除了第2行的内容全部删除

67.取出路径中的dirname : echo "/etc/sysconfig/network/" | sed -r 's@(.*/)((.+/?)+)$@\1@'  

   取出路径中的basename: echo "/etc/sysconfig/network/" | sed -r 's@(.*/)((.+/?)+)$@\1@'

68.只打印文本的最后一行 #sed -n '$p' /etc/passwd

   打印包含root的行 # sed -n '/root/p' /etc/passwd

   打印以root开头的行 # sed  -n '/^root/p' /etc/passwd

   打印以root开头的行至sync开头行之间的所有行: sed -n '/^root/,/^sync/p' /etc/passwd

   打印奇数行: # echo {1..10} | xargs -n1 | sed -n '1~2p' 打印奇数行 (xargs的 -n1 表示一行输出的以空格分隔的行转换成回车,并且每行一个)

   打印偶数行: # echo {1..10} | xargs -n1 | sed -n '2~2p' 打印偶数行

   输出符合条件的行至某文件: sed -n '/^root/,/^sync/w /tmp/part.txt' /etc/passwd 

   打印出文件的空行的行号: sed -n '/^$/=' /etc/rc.d/init.d/functions  

69.sed 在使用追加、插入、修改的时候如果要加入空格记得使用\ 转义

   sed '1,2a\  ' /etc/passwd  追加是在所在行的行下追加

   sed '1,2c\HHHHHHHHH' /etc/passwd 将第一行和第二行 以HHHHHHHH 来替换

   sed '1,2iaaaaaaaaa'  /etc/passwd  将aaaaaaaaa 插入至所在行的行前

70.sed -i.bak  '/^$/d' test  删除test文件中的空白行,并使用-i.bak做原始文件的备份并修改原文件

71.nl /etc/passwd |sed '2,5d'  将/etc/passwd 添加行号后,再删除2到5行

72.sed -n '/^root/s/^root/&er/p' /etc/passwd 搜索文件中的root开头的行,并将第一个root转换为rooter

   sed -n '/^root/s/root/&er/gp' /etc/passwd  修改该行中所有的root为rooter  注意打印的时候要用gp

73.sed -e 's/root/HHHH/g' -e 's/sbin/GGGGG/g' /etc/passwd

   sed  -n -e  's/root/HHHH/gp' -e  's/sbin/GGGGG/gp' /etc/passwd 注意使用gp 和是用 -e

74.locate的数据库文件位置: /var/lib/mlocate/mlocate.db

75.find 命令默认是递归查找的,所以不需要添加*

76.交互式登录:

   1.直接通过终端输入账户密码登录

   2.使用su - username 切换的用户

   执行顺序: /etc/profile, /etc/profile.d/*.sh, ~/.bash_profile, ~/.bashrc, /etc/bashrc


   非交互式登录:

   1.图形化窗口打开的终端

   2.执行脚本

   3.su usernma的部分切换

   执行顺序: ~/.bashrc /etc/bashrc, /etc/profile.d/*.sh

77. [root@node1 boot]# file initramfs-3.10.0-514.el7.x86_64.img 

initramfs-3.10.0-514.el7.x86_64.img: ASCII cpio archive (SVR4 with no CRC)

查看cpio压缩后里面文件内容: # cpio -tv < /boot/initramfs-3.10.0-514.el7.x86_64.img 

78.find中的时间-n 表示的是n天以内, +n 表示的n天以前

79.正则表达式使用^号来锚定行首,使用[^] 来排除[]之内的任意字符,在通配符中只有排除任意字符的使用,正则表达式大部分情况下是用来查找文本内容的,

   可以通过^锚定行首内容并通过正则表达式对所找到的行进行字符的查找,常用到正则表达式的命令有 grep sed [[ =~ ]] vim中 find,其余的ls 使用的是通配符,在[[ == ]]中也可以使用通配符,在[[ =~ ]] 中使用的是扩展的正则表达式,sed可以指定-r选项来使用扩展的正则表达式,find 需要使用-regex 来使用正则表达式,如果为给出,则使用的是文件的通配符

80.查找以.conf结尾的文件 #locate "\.conf$" 注意要转义,因为.在正则表达式中为单个任意字符,需要转义成普通字符,也可以写成 # locate -r '[.]conf$',在[]中的.不需要转义


学习笔记(8)

标签:学习笔记

原文地址:http://blog.51cto.com/9980200/2105722

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!