Linux bash脚本编程
linux脚本编程通常用于控制操作系统,操作文件系统,进行简单的数字运算等。和Python,c语言不同的是,通常不用于复杂的逻辑和算数运算。
应用场景:大量使用bash命令对文件系统进行操作,控制操作系统
简述
1.变量操作
set 定义变量
unset撤销变量
使用变量
- 方法一
NAME="Open Stack"
echo $NAME
unset NAME
- 方法二
echo "There are some ${animal}s."
注意:
必须为双引号,单引号不会将转义 ${animal}
如果变量中间有空格,则必须用花括号,否则花括号可以省略
变量类型
本地变量:NAME="Open Stack"
,只对当前shell进程有效,对子shell和其他shell无效
局部变量:local VAR_NAME=Value
只对代码段有效,仅对局部代码有效,不包括当前shell
环境变量:export VAR_NAME
,对当前shell及其子shell有效,例如:export LANG=en
位置变量:$1,
2
,
.
.
.
特殊变量:
2,… 特殊变量:
2,…特殊变量:
,
,
,!,KaTeX parse error: Expected ‘EOF’, got ‘#’ at position 1: #̲,?
声明变量declare
bash也可以用declare声明变量
declara [option] var_name
option:
查看所有变量命令:
- set
使用变量
变量引用 :${VAR_NAME}
双引号:弱引用,可以进行变量替换
单引号:强引用,不可以进行变量替换,显示字符串本身
反引号:命令引用,“,$(),显示命令执行的结果
echo "My name is $NAME"
echo "The time is `data +%T`"
echo "The time is $(data +%T)"
touch file-`data +%F`.txt
touch file-$(data +%F).txt
2. 文件操作
文件夹操作
按列表显示文件详细信息
ls -al /tmp 显示/tmp下面所有文件的详细信息
创建文件夹
mkdir test1
mkdir -p test1/test2 递归创建文件
删除文件夹
rmdir test1 只能删除空文件夹
rmdir -p test1/test2 只能删除空文件夹
rm -rf test111 强制删除文件或文件夹中所有内容
移动文件或文件夹
mv test1 /tmp
mv test1 test2 test3 /tmp 将前面文件全部移动到/tmp目录下
给文件或文件夹改名
mv test1 test111
拷贝文件或文件夹
cp test1 /tmp 只能拷贝单个文件或空文件夹
cp test1 test2 test3 /tmp 将前面文件全部拷贝到/tmp目录下
cp -r test111 /tmp 递归拷贝,将文件夹中所有文件全部拷贝到/tmp目录下
文件操作
文件其他操作同上述文件夹一样
创建文件
touch 1.txt 创建一个空文件
touch 1.txt 2.txt 3.txt 创建3个空文件
修改文件内容
vim 1.txt 使用vim编辑器编辑1.txt
删除文件
rm 1.txt
3.权限管理
chmod +x demo.py 给demo.py一个执行权限
chmod o-w 1.txt 取消其他人对1.txt写权限
chown user1:grp1 test1 修改test1的属主为user1,属组为grp
4.文本操作
grep过滤命令
ls -al | grep test 查找当前路径下文件名包含test字样的文件
grep "sbin/nologin$" /etc/passwd 查找/etc/passwd文件中以sbin/nologin结尾的文件
正则表达式使用
通常我们在查找,搜索,过滤方面使用正则表达式,正则表达式需要配合相关命令使用,bash中正则表达式和一般编程使用的正则表达式稍有不同
^string 锚定行首符合条件的内容
string$ 锚定行尾符合条件的行
.:匹配任意单个字符
*:匹配紧挨着其前面的任意次
[]:匹配指定范围内的任意单个字符
?:匹配紧挨在其前面的字符0次或1次 写法 a?b
{m,n}:匹配其前面的字符至少m次,至多n次
匹配至多3次 {0,3}
匹配至少3次 {3,}
匹配3次 {3}
<: 锚定词首
>: 锚定词尾
<pattern>:锚定词首
bpatternb:锚定词尾
(): 分组 (pattern)
(ab){1,3}: 可以匹配多个ab组合
(a.b).*1 : 可以引用,1引用第一个括号内容,2引用第二个括号内容
扩展正则表达式 需要grep -e 或者egrep命令
+:匹配其前面的字符至少1次
?:匹配其前面的字符0次或1次
{m,n}:至少m次,至多n次
(): 分组,支持引用1,2
a|b: 匹配a或者匹配b
词首词尾锚定,必须要转义
<: 锚定词首
>: 锚定词尾
^: 匹配开头
$: 匹配结尾
5.vim编辑器使用
linux中最常见的文本编辑器,通常我们用他来编写文本程序或者编写代码
打开vim vim 1.txt
编写内容 输入i进入输入模式
保存并退出 输入模式按ESC,然后输入:qw
6. bash脚本编写格式
#!/bin/bash
echo hello world
7. 条件判断
if条件判断
if 条件1; then
语句1
语句2
elif 条件2; then
语句1
语句2
else
语句1
语句2
fi
详细内容见下面博客
bash if条件判断
case条件判断
case 变量 in
条件1)
语句1
语句2;;
条件2)
语句1
语句2;;
*)
语句1
语句2;;
esca
详细内容见下面博客
bash case用法
8. 循环语句
for循环
示例1
for VAR_NAME in 元素1 元素2 ...
do
语句1
语句2
....
done
示例2
for ((i=0;i <=100;i++));do
let sum+=i
done
详细内容见下面博客
bash for循环
while和until循环
while 测试条件;do
语句1
语句2
...
done
until 测试条件; do
语句1
语句2
....
done
详细内容见下面博客
bash while循环和until循环
9. 常用命令和快捷键
ctrl + l 清屏
ctrl + c 取消或终止
tab 命令补齐,路径补齐
详细内容见下面博客
Linux常用命令和快捷键
用户和组相关命令
linux用户和组相关的命令
未完待续…
原文地址:https://blog.csdn.net/xgy123xx/article/details/126168065
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_41736.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!