如果我运行这个:
rsync -r /a/b/c /a/d/e
Run Code Online (Sandbox Code Playgroud)
我会得到这个:
/a/d/e/c
Run Code Online (Sandbox Code Playgroud)
但我正在寻找:
/a/d/e
Run Code Online (Sandbox Code Playgroud)
这不会解决这个问题:
rsync -r /a/b/c/* /a/d/e
Run Code Online (Sandbox Code Playgroud)
因为上面会跳过点文件(隐藏文件)。我该如何解决这个问题 - 复制到现有目录,在这种情况下,是名称为文件夹e?
我通过小道消息听说 /etc/profile 中的文件将在登录时由 bash 自动获取?
我尝试向 /etc/profile 写一些简单的东西:
echo "echo 'foo'" > /etc/profile/foo.sh
Run Code Online (Sandbox Code Playgroud)
但我遇到了这个奇怪的错误:
bash: /etc/profile/foo.sh: Not a directory
Run Code Online (Sandbox Code Playgroud)
有没有正确的方法来做到这一点?
假设我有一个列表/数组:
list=(a b c)
Run Code Online (Sandbox Code Playgroud)
如何将每个元素回显到 xargs?就像是:
for v in list; do echo v; done; | xargs
Run Code Online (Sandbox Code Playgroud)
有没有更简洁的方法?
假设我们有一个简单的管道:
set -eo pipefail;
echo 'foo' | cat
Run Code Online (Sandbox Code Playgroud)
怎么cat知道什么时候退出?是在 STDIN 流结束时还是cat接收到信号时?在我的例子中,生产者进程收到一个 SIGINT,然后以代码 1 退出,那么cat(消费者进程)如何知道生产者进程以哪个退出代码退出?
我在 Mac 上跟踪 system.log:
tail -f -n 0 /var/log/system.log
Run Code Online (Sandbox Code Playgroud)
但我不知道如何写入该日志。它似乎确实是机器上的主要日志。我试过:
logger foobar # didn't work
syslog -s -l error "message to send" # didn't work
Run Code Online (Sandbox Code Playgroud)
有人知道如何在 Mac 上写入 system.log 吗?
更新:
如果我跑:log stream
然后使用:
logger -is -t krypted "Hello L"
Run Code Online (Sandbox Code Playgroud)
它将显示在流中,但不会显示在/var/log/system.log. 诡异的。
我在 bash 脚本中有以下代码:
echo "bash pid => $$";
echo "processor affinity before => $(taskset -p $$)"
taskset -cp ${AN_INTEGER} $$
echo "processor affinity after => $(taskset -p $$)"
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
processor affinity before => pid 5047's current affinity mask: ff
pid 5047's current affinity list: 0-7
pid 5047's new affinity list: 1
processor affinity after => pid 5047's current affinity mask: 2
Run Code Online (Sandbox Code Playgroud)
有谁知道这是什么意思?
我开始搞乱处理器关联的原因是因为我将启动多个 bash 子进程,并且所有 bash 子进程关联的值都为“ff”,因此它们似乎都针对同一个 CPU。
我在 bash 中输入 x ,然后发生了一些奇怪的事情。
如果我做:
command -v x
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
/opt/X11/bin/x
Run Code Online (Sandbox Code Playgroud)
看起来与 XCode 有关,有谁知道我如何找到更多信息?(没有“x 没有手动输入”)。
我有这三行:
export bunion_uds_file="$bunion_socks/$(uuidgen).sock";
"$cmd" "$@" | bunion
rm -f "$bunion_uds_file"
Run Code Online (Sandbox Code Playgroud)
我需要确保最后一行总是执行..我可以这样做:
export bunion_uds_file="$bunion_socks/$(uuidgen).sock";
(
set +e
"$cmd" "$@" | bunion
rm -f "$bunion_uds_file"
)
Run Code Online (Sandbox Code Playgroud)
或者像这样:
export bunion_uds_file="$bunion_socks/$(uuidgen).sock";
"$cmd" "$@" | bunion && rm -f "$bunion_uds_file" || rm -f "$bunion_uds_file"
Run Code Online (Sandbox Code Playgroud)
我假设创建子外壳并使用 set +e 的性能稍低等。
我有这个命令:
base_name="$(basename "$0")";
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
basename: 非法选项 -- b
用法:basename string [suffix] basename [-a] [-s suffix] string [...]
有谁知道这是怎么回事?
我想做这样的事情:
echo 'foo' | tee /dev/stdout > >(cat)
Run Code Online (Sandbox Code Playgroud)
其中 stdout 被echo发送到终端和 cat 进程。有没有更简单的方法来做到这一点?
当我运行这个时:
echo 'foo' | tee >(echo 'bar')
Run Code Online (Sandbox Code Playgroud)
由于某种原因,它不回显“foo”,而只回显“bar”,为什么?