gpt4 book ai didi

linux - 如何从 Linux 运行 shell 文件的位置获取路径?

转载 作者:行者123 更新时间:2023-12-04 18:38:53 25 4
gpt4 key购买 nike

我创建了一个自定义脚本,用于在目录中创建文件。
/mnt/c/Users/username/Documents/mkfile.sh(我使用的是 Linux 的 windows 子系统)

dir_str=$1
dir_arr=($(echo $dir_str | tr "[\\\/]" "\n"))
dir_path=""
file_name=""

for i in "${!dir_arr[@]}"
do
dirArrLen=${#dir_arr[@]}
if [ $(($i+1)) -ge $dirArrLen ]
then
sudo touch "${dir_path}/${dir_arr[$i]}"
file_name=${dir_arr[$i]}
# echo "${dir_path}/${dir_arr[$i]}"
elif [ $(($i+1)) -eq 1 ]
then
# to avoid starting slash
sudo mkdir "${dir_arr[$i]}"
dir_path=${dir_arr[$i]}
# echo $dir_path
else
sudo mkdir "${dir_path}/${dir_arr[$i]}"
# echo "${dir_path}/${dir_arr[$i]}"
dir_path="${dir_path}/${dir_arr[$i]}"
fi
done
echo "File ${file_name} has been created successfully in ${dir_path}"
当这在路径(/mnt/c/Users/username/Documents/)内执行时,mkfile shell 脚本文件现在存在,它会成功创建一个文件。
前任:

Input :

/mnt/c/Users/username/Documents$./mkfile.sh hello/world/new.txt

Output:It creates a new.txt file inside like :/mnt/c/Users/username/Documents/hello/world/new.txt

File new.txt has been created successfully in hello/world
但是当我将文件移动到主目录时,将其添加到 ~/.bashrc 中的别名类似文件(使其成为自定义 shell 命令)
alias mkfile="~/mkfile.sh"
这个shell脚本不工作(我认为这是试图在主目录中创建一个文件
从它被调用的地方),例如:
username@DESKTOP-SELKMGP:/mnt/c/Users/username/Documents/$ mkfile hello/world/new.txt
不会在文档中创建任何目录/文件。
问题:
内部 mkfile.sh位于主目录中的文件是否有任何方法可以捕获输入命令的目录的路径,
前任:
输入:
/mnt/c/Users/username/Documents$ mkfile hello/world/new.txt
预期:
在 ~/mkfile.sh 中位于我想要获取的主目录中:
/mnt/c/Users/用户名/Documents/
我试过 pwd但这会输出主目录路径而不是输入命令的路径
还有 realpath $0不工作

最佳答案

我了解您的问题是什么,我认为您应该将别名设置如下:

alias mkfile="~/mkfile.sh $(pwd)"
此命令将调用脚本的完整路径发送为 dir_str试试这个,我希望这会有所帮助。

关于linux - 如何从 Linux 运行 shell 文件的位置获取路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71172122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com