Thunar自定义动作:无法正确获取文件完整路径及文件名的求助
Thunar自定义动作:无法正确获取文件完整路径及文件名的求助
嘿,我懂你配置Thunar自定义动作时的烦恼——想把选中文件的完整路径+文件名导出来用Geany查看,结果要么只拿到文件名,要么命令执行出问题,咱们一步步来解决~
先拆解你遇到的问题:
- 你用
basename %f > filename.txt && geany filename.txt && rm filename.txt只得到文件名是正常现象,因为basename命令本身就是用来提取文件名、去掉路径部分的,这个命令本来就做不到你想要的效果。 - 你的第一个命令
readlink -f %f > filename_path.txt && geany filename.txt_path && rm filename_fath.txt思路是对的(readlink -f %f确实能输出完整路径+文件名),但问题出在拼写错误:- 打开文件时写成了
filename.txt_path,正确的应该是你前面创建的filename_path.txt - 删除文件时把
filename_path.txt写成了filename_fath.txt,拼写失误导致执行失败
- 打开文件时写成了
修正拼写后的正确命令应该是:
readlink -f %f > filename_path.txt && geany filename_path.txt && rm filename_path.txt
另外给你个小优化建议:直接用固定的临时文件名可能会有冲突(比如同时操作多个文件时),可以用mktemp生成唯一的临时文件,更稳妥:
temp_file=$(mktemp) readlink -f %f > "$temp_file" geany "$temp_file" rm "$temp_file"
这个写法会自动生成一个不会重复的临时文件路径,避免文件覆盖的问题,执行逻辑也更清晰。
还有个小知识点:其实Thunar里的%f变量本身就已经是选中文件的完整路径了,你甚至可以简化成直接输出%f到临时文件,效果和readlink -f %f一致,比如:
echo "%f" > filename_path.txt && geany filename_path.txt && rm filename_path.txt
不过readlink -f的优势是能处理符号链接,如果你不需要处理软链接,直接用%f就足够啦。
备注:内容来源于stack exchange,提问作者fixit7
相关产品推荐
相关产品推荐

