shell基础及变量

shell基础及变量

shell概述

  • Shell的作用 —— 命令解释器,“翻译官”

  • Shell的分类

    • Bourne Shell:从1979起Unix就开始使用,Bourne Shell的主文件
      名为sh。
    • C Shell: C Shell主要在BSD版的Unix系统中使用,其语法和C语言
      相类似而得名。
  • Shell的两种主要语法类型有Bourne和C,这两种语法彼此
    不兼容。

    • Bash: Bash与sh兼容,现在使用的Linux就是使用Bash
      作为用户的基本Shell。 其属于Bourne家族。

shell基础

命令与文件补全

tab键(一次):补全名称
tab键(两次):显示所有相似名称

命令别名

alias 别名=‘原命令’

  • 注意等号两边不能有空格
  • alias的作用仅在该次登入的操作,即输入一次alias后,这个修改只在当前的Shell生效。如果重新开启一个 Shell,或者重新登录,则这些alias将无法使用。好在linux中提供alias永久化的方法:
    • 若要每次登入就自动生效别名,则把别名加在/etc/profile或~/.bashrc中。然后# source ~/.bashrc
    • 若要让每一位用户都生效别名,则把别名加在/etc/bashrc最后面,然后# source /etc/bashrc
删除别名

unalias 别名

多命令顺序执行
  • ; 命令1;命令2
    • 多个命令顺序执行,命令之间没有任何逻辑关系
  • && 命令1&&命令2
    • 当命令1正确执行时,命令2才会执行;否则,命令2不执行
  • || 命令1||命令2
    • 当命令1执行错误时,命令2才会执行;否则,命令2不会执行
管道符

命令1 | 命令2

  • 命令1的正确输出作为命令2的操作对象
tee
  • 数据流的处理过程中将某段信息存下来
  • tee [-a] filename
    • -a :以累加 (append) 的方式,将数据加入 file 中
      • ls -l / | tee -a ~/homefile | more
echo
  • echo [选项] [输出内容]
  • 选项
    • -e : 支持反斜线控制的字符转换
      -输出内容
    • \a 发出警告声;
    • \b 删除前一个字符;
    • \c 最后不加上换行符号;
    • \f 换行但光标仍旧停留在原来的位置;
    • \n 换行且光标移至行首;
    • \r 光标移至行首,但不换行;
    • \t 插入tab;
    • \v 与\f相同;
    • \ 插入\字符;
    • \nnn 插入nnn(八进制)所代表的ASCII字符;
shell脚本
Shell脚本的基本元素
  • #!/bin/bash 必须的,指出shell的类型
  • 注释

  • 变量
  • 控制
常见运行Shell脚本方法
  • 方法一 :
    sh ./datewho.sh
  • 方法二:
    -chmod +x datewho.sh
    ./datewho.sh

shell中的变量和符号

变量

变量名称可以由字母、数字和下划线组成,但是不能以数字开头。如果变量名是“2name”则是错误的。变量的默认类型都是字符串型,如果要进行数值运算,则必修指定变量类型为数值型。

变量分类
  • 本地变量(用户变量) 局部变量只在创建它们的Shell中使用,可以在shell程序内任意使用和修改它们。
  • 环境变量 可以在创建它们的Shell及其派生出来的任意子程序中使用。有些变量是用户创建的,其他的则是专用的(比如PATH、HOME)。是系统环境的一部分,不必去定义它们,可以在shell程序中使用它们 。还能在shell中加以修改。
  • 内部变量 由系统提供的。与环境变量不同,但用户不能修改它们。

本地变量

变量名=值
注意:

  • 等号两边不可以有空格
  • 取值包含空格,必须用双引号括起来
  • Shell变量可以用大小写字母,区分大小写
  • 变量是弱类型的(不用声明类型)
  • 变量的引用
    • $变量名
    • ${变量名}(建议使用)
echo显示输出

echo [-ne][字符串] / echo [–help][–version]

  • -n 不要在最后自动换行
  • -e 打开反斜杠ESC转义。若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
    • \t 插入tab;
    • \ 插入\字符;
  • -help 显示帮助
  • -version 显示版本信息
清除变量

unset 变量

环境变量

  • 可以在命令行中设置,但用户注销时这些值将丢失
  • 环境变量均为大写
  • 必须用export命令导出
  • 设置环境变量
    • variable-name=value
    • export variable-name(环境变量名大写)
  • 显示环境变量
    • env 可以看到所有的环境变量
    • echo $环境变量名 (显示一个变量)
  • 清除环境变量
    • unset 环境变量名
  • 让环境变量的修改在退出shell再次登录时仍有效,需要在相
    关配置文件中修改,Bash的初始化文件有:/etc/profile、/.bash_profile、/.bash_login、/.profile、/.bashrc、/etc/bashrc(不论更改那个文件,都要source 文件名)
内部变量

内部变量是Linux所提供的一种特殊类型的变量,这类变量在程序中用来作出判断。在shell程序内这类变量的值是不能修改的。

  • $# ——传送给shell程序的位置参数的数量
  • $?——最后命令的完成码或者在shell程序内部执行的shell程序(返回值)。0表示没有错误,其他任何值表明有错误。
  • $0——shell程序的名称
  • $@——调用shell程序时所传送的全部参数的单字符串,“参数1”“参数2”…形式保存的参数
  • $* “参数1 参数2”…形式保存的参数
  • $n 第n个参数
  • $$ ($!)本程序的PID
shell中的特殊字符
  • 注释符#
    • 除了#!/bin/bash里的#特殊
  • 美元符 $
    • 变量符。与反斜杠转义符相反,使其后的普通字符作为变量名,如$a表示变量a的值。变量字符长度超过1个时,用{}括起来
  • 单引号
    • 被引起的字符全部做普通字符,即全部原样
  • 双引号
    • 引号内的内容,除$、转义符\、倒引号`这三个保留特殊功能,其它字符均做普通字符。
  • 倒引号(数字1键旁边的那个键)
    • 引号内的字符串当做shell命令行解释执行,得到的结果取代整个倒引号括起来的部分。
  • 反斜线
    • 反斜线是转义字符,它能把特殊字符变成普通字符。在某个字符前面利用反斜杠(\)能够阻止shell把后面的字符解释为特殊字符。
  • 获取字符串长度
    • string=“abcd”
    • echo ${#string} #输出 4
  • 提取子字符串
    • 从字符串第 2 个字符开始截取 4 个字符
      • string=“runoob is a great site”
      • echo ${string:1:4} # 输出 unoo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值