shell | 基基基础
0. 分号=换行
1. 变量赋值不可以有空格
2. 变量赋值不加$, 使用变量的时候才加$
3. 字符串
变量:一般用双引号
str=“aaa”;
获取字符串长度:# (数组也是
len=${#str};
提取子串, 从第二个位置开始 取2个字符
s=${str:1:2};
4. 数组
变量用()表示,并用空格分开
arr=(1 2 3);
获取数组的所有元素:@或者*
echo ${arr[@]}
获取数组长度
len=${#arr[@]}; // 注意要加[@],否则#arr会输出1
5. 运算
算术表达式 + - * / %
val=`expr $a + $b` // *需要写成 \*,多写一个转义符
赋值
val=$a
条件表达式 == !=
if [ $a == $b ] // 空格一个都不能少
关系运算符 -eq相等 -ne不等 -gt大于 -lt小于 -ge大于等于 -le小于等于
if [ $a -lt $b ]
布尔运算符 !非 -o或 -a与
if [ $a -lt 100 -a $b -gt 15 ]
逻辑运算符 && ||
if [[ $a -lt 100 && $b -gt 100 ]] // 注意和上一条区别
字符串运算 =相等 !=不等 -z长度为0 -n长度不为0 $为空
if [ $str ]
6. 其他运算符
let 赋值并运算,支持++/--
let a++; let a+=2
expr 运算
expr 1 \* 2 // 运算符两边需要有空格,并且乘号和括号要加转义
bc 支持浮点运算和平方
echo "10^10" |bc; echo "1.2 < 2" |bc
7. echo
echo -e "OK! \n" // -e指开启转义,这样\n才会显示换行
8. printf
%s 输出一个字符串,%d 整型,%c 字符,%f 实数,以小数形式输出。
%-10s 指一个宽度为 10 个字符(- 表示左对齐,没有则表示右对齐),任何字符都会被显示在 10 个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。
%-4.2f 指格式化为小数,其中 .2 指保留2位小数。
printf "%-10s %-8s %-4.2f\n" ABC male 48.6543
9.流程控制
if ()
if 条件表达式; then
命令
elif 条件表达式; then
命令
else
命令
fi
for ()
for i in {1..3}; do for ((i=1;i<=5;i++)); do
echo $i echo $i
done done
# 检查多个主机是否存活
for ip in 192.168.1.{1..254}; doif ping -c 1 $ip >/dev/null; thenecho "$ip OK."elseecho "$ip NO!"fi
done
while ()
while 条件表达式; do
命令
done
# 使用 while 循环逐行读取 a.txt 文件
# 方法一
cat ./a.txt | while read LINE; doecho $LINE
done
# 方法二
while read LINE; doecho $LINE
done < ./a.txt
# 方法三
exec < ./a.txt
while read LINE; doecho $LINE
done
case
case 模式名 in
模式 1)
命令
;;
模式 2)
命令
;;
*)
不符合以上模式执行的命令
esac
case $1 in[0-9])echo "match number.";; [a-z])echo "match letter.";;'-h'|'--help')echo "help";; *)echo "Input error!"
exit esac
10. 函数
func() {
echo "Hello $1"
}
func world // func 函数名代表执行,不用加()
11. 正则
(开一个新的连接吧。。)
12. grep / sed / awk
(也开一个新的连接吧)
13. 标准输入、输出和错误
文件描述符 重定向符号
0 标准输入 > 从左往右输入 < 从右往左输入
1 标准输出 >> 从左往右追加输入 << 从右往左输入
2 标准错误 & 重定向绑定
重定向输出
echo "test" > a.txt // 覆盖掉a原本中的所有东西
echo "test" >> a.txt // 追加
重定向输入
grep "test" --color < a.txt // a.txt 内容作为 grep 输入
重定向输出+错误
echo "1 + 1" |bc &> err.log // 不确定执行对错,但无论对错都覆盖到err.log
echo "1 + 1" |bc > err.log 2>&1 // 上一条的另一种写法,2/1 代表错误/输出
重定向到空设备 (当不想要这些输出数据时)
echo "test" >/dev/null // 忽略输出
echo "1 + 1" |bc 2>/dev/null // 忽略错误
14. 常见目录
/home |
普通用户家目录 |
|
/root |
超级用户家目录 |
|
/usr | 用户命令、应用程序等 | |
/var |
应用数据、日志等目录 |
log在这里 |
/lib |
库文件和内核模块目录 |
|
/etc |
系统和软件配置文件 |
系统版本、主机名与 IP、dns、主机名、服务启动脚本、网卡、ssh、系统任务计划、sudo配置、硬盘挂载配置、tcp访问列表等 |
/bin |
可执行程序目录 |
|
/boot |
内核加载所需的文件,grub 引导 |
|
/dev | 设备文件目录 |
IDE 设备、SCSI 设备、LVM 逻辑磁盘等 |
/tmp |
临时文件目录 |
|
/opt |
第三方软件安装目录 |
|
/proc |
虚拟目录,Linux启动后生成。存放内核运行时的参数、网络信息、进程状态。 |
运行参数包括CPU 信息、swap分区信息、文件系统挂载信息、CPU 利用率,磁盘,内存页等等 |
/proc/net | 存放网络信息 | 包括tcp、udp状态,网卡流量、路由表、arp信息表、socket 使用情况、传输协议的信息等 |
/proc/sys | 内核参数,可读写。分四大类 |
fs 文件系统各方面信息,包括inode、目录项等; |
shell | 基基基础相关推荐
- 4.电子计算机的分类,公基计算机基础知识汇总40
公基计算机基础知识汇总40 (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 3. 运算精度高电子计算机具有以往计算机无法比拟的计算精度, ...
- shell脚本的基础知识
shell脚本的基础知识 1 什么是shell 2 shell脚本的意义 3 如何创建shell脚本 4 如何执行shell脚本 5如何对脚本脚本进行调试 6 脚本练习 1 什么是shell shel ...
- shell常用的基础命令
shell常用的基础命令 1 diff命令 2 patch命令 3 cut命令 4 sort命令 5 uniq 命令 6 tr命令 7 &&和 || 8 test命令 8.1 test ...
- shell脚本由基础变量及特殊变量($@、$*、$#等)到实战。
shell脚本由基础变量及特殊变量($@.$*.$#等)到实战. 一.shell脚本建立: shell脚本通常是在编辑器(如vi/vim)中编写,也可以在命令行中直接执行: 1.脚本开头: 规 ...
- linux基础—课堂随笔_03 SHELL脚本编程基础
shell脚本编程基础 条件选择:if语句 选择执行: 注意:if语句可嵌套 单分支 if(开头)判断条件:then 条件为真的分支代码 fi(结尾) 双分支 if(开头)判断条件:then 条件为 ...
- 详细介绍Linux shell脚本系列基础学习(列表)
本系列适合Linux初学者,属于Linux入门级教程,主要介绍了Shell的分类.语法格式以及脚本的使用和编写格式等. 不断更新中,是Shell学习的必读经典教程.现主要包含以下文章: Linux S ...
- linux sh 必要,Linux Shell学习之基础篇(不适合学习,仅为本人笔记)
在学习Linux和OpenStack过程中,感觉不管是大规模部署部署还是运维,Shell脚本都已经是标配,所以学好脚本很有必要. 以下仅为Linux Shell的一些基础笔记,这里作为笔记记下. == ...
- Linux Shell脚本编程基础
2 Linux Shell脚本编程基础 发表于: Linux, Shell, UNIX, 资源分享 | 作者: 谋万世全局者 标签: Linux,Shell,编程基础,脚本 本文作者:Leal 授权许 ...
- 《Linux C编程从入门到精通》——1.3 Shell的使用基础
本节书摘来自异步社区<Linux C编程从入门到精通>一书中的第1章,第1.3节,作者:宋磊 , 程钢著,更多章节内容可以访问云栖社区"异步社区"公众号查看 1.3 S ...
- 《Linux C编程从入门到精通》一1.3 Shell的使用基础
本节书摘来自异步社区<Linux C编程从入门到精通>一书中的第1章,第1.3节,作者 宋磊 , 程钢,更多章节内容可以访问云栖社区"异步社区"公众号查看 1.3 Sh ...
最新文章
- 使用Node.js快速搭建WebSocket server
- STL之nth_element__寻找第n大的元素
- 5脚12v继电器接线图解_【电器元件002】你真的懂汽车继电器么
- Unity 2017 Game Optimization 读书笔记 The Benefits of Batching
- 门限回归模型的思想_Stata+R:门槛回归教程
- GitHub下载文件时缓慢的问题
- 文件读取 linux_Linux 进程、线程、文件描述符的底层原理
- android数据存放map_Android存储数据到本地文件
- 电商视觉:焦点图的万能构图模板
- 华为云 GaussDB 数据库,会是新的国产之光吗?
- Disruptor 分析
- DXGI抓屏优化扩展:GPU硬件编码保存文件即录像为MP4和FLV,外加麦克风+计算机声音
- 在method方法被调用之后,仅打印出a=100,b=200,请写出method方法的代码
- 激光SLAM:LOAM-Livox 算法研究(1) -- 功能包编译与验证
- ActiveMQ的MQTT:WARN | Stealing link for clientId XXX From Connection Transport
- MYSQL不能远程连接
- 抽奖功能java开发_基于Java实现抽奖系统
- 《算法笔记》——基础篇习题选择结构
- [附源码]计算机毕业设计JAVA领导干部听课评课管理系统
- 怎么看服务器硬盘是机械还是固态,怎么辨别机械硬盘和固态硬盘?(附多种方法)...