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

SHELL学习--shell脚本基础知识

[复制链接]

尚未签到

发表于 2018-8-22 12:22:09 | 显示全部楼层 |阅读模式

  •   history保存历史命令1000条,history -c清空;
  2.  !string调用最近使用的命令,!vim最近使用的vim;
  !vi:命令历史中最近一次以vi开头的命令;
  !n:!242调用history中第242条命令。
  !!执行上一条命令
  !$上一条命令的最后一个变量
  ####ls /some-path-to-a-directory
  cat !$/some-file.txt = cat /some-path-to-a-directory/some-file.txt
  ####ls testb.txt
  cat !$
  3.alias重命名,alias h5='head -5',unalias h5取消重命名。
  4.|管道符,连接多个命令,将一个命令的输出重定向到另一个命令,简单说就是将前面运行的结果丢给后面的命令。ps aux|grep mysql,或者ifconfig eth0|grep 'inet addr'过滤包含IP地址的数据包,echo "pass" | passwd --stdin tom将用户tom密码设置为pass
  5.输入输出重定向,>覆盖,>>追加,2>错误重定向,2>>错误追加。
  ls > list.txt将ls输出保存到list.txt,
  hostname >> list.txt将主机名追加到list.txt中,
  ls abc install.log 2> error.txt仅将错误输出重定向到error.txt中,
  ls bbb 2>> error.txt  将错误追加到指定文档中,
  ls abc install.log>>all.txt 2>&1  将标准输出1和错误输出2均追加到all.txt
  6.作业控制
  快捷键ctrl+a将光标移至行首,ctrl+e移至行为,ctrl+f右移一个,ctrl+b左移一个,ctrl+l清屏,ctrl+u删除光标到行首的字符,ctrl+k删除光标到行尾字符,ctrl+c终止进程,ctrl+z挂起进程,tops可以查看,ctrl+w删除光标前一个单词(以空格为分隔),ctrl+d删除后一个单词
  ctrl+z暂停任务,bg使暂停任务在后台运行,fg调到前台运行
  vmstat1>1.txt               vmstat 1 >/home/jason/vmstat1.log & 使该进程在后台运行&
  ctrl+z                      == bg pid
  jobs
  fg pid/bg pid
  命令序列使用:&开启子shell,使在后台运行,firefox &将前端打开的程序后台执行,tops查看,fg 1调回前台执行;
  &使前台程序,挂起到后台,ctrl+z使程序暂停并挂起到后台。fg 1调回前台。
  杀死进程kill
  ps aux |grep vmstat 查看进程号
  kill pid  / kill -9 pid(遇到杀不死的进程)
  7. &&多个命令组合执行,但必须前面成功执行再下一个命令,make && make install,ls test.txt && cat test.txt;
  ||多个命令组合,但必须前一个命令执行不成功,才执行下一个,id tom &>/dev/null &&echo "hi, tom" || echo "no such user",通过&>重定向将id输出屏蔽,然后&&和||判断显示语。
  8. 变量
  环境变量PATH,shell预设的一个变量,代替了所有常用命令的绝对路径的设定,运行某个命令时不需输入全局路径
  echo $PATH/$HOME/$PWD/$LOGNAME.....显示变量的值
  echo $PATH决定shell在哪些目录下寻找命令或程序;  echo $HOME当前用户的家目录;echo $HISTSIZE历史命令记录的条数;echo $LOGNAME当前用户的登录名;  echo $HOSTNAME显示主机名;echo $SHELL显示shell的类型;
  env查看系统预设的环境变量,登录的用户不一样查询到的环境变量值也不一样
  set查看所有预设环境变量,包括系统预设变量和自定义变量
  myname=aming
  echo $myname
  set |grep myname
  自定义变量只能在当前shell下生效,重开一个shell则不存在,重开一个子shell和切换用户后
  echo "export myname=zhujiasheng" >>/etc/profile 追加,export申明变量
  source !$ 运行生效
  echo $myname
  zhujiasheng
  su - jason
  echo $myname
  zhujiasheng(切换用户后任然可以运行该自定义变量)
  export申明变量
  export myname申明变量myname,使子shell也能使用该变量,但切换到其他用户不能使用
  export myname(不加变量名,申明所有自定义变量)
  自定义变量规则:
  1.格式a=b,a为变量名,b变量内容;
  2.变量名只能由英文,数字和下划线组成,不能以数字开头;
  3.变量内容有特殊符号(如空格),追加单引号
  myname='zhu jiasheng'
  4.变量内容本身带有单引号,改双引号
  myname="zhu jia'sheng"
  5.变量内容需要用到其他命令的结果,反引号
  myname=`pwd`
  6.变量内容累加其他变量内容,双引号
  myname="$LOGNAME"zhujiasheng
  单引号和双引号的区别:双引号,不去掉特殊字符的本身作用
  单引号,使特殊符号失去本身意义。
  pstree把系统所有进程通过树形结构显示,
  # bash  打开子shell
  # pstree |grep bash查看打开的子shell
  取消变量
  unset myname
  9.系统给环境变量和个人环境变量配置文件
  /etc/profile存放PATH ,USER,LOGNAME,HOSTNAME等常用变量
  /etc/bashrc,预设umask和PS1
  echo $PS1显示命令行最前面的字符串[root@localhost ~]#
  10.shell中特殊符号
  *零个或多个任意字符;?只代表一个字符,只能匹配一个;#注释说明;
  \脱意字符,ls -d test\*
  ls: 无法访问test*: 没有那个文件或目录
  |管道符,将前面命令的结果丢给后面的命令。一般作用在文档操作,例如cat,less,head,tail,cut,sort,wc,uniq,tee,split,sed,awk,grep正则表达式必须掌握工具
  cat testb.txt |wc -l用来计算文档有多少行
  11.命令 cut
  截取某一字段
  cut -d '分隔符'
  cut -c n  第几个字符
  cut -f n  第几个区块
  head -n2 /etc/passwd |cut -d ';' -f1
  head -n2 /etc/passwd|cut -c1,5,7截取文件头两行的第1,5,7个字符
  12.排序  sort
  -t分隔符;-n使用纯数字排序;-r反向排序;-u去重复;kn1,n2从n1-n2区间进行排序。
  head -n5 /etc/passwd |sort  不加选项,则以首字符排序
  head -n5 /etc/passwd |sort -t : -k3 -n以:为分隔符,第3个字段,以纯数字排序
  head -n5 /etc/passwd |sort -t : -k3,5 -r 以:为分隔符,从第3-5字段,反向排序
  13.统计  wc
  -l统计行数;-m 统计字符数;-w统计词数。
  wc /etc/passwd 不加选项,则三个统计值都会显示
  wc -l/-m/-w /etc/passwd
  14. 统计重复行数 uniq
  -c 统计重复行数,并重复的行数写在最前面
  使用uniq前提对文件排序
  vim uniqtest.txt
  111
  222
  111
  333
  sort uniqtest.txt |uniq -c
  15.tee 类似重定向,把文件重定向到指定文件的同时,显示被写入的文件
  echo "aaaaaaaaaa" |tee  teetest.txt
  tr  替换字符,只针对字符,不能字符串
  head -n2 /etc/passwd |tr 'r' 'R'
  head -n2 /etc/passwd |tr '[a-z]' '[A-Z]'
  16.文档切割 split
  -b 依据大小切割文档,单位byte
  -l 依据行数切割文档
  cp /etc/passwd ./
  split -b500 passwd  以大小500b切割文档,并且默认规则命名xaa,xab,xac....
  split -l10 passwd splittest 以10行大小切割文档,并规定切割后文档命名规则splittestaa,splittestab...


运维网声明 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.iyunv.com/thread-555126-1-1.html 上篇帖子: 登录shell和非登录shell-IT辰逸 下篇帖子: Linux Shell篇之一:Shell编程简介
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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