小编Ale*_*lls的帖子

rsync -r 到现有文件夹

如果我运行这个:

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

rsync

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

如何将自动获取的 shell 脚本写入 /etc/profile

我通过小道消息听说 /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)

有没有正确的方法来做到这一点?

bash etc profile

4
推荐指数
1
解决办法
2347
查看次数

回显列表/数组到 xargs

假设我有一个列表/数组:

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)

有没有更简洁的方法?

bash xargs echo for

4
推荐指数
1
解决办法
5549
查看次数

关闭消费者的正确方法

假设我们有一个简单的管道:

set -eo pipefail;
echo 'foo' | cat
Run Code Online (Sandbox Code Playgroud)

怎么cat知道什么时候退出?是在 STDIN 流结束时还是cat接收到信号时?在我的例子中,生产者进程收到一个 SIGINT,然后以代码 1 退出,那么cat(消费者进程)如何知道生产者进程以哪个退出代码退出?

shell bash pipe

4
推荐指数
1
解决办法
420
查看次数

如何在 Mac 上写入 /var/log/system.log

我在 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. 诡异的。

osx logs

4
推荐指数
1
解决办法
7121
查看次数

使用任务集设置处理器关联

我在 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。

linux cpu scheduling taskset

3
推荐指数
1
解决办法
2365
查看次数

Mac 上的 x 命令是什么?

我在 bash 中输入 x ,然后发生了一些奇怪的事情。

如果我做:

command -v x
Run Code Online (Sandbox Code Playgroud)

我得到这个输出:

/opt/X11/bin/x
Run Code Online (Sandbox Code Playgroud)

看起来与 XCode 有关,有谁知道我如何找到更多信息?(没有“x 没有手动输入”)。

osx bash x

3
推荐指数
1
解决办法
798
查看次数

尝试/最后使用 bash shell

我有这三行:

  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 的性能稍低等。

shell bash exit-status

3
推荐指数
1
解决办法
987
查看次数

基本名称“$0”不起作用

我有这个命令:

 base_name="$(basename "$0")";
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

basename: 非法选项 -- b

用法:basename string [suffix] basename [-a] [-s suffix] string [...]

有谁知道这是怎么回事?

osx basename

3
推荐指数
1
解决办法
593
查看次数

“tee”到标准输出和进程的最佳方式

我想做这样的事情:

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”,为什么?

bash tee stdout

3
推荐指数
1
解决办法
5322
查看次数

标签 统计

bash ×6

osx ×3

shell ×2

basename ×1

cpu ×1

echo ×1

etc ×1

exit-status ×1

for ×1

linux ×1

logs ×1

pipe ×1

profile ×1

rsync ×1

scheduling ×1

stdout ×1

taskset ×1

tee ×1

x ×1

xargs ×1