繁体   English   中英

Bash:用变量组合 url 并将其发送到浏览器

[英]Bash: compose url with variables and send it to browser

我想在 firefox 中编写一个打开 Jupyter Notebook 的命令,但我在 bash 中苦苦挣扎。

# This is what I want to achieve:
$ firefox --new-tab localhost:8888/tree/notebooks/my_notebook.ipynb

到目前为止,我可以将 url 回显到笔记本上:

$ cd notebooks
$ var="my_notebook.ipynb"
$ echo localhost:8888/tree/${PWD}/${var} | sed 's/\/home\/johndoe\///g'
localhost:8888/tree/Dropbox/notebooks/my_notebook.ipynb

如何将上面的字符串传递给 firefox 命令? 我尝试使用命令替换$() ,管道| , 引号,但没有成功。

我假设 jupyter-notebook 从我的主目录/home/johndoe运行。 如果您可以将$HOME传递给该sed命令,则可获得奖励积分

解决方案:我创建了一个 function(不是别名),它在文件或目录的 firefox 中打开 Jupyter Notebook,如下所示:

nb() { 
firefox --new-tab "$(echo localhost:8888/tree/$(realpath --relative-to="$HOME" "${PWD}")/$1)" & 
}

我尝试使用命令替换 $()、管道 |、引号,但没有成功。

真的吗? 只是:

firefox --new-tab "$(echo localhost:8888/tree/${PWD}/${var} | sed 's/\/home\/johndoe\///g')"

如果您可以将 $HOME 传递给该 sed 命令,则可获得奖励积分

使用不同的分隔符 - 使用~你应该足够安全。 并了解 shell 中的报价。

sed "s~$HOME~~g"

您可以通过以下方式获取相对路径:

realpath --relative-to="$HOME" "$PWD"

知道如何使用 $1 而不是 $var 将它放在别名中吗?

使用 function

some_function() {
    if (($# == 0)); then
        echo "Missing argument"
        return 1
    fi
    firefox --new-tab "localhost:8888/tree/$(realpath --relative-to="$HOME")/$1"
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM