标签: shell

Run block of bash / shell in node's spawn

我正在写一个命令行实用程序,我需要stdout来写TTY或使用{stdio: 'inherit'}我一直都在使用的TTY ,exec但这不会减少它。我需要一种产生程序的方法来执行以下下面的echo命令。我知道spawn会使用给定的命令启动一个子进程,并且您传入参数,但是我需要它仅采用行分隔的命令字符串。这就是我目前要提供给执行人员的内容。这可能吗?

const spawn = require('child_process').spawn
const child = spawn(`
echo "alpha"
echo "beta"
`)

child.stdout.on('data', (data) => {
  console.log(`stdout: ${data}`)
});

child.stderr.on('data', (data) => {
  console.log(`stderr: ${data}`)
});

child.on('close', (code) => {
  console.log(`child process exited with code ${code}`)
});
Run Code Online (Sandbox Code Playgroud)

bash shell child-process node.js

2
推荐指数
1
解决办法
2702
查看次数

将分隔符后的所有参数传递给另一个命令

我想将shell脚本中的所有参数传递给另一个命令,除非其中一个参数是a --,在这种情况下我想--在我的脚本之前使用参数,并且只传递参数之后的参数--.

例如,如果我的脚本是foo.sh:

./foo.sh -a bar -p qux -- --recursive -p 8080
Run Code Online (Sandbox Code Playgroud)

我想在我的脚本中使用-a和第一个-p参数,然后传递--recursive第二个参数-p.

我最初的想法是首先遍历每个参数,直到--找到a,然后shift用来提取我想要的参数,然后将其余的命令传递给另一个命令$@,但我希望有更优雅的方法来做到这一点.

作为旁注,我目前正在使用getopts提取参数,因此使用该解决方案的解决方案将是最佳的.

unix bash shell

2
推荐指数
1
解决办法
320
查看次数

除了Unix Shell中特定单词或模式的一部分之外,如何替换文本中的所有下划线

我有一个包含大量下划线的文件,我必须用空字符串替换它们,除了属于特定字符串usr_mstr的那些字符串.我已经尝试过sed命令,它取代了下划线并排除了我提供的单词,但它也会在紧跟下划线后立即替换该字符!任何帮助将不胜感激..

echo "fname_sname_id_usr_mstr" | sed 's/_[^usr_mstr]//g'
Run Code Online (Sandbox Code Playgroud)

预期产量:

fnamesnameidusr_mstr
Run Code Online (Sandbox Code Playgroud)

实际产量:

fnamenamedusr_mstr
Run Code Online (Sandbox Code Playgroud)

(s并被i取代)

unix shell sed

2
推荐指数
2
解决办法
86
查看次数

正则表达式:bash 3 vs bash 4

带有正则表达式检查的跟随代码不会在bash 3和bash 4之间输出相同的结果:

TESTCASE="testcase0"
[[ ${TESTCASE} =~ "^testcase[0-9\.]*$" ]]
echo $?
echo ${BASH_REMATCH}
Run Code Online (Sandbox Code Playgroud)

bash 3.2输出一个成功的正则表达式检查:

0
testcase0
Run Code Online (Sandbox Code Playgroud)

bash 4.1未通过正则表达式检查:

1
<empty line>
Run Code Online (Sandbox Code Playgroud)

我无法确定表达式失败的正则表达式模式中的哪个位置.我需要两个版本的bash兼容的代码.

有谁知道我的问题是什么?

谢谢 !

regex linux bash shell bash4

2
推荐指数
1
解决办法
1364
查看次数

Linux shell(bash/zsh) - 在特定目录下更改背景颜色

我想在每次进入特定目录时更改shell的背景颜色(zsh但bash也会这样做).例如,我想在每次进入/ mnt/data时更改背景颜色以说明红色,如果我退出/ mnt/data /,则将其更改回正常状态...

要更改背景并保留当前提示,我会:

export PS1="$PS1 %{$'\e[0;41m'%}"
Run Code Online (Sandbox Code Playgroud)

我不知道如何挂起它以便每次更改工作目录时对其进行评估(包装在if语句中).

linux bash shell console zsh

2
推荐指数
2
解决办法
1719
查看次数

Tmux分割窗口并激活python virtualenv

我最喜欢的python开发环境是:

  • Vim的一个大左锅
  • 右侧的两个小锅用于交互式控制台

每个泛应该运行一个python virtualenv(使用virtualenvwrapper)。因此,这是我必须输入以设置环境的命令列表:

?  ~ workon some_env
?  ~ tmux splitw -h -l90
?  ~ workon some_env
?  ~ tmux splitw -v -p50
?  ~ workon some_env
Run Code Online (Sandbox Code Playgroud)

不幸的是,将这些命令放在脚本中并提供文件源将workon some_env在同一平底锅上运行3次,而不是在每个平底锅上运行一次。

每次我要设置工作环境时都非常简单,但很无聊。

我绑定了一个快捷方式来正确地分割窗口:

bind a source-file ~/.config/tmux/dev-session
Run Code Online (Sandbox Code Playgroud)

该文件dev-session包含:

splitw -h -l90
splitw -v -p50
Run Code Online (Sandbox Code Playgroud)

但是,我无法workon some_env在每个平底锅上自动运行。我以各种方式解决了这个问题,但我无法解决它。

splitw "workon some_env"
# Exits immediately as `workon` function terminates

splitw "echo 'workon some_env' | source /dev/stdin"
# Exits immediately as `source` terminates

splitw "workon_args=some_env zsh -f .some_custom_zshrc" …
Run Code Online (Sandbox Code Playgroud)

python linux shell virtualenv tmux

2
推荐指数
1
解决办法
2261
查看次数

bash将每个其他逗号更改为point

我正在处理以瑞典格式编写的数据集.在瑞典使用逗号代替十进制数字的点.

我的数据集是这样的:

1,188,1,250,0,757,0,946,8,960

1,257,1,300,0,802,1,002,9,485

1,328,1,350,0,846,1,058,10,021

1,381,1,400,0,880,1,100,10,418
Run Code Online (Sandbox Code Playgroud)

我希望将其他所有逗号更改为指向并输出如下:

1.188,1.250,0.757,0.946,8.960

1.257,1.300,0.802,1.002,9.485

1.328,1.350,0.846,1.058,10.021

1.381,1.400,0.880,1.100,10.418
Run Code Online (Sandbox Code Playgroud)

有关如何使用简单的shell脚本执行此操作的任何想法.这很好如果我分多步完成.我的意思是如果我首先更改逗号的第一个实例,然后更改第三个实例和...

非常感谢您的帮助.

unix linux bash shell sh

2
推荐指数
1
解决办法
110
查看次数

使用Shell脚本删除远程计算机中的目录

我正在使用Mac机,并且需要连接到远程机(Linux)并删除远程机中目录的内容。尝试使用

ssh root@server-address rm -rf testdir
Run Code Online (Sandbox Code Playgroud)

它提示我在终端中输入密码。有什么方法可以删除目录的内容,而无需手动输入远程计算机的密码?我想使用shell脚本来做到这一点。由于我是shell的新手,因此不胜感激。

ssh shell

2
推荐指数
1
解决办法
3023
查看次数

根据列之间的一致性粘贴两个文件

我需要一些帮助:

我有文件1:

ID
100
102
103
104
108
109
112
.
.
.
Run Code Online (Sandbox Code Playgroud)

和file2:

ID    []    p1    p2
100    2.5    3.0    2.0
101    2.0    4.0    3.0
102    2.6    4.0    2.5
103    2.3    2.0    NA
104    2.3    2.0    2.0
105    3.5    2.8    2.0
106    1.7    NA    3.2
107    5.0    4.0    4.0
108    3.2    2.0    4.0
109    2.9    1.0    1.5
110    5.0    NA    NA
111    2.9    4.0    4.0
112    3.1    2.5    2.0
.
.
.
Run Code Online (Sandbox Code Playgroud)

我想将这两个文件粘贴到file3中,如下所示:

ID    []    p1    p2
100    2.5 …
Run Code Online (Sandbox Code Playgroud)

shell awk join cut paste

2
推荐指数
1
解决办法
178
查看次数

如何在自身内部获取鱼类脚本的路径

在bash中,我们可以获取脚本的路径$0.$_根据官方文件,似乎我们可以在鱼脚本中做到这一点.

但是,如果我尝试编写这样的鱼脚本并运行它,它将只打印一个换行符.

#!/usr/bin/fish
echo $_
Run Code Online (Sandbox Code Playgroud)

在反应性鱼类中,echo $_会给予echo文字,并且<command> $_会将"命令"明确地作为<command>论点.

$_对它的奇怪行为以及它的用途感到困惑.

shell fish

2
推荐指数
1
解决办法
123
查看次数

标签 统计

shell ×10

bash ×5

linux ×4

unix ×3

awk ×1

bash4 ×1

child-process ×1

console ×1

cut ×1

fish ×1

join ×1

node.js ×1

paste ×1

python ×1

regex ×1

sed ×1

sh ×1

ssh ×1

tmux ×1

virtualenv ×1

zsh ×1