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

Shell Notes

[复制链接]

尚未签到

发表于 2015-12-4 04:40:21 | 显示全部楼层 |阅读模式
  查找:
  
       
  • find:
            
    • 实时查找,精确,速度慢,支持正则        
    • find 查找路径 查找标准 查到后处理动作        
    • 查找路径默认当前目录,查找标准默认路径下所有文件,动作默认打印到屏幕        
    • 匹配标准:
                   
      • -name 'filename' :精确匹配:通配:* ? []            
      • -iname 不区分大小写            
      • -regex pattern :使用正则表达式            
      • -user username:根据用户名查找            
      • -group            
      • -uid            
      • -gid            
      • -nouser            
      • -nogroup            
      • -type:
                         
        • f普通文件 : -type f               
        • d目录文件               
        • l链接文件               
        • c字符设备               
        • b块               
        • p管道               
        • s套接字            
                               
      • -size:默认字节
                         
        • 【+|-】 # 【K|M|G】
                              
          • +10k 大于10k                    
          • -10k小于10k                    
          • 10k代表9k-10k之间的都显示                 
                                     
                               
      • 查看某段时间内改动创建的文件[+|-]# :+#至少#天;-#:#天内 ;#:#天
                         
        • -mtime内容改变               
        • -ctime权限属性改变               
        • -atime最后一次访问时间            
                      
                         
        • find ./ -mtime -5 -name 'c'            
                               
      • 权限匹配:
                         
        • find ./ -perm mode精确: find ./ -perm 664               
        • find ./ -perm -mode只要有一项匹配即可               
        • find ./ -perm /mode mode以上才能匹配:755可以匹配644,750不可.            
                            
                  
       
  
正则表达式:  
       
  • . 表示任意单个字符   
  • * 表示匹配前行字符任意次。   
  • \? 表示匹配前行字符0/1次:注意\ 是转义符。这个时候要和双引号一起使用。   
  • 位置锚定
            
    • ^锚定行首: '^abc'        
    • $锚定行尾: 'abc$'        
    • ^$ 空白行        
    • \< 锚定单词的词头, 等价于\b: grep \<root\>        
    • \> 锚定单词的词尾,等价于\b     
          
  • 分组:为了实现后向引用。
            
    • cat a|grep &quot;\(l..e\b\).*\1r&quot;:把文件a里面的内容中love lover/like liker之类的行挑选出来。     
          
  • [] 匹配指定范围任意单个字符
            
    • [^]取反        
    • [a-zA-Z0-9]        
    • 特殊字符:[:space:][:punct:][:lower:][:upper:][:alpha:][:digit:][:alnum:]     
          
  • 扩展正则表达式中增加的功能:
            
    • 次数:+:前行单字符出现至少一次。{m,n}前行单字符出现m到n次,含m,n。        
    • |:选择 grep -E &quot;(C|c)at&quot; :选出大小写的猫。     
          
  • grep的几个参数:
            
    • -i 忽略大小写        
    • --color 加颜色        
    • -v 反向查找        
    • -o 只显示字符串     
       
如何生成列表:  
       
  • {1..100}:自动展开成列表   
  • seq 5 10 序列:seq [起步 [步长]] [结束数]   
  • `ls /etc`
  
字符编辑:  
       
  • |:管道,前一个命令的输出作为后一个命令的输入   
  • 输入输出:
            
    • 0  标准输入        
    • 1  标准输出        
    • 2  错误输出        
    • >  >>  覆盖输出和追加输出        
    • <  <<  覆盖输入和追加输入        
    • set -C 如果某个文件存在禁用>        
    • >| 强制覆盖(当set -C时是不允许覆盖的)        
    • set +C取消禁用        
    • &> => + 2> 常用&>/dev/null        
    • cmd [] []<< EOF    脚本中使用,用来解决脚本中运行交互式程序的问题。        
    • EOF     
          
  • cat
            
    • -n显示行号, -E显示行结束符$        
    • tac将cat的内容反写     
          
  • Less:翻页设置见Man。弱化的功能为more   
  • tail/head -n20 文件名   
  • cut -d: -f1 /etc/pasword 默认是空格   
  • tr 'ab' 'AB' < 文件名:针对单个字符操作。
            
    • tr -d 'ab' 碰到a和b就删除。        
    • 'a-z' 'A-Z'转换大小写,'ab' 'cd' a换c,b换d     
          
  • sort 默认按ASCII码升序
            
    • sort -t: -k3 -n -r /etc/passwd|cut -d: -f3        
    • -f 忽略大小写        
    • -u 相同的只显示一行     
          
  • Uniq:行必须相邻
            
    • -d 只会显示重复的行一次 /其它行不会显示        
    • -D 重复的行全部显示/其它不重复行不显示        
    • -c 在行首显示重复的次数/不可以和D共用     
          
  • wc :结果返回:行 字母数 字节数
            
    • -l行数 -w单词数 -c字节数 -m字符数 -L最长行的字符数     
       
通用命令行命令:  
       
  • $# 传给脚本的参数数量     
    $0 脚本本身的名字      
    $1 传递给该shell脚本的第1个参数      
    $2 传递给该shell脚本的第2个参数      
    $@ 传给脚本的所有参数的列表      
    $* 以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个      
    $$ 脚本运行的当前进程ID号      
    $? 命令执行结果反馈,0表示执行成功,其余数字表示执行不成功:exit n.   
  • 查看cmd本身信息:命令 cmd
            
    • whatis:显示命令在Man的哪一个章节        
    • type:是否shell内置命令,如果不是,会显示cmd is 目录        
    • which:获取命令的目录。     
          
  • 系统环境设置:
            
    • date; date +%s;        
    • clock        
    • hwclock -s; hwclock -w        
    • ls -i 文件 显示inode号        
    • ctl z送入后台并停止作业        
    • cmd [option] arg1 arg2 ...&:命令后台运行。        
    • bg:让后台停止的作业继续运行。        
    • jobs:查看后台所有的作业        
    • fg jobid:调回前台     
          
  • 命令和字符的转换
            
    • ~: cd ~oracle        
    • -: cd -        
    • {}: touch {a, b, c, d}{m,n}会创建8个文件。        
    • ··:反引号,可以展开命令结果。        
    • ${}:括号内的命令执行结构也会被展开。也可以放入变量。不发生歧义情况下,可以省略{}.        
    • “”:双引号,在双引号中变量会展开为变量值        
    • ‘’:单引号,变量不会展开,只能作为字符。        
    • \:转义,会使特殊字符变成普通字符。     
          
  • 命令行编辑
            
    • ctl a/e:光标快速到行首或行尾。        
    • ctl k/u:从光标处删除到行首/尾。        
    • ctl -> <-:跳跃单词        
    • ctl L:清屏        
    • !执行历史命令,!n执行第n行,!!执行上一条,!字符,给定字符最近一次。        
    • 命令别名:alias cmd='cmd [option1] [option2]'     
          
  • 文件名通配:
            
    • *:任意长度任意字符        
    • ?:任意单字符        
    • []:制定范围内的任意单字符        
    • [a-zA-Z0-9]        
    • 特殊字符:[:space:][:punct:][:lower:][:upper:][:alpha:][:digit:][:alnum:]        
    • 特殊字符集合中的任意一个需要加双中括号:[[:alnum:]]     
          
  • 超级常用命令:
            
    • cp 源1 源2... 目的:不管源多少目的只有一个。
                   
      • -p:保留属性(o和g不变,正常拷贝,og会变成使用拷贝的用户的)            
      • -P:保持连接。拷贝链接本身,不过引用的路径只能是相对路径,如果链接自身位置变化,则链接会失效。            
      • -R/r递归复制。            
      • -f强制覆盖            
      • -L对软链接拷贝时,拷贝的实际上是背后的文件。            
      • -f强制覆盖         
                     
    • mv 源1 源2 ...目的
                   
      • mv -t target scorce         
                     
    • install source ... target
                   
      • install -d /dir :创建目录            
      • install -t target source...            
      • install 的文件自动有执行权限         
                  
       
Man  
       
  • 8个章节
            
    • 所有用户使用的命令        
    • 表示系统调用        
    • 库调用        
    • 特殊文件        
    • 文件格式        
    • 游戏        
    • 杂项        
    • 管理命令     
          
  • 格式说明
            
    • []可省略        
    • |多选一        
    • <>必须给出        
    • ...可以多次出现        
    • Name:命令名称及功能的简要说明        
    • Synopsis:用法说明,包括可用选项        
    • Desc:详细说明        
    • Options:每个选项的意义        
    • Files:相关配置文件        
    • Bugs:        
    • Examples:使用示例     
          
  • Man的页面操作:
            
    • 翻页:space下一页,b上一页        
    • 翻行:回车下一行,k上一行        
    • 查找:/keyword 前--->后
                   
      • ?keyword 向前找            
      • n向后找下一个            
      • N向前找下一个         
                     
    • 退出:Q/q     
       
  条件判断
  
       
  • 整数测试:
            
    • [ $A -eq $B ] :$A $B 的前后都有空格。等值为真        
    • [ $A -ne $B ] :$A $B 的前后都有空格。不等值为真        
    • [ $A -gt $B ] : >        
    • [ $A -lt $B ] : <        
    • [ $A -ge $B ] : >=        
    • [ $A -le $B ] : <=     
          
  • 文件测试:
            
    • [ -e file ]:测试文件是否存在        
    • [ -f file ]:是否普通文件        
    • [ -d file ]:是否设备文件        
    • [ -r file ]:是否对当前用户可读        
    • [ -w file ]:可写        
    • [ -x file ]:可执行     
          
  • 字符串测试:
            
    • [ $A == $B ]:        
    • [ $A != $B ]:     
          
  • 命令间的逻辑关系:有命令A 与B ,当命令顺利执行;返回值为真,否则反之.
            
    • 当 A 为真时 &&  执行B
                   
      • 当A为假,命令终止。         
                     
    • 当 A 为假时 ||  执行B
                   
      • 当A为真是,命令终止。         
                     
    • A && B || C : 如果A顺利执行,那么接下来执行B,否则执行C。
                   
      • 如果A顺利执行,那么执行B,如果B顺利执行则命令终止。            
      • 如果A顺利执行,那么执行B,如果B执行报错则执行C。            
      • 如果A执行报错,跳过B,执行C。         
                  
          
  • Shell中进行算术运算:注意$a+$b=a+b 是字符。
            
    • let c=$a +$b        
    • c=$[$a+$b]        
    • c=$(($a+$b))        
    • c=`expr $a + $b`     
          
  • 选择结构
            
    • 条件选择结构
                   
      • case SWITCH in            
      • value 1)
                         
        • statement...               
        • ;;            
                               
      • value 2)
                         
        • statement...               
        • ;;            
                               
      • *)
                         
        • statement ...               
        • ;;            
                               
      • esac            
      • 例子:            
      • case $1 in            
      • [0-9])
                         
        • echo &quot;A digit&quot;;;            
                               
      • [a-z])
                         
        • echo &quot;lower&quot;;;            
                               
      • [A-Z])
                         
        • echo &quot;upper&quot;;;            
                               
      • *)
                         
        • echo &quot;special&quot;;;            
                               
      • esac         
                     
    • 条件判断控制结构     
          
            
                 
      • if condition1; then
                      
        • statement ...           
                          
      • elseif conditon2; then
                      
        • statement ...           
                          
      • elseif ...         
      • else
                      
        • statement ...           
                          
      • fi         
      • 例:特点:可以跟多参数,无文件创建文件,有则统计程序运行该文件次数。           
        #! /bin/bash
        #
        declare -i line=0
        while [ &quot;$1&quot; != &quot;&quot; ]; do
        if [ -e $1 ]; then
        echo &quot;I m $1,and I am alive&quot;
        line=`wc -l $1| cut -d&quot; &quot; -f1`
        let line=$[ $line + 1 ]
        echo &quot;$line&quot;>>$1
        echo &quot;I am $1,and I am visited $line times&quot;
        else
        touch $1
        echo &quot;fiel $1 created&quot;
        fi
        shift
        done
        exit 0



  • 循环:

    • for 循环

      • for 变量 in 循环;do
      • 循环体
      • done


    • while循环

      • while 条件;do
      • 循环体
      • done





运维网声明 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-146952-1-1.html 上篇帖子: javascript 的Date 格式化, 模仿shell中date命令的格式 下篇帖子: Shell学习笔记
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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