Linux alias别名一行命令修改文件名为最后编辑日期

前言全局说明

某些情况下,没有.bashrc文件,但需要频繁使用某个功能,手动输入太麻烦,写脚本又不能自动加载。
所以,就只能用 alias 用的时候直接复制粘贴到对话框就可以重复使用命令了。


一、说明

1.1 调试环境:

openWRT BusyBox v1.33.2 (2024-03-15 11:50:19 UTC) built-in shell (ash)


不想看过程,直接跳到“第五章”看结果



二、alias 说明

alias 的功能只是简单的替换,并不支持$@、$1这些参数输入

三、失败示例:

3.1

echo s_huan > t.txt
alias mvbak='for f in "$@"; do mv "$f" "${f}.bak"; done'
mvbak t.txt

因为不识别$@参数,会报语法错误
image

3.2 换成echo

既然上面的不成功,就打印看到底输出什么

alias mvbak='f=$1; echo "${f}_aa ${f}_bak"'
mvbak t.txt

输出下面结果,说明$1没有赋值给f, 但是却获得t.txt,也就是输入的参数会跟在命令最后
image


四、函数实现

既然只能跟到最后,怎么办呢,支持$@、$1的就只有函数了。
简单命令都不能执行,函数能执行么,函数不都要写脚本里?
经过思考,函数要先声明,再调用。正好利用这个特性,在语句结尾添加调用函数。

4.1 原型

alias mvbak='mvbak() { echo $1 }; mvbak'

出现了 “>” , 这个符号的意思是解释器,认为你没有输入完成,是要输入多行命令,
但是我们要输入的都完成了。
image

多次回车是不能退出的,输入;或} 可以退出,但报错了。去问问AI
image

4.2 原型修改

经过AI提醒,发现要在$1后也要加封号。

alias mvbak='mvb(){ echo "$1"; }; mvb'

能输出,说明参数传递了。
成功效果:
image


五、最终实现

上面实现成功了,我们来实现改名字

alias mvbak='mvb(){ mv "$1" "${1}_$(date -r "$1" +"%Y%m%d-%H%M%S")"; }; mvb'

成功效果:
image



免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。




参考、来源:
https://www.wenxiaobai.com/0418d11f-1d14-421f-aab7-0bfe12f7452b



posted @ 2025-12-25 16:42  悟透  阅读(4)  评论(0)    收藏  举报