如何为正确的名称(py、python、python3)运行python命令
我认为这与: 具体来说,我想在有如何为正确的名称(py、python、python3)运行python命令,python,python-3.x,linux,shell,Python,Python 3.x,Linux,Shell,我认为这与: 具体来说,我想在有py但没有python3的计算机上运行python3-mhttp.server,我想在有python3但没有py的计算机上运行python3-mhttp.server。我还尝试只检查版本号:py-v&&py-mhttp.server;python3-v&&python3-mhttp.server,但它似乎仍然存在同样的问题,按ctrl+C二十次并没有杀死它 我尝试了py&&py-mhttp.server;python3&&python3-mhttp.server,
py
但没有python3
的计算机上运行python3-mhttp.server
,我想在有python3
但没有py
的计算机上运行python3-mhttp.server
。我还尝试只检查版本号:py-v&&py-mhttp.server;python3-v&&python3-mhttp.server
,但它似乎仍然存在同样的问题,按ctrl+C二十次并没有杀死它
我尝试了py&&py-mhttp.server;python3&&python3-mhttp.server
,但我相信它正在python中执行第二个命令。此外,在其他计算机上还有Python的其他别名。我知道我可以将py
设置为python3
的别名,但我正在寻找一个通用的解决方案
(旁注:这是不一致的,这让我很困扰。它们应该都能正常工作。)
最后,我想要一个并行运行两件事的脚本:第一个是npm run dev
,上面有一个--watch
,必须继续运行,另一个是cd docs/
,然后使用python在localhost上托管,然后打开chrome到localhost:8000
,非常感谢您的帮助,还是Linux的初学者
我还想发出第二个命令,运行
npm run build
,将docs/sw.js中的第二行从const dynamicccachename='site dynamic vNUMBER'更改编码>将数字替换为数字+1。这是否符合您的要求?假设bash或类似:
( py -V && py -m http.server ) || ( python3 -V && python3 -m http.server )
在“我的盒子”上,它执行以下操作:
$ ( py -V && py -m http.server ) || ( python3 -V && python3 -m http.server )
py: command not found
Python 3.5.2
Serving HTTP on 0.0.0.0 port 8000 ...
对于问题的第二部分,您可以使用类似这样的小bash脚本(我包括python或py检查):
#/bin/bash
npm运行开发人员--监视&
铬浏览器“http://localhost:8000“2>/dev/null&
cd文档/| |退出#如果cd命令失败,则退出
if命令-vpy-v&>/dev/null;然后
回声“py”
py-mhttp.server
elif命令-v python3-v&>/dev/null;然后
回声“蟒蛇3”
python3-mhttp.server
其他的
echo“未找到任何命令”
fi
&
在命令结束时,它将在后台运行,如上所述,它仍将显示命令的输出
如果使用CTRL+C终止脚本,它将终止一切,chromium、python服务器和npm运行。我实际上想发布一个完整的答案,因为我从几个答案和评论以及与朋友聊天中得到了我想要的答案:
我同时安装了npm包,,然后在我的包.json中添加了一个本地dev
npm脚本:
“脚本”:{
“dev no watch”:“postsss src/styles.css-o docs/css/styles.css”,
“dev”:“postsss src/styles.css-o docs/css/styles.css-watch-verbose”,
“构建”:“跨环境节点_env=production postsss src/styles.css-o docs/css/styles.css&&cleancss-o docs/css/styles.css-docs/css/styles.css”,
“localhost”:“cd docs&&(py-V&&py-mhttp.server)| |(python3-V&&python3-mhttp.server)”,
“本地开发人员”:“并发--杀死其他人\”npm运行开发人员\“\”npm运行本地主机\”
},
它同时运行这两个命令,当按下ctrl+C时,也会同时杀死这两个命令
当然,我在原始问题的答案中添加了localhost
,即检测python版本并正确运行它/优雅地失败等等,这很有魅力
希望这个答案对将来的人有所帮助:)
(现在,我只需要找到hos来独立地从命令行操作系统编辑一行文件)您的目标是什么脚本语言?对于Bash,添加标记。对于泛型shell,添加标签。老实说,我不确定它是bash还是shell,我必须研究一下(抱歉,我不擅长这类东西)。shebangs是否基本上将它们都设置为相同的别名,这样我就可以只调用一个?好的,我添加了shell标记,因为它是通用的。忽略关于舍邦的评论;我误解了你在做什么。虽然如果py-mhttp.server
返回false(比如它被杀死),那么第二部分仍将运行。公平评论。。。您可以捕获两个-V
变体的返回码,然后选择现有的/首选的一个。。。我只是建立在他自己的方法上。(py-V&&py-mhttp.server)|(python3-V&&python3-mhttp.server)
似乎就是我想要的,谢谢!你知道如何碰巧并行运行两个进程吗?我知道&&
是指第一次成功,|
是指第一次失败,
在后面运行,但我希望它们并行运行。无论如何,我会把这个标记为答案,因为它回答了我的主要问题,谢谢。(py-V&&py-mhttp.server&);(python3-V&&python3-mhttp.server&)
。。。不过,不确定“并行运行”;一旦一个抢占了端口,另一个就会失败……我的意思是,为了其他事情并行运行。我现在有build
和localhost
作为npm命令,我希望能够同时运行它们,但目前只有一个命令运行:“build”:“cross env NODE_env=production postsss src/styles.css-o docs/css/styles.css&&cleancss-o docs/css/styles.css/css.css”,“localhost”:“cd docs&”(py-V&&py-mhttp.server)|(python3-V&&python3-mhttp.server)”,“本地开发人员”:“npm运行开发人员和npm运行本地主机”
Ooh这看起来棒极了,谢谢,我现在就测试它。所以我将它保存为.sh
文件,然后运行sh myfile.sh
?我只是尝试npm-run-dev&npm-run-localhost
但在CTRL+C之后,我无法在后台杀死节点,即使是sudo-pkill节点
和sudo-killall节点
it-still出现在ps
中,但不起作用。输出:它在bash中(正如您在fi中看到的)