Bash 代码片段#
1. 获取脚本所在路径#
# 脚本所在路径
SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)
# 脚本所在路径的父路径
PARENT_DIR=$(dirname "${SCRIPT_DIR}")2. 逐行处理输出#
2.1. 逐行处理文件#
while IFS= read -r line; do
echo "${line}"
done <FILENAME如果不添加 IFS=,读到的 line 会删除行首和行尾的 IFS 空白字符(默认是空格和制表符),保留中间空白。
例如对于以下字符串:
line 1
line 2
line 3- 如果不添加
IFS=,获取到的字符串是line 1、line 2、line 3; - 如果添加
IFS=,获取到的字符串是line 1、line 2、line 3。
2.2. 逐行处理命令输出#
while IFS= read -r line; do
echo "${line}"
done < <(ls -l)2.3. 逐行处理变量内容#
sometext=$(ls -l)
while IFS= read -r line; do
echo "${line}"
done <<<"${sometext}"3. 打印连续数字#
# 打印数字 1 到 10
echo {1..10}
# 打印等宽的数字 01 到 10
echo {01..10}4. Find#
4.1. 找出大于某个大小的文件#
find . -type f -size +100M
find . -type f -size +100M -printf "%k KB %p\n" | sort -rnk 14.2. 找出并且打印文件大小#
find . -name '*.txt' -exec ls -lh {} +
find . -name '*.txt' -printf "%p %k KB\n"