Shell脚本中basename命令的高效使用指南
创作时间:
作者:
@小白创作中心
Shell脚本中basename命令的高效使用指南
引用
7
来源
1.
https://www.cnblogs.com/my_captain/p/7147656.html
2.
https://www.geeksforgeeks.org/basename-command-in-linux-with-examples/
3.
https://ioflood.com/blog/bash-basename/
4.
http://manual.51yip.com/shell/ivr.html
5.
https://www.cnblogs.com/my_captain/p/7147652.html
6.
https://linuxize.com/post/basename-command-in-linux/
7.
https://www.baeldung.com/linux/basename-guide
在Shell脚本开发中,basename
命令是一个不可或缺的工具,主要用于从路径中提取文件名或目录名,并可去除指定的前缀和后缀。掌握其用法可以让你的脚本编写更加简洁高效。
基本语法与选项
basename
的基本语法如下:
basename NAME [SUFFIX]
NAME
: 文件或目录的路径。SUFFIX
: 可选参数,用于移除文件名末尾的指定后缀。
选项
-a, --multiple
: 支持多个输入,分别处理每个参数。-s, --suffix=SUFFIX
: 移除所有匹配的后缀(需与-a
配合使用)。-z, --zero
: 使用 NUL 字符分隔输出结果,而非换行符。--help
: 显示帮助信息并退出。--version
: 显示版本信息并退出。
基础用法示例
提取文件名
$ basename /path/to/file.txt
file.txt
删除指定后缀
$ basename /path/to/file.txt .txt
file
处理多个输入
$ basename -a /path/to/file1.txt /path/to/file2.md
file1.txt
file2.md
高级应用实例
在日志清理脚本中的应用
在系统管理中,日志文件的清理是一个常见的任务。以下是一个使用basename
的日志清理脚本示例:
#!/bin/bash
LOG_DIR=/var/log
ROOT_UID=0
LINES=50
E_XCD=66
E_NOTROOT=67
E_WRONGARGS=65
if [ "$UID" -ne "$ROOT_UID" ]
then
echo "Must be root to run this script."
exit $E_NOTROOT
fi
case "$1" in
"" )
lines=$LINES
;;
*[!0-9]* )
echo "Usage: `basename $0` file-cleanup"
exit $E_WRONGARGS
;;
* )
lines=$1
;;
esac
if [ "$PWD" != "$LOG_DIR" ]
then
echo "Can't change to $LOG_DIR."
exit $E_XCD
fi
tail -$lines messages > mesg.temp
mv mesg.temp messages
cat /dev/null > wtmp
echo "Logs cleaned up."
exit 0
在这个脚本中,basename $0
用于获取脚本自身的名称,用于在错误提示中显示。
在文件格式转换脚本中的应用
在文件处理任务中,经常需要批量转换文件格式。以下是一个将GIF图像转换为PNG格式的Shell脚本示例:
#!/bin/sh
for file in *.gif; do
if [ ! -f "$file" ]; then
exit
fi
b=$(basename "$file" .gif)
echo "Converting $b.gif to $b.png"
giftopnm "$b.gif" | pnmtopng > "$b.png"
done
在这个脚本中,basename
用于去除文件的.gif
后缀,生成新的文件名。
注意事项
- 路径结尾斜杠: 如果路径以
/
结尾,basename
返回空字符串。 - 多后缀处理: 若文件有多个后缀,需多次调用
basename
分别删除。 - 系统安装: 默认可能未预装,可通过包管理器(如
apt-get
,yum
,pacman
)安装coreutils
包。
通过以上介绍,你可以灵活运用 basename
命令来简化文件路径操作。无论是处理日志文件、转换文件格式,还是其他文件操作任务,basename
都能帮助你写出更简洁、高效的Shell脚本。
热门推荐
什么是大宗商品价格?大宗商品价格的波动因素有哪些?
小孩子被车撞伤后,家长需要准备哪些赔偿证据?
小孩在学校受伤怎么办?家长必知的沟通与维权指南
2025年中国新能源产业全景图谱:市场规模、竞争格局和发展趋势
Windows键失灵怎么办?各品牌电脑解锁Win键方法全攻略
超薄硅晶圆的发展历程与未来展望!
落实专门矫治教育 专门学校建设亟须更专业
场记工作内容及其注意事项
健身完为什么要补充蛋白质
Steam令牌短信代码与预期不符的应对办法
🔍职场攻略:优雅应对老板的“画饼”艺术,让努力与回报并行✨
IT可观测系列剖析——日志体系建设,企业运维排障“最后一公里”
数据库日志管理的策略
芍药花可以盆栽吗怎么养?
高血压10种最常用药
脑卒中偏瘫患者上肢Brunnstrom康复训练指南
果然最飒的女主都是穿越来的!
钢筋的重量怎么计算
87版《红楼梦》最初演员名单及定妆照曝光,王扶林选角眼光太准了
查血脂抽血需要空腹吗
图片懒加载的四种实现方案
什么是聚酯纤维 聚酯纤维的性能及用途
如何解决借呗逾期问题,并避免影响朋友关系?
恋爱中的金钱观:如何合理分配财务?
张桂容:网约车司机的“金牌”之路
最强祖师韩立强度分析测评
孕期嗓子疼饮用蒲公英水安全指南:功效、禁忌与替代方案
胎停育后多久可以再怀孕?再孕需要注意哪些?
小乔的生活:在历史与传说之间寻找真实
一文读懂:“房地产税”与“房产税”区别