命令解释器shell

shell就是一个命令器*,它为用户提供了一个向Linux内核发送请求以便运行程序界面系统级程序。*

标准输入输出文件描述符

标准输入的文件描述符为0
标准输出的文件描述符为1
标准错误文件的描述符为2

commannd>file 将命令输出结果输入到file中
#echo KaTeX parse error: Expected 'EOF', got '&' at position 83: …程序的输入 command |&̲command2 [|&com… 定义的时候不加$

目前流行的几种shell

ash、bash、ksh、csh、zsh等

shell常用的环境变量

1、HOME:用来保存注册目录的完全路径名。
2、PATH:用于保存用冒号分隔的目录路径名,shell将按PATH变量给出的顺序搜索这些目录,找到的第一个命令与命令名称一致的可执行文件将被执行。
3、TERM:将会显示终端的类型。
4、UID:当前用户的标识符。
5、PWD:当前工作目录的绝对路径

shell的语法

主要由开头部分、注释部分以及语句执行部分组成
开头:
#!/bin/bash
#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中使用bin/bash来执行程序
bash运行
chmod u+x加权限
chmod u-x收权限

shell变量

1 本地变量
2 环境变量
3 特殊变量
调用变量时则应在变量名前加一个美元符号$
使用set命令可以查看所有的本地变量和环境变量
本地变量,也称为用户自定义变量,是在当前shell环境,当前进程有效的变量。当用户注销,或者启用子shell,子进程时该变量不起作用

定义本地变量1、在bash shell环境下,定义本地变量的设置格式如下:

变量名=变量值(若等号两边有空格,则必须使用引号括起来)
2、变量设置的规定
1、变量名称只能是英文字母、下划线、与数字,但数字不能是开头字符
2、若有空格,可以使用双引号或单引号将变量内容连接起来
3、用户也可以在命令上同时定义多个变量赋值,赋值语句之间要用空格分开
#x=4 y=5
readonly命令
有时需要再说明变量并对他设置为一个特定值后就不需要它在改变时,可以用readonly保证一个变量的只读性
3 read
语法:read-[pt]
功能:读取来自键盘输入的变量
可选项
-p:后面可以接提示信息
-t:后面可以接等待的秒数。为了防止一直等待用户
eg:
让用户通过键盘输入内容,将内容改成atest变量
提示用户30秒内输入自己的名字

显示本地变量

echo $变量名 或echo $(变量名)
eg#bum=2
#echo"this is $numnd"
#num=2
#echo"this is $(num)nd"
eg2
要将name的内容多出“yes”,2种方法
:#name= " $name"yes
#name= ${name}yes
eg3
在子shell变量的作用范围 不能输出 再创建一个shell 再运行即可输出 exit退出子shell
eg4
释放本地变量
格式unset 变量名

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

环境变量在shell脚本开始执行时就已经开始定义了
环境变量也称为系统变量 差别在于环境变量可以用于所有用户进程
在这里插入图片描述在这里插入图片描述

主提示符 PS1

PS1:主提示符,在特权用户下默认的主提示符是#;在普通用户下,默认的主提示符是$
PS1变量的特殊符号
PS1=’[\u@\h\w]$’
\u:当前用户的账号名称
\h:仅取主机名的第一个名字
\w:工作目录名称,仅列出最后一个目录名
$:提示符,如果是root用户就是#否则就是$
#PATH:决定了shell将到那些目录中寻找命令或者程序,PATH的值是一系列目录
Linux修改PAYTH变量
只想对本次登录有效的话
PATH=$PATH<路径1><路径2>…
永久有效在bashrc里面加上上面这句话
6、export
用export可以把本地变量设置为环境变量
格式:export变量名
也可以在给变量赋值的同时使用export命令
export变量名=变量值(若等号两边有空格,则必须用括号括起来)

在这里插入图片描述

\env查看环境变量

特殊变量

某些变量在一开始执行脚本时就被设定且不再改变,他们就被称为特殊变量
用户只能根据shell使用这些变量而不能重新定义它们,所有特殊变量都是由$和另一个符号组成
¥#:存储shell程序中命令行参数的个数
$?:存储shell中上一个程序执行的返回值(0表示执行成功 非0表示错误)
$[1-n]:存储第【1-n】个命令行参数
$0:存储shell程序自己的名称
$:存储shell脚本所有的参数(不包含$0)
$ $:存储shell脚本的进程号(pid)
练习
设计脚本
**要求如下
当输入bash ./****2012回车显示2012年头三个月的月历

在这里插入图片描述
代码部分:#!/bin/bash

echo “input year”
echo
read year
cal 1 $year
cal 2 $year
cal 3 $year
或者
在这里插入图片描述
$1 意义:定义任意的年份

shift命令
可以移动命令行参数。运行shift后,把每个参数向左移动一个位置,$2 $3 …依次变为$1 $2 …原先的$1丢掉

特殊符号

引用符号
在bash中,许多字符有特殊含义如果希望忽略某些字符含义可以使用一种“引用”通知shell暂时忽略被引用字符的特殊含义,将其作为普通字符处理在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
\放在shell特殊字符之前,则shell忽略该字符的特殊含义
用这种方式时,必须在每一个忽略其特殊含义的特殊字符前加\字符
单引号:’
将字符放在一队单引号之间,则单引号内的所有字符的特殊含义都被忽略,只作为普通字符解释
命令替换符“”
命令替换符“`”(反引号)的作用跟引用字符的作用相反
反引号括起来的字符被shell解释为命令行,在执行shell时,首先执行该命令行,并以它的标准输出结果取代整个反引号(包括两个反引号)部分

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值