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

[笔记]shell基础

[复制链接]

尚未签到

发表于 2018-8-28 11:34:34 | 显示全部楼层 |阅读模式
  shell种类:Bourne Shell(sh); Bourne Again Shell(Bash); Korn Shell 93(ksh93); C Shell(csh); Tenex C Shell(tcsh)等
  工作模式
  互动模式(interactive mode):由输入设备(键盘)键入命令,等待shell执行完该命令后才能执行下一条命令
  shell Script模式(no-interactive mode):将要执行的命令写入文件(script)中交由Bash去读取与执行
  Bash Shell的功能特性
  兼容Bourne Shell(sh)
  支持许多选项及变量,可自定义Shell使用环境
  支持历史命令(history)
  具有命令列修订能力,可重新读取或修改之前执行过的命令
  具有工作控制(job control)能力,可以控制前台或后台程序
  具有程序设计的能力,支持变量.真假值判断.控制流程.函数.输入输出控制等
  易于取得,文件小,免编译且执行效率高,可重复执行,不同的script可组合执行
  Shell Script(形如filename.sh)基本格式
  #! /bin/bash  -----shell声明
  #                  -----注释
  lines here     -----内容
  Shell Script编辑工具:vi或vim, nano, leafpad, ee(FreeBSd), Emacs, kwrite, gedit等
  执行前需要赋予 .sh 文件执行权限:chmod +x filename.sh
  注:.sh文件不是二进制文件,在执行之前系统需要读取文件的内容,故也需要"r" 权限
  在不影响使用的情况下,考虑到安全因素不要给.sh文件赋予过多的权限
  执行:
  1. 文件所处目录下执行:./filename.sh  (Script会在一个新开启的shell进程中执行,执行结束后新开启的进程关闭)
  绝对路径执行 /path/to/filename.sh
  2. source filename.sh 或 . /filename.sh [注意 . 与 / 之间的空格](Script在当前shell进程中执行)
  3. bash filename.sh (使用此方法时可以不用设置文件的权限,Script会在一个新开启的shell进程中执行,执行结束后新开启的进程关闭)
  4.添加到crontab中定期或定时执行(请自行参看相关文档说明)
  附网上找到的一张shell执行过程图:(忘记出处,望图片作者见谅)
DSC0000.gif

  
  检查与排错
  bash -v filename.sh 检查语法
  bash -n filename.sh 查看代码而不执行
  bash -x filename.sh 追踪执行过程
  查看当前用户使用的shell种类:echo $SHELL
  更改用户使用的shell    :
  chsh ;修改自己所使用的shell
  chsh USER:root用户修改USER使用的shell
  在Windows平台上可以用Cygwin或MSYS来部署Bash Shell环境
  通配符
  *: 代表任意个字符,可以为空
  ?: 代表一个字符,不能为空
  转义字符:\ 也称做逃逸字符,用来使特殊字符(如 ' " * ? \ ~ ! # $ & ( ) < > / 等)回归单纯字符的用途
  唯一例外:若在 \ 后方接换行字符(即按下Enter键),bash会把 \ 试做续行字符,用作将一条很长的命令分作多行
  字符集合
  [] 括号中存放字符范围,如[abc]代表abc其中的一个字符,
  [a-z]代表小写字母中的任一个字符
  [!abc]代表除了abc以外
  
  括号扩展:如{a,b,c}d 代表 ad, bd, cd 三个的组合
  {1,2,3,4,5,6,7,8,9}\*{1,2,3,4,5,6,7,8,9}代表九九表,注意\转义作用及不能写成{1-9}
  在Shell Script执行时,系统会默认开启3个标准文件:
  标准输入stdin(代码 0 ):由标准输入(通常为键盘)读取数据,
  标准输出stdout(代码 1):由标准输出(通常为监视器)显示执行结果,
  标准错误stderr(代码 2):由标准错误(通常为监视器)显示错误信息,
  输出重定向:将原本需要输出到屏幕的信息重新制定存到文件中
  覆盖重定向:command或Script > file 若file文件不存在则创建,存在则清空内容后重新写入新内容
  追加重定向:command或Script >> file 若file文件不存在则创建,存在则在文件末尾添加新内容
  输入重定向:command或Script < file 将file的内容送给command或Script处理以代替键盘输入
  输入输出重定向:command或Script < file1 > file2 将file1的内容送给command或Script处理后,将结果存放到file2中
  管道:command1 | command2 将command1的输出作为command2的输入
  强制变量必须要经过声明才能使用:shopt -s -o nounset [避免错打变量名称造成程序执行错误]
  login shell:/etc/passwd 每行的最后一个字段[只有该字段的shell在/etc/shells文件中,该用户才可以访问主机]
  父shell与子shell:在登录主机后,我们已经处在一个login shell中,称为父shell,当我们执行某个shell script时,父shell会根据script的第一行的#! /bin/ 中指定的shell开启新的shell(子shell),当子shell中script执行完毕后子shell关闭返回到父shell


运维网声明 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-557677-1-1.html 上篇帖子: tomcat maven shell 脚本省时省力 下篇帖子: shell 批量文件改名
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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