shell基础

  • shell简介
  • Shell是一个命令解释器,提供用户和机器之间的交互。
  • 支持特定语法,比如逻辑判断、循环。
  • 每个用户都可以有自己特定的shell。
  • CentOS7默认shell为bash(Bourne Agin Shell)还有zsh、ksh等。
  • 可以通过命令yum list |grep zsh(ksh)查看系统是否已安装zsh、ksh。
  • Shell的命令历史
  • (之前使用过的命令在/root/.bash_history下保存,可以使用命令cat !$查看)(当没有正常通过命令退出时,会导致命令历史未记载或丢失)
  • history命令可以查看之前使用过的命令,最大可以存1000条(history -c命令可以情况内存里的命令历史)(命令使用过之后只有在退出终端之后才会保存)。
  • .bash_history(命令历史保存文件)。
  • 变量HISTSIZE。
  • /etc/profile中可以修改最大保存数量(需要重新登陆终端或使用source /etc/profile命令)
  • 修改之后可以通过命令echo $HISTSIZE查看是否修改成功。
  • 当时有命令history时只显示使用过的命令,那么我们想让命令历史显示的更加详实有具体时间。
  • 使用命令HISTTIMEFORMAT=”%Y/%m/%d%H:%M:%S”(指定变量模式)。
  • 修改之后可以通过命令echo $HISTTIMEFORMAT查看。
  • (想让该命令在之后运行中持续生效需要编辑vim /etc/profile ,将HISTTIMEFORMAT=”%Y(年)/%m(月)/%d(日)%H(时):%M(分):%S(秒)”添加在HISTSIZE=1000命令下即可,需要从新登入才能生效)。
  • 永久保存chattr +a ~/.bash_history(更改权限为只能追加不能删除)。
  • !!(当使用! xx(命令)时会重复命令历史中最近的xx命令并执行)。
  • 命令补全和别名
  • “tab”键,敲一下为补全命令,当敲一下没补全时则表示有多条以输入命令为开头的命令。敲两下则可以显示所有以输入命令开头的所有文件和目录。
  • 参数补全(CenTOS7中默认为不自动补全参数),安装bash-completion后重启即可。
  • alias别名给命令重新起个名字(在命令较长是可以通过alias xx(你所起的别名)=xxxxxxxxxxx(你需要输入的长命令)给该长命令命名,之后重启网络服务就可以只输入xx即可起到该长命令的作用)(使用unalias xx即可取消之前的别名)。
  • 直接使用alias可以将所有起了别名的命令都列出。
  • 各用户都有自己配置别名的文件~/.bashrc
  • ls /etc/profile.d/
  • 自定义的alias放到~/.bashrc
  • 通配符、输入输出重定向
  • (*、?、[ ]、{}、>、>>、<均为通配符)
  • ls *(一个任意字符).txt可以将所有当前目录下txt文件列出(*可以使用在你所想要看到的字符或命令的前或后)
  • ls ?.txt(?一个任意的字符)
  • ls [0-9].txt([ ]为一个范围)
  • ls {1,2}.txt({}为一个范围)
  • cat 1.txt >2.txt(>将左边的输出重定向到右边)
  • cat 1.txt >>2.txt(>>将左边的追加到右边)
  • ls aaa.txt 2>err(错误重定向)
  • ls aaa.txt 2>>err(错误追加重定向)
  • (可以使用&>将错误和正确的都输出到一个文件如command >1.txt 2>&1,也可>>追加
  • wc -l (命令为查看一个文本文档行数)< 1.txt(输入重定向,将右边的输入到左边)
  • 管道符、作业控制
  • cat 1.txt |(|为管道符,即将前面命令的结果交由后面命令处理)wc -l
  • cat 1.txt |grepaaa
  • “Ctrl z”暂停一个任务
  • jobs查看后台的任务
  • fg[id](id为最左侧显示数字)把任务调到前台
  • bg[id]把任务调到后台
  • 命令后面加&直接丢到后台
  • Shell变量
  • PATH(系统内置变量),HOME,PWD(当前目录),LOGNAME
  • env命令(查看系统常用变量,名字一般为大写英文字母)
  • set命令(查看变量)较于env命令多了很多变量,并且包括用户自定义的变量。
  • 用户可以自定义变量a=1
  • 变量名规则:字母、数字下划线,首位不能为数字。
  • 变量值有特殊符号是需要用单引号括起来。
  • 变量的累加,在使用echo命令查看时两个变量用$分开即可使两个变量内容一起显示。
  • 当有多个远程端登陆服务器使用echo $SSH_TTY可以查看你所属的主机。
  • 全局环境变量export b=2
  • unset变量(取消变量)
  • 环境变量配置文件
  • /etc/profile 用户环境变量,交互,登录才执行(用户登陆时加载)
  • /etc/bashrc 用户不用登陆,执行shell就生效(用户或系统执行一些脚本时使用)
  • ~/.bashrc(~为用户家目录)
  • ~/.bash_profile(用户登陆时所要做的操作)
  • ~/.bash_history
  • ~/.bash_logout(用户退出时所要做的操作)
  • Ps1=\[\033[01;32m\]\u(用户)@\h(hostname)\[\033[00m\]:\[\033[01;36m\]\w(用户目录最后一层)\[\033[00m\]\$([ ]为用户名两边的符号,$为普通用户输入符号。以上所有符号都是为了区分和辨识不同用户更加的方便)


  • cat 2.sh (2.sh脚本)
  • #!/bin/bash
  • echo "children script PID is $$"
  • echo "now to children script."
  • export a=2
  • echo "in children, a=$a"

  • cat source.sh (source.sh脚本)
  • #!/bin/bash
  • echo "fater script PID is $$"
  • echo "fater script, set a is 1"
  • export a=1
  • echo "it will source ./2.sh"
  • source ./2.sh
  • echo "now to father script."
  • echo "fater script, a is $a"

  • cat exec.sh (exec.sh脚本)
  • #!/bin/bash
  • echo "fater script PID is $$"
  • echo "fater script, set a is 1"
  • export a=1
  • echo "it will exec ./2.sh"
  • exec ./2.sh
  • echo "fater script, a is $a"

转载于:https://my.oschina.net/u/4095969/blog/3031670

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值