shell基础

shell概述

shell是命令解释器,shell是解释性语言

shell脚本执行方式

转译符
控制字符作用
\\输出\本身
\a输出告警音
\b退格键,向左删除
\c取消行末的换行符.
\eescape键
\f换页符
\n换行符
\r回车符
\t制表符,也就是tab键
\v垂直制表符
第一个脚本
#!/bin/Bash 这句话不是注释,这句话代表以下程序是shell脚本

- 执行脚本
- chmod 755 hello.sh
./hello.sh
- 通过bash调用执行脚本
bash hello.sh
- cat -A hello.sh 显示文件里面所有的内容,包括隐藏的字符
- linux里面的回车符号是 windowM
- ** 所以windows下面的编辑的文件是不能够在linux里面执行的!
- dos2unix 文件 将windows格式的文件转换为linux格式
- ** dos2unix Tetris.sh
相反:unix2dos Tetris.sh 将linux格式转换为Windows格式文件
**Tetris.sh 这是用shell脚本写的一个俄罗斯方块,有颜色,可以在网上搜索一下,比较难!

bash的基本功能

历史命令与补全

history [选项] [历史命令保存文件]
-c  清空历史命令
-w  把缓存中的历史命令写入历史命令保存文件
        ~/.bash_history
** 历史命令默认保存1000条,可在环境变量配置文件/etc/profile中修改
tab键命令补全,向上向下箭头查找历史命令的上一条,下一条!

别名与快捷键

命令别名
alias 别名='原命令'
alias 查询命令别名
unlias 删除别名

* 让别名永久生效
vi /root/.bashrc

命令的执行时顺序
  1. 第一顺位执行用绝对路径或者相对路径执行的命令。
  2. 第二顺位执行别名。
  3. 第三顺位执行bash内部命令。
  4. 第四顺位按照path环境变量的目录查找到的第一个命令。
bash常用快捷键
快捷键作用
ctrl+A把光标移动到命令行开头
Ctrl+E把光标移动到命令行结尾
Ctrl+C强行终止当前的命令
Ctrl+L清屏,相当于clear命令
Ctrl+U删除或者剪切光标之前的命令
Ctrl+K删除或者剪切光标之后的命令
Ctrl+Y粘贴上面两个命令剪切的内容
Ctrl+R在历史命令中搜索,会出现搜索界面,只要输入搜索内容,就会从历史命令中搜索。
Ctrl+D退出当前终端
Ctrl+Z暂停,并放入后台。
Ctrl+S暂停屏幕输出
Ctrl+Q恢复屏幕输出

输入输出重定向

输出重定向
类型符号作用
标准输出重定向命令>文件覆盖的方式写入文件
^命令>>文件以追加的方式
标准错误输出重定向错误命令 2>文件以覆盖的方式
^错误命令 2>>文件以追加的方式
正确输出和错误输出同时保存命令 > 文件 2>&1以覆盖的方式,把正确输出和错误输出保存到同一个文件
^命令 >> 文件 2>&1以追加的方式
^命令 &> 文件以覆盖的方式
^命令 &>> 文件以追加的方式
^命令 >>文件1 2>>文件2把正确的输出追加到文件1中,把错误的输出追加到文件2中
输入重定向
wc [选项] [文件名]
    -c 统计字节数
    -w 统计单词书
    -l 统计行数

- 命令 < 文件
把文件作为命令的输入
- 命令 << hello
把内容之间的内容作为命令的输入

多命令顺序执行与管道符

多命令顺序执行
多命令执行符格式作用
命令1 ; 命令2命令顺序执行,两条命令都会执行
&&命令1 && 命令2逻辑与,当命令1正确执行,命令2才会执行
||命令1 || 命令2逻辑或,当命令1正确执行,命令2不会执行
管道符
命令1 | 命令2
命令1的正确输出作为命令2的操作对象

通配符和其他特殊符号

通配符作用
匹配一个任意字符
*匹配0个或者多个任意字符
[]匹配括号中的任意一个字符
[-]匹配中括号中任意一个字符,-代表一个范围,如:[a-z]
[^]逻辑非,表示匹配不是中括号内的一个字符。如:[^0-9]代表匹配一个不是数字的字符。
特殊符号
符号作用
’ ‘在单引号中所有的特殊符号,都没有特殊含义
” “在双引号中特殊符号都没有特殊含义,但是”$”,”`”,”\”是例外,分别拥有调用变量的值,引用命令,转译符的特殊含义
反引号括起来的内容是系统命令,在bash中会先执行它
$()和反引号一样
#以#开头的行代表注释
$用来调用或者引用变量的值
\转译符

bash变量

bash变量

用户自定义变量--变量名称和变量的值都可以任意修改
环境变量--变量值可以修改,也可以自己新建变量名称和变量值
位置参数变量--只可以修改变量值

预定义变量–只可以修改变量的值

用户自定义变量

  1. 字母数字下划线,不能以数字开头
  2. 在bash中,变量的默认类型都是字符串类型,如果要进行数值的运算,则必须制定变量类型为数值型。
变量使用
变量调用--echo $变量名或者echo "$变量名"
变量查看--set

变量删除–unset 变量名

环境变量

环境变量的设置
export 变量名=变量值--设置环境变量
export 本地变量--设置环境变量
env或者set--查看环境变量
$变量名--调用环境变量
unset 变量名--删除变量
--可在当前的bash下面再定义一个子shell(bash或者csh),这样的话两个shell就成了父子关系的shell,直接在命令行输入bash或者csh就可以开启一个子shell。
--查看当前的进程树pstree
环境变量可以在当前shell和其子shell里面生效
PATH
系统查找命令的路径
PATH="$PATH":/root/sh--PATH变量的叠加
PS1
定义系统提示符的变量:
\d :代表日期,格式为weekday month date,例如:"Mon Aug1"

\H:完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux

\h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略 

\t :显示时间为24小时格式,如:HH:MM:SS 

\T :显示时间为12小时格式 

\A :显示时间为24小时格式:HH:MM 

\u :当前用户的账号名称

\v :BASH的版本信息

\w :完整的工作目录名称。家目录会以 ~代替

\W :利用basename取得工作目录名称,所以只会列出最后一个目录

\# :下达的第几个命令

\$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$

使用方法:
    PS1='自定义内容'
    注意两边的单引号
示例: PS1='(\u@\H \d \t)\$'

位置参数变量

参数 | 作用
—|—
n| 0代表命令本身, 1 9代表第一到第九个参数,十以上的数字需要使用大括号 10. *|这个变量代表命令行中所有的参数, @|这个变量代表命令行中所有的参数, @ #|命令行中所有参数的个数


预定义变量

预定义变量作用
$?如果这个值为0,证明上一个命令正确执行;如果这个值不为0(这个值命令自己决定的,是写脚本的人自己定义好的),证明上一个命令执行不正确;
$$当前进程的进程号(PID)
$!后台运行的最后一个进程的进程号(PID)
接受键盘输入
read [选项] [变量名]
-p "提示信息"  --在等待read输入时,输出提示信息
-t 秒数 --read命令会一直等待用户输入,使用此选项可以指定等待时间
-n 字符数 --read命令只接受指定的字符数,就会执行
-s  --隐藏输入的数据,适用于机密信息的输入,如密码

数值运算与运算符

declare声明变量类型

declare [+/-][选项] 变量名
选项:
    -:给变量设定类型
    +:取消变量类型
    -i:将变量设定为整数型
    -x:设定为环境变量
    -p:显示变量被设定的类型

expr或者let数值运算工具

aa=11
bb=22
dd=$(expr $aa+$bb)
--最后dd的值为33

(()) [运算式]

dd=$(($aa+$bb))
--dd的值为33

运算符

运算符说明举例
+加法expr $a + $b 结果为 30。
-减法expr $a - $b 结果为 10。
*乘法expr $a \* $b 结果为 200。
/除法expr $b / $a 结果为 2。
%取余expr $b % $a 结果为 0。
=赋值a=$b 将把变量 b 的值赋给 a。
==相等。用于比较两个数字,相同则返回 true。[ a== b ] 返回 false。
!=不相等。用于比较两个数字,不相同则返回 true。[ a!= b ] 返回 true。

环境变量配置文件

环境变量配置文件简介

source命令
    source 命令--强制性的让配置文件生效也可以写成 . 配置文件
系统中主要有5类环境变量系统文件
/etc/profile
/etc/profile.d/*.sh
~/.bash_profile
~/.bashrc
/etc/bashrc
其他配置文件和登录信息
注销时候生效的环境变量的配置的文件

- ~/.bash_history
其他配置文件
- ~/.bash_history

shell登录信息

本地终端欢迎信息:/etc/issue
远程终端欢迎信息:/etc/issue.net
    -- 注意,转译符在这个文件中不能生效
    -- 是否显示此欢迎信息,由ssh的配置文件/etc/ssh/sshd_config决定,加入“Banner /etc/issue.net”,重启服务之后生效。
登录后欢迎信息:/etc/notd
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值