Shell 踩坑指南
摘要
1、shell运维
2、shell解释器管理集群
一、shell 标准样式:
1、指定解释器:
sh是规范,bash是实现,在linux系统中一般都会将/bin/sh软链到/bin/bash上
centos默认解释器为bash
Ubuntu默认解释器 python
二、echo打印方式
在shell中可以使用 单引号,双引号,和不适用任何符号,修饰来打印内容。
#!/bin/bash
echo "echo 的三种输出方式"
echo 'tom'
echo tom
echo "tom"
echo tom
#!bin/bash
echo "Helloword"
三、变量
shell中可以自定义变量,不需要修饰。
在变量名前面加美元符号可以使用该变量。
变量名外面的花括号可有可无,主要便于区分。
unset 命令可以删除变量
#!/bin/bash
echo '------------变量---------------'
#=中间不可有空格
name="tom"
echo $name
echo ${name}
echo '123 $name'
echo "123 $name"
unset name
echo $name
四. 批量重命名
在linux中使用find命令和rename命令,修改文件夹下的文件名,修改方式如下:
例如 需要将文件名 重命名为以下形式:
Zhantingshi_7月29日fole_202304314365_12.jpg_(1203, 1234, 243, 121).jpeg
Zhantingshi_7月29日fole_202304314365_12.jpg
但() 内的数字是不确定的,最后的后缀.jpeg也是不确定的
参考命令:
find /path/to/folder -type f -name 'name_(*).*' -exec rename 's/name_\(.*\)\..*/name/' {} \;
其中,有些字符需要使用转义字符表示,
例如 * 需要用 \* 表示
例如 . \.
其中,还使用到了正则表达式:
.* 用于匹配任意数量(包括0个)的任意字符
故上述字符name_\(.*\)\..* 可以拆分为:
name_ \( .* \) \. .*
在 Linux 命令行中,常见的需要转义的特殊字符包括:
$
(美元符号):用于变量替换和命令替换。- ```(反引号):用于命令替换。
"
(双引号):用于定义双引号字符串。\
(反斜杠):用于转义字符。#
(井号):用于注释。&
(和号):用于在后台运行命令。|
(竖线):用于管道。;
(分号):用于分隔命令。<
和>
(小于号和大于号):用于输入输出重定向。
这些字符在特定情况下可能需要使用反斜杠 \
来转义,以保留它们的字面意义。
五 没想好写啥
持续更新