希望我不是唯一一个发现 glob 行为不当的人。如果你在一小时前问我,我有 99% 的把握
test/src/**/*.js
Run Code Online (Sandbox Code Playgroud)
将匹配 src 中的所有 .js 文件和 src 的所有子目录。但我在 MacOS 上使用 Bash 3.2.57,它不匹配多个文件。
有谁知道可能有什么问题?
我gmx在这两条路径上调用了一个命令:
/usr/local/bin/gmx
Run Code Online (Sandbox Code Playgroud)
和
/Users/alexamil/.nvm/versions/node/v9.2.0/bin/gmx
Run Code Online (Sandbox Code Playgroud)
我怎样才能删除其中一个的 bash 哈希?
如果我跑:
hash -d gmx
Run Code Online (Sandbox Code Playgroud)
删除的是哪一个?是删除两者,还是只删除最近的值?这对删除特定的有效吗?
hash -d "/Users/alexamil/.nvm/versions/node/v9.2.0/bin/gmx"
Run Code Online (Sandbox Code Playgroud) 只是想知道这是否:
if [ "$first_arg" == "major" ] || [ "$first_arg" == "minor" ]; then
exit 1;
fi
Run Code Online (Sandbox Code Playgroud)
与此相同:
if [ "$first_arg" == "major" || "$first_arg" == "minor" ]; then
exit 1;
fi
Run Code Online (Sandbox Code Playgroud) 只是想知道是否有人可以解释为什么会这样:
echo `cat <<EOF
{"branch":"foo","value":"bar"}
EOF`
Run Code Online (Sandbox Code Playgroud)
但这不是:
echo <<EOF
{"branch":"foo","value":"bar"}
EOF
Run Code Online (Sandbox Code Playgroud)
(第二个片段不会向标准输出回显任何内容。)
我正在尝试将 SIGINT 信号发送到多个进程,我认为这是正确的:
kill -2 <pid1> <pid2> ... <pid3>
Run Code Online (Sandbox Code Playgroud)
但我无法确认...
这导致了问题:
node "$SUMAN_PROJECT_ROOT/server.js" | bunyan -o short &> ${LOG_FILE} &
Run Code Online (Sandbox Code Playgroud)
这有效:
node "$SUMAN_PROJECT_ROOT/server.js" &> ${LOG_FILE} &
Run Code Online (Sandbox Code Playgroud)
问题是使用第一个命令时,输出没有发送到文件。在第二个命令中,它确实被发送到文件。为什么第一个命令不起作用 - 我希望它会像第二个命令一样将输出发送到文件。bunyan 命令应该像 grep 一样,只是过滤和映射 node 命令的输出。
我的编辑不喜欢建议的解决方案:
我有这个 bash 代码:
if [[ ! -f "$HOME/.oresoftware/package.json" ]]; then
cat "node_modules/@oresoftware/package.json" > "$HOME/.oresoftware/package.json";
fi
Run Code Online (Sandbox Code Playgroud)
但是有没有办法只重定向到一个文件,如果它不存在于一行代码中?像这样:
cat "node_modules/@oresoftware/package.json" ?> "$HOME/.oresoftware/package.json";
Run Code Online (Sandbox Code Playgroud)
我想那会很有趣
我有这段代码可以完成它应该做的事情:
first_arg="$1";
if [ "$first_arg" != "patch" -a "$first_arg" != "major" -a "$first_arg" != "minor" -a "$first_arg" != "prerelease" ]; then
echo "First argument needs to match a valid npm version argument (patch, minor, major, etc).";
exit 1;
fi
Run Code Online (Sandbox Code Playgroud)
它正在检查确保第一个参数是(补丁、主要、次要、预发行)之一。
但是,是否有更短/更简洁的方法来做到这一点?
您可以使用以下命令在远程服务器上执行命令
ssh user@host 'the command'
Run Code Online (Sandbox Code Playgroud)
但有没有办法在不带引号的情况下执行命令?
(我使用 BSD 并使用 OpenSSH)
我有这个:
cm_env(){
env | grep 'cm_' | while read line; do
echo "$line" | awk -F'=' '{print $1 $2}'
done;
}
Run Code Online (Sandbox Code Playgroud)
我想打印这样的东西:
env_var1=this_is_in_blue
env_var2=this_is_in_blue_too
env_var3=this_is_colored_blue
Run Code Online (Sandbox Code Playgroud)
我必须使用 AWK 以外的其他工具来执行此操作吗?
问题是双引号似乎不起作用:
export cm_color_gray='\033[1;30m'
export cm_color_cyan='\033[1;36m'
cm_env(){
env | grep 'cm_' | while read line; do
echo "$line" | awk -F'=' '{print $1 $cm_color_cyan $2 $cm_color_no_color}'
done;
}
Run Code Online (Sandbox Code Playgroud)
我试过这个:
echo "$line" | awk -F'=' "{print \$1 $cm_color_cyan \$2 $cm_color_no_color}"
Run Code Online (Sandbox Code Playgroud)
但我得到了:
awk: 1: 意外字符 '\'
有没有办法使用 awk 来做到这一点?