Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 从bash函数多命令别名打开chrome选项卡_Linux_Bash_Ubuntu_.bash Profile - Fatal编程技术网

Linux 从bash函数多命令别名打开chrome选项卡

Linux 从bash函数多命令别名打开chrome选项卡,linux,bash,ubuntu,.bash-profile,Linux,Bash,Ubuntu,.bash Profile,我想使用bash函数打开所有项目: runproject() { cd $HOME/projects/$1; workon $1; port $2 ; (sleep 3) && (google-chrome 127.0.0.1:$2/$3 &) ;} 目标是将项目名称、端口和可选url路径作为$3传递(如果需要),我的runproject将一直工作到打开chrome页面,而chrome页面永远不会打开。本系列的工作原理如下: runproject() { cd $HO

我想使用bash函数打开所有项目:

runproject() { cd $HOME/projects/$1; workon $1; port $2 ; (sleep 3) && (google-chrome 127.0.0.1:$2/$3 &) ;} 
目标是将项目名称、端口和可选url路径作为$3传递(如果需要),我的runproject将一直工作到打开chrome页面,而chrome页面永远不会打开。本系列的工作原理如下:

runproject() { cd $HOME/projects/$1; workon $1; port $2 ;} 

alias runautohelper='(runproject autohelper 8009 &) && (sleep 3) && (google-chrome 127.0.0.1:8009/bitbucket/create-repo &)'
alias runjavascript='(runproject javascript-practice 8111 &) && (sleep 3) && (google-chrome 127.0.0.1:8111/ &)'
现在,这些长命令正在污染我的bash_配置文件。如何修复此runproject,使其能够使用我希望的3个参数?多谢各位

set-x显示它在启动django runserver后立即失败:

cchilders:~$ runproject scriptamajig 8002
+ runproject scriptamajig 8002
+ cd /home/cchilders/projects/scriptamajig
+ workon scriptamajig
+ all sortsa messy venv setup stuff ending in "rm -f /tmp/virtualenvwrapper-post_activate-hook-5dpzsx8fRm"
+ return 0
+ return 0
+ port 8002
+ fuser -k 8002/tcp
8002/tcp:             8524
+ python manage.py runserver 8002
Performing system checks...
fuser-k 8002/tcp
正是
端口8002
所做的。我不知道为什么
set-x
没有显示它正在睡眠,但即使删除sleep语句,它也会失败。从shellcheck.net中的google搜索结果中,我感觉这是google chrome函数解释字符串的方式(
127.0.0.1:$2/$3
部分),这通常是bash中的问题

失败(运行服务器但未打开chrome):

测试铬方面隔离与

chromeit() { google-chrome $1 ;}
两次生成正确的结果:

cchilders:~/projects/scriptamajig [master]$ chromeit "127.0.0.1:8000"
Created new window in existing browser session.
cchilders:~/projects/scriptamajig [master]$ chromeit 127.0.0.1:8000
Created new window in existing browser session.
测试

chromeitport() { google-chrome 127.0.0.1:$1 ;}
证明chrome命令的语法有效,问题在于链接
runproject
中的命令:

cchilders:~/projects/scriptamajig [master]$ chromeitport 8002
Created new window in existing browser session.
cchilders:~/projects/scriptamajig [master]$ [08/Apr/2016 17:38:43] "GET / HTTP/1.1" 200 14081
[08/Apr/2016 17:38:43] "GET /media/css/codemirror.css HTTP/1.1" 304 0
[08/Apr/2016 17:38:43] "GET /media/js/codemirror/codemirror-modes.js HTTP/1.1" 304 0
[08/Apr/2016 17:38:43] "GET /media/js/codemirror/codemirror.js HTTP/1.1" 304 0
...all 200 or 3xx...
我已经确定
端口$2
在前台运行是一个问题,但是正在尝试

runproject() { cd $HOME/projects/$1 ; workon $1 ; port $2 & ; sleep 3 ; google-chrome 127.0.0.1:$2 ;}
原因

cchilders:~/projects/scriptamajig [master]$ src
bash: /home/cchilders/.bash_profile: line 134: syntax error near unexpected token `;'
bash: /home/cchilders/.bash_profile: line 134: `runproject() { cd $HOME/projects/$1 ; workon $1 ; port $2 & ; sleep 3 ; google-chrome 127.0.0.1:$2 ;} '

有没有一种方法可以在一个链式bash函数的后台运行多个东西?谢谢你

我没有一个带有
googlechrome
的env可以从cmd行获得,但是这里有很多奇怪的东西。为什么在睡眠之前使用
&&
。您是否期望它失败,其中as
workin$1;港币2元将永远不会失败,您可以假设一切正常?我也不认为有必要使用
(cmd)
(parens中的子进程),如果没有它,只要
sleep
g-chrome
就可以了。首先要尝试的是删除
(…)
google chrome
周围的
。祝你好运
googlechrome
是否使用您尝试的功能执行?它会出错吗?它回来了吗?它挂起来了吗?
set-x
说的是什么?set-x太漂亮了,赖斯纳先生,即使我不能修复这个bash函数,你却救了我好几个小时;)很好的表演提高了你的Q。!另一个一般性意见是(几乎)总是在dbl引号中围绕变量引用。试试
runproject(){cd$HOME/projects/“$1”workon“$1”;port“$2”&;sleep 3;google chrome 127.0.0.1:“$2”}
(注意,我还在最后一个
char之后添加了另一个空格)。也更可能通过更改为
来修复错误。。;端口“$2”&sleep 3
我认为
&
算作命令分隔符,因此
将被解析为“额外的,不需要的”。(不是精确的术语;-)。尝试切换到将每个命令放在单独的行上。你会得到更好的错误MSG。
cchilders:~/projects/scriptamajig [master]$ src
bash: /home/cchilders/.bash_profile: line 134: syntax error near unexpected token `;'
bash: /home/cchilders/.bash_profile: line 134: `runproject() { cd $HOME/projects/$1 ; workon $1 ; port $2 & ; sleep 3 ; google-chrome 127.0.0.1:$2 ;} '