Tag: bash

ssh2中的特殊字符

我正在使用ssh2软件包shell()在nodejs中编写一个linuxterminal。 它适用于我的常规命令,但在编辑vi编辑文件,然后逃脱编辑器,我需要模拟一个“逃生”按键。 我试过这个: stream.write("^[") 在阅读http://man7.org/linux/man-pages/man4/console_codes.4.html但它没有工作。 所以我的问题是 – 如何模拟特殊字符(Ctrl,Shift …)在ssh2中按? 或者是否有任何其他更高的api节点包,我可以用来创build一个terminal?

是否有可能运行不可执行的npm脚本?

我的PaaS有问题。 当我部署我的节点应用程序时,我的脚本正在丢失其可执行位。 我知道从长远来看,我的PaaS需要解决这个问题,但现在我正在寻找解决方法。 我在npm脚本文档( https://docs.npmjs.com/misc/scripts#exiting )中读到了这个: 脚本通过将行作为脚本parameter passing给sh来运行。 如果我理解正确,脚本运行如下: sh myscript.sh 如果这是真的脚本不需要是可执行的。 但是,如果我运行一个不可执行的npm脚本。 npm运行myscript 我得到这个: sh:bin / myscript.sh:权限被拒绝 有没有解决的办法? 编辑:这是我的简单的脚本: #!/bin/bash echo Hello World

我怎样才能把'find'的输出输出到一个命令中,这个命令会在package.json的两个目录中执行'grep'的'more'

我试图find哪个package.json导致依赖警告。 它来自一个子模块。 我有一个查找命令find . -name 'foo' find . -name 'foo'输出 /a/very/very/very/long/path/to/a/submodule/…/node_modules/foo /another/very/very/very/long/path/to/a/submodule/…/node_modules/foo 我想看看父模块的package.json中包含了什么版本的foo。 像这样的东西 more "$find_output"/../../package.json | grep foo

如何启用运行在git-bash v.2.8.2中的nodejs程序中的颜色日志?

我一直在使用Git for Windows 1.9.5 (从Git-1.9.5-preview20150319.exe安装)。 在git-bashterminal中有来自我的nodejs程序(gulp)的彩色输出。 但是当我卸载1.9.5,然后安装2.8.2 (Git-2.8.2-64-bit.exe)所有输出变成单色,除了git-bash提示行。 如何在这个较新的2.8.2版本中使用彩色输出? 或者可能有其他合适的2.xx版本(Visual Studio Code推荐这个)

Heroku查看应用程序configuration和日志(与生产configuration/日志logging)

我正在调查我的Heroku评论应用程序的一些问题。 看来,从Bash,没有办法访问configuration(环境variables)或日志logging。 如果我运行: heroku logs –tail 这只是回来与生产应用程序的日志(这是有道理的,因为似乎没有一种方法来保持范围在审查应用程序)。 我可以从Heroku仪表板中看到Review App日志,但是即使这样看起来也有些偏差,因为随后的刷新会忽略来自日志的不同行(这就是为什么我只是想从Bash中看到它们)。 另外,如果我这样做: heroku config 它返回预期的configuration值(即DATABASE_URL ),但是我不确定这是否仅用于生产。 例如,从审查应用程序运行这个: console.log("process.env.PORT: " + process.env.PORT); console.log("process.env.DATABASE_URL: " + process.env.DATABASE_URL); console.log("process.env.PAPERTRAIL_API_TOKEN: " + process.env.PAPERTRAIL_API_TOKEN); PORT正在返回一个值,但是DATABASE_URL和PAPERTRAIL_API_TOKEN返回undefined ,即使这些都在heroku config 。 所以我的问题是: 1)如何从Bash(或Heroku仪表板以外的其他可靠方法)查看Review App的日志? 2)“评论应用程序”和“生产”之间的configuration值是否有所不同?如果是这样,我如何configuration“评论应用程序”?

用于更改NVM节点版本的Bash脚本

我试图添加一个别名到我的.bash_profile来执行以下操作: xx projname => xx projname cd ~/folder_1/projname并在nvm上使用节点版本6如果nvm当前正在使用某个其他版本 yy projname => yy projname cd ~/folder_2/projname并在nvm上使用节点版本4,如果nvm当前正在使用某个其他版本 我目前已经实现了除最后一部分以外的所有内容,即if nvm is currently using some other version如下所示: function xx { cd ~/folder_1/"$1"; nvm use v6;} function yy { cd ~/folder_2/"$1"; nvm use v4;} 处理未完成任务的最好方法是什么? 我想要的是这样的: 运行nvm current并查看v6索引是否为false,然后运行nvm use v6 但我真的是新手,似乎无法find办法做到这一点。 TIA!

从父节点进程(PM2,NodeJS)运行更新脚本

我有一个名为update.sh的脚本更新服务器。 问题在于; 当我停止PM2进程时,它结束了bash进程(?)。 我无法弄清楚如何从没有链接到父级的父级产生一个进程。 :-S update.sh #!/bin/bash # Check we are not already updating. if [ -f update.lock ]; then echo "Already updating. Locked." exit fi # Make the log file. rm update.log touch update.log # Create update lock. touch update.lock echo "Cleaning up" | tee update.log rm -rf the-last-word rm -rf Server echo "Retreving […]

在bash脚本中使用进程replace时,节点找不到模块

我有一个命令,我通常会运行在我的package.json scripts部分,但问题是npm run使用sh ,它不支持进程replace。 我需要进程replace,因为我想将parameter passing给flow-remove-types index.js的结果,而不能用pipe来完成。 所以我写了下面的脚本: #!/bin/bash PATH=./node_modules/.bin:$PATH case $1 in start) node <(flow-remove-types index.js) ${@:2} ;; works) flow-remove-types index.js | node ;; esac 现在的问题是,当我使用进程replace时,节点无法find已安装的模块。 在运行flow-remove-types index.js | node的case语句中使用works命令运行 flow-remove-types index.js | node没有find模块的问题,但是当我运行命令start与进程replace。 我得到以下堆栈跟踪 module.js:457 throw err; ^ Error: Cannot find module 'moment' at Function.Module._resolveFilename (module.js:455:15) at Function.Module._load (module.js:403:25) at Module.require (module.js:483:17) at […]

为什么在节点块child_process.exec中打开一个fifopipe道?

当我在bash中运行这个: mkfifo im-a-pipe && node -e ' var fs = require("fs") var childProcess = require("child_process") console.log("pre-open") fs.open("im-a-pipe", "w", function(err, fd){ if(err) throw err console.log("opened") }) console.log("post-open") childProcess.exec("echo wat") console.log("YOU CAN NOT SEE MEEE") ' 我期望以下输出: pre-open post-open YOU CAN NOT SEE MEEE 但是,在打印前两行之后,节点等待: pre-open post-open 我在想,这可能与pipe道阻塞有关,直到有东西打开对方,但这种行为让我感到惊讶。 我是否错过了这些function应该如何运作?

我如何编写一个shell脚本使用节点一个接一个地运行多个JavaScript文件?

我想写一个.sh文件来运行多个JavaScript文件。 我知道我需要以下几行: #!/usr/bin/env node chmod u+x ./a/file1.js ./a/file2.js 将两个.js文件依次放在一起是正确的吗? 我需要file1.js先执行然后file2.js,因为file2.js中的一些函数需要从file1.js输出的信息。 我也对#!/ usr / bin / env节点和#!/ usr / bin / env bash之间的区别感到困惑。 我仍然可以用bash运行我的.js文件吗?