Linux学习笔记:shell
本文更新于2020-01-02。
通配符
- *:0个至无穷多个任意字符。
- ?:1个任意字符。
- [AB]:枚举中任意一个字符。
- [A-B]:范围中任意一个字符。
- [^AB]:任意一个不在枚举中的字符。
- [^A-B]:任意一个不在范围中的字符。
特殊符号
- #:注释符。该行其后的内容均视为注释。
- \:转义符,并可将命令扩展至下一行。
- |:管道符。将左侧命令的标准输出作为右侧命令的标准输入。右侧命令可以使用
-
来指代标准输入。 - ||:左侧命令执行不成功,则执行右侧命令。否则不执行右侧命令。
- ;:连续命令分隔符。
- ~:用户主目录。
- $:使用变量前导符。
- &:作业控制符。将命令变为在后台工作。
- $$:左侧命令执行成功,则执行右侧命令。否则不执行右侧命令。
- !:逻辑非。
- /:目录路径分隔符。
- >:输出流重定向,替换内容。1为标准输出,2为标准错误输出。如:
cat .bash_history &> /dev/null
表示以替换方式重定向标准输出和标准错误输出。 - >>:输出流重定向,追加内容。1为标准输出,2为标准错误输出。如
cat .bash_history >> /dev/null 2>&1
表示以追加方式重定向标准输出和标准错误输出。 - <:输入流重定向。0为标准输入。如:
cat > /dev/null < .bash_history
表示重定向标准输入。 - <<:输入流重定向,指定输入结束字符串。0为标准输入。如:
cat > /dev/null << ending
表示指定标准输入结束字符串。 - '':字符串。不能进行变量替换。
- "":字符串。能进行变量替换。
- ``:取执行命令内容。同
$()
。 - ():子shell的开始与结束。
- {}:命令块组合。
变量
变量的设置规则如下:
- 变量名与变量值以
=
连接,=
两侧不能有空格。 - 变量名只能是英文字母和数字,但不能以数字开头。
- 可使用转义字符
\
。 - 变量值如有空格可使用
""
或''
引起,但""
引起的特殊字符(如$
)会使用其对应的值,而''
引起的特殊字符仅为纯文本。可引起多行字符串。 - 变量如需使用其他变量的值,可使用
$NAME
或${NAME}
(建议)。可使用${NAME[INDEX]}
使用数组元素的值。 - 变量值如需使用其他命令执行的值,可使用`COMMAND`或
$(COMMAND)
(建议)。 - 变量值如需使用数值运算的值,可使用
$((CALCULATION))
。 - 如变量需在子进程使用,则需使用
export
将变量设置为环境变量。 - 变量类型默认为字符串。
- 通常大写变量为环境变量。
环境变量
- HISTSIZE:
history
历史记录的最大条数。 - HOME:用户主目录。
- HOSTNAME:主机名。
- HOSTTYPE:主机硬件类型。如:x86_64。
- LANG:语系。
- MACHTYPE:机器内核类型。如:x86_64-redhat-linux-gnu。
- MAIL:
mail
读取的邮箱文件。 - OSTYPE:操作系统类型。如:linux-gnu。
- PATH:可执行文件的查找路径。以
:
分隔顺序查找。 - PS1:命令提示符。
- RANDOM:随机变量。
- SHELL:shell可执行文件路径。
- USER:用户名。
默认变量
- #:去掉第0个命令行参数或函数参数的其余参数个数。
- $:当前shell的PID。
- -:
set
的设置。 - 0,1,2,...:第N个命令行参数或函数参数。第0个参数为shell脚本文件名。
- ?:上一个命令的返回码。通常执行成功返回0。
- @:去掉第0个命令行参数或函数参数的其余参数。
shell script
第一行可使用#!
声明该script使用的shell。如:#!/bin/bash
。
case
case $VAR in
"VALUE1")
DO1
;;
"VALUE2")
DO2
;;
*)
DO3
;;
esac
if
if CONDITION; then
DO
fi
if CONDITION; then
DO1
else
DO2
fi
if CONDITION1; then
DO1
elif CONDITION2; then
DO2
else
DO3
fi
CONDITION可为条件判断式[ OPTEST ]
或使用&&
、||
连接的多个条件判断式。下同。
for
for ((INIT;CONDITION;EACH))
do
DO
done
((
和))
之间各值可以使用空格隔开,其中也可以使用i++
、i=i+1
这种表达式。
for VAR in VALUE1 VALUE2
do
DO
done
VALUE*序列可为命令执行结果。
until
当条件为真时,退出循环。
until CONDITION
do
DO
done
while
当条件不为真时,退出循环。
while CONDITION
do
DO
done
function
函数必须先定义,再调用。
函数定义:
function FUNC () {
DO
}
函数调用:
FUNC PARAM1 PARAM2
Linux学习笔记:shell的更多相关文章
- linux/linux学习笔记-Shell基础(mooc)
一.shell概述 shell根据ascII表,将命令翻译为0101...传给内核执行. 内核->shell翻译为命令->用户(操作的界面就是shell,shell=翻译官) linux标 ...
- Linux学习笔记 - Shell 函数的使用
基本语法 funname () { action; return -)):如果不加,将以最后一条命令运行结果,作为返回值. } 示例1:定义并调用无返回值的函数 #!/bin/bash a= b= c ...
- Linux学习笔记 - Shell 控制语句
if 语句 语法: #!/bin/bash a= b= if [ $a -eq $b ] then echo "a 等于 b" elif [ $a -gt $b ] then ec ...
- Linux学习笔记 - Shell 输出命令
1. echo 命令 echo 是基本的shell输出命令,她的语法是: echo string 我们也可以使用她来定制一些输出的格式,具体如下: 输出普通字符串 echo "it is a ...
- Linux学习笔记 - Shell 运算符篇
Shell 运算符分类 Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符 关系运算符 布尔运算符 字符串运算符 文件测试运算符 算数运算符 首先,使用 shell 算数运算符是,需要 ...
- Linux学习笔记 -- Shell 数组
定义 在Shell的世界里,我们只能定义一维数组. 定义数组的时候不需要指定长度,数组的下标从0开始; Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下: sh ...
- Linux学习笔记 -- Shell 变量
定义变量 语法: 变量名=值 myVal= 需要注意一下变量明德规则: 首个字符必须为字母(a-z,A-Z). 中间不能有空格,可以使用下划线(_). 不能使用标点符号. 不能使用bash里的关键字( ...
- Linux 学习笔记
Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...
- linux学习笔记2-linux的常用命令
第一篇博客:linux学习笔记1-ubuntu的安装与基本设置 之中,已经介绍了如何安装linux操作系统,以及一些基本的设置修改. 本篇博客主要介绍linux中的一些常用的终端命令 ======== ...
- Linux学习笔记(一)2015.4.13
研究生由单片机转Linux学习 首先安装VMware虚拟机,用的是VMware 10.0 在VMware 10.0上安装视频上推荐的Red Hat Linux 5 安装后正式进入Linux学习 笔记1 ...
随机推荐
- 二叉堆的介绍和Java实现
一.堆和二叉堆 堆,英文名称Heap,所谓二叉堆(也有直接称二叉堆为堆的),本质上是一个完全二叉树,前面也提到过,如果树接近于完全二叉树或者满二叉树,采用顺序存储代价会小一点,因此常见的二叉堆均是顺序 ...
- So easy RHCE
1.将VGSRV 拉伸为100MB VGSRV这个是逻辑卷的home分区,逻辑卷是可以随意拉伸的,但是需要注意的是拉伸之前必须使用umount卸载,否则系统会崩溃,虽然可以还原但是很麻烦,顺序不可 ...
- .net 密码明文传输 加密传递方法
未加密传递是这样的 html标签加密使用的是jquery.md5.js 自行官网下载 html代码 <head runat="server"> <meta ht ...
- mybatis sql语句中转义字符
问题: 在mapper ***.xml中的sql语句中,不能直接用大于号.小于号要用转义字符 解决方法: 1.转义字符串 小于号 < < 大于号 > & ...
- JavaScript三元运算符
㈠条件运算符也叫做三元运算符 ⑴语法:条件表达式?语句1:语句2: ⑵执行的流程: ①条件运算符在执行时,首先对条件表达式进行求值 ▶如果该值为true,则执行语句1,并返回执行结果 ▶如果该值为fa ...
- Homebrew是什么?怎么关闭自动更新?
Homebrew是MacOS 的软件包管理器. 通过它可以安装.卸载.更新.查看.搜索任何想要安装的软件.如:git, node等. 安装Homebrew /usr/bin/ruby -e " ...
- Django-视图函数/模板渲染/过滤器
一.Django的视图函数 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个 ...
- AcWing:237. 程序自动分析(离散化 + 并查集)
在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,…x1,x2,x3,…代表程序中出现的变量,给定n个形如xi=xjxi=x ...
- Educational Codeforces Round 53 E. Segment Sum(数位DP)
Educational Codeforces Round 53 E. Segment Sum 题意: 问[L,R]区间内有多少个数满足:其由不超过k种数字构成. 思路: 数位DP裸题,也比较好想.由于 ...
- 【java设计模式】-02工厂模式
工厂模式简述 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在工厂模式中,我们在创建对象时不会对客 ...