文章摘要: Bash(GNU Bourne-Again SHell)是许多Linux发行版的默认脚本语言。
简介
简要说明
- Bash(Bourne-Again SHell)是一种为GNU项目编写的Unix shell和命令语言解释器。
- 它是大多数Linux发行版和macOS中的默认命令行接口。
主要功能
- 命令行解释:执行用户输入的命令,可以是内置命令或外部程序。
- 脚本编写:允许用户编写脚本来自动化任务。
- 变量赋值与使用:可以定义和使用变量来存储和操作数据。
- 流程控制:支持条件判断(if, else, elif)、循环(for, while)等流程控制结构。
- 管道和重定向:可以将一个命令的输出作为另一个命令的输入(管道),以及重定向输出到文件或设备。
- 提供命令历史记录功能:允许用户查看和重复之前的命令。
- 提供别名机制:可以为常用命令或命令序列设置简短的别名。
注意事项
- 安全性:在编写脚本时,要注意变量和命令的引用,以避免安全漏洞,如注入攻击。
- 引号使用:在处理变量和字符串时,正确使用单引号、双引号和无引号是至关重要的。
- 特殊字符处理:在脚本中处理特殊字符(如空格、换行符等)时需要特别注意。
- 权限问题:执行脚本时可能需要适当的文件权限和用户权限。
- 脚本调试:编写复杂的脚本时,调试可能会很困难,因此需要良好的错误处理和日志记录。
适用场景
- Linux和Unix系统的日常命令行操作。
- 自动化系统管理和维护任务,如备份、用户管理、日志分析等。
- 开发自动化测试脚本。
- 数据处理和分析。
- 编写简单的到复杂的程序和应用程序。
- 服务器脚本,例如CGI脚本处理Web请求。
- 作为其他编程语言和工具的接口或桥梁。
脚本
- Shell脚本是一组按顺序执行的Shell命令。Shell脚本可以用于自动化任务和创建更复杂的应用程序。
- 脚本通常以
#!/bin/bash开头,指明脚本的解释器。
在文件开头写上如下内容,表示该文件是bash shell脚本文件:
#!/usr/bin/bash
运行方式
# 方案一
bash <脚本名>
# 方案二
sh <脚本名>
# 方案三
<脚本名>
# 方案四
source <脚本名>
运算符
数据类型
表达式
变量
- Shell变量用于存储数据。变量可以通过
=符号赋值,例如name=John。 - 变量名可以由字母、数字和下划线组成,但不能以数字开头。变量值可以是字符串、数字或其他特殊字符。
定义变量:<变量名>=<变量值>
引用变量:$<变量名> ${<变量名>} "$<变量名>"
查看变量:echo $<变量名>
删除变量:unset <变量名>
警告
定义变量时=两边不能有空格。 原因:在终端(命令行界面)中空格代表这段命令结束、断句、分隔。 若遇到字符串中带有空格时,可通过""双引号将字符串包裹起来。
关键字
# 输出信息
echo "hello word!"
条件语句
循环语句
函数
输入和输出
算术运算符
数组和哈希表
进程管理
环境变量
函数替换和命令组
bash命令
type 提示命令的类型 which 显示外部命令的位置,若是内嵌命令则报错 help 简要帮助 man 详细帮助 apropos 通过关键字来查询用户手册相关命令 whatis 返回命令的简要说明 info 类似网页形式的有超链接形式的用户手册查询命令 alias 自定义多命令执行的命令别名 unalias 删除命令别名
pwd 输出显示当前完整路径 cd 转跳路径 .. 代表上一级目录 ~ 代表用户家目录
ls list 输出显示当前目录下的内容
-a 列出目录下的所有内容,包括隐藏的文件,all(全部) -d --directory -F 文件或者目录名字后面加一个字符和分类标识,--classify -h 可读的格式展示,--human-readable -l 输出显示详细信息,long(长) -i 显示文件的节点序号(内存地址) -r --reverse 反序 -t --time 按修改日期排序
cp 复制文件和目录,copy(复制)
-a 将权限一起复制 -i 交互式的信息确认 -r 递归,将目录内的文件一起复制 -u 只复制新更新的内容 -v 提供详细的操作信息
mv 移动/重命名文件和目录,move(移动)创建文件
-i 交互式的信息确认 -u 只复制新更新的内容 -v 提供详细的操作信息
namo 创建文件 mkdir 创建目录 rm 删除文件和目录
-i 交互式 -r 递归,删除 -f 强制 -v 提供详细的操作信息
ln 创建硬链接和软连接(符号链接)
ls 源文件 硬链接文件 ls -s 源文件 软连接文件
file 确认文件的文件类型 chmod 改变文件权限 find 搜索符合要求的文件 cat 展示输出文件内容,小文件适用 less 展示输出文件内容,大文件适用 grep 搜索文件中的内容
date 输出显示当前时间 df 输出显示磁盘信息 -h 可读的格式显示 free 输出显示内存信息 -h 可读的格式显示
heda -n 【数字】 sort 根据字典顺序进行排序
history 输出显示过去运行过哪些命令
! + 数字 将再次运行对应的命令
ps 检测和管理进程
aux 查看所有用户运行的所有进程
top 系统监控,提供进程和系统资源消耗的实时视图
Ctrl+C快捷键 退出top界面
kill 终止进程
sudo kill
lsblk 列出磁盘和分区 ==fdisk 列出并管理磁盘和分区==
==lshw 获取硬件细节==
env 显示linux系统中所有的环境变量 echo 显示某个环境变量中有哪些路径 which 查找某个命令所在的绝对路径
tar 将许多文件一起保存到一个单独的磁盘中进行归档(打包)
I/O重定向
cat 连接文件 sort 排序文本行 uniq 报道或省略重复行 grep 打印匹配行 wc 打印文件中换行符,字,和字节个数 head 输出文件第一部分 tail 输出文件最后一部分 tee 从标准输入读取数据,并同时写道标准输出和文件