作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个自定义脚本,用于在目录中创建文件。
/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
预期:
pwd
但这会输出主目录路径而不是输入命令的路径
realpath $0
不工作
最佳答案
我了解您的问题是什么,我认为您应该将别名设置如下:
alias mkfile="~/mkfile.sh $(pwd)"
此命令将调用脚本的完整路径发送为
dir_str
试试这个,我希望这会有所帮助。
关于linux - 如何从 Linux 运行 shell 文件的位置获取路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71172122/
我是一名优秀的程序员,十分优秀!