shell基础和语法 | 青训营笔记

44 阅读1分钟

概念

终端:获取用户输入、展示运算结果的硬件设备

tty: teletypeWriter的简称,和终端等价,早期指电传打印机,在linux中是输入/输出环境

终端模拟器: Mac Terminal、iTerm2等,关联虚拟tty的输入输出软件

Shell: command interpreter,处理来自终端模拟器的输入,解释执行之后输出结果给终端

Bash: shell的一种具体体现

发展

Ken Thompson(来自贝尔实验室)在1971年为UNIX开发了第一个shell,称为V6 shell

Stephen Bourne在贝尔实验室为V7 UNIX所开发的Bourne shell,即sh

开源组织GNU为了取代Bourne shell开发的Bourne-Again shell,即Bash

构成

A Unix shell is both a command interpreter and a programming language. As a command interpreter, the shell provides the user interface to the rich set of GNU utilities.

image-20230520195636716.png

变量

类型作用域声明方式规范
自定义变量当前shell=字符串、整型、浮点型、日期型
环境变量当前shell及其子shellexport、declare -x
系统环境变量所有shell启动加载

自定义变量

1.变量名=变量值(等号左右不能有空格)

page_size=1
page_num=2

2.将命令复制给变量

_ls=ls

3.将命令结果赋值给变量

file_list=$(ls -a)

4.默认字符串,不会进行+运算

total=page_size*page_num    //错误

5.声明变量为整型

let total=page_size*page_num
declare -i total=page_sieze*page_num

6.导出环境变量

export total
declare -x total

declare:

选项含义
-给变量设定类型属性
+取消变量的类型属性
-a将变量声明为数组类型
-i将变量声明为整数型
-x将变量声明为环境变量
-r将变量声明为只读变量
-p显示指定变量的被声明的类型

系统环境变量

变量名含义常见操作
$0当前shell名称/脚本名称11、2等可以获取到传入参数
$#传入脚本的参数数量if[$# -gt 1]
$*传入脚本的所有参数
$?上条命令执行的状态码if[$? -eq 0];
$PS1命令提示符export PS1="\u@\h \w> "
$HOME用户主文件夹cd ~
$PATH全局命令的搜索路径PATH=$PATH:[新增路径]