运行“su -c”时环境会发生什么变化?
我问的原因是这种神秘的行为:
bash$ which firefox
/usr/local/bin/firefox
bash$ su - user -c "echo $PATH"
bin:/usr/bin:/sbin:/usr/sbin:/opt/java/bin:/usr/local/bin:...
bash$ su - user -c "firefox ..."
-bash: firefox: command not found
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我有这个脚本:
GLOBAL_VAR="some global value"
function test
{
echo $1
echo ${GLOBAL_VAR}
}
export -f test
parallel --jobs 5 --linebuffer test ::: "${files[@]}"
Run Code Online (Sandbox Code Playgroud)
我怎样才能$GLOBAL_VAR从并行可见?
我想使用heredoc作为模板生成一些内容:
passphrase=$(<passphrase) envsubst <<EOF
apiVersion: v1
kind: Secret
metadata:
name: openshift-passphrase
stringData:
passphrase: ${passphrase}
EOF
Run Code Online (Sandbox Code Playgroud)
并将其通过管道传输到oc create -f -.
如果我在 后面添加管道EOF,则不起作用。
如何通过管道将带有变量替换的定界文档传递给消耗它的东西?
我的步骤:
登录后:
root@myserver.com:~$
但是,按 cntrl+D 退出
root@myserver.com:~$ exit
root@myserver.com:~$ exit
...
root@myserver.com:~$
5、不要放弃。
为什么?
请告诉我正确的方法。
我想重命名一些文件。我想我可以使用 xargs 来做到这一点。
find ./ -name "upload.log-*"
./upload.log-20180622.gz-20180624.gz-20180626.gz
./upload.log-20180624.gz-20180626.gz
./upload.log-20180620.gz-20180622.gz-20180624.gz-20180626.gz
./upload.log-20180621.gz-20180623.gz-20180625.gz-20180627.gz
find ./ -name "upload.log-*" -print | cut -d"-" -f-2
./upload.log-20180622.gz
./upload.log-20180624.gz
./upload.log-20180620.gz
./upload.log-20180621.gz
Run Code Online (Sandbox Code Playgroud)
我正在尝试以下操作,但似乎不起作用
find ./ -name "upload.log-*" | xargs -I '{}' sh -c "echo $1 $(echo $1 | cut -d"-" -f-2)" "{}"
Run Code Online (Sandbox Code Playgroud) 如何在目录中递归地找到所有带有大写扩展名的文件。
我试过了 :
$ find -name "*.[A-Z][A-Z][A-Z]"
Run Code Online (Sandbox Code Playgroud)
似乎有效,但当然这不会检查最后一个点后超过 3 个字母的文件。
我正在使用 Ubuntu,刚刚下载了 jmonkey 游戏引擎。一切似乎都在一个 .sh 文件中。我不太确定我应该如何运行它。
我正在尝试使用以下命令将新行附加到多个文件:
find -name *.ovpn -exec sh echo "line to append" >> {} \;
Run Code Online (Sandbox Code Playgroud)
在执行此操作之前,我运行了一个不同的命令以确保它按我预期的方式工作:
find -name *.ovpn -exec sh echo "hello" \;
Run Code Online (Sandbox Code Playgroud)
但这只是为找到的每个文件打印出“sh: 0: Can't open echo”。