小编Dan*_*ker的帖子

scp 通配符在 zsh 中不起作用

我已经切换到 zsh,它工作正常。一件奇怪的事情,当我尝试使用 * 通配符 scp 时,它不起作用,我不得不进入 bash。下面的第二个命令工作正常。

关于为什么会这样以及如何解决它的任何想法?

~/dmp ? 16:06:10
$ scp abc@123:/home/se/exports/201405091107/* .
zsh: no matches found: root@uf3:/home/se/exports/201405091107/*

~/dmp ? 16:06:53
$ bash 
sean@seanlaptop:~/dmp$ scp abc@123:/home/se/exports/201405091107/* .
Run Code Online (Sandbox Code Playgroud)

scp zsh wildcards

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

Docker容器创建的文件归root所有

我有一个 Docker 映像,当发生错误时它会生成类似日志的文件。我已使用绑定安装将其写入的目录安装到我的主机上。但是,创建的文件归root. chown尽管我的用户帐户具有 root 权限,但每次运行容器后chgrp检查文件都非常繁琐。

有没有办法让容器将文件的所有者和组设置为运行容器的用户的所有者和组?

对于某些上下文,这是我创建的一个玩具示例:

Dockerfile

FROM debian

WORKDIR /root
VOLUME /root/output

COPY run.sh /root/

ENTRYPOINT ["./run.sh"]
Run Code Online (Sandbox Code Playgroud)

运行sh

#!/bin/bash

echo hello > output/dump
Run Code Online (Sandbox Code Playgroud)

我的执行命令是

docker run -v $PWD/output:/root/output test
Run Code Online (Sandbox Code Playgroud)

permissions docker

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

/proc 如何与 PID 命名空间交互?

我不明白命名空间如何与/proc. 我假设/proc返回值基于查询它们的过程。

例如,让我们确定全局 PID 命名空间内当前进程的 PID:

$ bwrap --bind / / readlink /proc/self
6182
Run Code Online (Sandbox Code Playgroud)

这对我来说很有意义。然而,当我readlink在它自己的 PID 命名空间中隔离时:

$ bwrap --bind / / --unshare-pid readlink /proc/self
6177
Run Code Online (Sandbox Code Playgroud)

我得到同样的结果!要获取命名空间内的 PID,我需要添加--proc /proc

$ bwrap --bind / / --unshare-pid --proc /proc readlink /proc/self
2
Run Code Online (Sandbox Code Playgroud)

但不应该/proc总是考虑阅读过程的上下文吗?为什么procfs需要额外的内容以及它与流程有何关系readlink

如果我不创建新的 PID 命名空间,则额外的内容procfs没有任何区别:

$ bwrap --bind / / --proc /proc readlink /proc/self
6179
Run Code Online (Sandbox Code Playgroud)

linux proc namespace

8
推荐指数
1
解决办法
930
查看次数

find - 通过析取进行通配

我之前编写过一个脚本,用于在目录树中搜索 .h 和 .c 文件,然后对它们运行 clang-format :

find $directory -name '*.[hc]' -exec clang-format -i {} \;
Run Code Online (Sandbox Code Playgroud)

这正如预期的那样工作。现在我想将 .cpp 文件添加到搜索中。然而,两者都没有

-name '*.{[hc],cpp}'
Run Code Online (Sandbox Code Playgroud)

也不

-name '{*.[hc],*.cpp}'
Run Code Online (Sandbox Code Playgroud)

工作。也就是说,他们没有找到任何文件。

find我知道如果我使用's选项,我可以让我的逻辑发挥作用-o。然而,必须有一种方法可以用单个-name指令来做到这一点。

find wildcards

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

为什么 zsh 监听端口 22?

我通过 SSH 连接到虚拟机并寻找/proc/<pid>/net/tcp我的 zsh shell。我看到这条线

sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode
 ...
 3: 00000000:0016 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 19127 1 0000000000000000 100 0 0 10 0
Run Code Online (Sandbox Code Playgroud)

除非我误解了这句话的意思,否则 zsh 正在侦听端口 22。我知道 zsh 进程是运行 sshd 的进程的后代,但 sshd 在分叉后不会关闭侦听套接字吗?

zsh socket sshd

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

IPv6环回地址的二进制格式

在一个终端中,我跑了

$ nc -l -6 ::1 5000
Run Code Online (Sandbox Code Playgroud)

在另一个终端,我跑了

$ cat /proc/net/tcp6
Run Code Online (Sandbox Code Playgroud)

并看到这一行:

   0: 00000000000000000000000001000000:1388 00000000000000000000000000000000:0000 ...
Run Code Online (Sandbox Code Playgroud)

为什么说我在听::1:0:0:0而不是在听::1

proc ipv6

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

将数字与全局模式匹配

我正在尝试使用全局模式进行匹配。然而,这场比赛失败了:

dgt='^+([0123456789])$'
[[ "$1" == $dgt  ]] && echo "SUCCESS" || echo "FAILURE"
Run Code Online (Sandbox Code Playgroud)

bash wildcards

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

为什么这个函数不能用于吸收标准输入?

这:

echo 'some text' > file.txt
cat file.txt > file.txt
Run Code Online (Sandbox Code Playgroud)

显然给了我一个空文件。

但也令我惊讶的是:

cat2 () {
    cat "$@" > tmp.txt
    cat tmp.txt
    return $?
}

echo 'some text' > file.txt
cat2 file.txt > file.txt
Run Code Online (Sandbox Code Playgroud)

它给了我一个空文件,即使该文件tmp.txt已被删除,与file.txt.

这个方法也行不通!:

echo 'some text' > file.txt
cat file.txt | cat2 > file.txt
Run Code Online (Sandbox Code Playgroud)

为什么文件还是被清空了?

bash io-redirection

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

无法创建包含目录

我想创建一个看起来像/dir1/dir2/dir3/dir4但我不能的新目录。

\n

如果我从父目录和新父目录一一创建目录,一切正常:

\n
lm@debian:~$ sudo mkdir -v ./Pictures/Photos1/onbike2023/\nmkdir: cannot create directory \xe2\x80\x98./Pictures/Photos1/onbike2023/\xe2\x80\x99: No such file or directory\nlm@debian:~$ sudo mkdir -v ./Pictures/Photos1/\nmkdir: created directory \'./Pictures/Photos1/\'\nlm@debian:~$ sudo mkdir -v ./Pictures/Photos1/onbike2023/\nmkdir: created directory \'./Pictures/Photos1/onbike2023/\'\nlm@debian:~$ \n
Run Code Online (Sandbox Code Playgroud)\n

我究竟做错了什么?

\n

mkdir

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

可执行文件的运行时间是否会显着增加运行时间

time在 shell 命令上运行是否会显着增加命令本身的运行时间?毕竟,既然它区分了在用户空间花费的时间和等待系统调用所花费的时间,那么监控这些单独的事件就不需要很多开销吗?

time

0
推荐指数
1
解决办法
26
查看次数

标签 统计

wildcards ×3

bash ×2

proc ×2

zsh ×2

docker ×1

find ×1

io-redirection ×1

ipv6 ×1

linux ×1

mkdir ×1

namespace ×1

permissions ×1

scp ×1

socket ×1

sshd ×1

time ×1