通配符
是用来匹配文件名或路径名的特殊字符。在Linux系统中,通配符常用于文件操作命令中,比如`ls`、`cp`、`mv`等命令,用于匹配文件名或路径名。以下是常用的通配符及其含义:
1. `*`:匹配零个或多个字符。例如,`*.txt`匹配所有以 `.txt` 结尾的文件名。
2. `?`:匹配任意单个字符。例如,`file?.txt`匹配 `file1.txt`、`file2.txt` 等。
3. `[]`:匹配指定范围内的字符。例如,`[abc]`匹配字符 `a`、`b` 或 `c`;`[0-9]`匹配数字 `0` 到 `9`。
4. `!`:排除特定字符或范围。例如,`[!0-9]`匹配除数字外的任意字符。
通配符可以帮助你更灵活地匹配文件名,从而实现更精确的文件操作。在编写脚本时,通配符经常与循环或条件语句一起使用,以便批量处理符合特定条件的文件。
好的,以下是一些具体的例子:
1. 使用 `*` 匹配任意多个字符:
- `ls *.txt`:列出当前目录中所有以 `.txt` 结尾的文件。
- `cp file* /destination`:复制当前目录中所有以 `file` 开头的文件到目标目录。
- `rm file*`:删除当前目录中所有以 `file` 开头的文件。
2. 使用 `?` 匹配单个字符:
- `ls file?.txt`:列出当前目录中所有类似于 `file1.txt`、`file2.txt` 这样的文件。
- `cp ?.txt /destination`:复制当前目录中所有单个字符加 `.txt` 结尾的文件到目标目录。
- `rm file?.txt`:删除当前目录中所有类似于 `file1.txt`、`file2.txt` 这样的文件。
3. 使用 `[]` 匹配指定范围内的字符:
- `ls [abc]*`:列出当前目录中所有以 `a`、`b` 或 `c` 开头的文件名。
- `cp [0-9]* /destination`:复制当前目录中所有以数字开头的文件到目标目录。
- `rm [!0-9]*`:删除当前目录中所有不以数字开头的文件。
这些例子可以帮助你理解如何在具体的文件操作命令中使用通配符来匹配文件名。
输入输出
echo "hello,world!"
read age
echo "age is $age"
read a
read b
echo "$((a+b))"
数字计算需要(())
条件语句
-lt
: 表示小于(less than)-gt
: 表示大于(greater than)-eq
: 表示等于(equal)-ge
: 表示大于等于(greater than or equal to)-le
: 表示小于等于(less than or equal to)
read age
if [ age -ge 18 ]; then
echo "yes"
else
echo "no"
fi
if [ -f "main.c" ]; then#检查是否存在“main.c”文件(-d 检查目录)
echo "yes"
else
echo "no"
fi
echo "Choose an option: A, B, or C"
read option
case "$option" in
A)
echo "Option A selected."
;;
B)
echo "Option B selected."
;;
C)
echo "Option C selected."
;;
*)
echo "Invalid option."
;;
esac
#在Shell脚本中,`fi` 是 `if` 语句的结束标记。
#`fi` 是 `if` 反过来拼写的,表示结束。因此,每个 `if` 语句都必须以 `fi` 结束,以表示该语句的范围。
#这样Shell解释器才能正确地识别和执行 `if` 语句。
循环语句
for i in {1..5}; do
echo "Number: $i"
done
count=0
while [ $count -lt 5 ]; do
echo "Count: $count"
((count++))
done
文件操作
while IFS= read -r line; do
echo "Line: $line"
done < filename.txt