Shell basic1

查找:

  1. find:
    1. 实时查找,精确,速度慢,支持正则
    2. find 查找路径 查找标准 查到后处理动作
    3. 查找路径默认当前目录,查找标准默认路径下所有文件,动作默认打印到屏幕
    4. 匹配标准:
      1. -name 'filename' :精确匹配:通配:* ? []
      2. -iname 不区分大小写
      3. -regex pattern :使用正则表达式
      4. -user username:根据用户名查找
      5. -group
      6. -uid
      7. -gid
      8. -nouser
      9. -nogroup
      10. -type:
        1. f普通文件 : -type f
        2. d目录文件
        3. l链接文件
        4. c字符设备
        5. b块
        6. p管道
        7. s套接字
      11. -size:默认字节
        1. 【+|-】 # 【K|M|G】 
          • +10k 大于10k
          • -10k小于10k
          • 10k代表9k-10k之间的都显示
      12. 查看某段时间内改动创建的文件[+|-]# :+#至少#天;-#:#天内 ;#:#天
        1. -mtime内容改变
        2. -ctime权限属性改变
        3. -atime最后一次访问时间
        • find ./ -mtime -5 -name 'c'
      13. 权限匹配:
        1. find ./ -perm mode精确: find ./ -perm 664 
        2. find ./ -perm -mode只要有一项匹配即可
        3. find ./ -perm /mode mode以上才能匹配:755可以匹配644,750不可.

正则表达式:
  1. . 表示任意单个字符
  2. * 表示匹配前行字符任意次。
  3. \? 表示匹配前行字符0/1次:注意\ 是转义符。这个时候要和双引号一起使用。
  4. 位置锚定
    1. ^锚定行首: '^abc'
    2. $锚定行尾: 'abc$'
    3. ^$ 空白行
    4. \< 锚定单词的词头, 等价于\b: grep \<root\>
    5. \> 锚定单词的词尾,等价于\b
  5. 分组:为了实现后向引用。
    1. cat a|grep "\(l..e\b\).*\1r":把文件a里面的内容中love lover/like liker之类的行挑选出来。
  6. [] 匹配指定范围任意单个字符
    1. [^]取反
    2. [a-zA-Z0-9]
    3. 特殊字符:[:space:][:punct:][:lower:][:upper:][:alpha:][:digit:][:alnum:]
  7. 扩展正则表达式中增加的功能:
    1. 次数:+:前行单字符出现至少一次。{m,n}前行单字符出现m到n次,含m,n。
    2. |:选择 grep -E "(C|c)at" :选出大小写的猫。
  8. grep的几个参数:
    1. -i 忽略大小写
    2. --color 加颜色
    3. -v 反向查找
    4. -o 只显示字符串
如何生成列表:

  1. {1..100}:自动展开成列表
  2. seq 5 10 序列:seq [起步 [步长]] [结束数]
  3. `ls /etc`

字符编辑:
  1. |:管道,前一个命令的输出作为后一个命令的输入
  2. 输入输出:
    • 0  标准输入
    • 1  标准输出
    • 2  错误输出
    • >  >>  覆盖输出和追加输出
    • <  <<  覆盖输入和追加输入
    • set -C 如果某个文件存在禁用>
    • >| 强制覆盖(当set -C时是不允许覆盖的)
    • set +C取消禁用
    • &> => + 2> 常用&>/dev/null
    • cmd [] []<< EOF    脚本中使用,用来解决脚本中运行交互式程序的问题。
    • EOF
  3. cat
    • -n显示行号, -E显示行结束符$
    • tac将cat的内容反写
  4. Less:翻页设置见Man。弱化的功能为more
  5. tail/head -n20 文件名
  6. cut -d: -f1 /etc/pasword 默认是空格
  7. tr 'ab' 'AB' < 文件名:针对单个字符操作。
    • tr -d 'ab' 碰到a和b就删除。
    • 'a-z' 'A-Z'转换大小写,'ab' 'cd' a换c,b换d
  8. sort 默认按ASCII码升序
    • sort -t: -k3 -n -r /etc/passwd|cut -d: -f3 
    • -f 忽略大小写
    • -u 相同的只显示一行
  9. Uniq:行必须相邻
    • -d 只会显示重复的行一次 /其它行不会显示
    • -D 重复的行全部显示/其它不重复行不显示
    • -c 在行首显示重复的次数/不可以和D共用
  10. wc :结果返回:行 字母数 字节数
    • -l行数 -w单词数 -c字节数 -m字符数 -L最长行的字符数
通用命令行命令:
  1. $# 传给脚本的参数数量
    $0 脚本本身的名字
    $1 传递给该shell脚本的第1个参数
    $2 传递给该shell脚本的第2个参数
    $@ 传给脚本的所有参数的列表
    $* 以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
    $$ 脚本运行的当前进程ID号
    $? 命令执行结果反馈,0表示执行成功,其余数字表示执行不成功:exit n.
  2. 查看cmd本身信息:命令 cmd
    1. whatis:显示命令在Man的哪一个章节
    2. type:是否shell内置命令,如果不是,会显示cmd is 目录
    3. which:获取命令的目录。
  3. 系统环境设置:
    1. date; date +%s;
    2. clock
    3. hwclock -s; hwclock -w
    4. ls -i 文件 显示inode号
    5. ctl z送入后台并停止作业
    6. cmd [option] arg1 arg2 ...&:命令后台运行。
    7. bg:让后台停止的作业继续运行。
    8. jobs:查看后台所有的作业
    9. fg jobid:调回前台
  4. 命令和字符的转换
    1. ~: cd ~oracle
    2. -: cd -
    3. {}: touch {a, b, c, d}{m,n}会创建8个文件。
    4. ··:反引号,可以展开命令结果。
    5. ${}:括号内的命令执行结构也会被展开。也可以放入变量。不发生歧义情况下,可以省略{}.
    6. “”:双引号,在双引号中变量会展开为变量值
    7. ‘’:单引号,变量不会展开,只能作为字符。
    8. \:转义,会使特殊字符变成普通字符。
  5. 命令行编辑
    1. ctl a/e:光标快速到行首或行尾。
    2. ctl k/u:从光标处删除到行首/尾。
    3. ctl -> <-:跳跃单词
    4. ctl L:清屏
    5. !执行历史命令,!n执行第n行,!!执行上一条,!字符,给定字符最近一次。
    6. 命令别名:alias cmd='cmd [option1] [option2]'
  6. 文件名通配:
    1. *:任意长度任意字符
    2. ?:任意单字符
    3. []:制定范围内的任意单字符
    4. [a-zA-Z0-9]
    5. 特殊字符:[:space:][:punct:][:lower:][:upper:][:alpha:][:digit:][:alnum:]
    6. 特殊字符集合中的任意一个需要加双中括号:[[:alnum:]]
  7. 超级常用命令:
    1. cp 源1 源2... 目的:不管源多少目的只有一个。
      • -p:保留属性(o和g不变,正常拷贝,og会变成使用拷贝的用户的)
      • -P:保持连接。拷贝链接本身,不过引用的路径只能是相对路径,如果链接自身位置变化,则链接会失效。
      • -R/r递归复制。
      • -f强制覆盖
      • -L对软链接拷贝时,拷贝的实际上是背后的文件。
      • -f强制覆盖
    2. mv 源1 源2 ...目的
      • mv -t target scorce
    3. install source ... target
      • install -d /dir :创建目录
      • install -t target source...
      • install 的文件自动有执行权限
Man 
  1. 8个章节
    1. 所有用户使用的命令
    2. 表示系统调用
    3. 库调用
    4. 特殊文件
    5. 文件格式
    6. 游戏
    7. 杂项
    8. 管理命令
  2. 格式说明
    1. []可省略
    2. |多选一
    3. <>必须给出
    4. ...可以多次出现
    5. Name:命令名称及功能的简要说明
    6. Synopsis:用法说明,包括可用选项
    7. Desc:详细说明
    8. Options:每个选项的意义
    9. Files:相关配置文件
    10. Bugs:
    11. Examples:使用示例
  3. Man的页面操作:
    1. 翻页:space下一页,b上一页
    2. 翻行:回车下一行,k上一行
    3. 查找:/keyword 前--->后
      • ?keyword 向前找
      • n向后找下一个
      • N向前找下一个
    4. 退出:Q/q