AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-296048

finefoot's questions

Martin Hope
finefoot
Asked: 2025-03-09 21:34:27 +0800 CST

在 POSIX shell 脚本函数中,将 stdout 复制到具有命名管道的另一个命令中

  • 9
mkfifo foo
printf %s\\n bar | tee foo &
tr -s '[:lower:]' '[:upper:]' <foo
wait
rm foo

这是我想要执行的操作的有效 POSIX shell 脚本:

  • printf %s\\n bar是产生标准输出的外部程序的象征
  • tr -s '[:lower:]' '[:upper:]'象征着另一个应该接收标准输出并对其执行某些操作的命令
  • tee将 stdout 复制到命名管道 foo

输出符合预期:

bar
BAR

现在我想整理一下代码,让它变成这样external_program | my_function。就像这样:

f() (
  mkfifo foo
  tee foo &
  tr -s '[:lower:]' '[:upper:]' <foo
  wait
  rm foo
)
printf %s\\n bar | f

但现在根本就没有任何输出。

shell-script
  • 2 个回答
  • 58 Views
Martin Hope
finefoot
Asked: 2023-08-06 09:38:53 +0800 CST

管道的退出状态在交互式 shell 与 shell 脚本中的行为不同

  • 8

交互式shshell 会话:

$ sh
$ timeout 1 yes | sed -n s/a/b/p ; echo $?
Terminated
143
$ 

非交互式脚本通过sh -c:

$ sh -c 'timeout 1 yes | sed -n s/a/b/p ; echo $?'
0
$ 

为什么这两个示例会产生不同的退出代码?

shell-script
  • 1 个回答
  • 210 Views
Martin Hope
finefoot
Asked: 2023-04-13 10:04:21 +0800 CST

哪些挂载点路径会自动显示在设备下的文件浏览器中?

  • 6

一些例子:

  • 如果我插入一个外部 USB 驱动器,它会被安装在下面/media/$USER/<device-id>,我的文件浏览器会自动在设备下列出安装点。
  • 如果我手动将某些东西挂载到我的主目录中的常规文件夹中,也会发生同样的情况。但是,如果该文件夹被隐藏,我的文件浏览器将不会列出挂载点。
  • /tmp例如,文件浏览器也不会列出位于 中的挂载点。

那么挂载点自动出现在设备下的文件浏览器中的条件是什么?由于 PCManFM 和 Nautilus 的行为似乎完全相同,我相信这可能有一般规则?我可以“强制”将挂载点(例如,隐藏文件夹或在 中/tmp)显示在设备下吗?

mount
  • 2 个回答
  • 31 Views
Martin Hope
finefoot
Asked: 2023-02-25 22:03:02 +0800 CST

陷阱如何影响外部程序?

  • 5

当进入子 shell 时,不被忽略的陷阱应设置为默认操作

来源:https ://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_28

显然,这对于我从 shell 调用的外部程序也是如此。trap "" SIGNAL用于捕获(忽略)该信号。但trap action SIGNAL不调用action,不做任何事情,信号处理似乎设置为其原始默认值。

这种行为在哪里定义?

shell-script
  • 1 个回答
  • 20 Views
Martin Hope
finefoot
Asked: 2021-10-07 06:09:56 +0800 CST

使用 statvfs 获取总和空闲文件系统大小

  • 0

我想使用 statvfs 的返回值来获取文件系统的总大小和空闲大小。

unsigned long  f_bsize;    /* Filesystem block size */
unsigned long  f_frsize;   /* Fragment size */
fsblkcnt_t     f_blocks;   /* Size of fs in f_frsize units */
fsblkcnt_t     f_bfree;    /* Number of free blocks */
...

来源:https ://man7.org/linux/man-pages/man3/statvfs.3.html

因此,要获得文件系统的总大小,我似乎想要f_blocks * f_frsize,因为评论f_blocks说它是“以单位为f_frsize单位”的大小。但是,f_bfree是空闲块的数量。所以对于免费的文件系统大小,我必须使用f_bsize?还是f_frsize再来一次?

linux filesystems
  • 2 个回答
  • 173 Views
Martin Hope
finefoot
Asked: 2020-03-10 11:00:04 +0800 CST

`cp --no-clobber` 是否容易受到竞争条件的影响?

  • 35

手册页cp(1)说

--no-clobber不要覆盖现有文件

但是,下面的情况是不可能的吗?

  1. cp检查文件是否存在,假设文件不存在(还)
  2. 其他一些进程写入相同的路径,所以现在有数据写入以前不存在的文件
  3. 由于cp不知道现在存在的文件,它会覆盖数据

是否cp --no-clobber容易受到这种竞争条件的影响?如果没有,如何cp避免上述情况?

linux shell
  • 1 个回答
  • 3404 Views
Martin Hope
finefoot
Asked: 2019-11-20 10:02:47 +0800 CST

如何找到更多关于 GNU coreutils 命令历史的信息?

  • 2

我能以某种方式找到更多关于 GNU coreutils 命令开发过程的历史吗?例如,have suand runuser(它提供了一种类似的功能,但被决定分成两个命令)总是共存的还是一个先于另一个?我真的不知道从哪里开始寻找。info runuser在我的 Ubuntu 18.04 上有

2014 年 7 月

在页面的底部。我想这个日期与info页面的编写或修改时间有关,因为runuser它本身当然必须要老得多。所以那里或man页面中没有运气。链接的 GNU 网站对我来说显得杂乱无章,但也许​​我只是无法正确导航它。

我只选择su和runuser作为例子。我对所有 GNU coreutils 开发都感兴趣。

我应该从哪里开始寻找?什么是好资源?文档甚至存在那么久吗?

linux
  • 1 个回答
  • 212 Views
Martin Hope
finefoot
Asked: 2019-11-05 15:52:43 +0800 CST

我可以使用 `diff` 来显示匹配的部分而不是不同的部分吗?

  • 0

man diff说:

diff - 逐行比较文件

因此diff将比较文件。但是,最终,它会显示出差异,如果有的话。如何比较文件并显示匹配的部分?

linux
  • 1 个回答
  • 155 Views
Martin Hope
finefoot
Asked: 2019-07-14 07:31:45 +0800 CST

从`stat`获取以毫秒为单位的mtime Epoch时间戳

  • 5

如果我stat用来显示 mtime,我会得到一个以毫秒为单位的日期:

$ stat -c '%y' test.log 
2019-07-04 14:32:10.730059167 +0200

但是,如果我想显示 Epoch 时间戳,我将不再获得毫秒数:

$ stat -c '%Y' test.log 
1562243530

我是否遗漏了一些东西,或者我必须从两个输出中将它修补在一起?

timestamps stat
  • 1 个回答
  • 6122 Views
Martin Hope
finefoot
Asked: 2019-06-19 16:27:18 +0800 CST

如果我使用 `sudo` 运行命令,它仍然是“由普通用户调用”吗?

  • 1

引用来自davfs2.conffor的联机帮助页mount.davfs:

有一个系统范围的配置文件 /etc/davfs2/davfs2.conf 和用户配置文件 ~/.davfs2/davfs2.conf。当 root 调用 mount.davfs 时,仅读取系统范围的配置文件。普通用户调用时,还会额外读取用户配置文件。

如果我打电话mount.davfs给sudo喜欢

sudo mount -t davfs ...

这仍然算作“由普通用户调用”并因此阅读我的~/.davfs2/davfs2.conf?或者是否sudo使这个调用“由root调用”并且~/.davfs2/davfs2.conf将被忽略?

sudo process
  • 1 个回答
  • 63 Views
Martin Hope
finefoot
Asked: 2019-05-17 07:31:04 +0800 CST

使用 `printf` 打印包含 `%` 百分号的变量会导致“bash: printf: `p': invalid format character”

  • 25

我想用来printf打印一个变量。此变量可能包含%百分号。

最小的例子:

$ TEST="contains % percent"
$ echo "${TEST}"
contains % percent
$ printf "${TEST}\n"
bash: printf: `p': invalid format character
contains $

(echo提供所需的输出。)

bash variable
  • 3 个回答
  • 26044 Views
Martin Hope
finefoot
Asked: 2019-05-15 13:49:11 +0800 CST

通过 SCP 复制文件夹的内容会导致 `scp: error: unexpected filename: .`

  • 4

我使用脚本通过 SCP 复制文件夹的内容,而不复制文件夹本身。像这样的东西:

scp -i id_rsa -P "$PORT" -r "$HOST:/folder1/folder2/." "backup"

(我无法使用*,因为我也想包含点文件。)

这最近停止工作,我收到以下错误:

scp: error: unexpected filename: .

我认为造成这种情况的原因是2018 年 11 月以来对 SCP的这些更改。

这是否意味着我不再能够通过 SCP 复制文件夹的内容而不复制文件夹本身?

shell-script scripting
  • 1 个回答
  • 6703 Views
Martin Hope
finefoot
Asked: 2019-04-28 04:09:42 +0800 CST

使用 `wget` 下载私有 GitHub 存储库的 ZIP 文件,例如 `curl`

  • 0

已经有一些关于如何下载 GitHub 存储库的 ZIP 文件的问题的答案,但如果存储库是私有的,它们就不起作用。

我知道它应该以wget某种方式工作,因为它确实适用于curl:

curl -u <USER> -L -o <FILENAME> https://github.com/<USER>/<REPO>/archive/master.zip

上面一行会询问<USER>'s 的密码,下载 master 分支 ZIP 文件并保存为<FILENAME>. 但是,wget等效项不起作用:

wget --user=<USER> --ask-password --output-document=<FILENAME> https://github.com/<USER>/<REPO>/archive/master.zip

结果是ERROR 404: Not Found.

wget curl
  • 1 个回答
  • 5123 Views
Martin Hope
finefoot
Asked: 2019-04-20 06:27:44 +0800 CST

如何暂时禁用 sudo 凭据时间戳超时?

  • 6

假设,我有以下 bash 脚本:

#!/bin/bash
sudo command1
command2
sudo command3

我不想以command2root 身份运行,所以我不会使用sudo. 因此,一旦我执行脚本,就会sudo command1询问我的密码。不幸的是,command2大约需要2个小时才能完成。所以 sudo 凭据时间戳超时,当脚本到达时sudo command3,我再次提示输入密码。

我不想完全永久禁用 sudo 凭据时间戳超时,例如https://superuser.com/a/149740中所述。我只想暂时禁用超时,有效地保留这个 bash 会话的凭据,直到它结束。

sudo scripting
  • 4 个回答
  • 1578 Views
Martin Hope
finefoot
Asked: 2019-04-06 16:01:43 +0800 CST

如何使 XTerm small-vt-font() 和 large-vt-font() 使用更平滑的步骤?

  • 0

我正在使用smaller-vt-font()并larger-vt-font()快速更改字体大小。但是,字体大小更改的步骤太大,我希望它们更平滑,以便生成的字体大小更接近默认字体大小。

在做了一些研究之后,我想我必须重新定义“不可读”、“小”、“小”、“中”、“大”和“巨大”的字体大小。有这个特定的问题描述了这个问题。但是,terminus-12,terminus-14等等不起作用,因为xlsfonts没有为我列出那些位图字体别名:

$ xlsfonts
-misc-fixed-medium-r-semicondensed--0-0-75-75-c-0-iso8859-1
-misc-fixed-medium-r-semicondensed--13-100-100-100-c-60-iso8859-1
-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1
6x13
cursor
fixed

目前,我的.Xresources样子是这样的:

XTerm*faceName: DejaVu Sans Mono
XTerm*faceSize: 12
XTerm.vt100.translations: #override \n\
  Ctrl <Key> minus: smaller-vt-font() \n\
  Ctrl <Key> plus: larger-vt-font()

我需要添加什么,例如将“不可读”、“小”、“小”、“中”、“大”和“大”的大小设置为 9、10、11、12、13 和 14 ?

fonts xterm
  • 1 个回答
  • 769 Views
Martin Hope
finefoot
Asked: 2019-04-06 13:02:05 +0800 CST

为什么在将脚本传送到 bash 时,不能使用 read 从 `stdin` 中读取?

  • 5

我不是在寻找该问题的变通方法或解决方案。我很好,它在bash. 我只是不明白为什么它不起作用。

我正在寻找一个深入的答案,为什么以下脚本不起作用。以前所有的互联网搜索结果,包括来自 unix.stackexchange.com 的帖子,都无法真正完全清除这一点。它与read读取stdin哪个不起作用有关,因为stdin已经通过管道cat喂食“采取”(?)?bash

示例 bash 脚本test.sh:

echo "Please say name:"
read NAME
echo "Hello $NAME"

方法 1 调用脚本bash test.sh:

$ bash test.sh
Please say name:
XYZ
Hello XYZ
$

方法 2 通过管道运行脚本到bash:

$ cat test.sh | bash
Please say name:
$

所以脚本立即返回提示,无需等待输入甚至打印第二行。

bash scripting
  • 1 个回答
  • 10501 Views
Martin Hope
finefoot
Asked: 2018-12-09 03:29:46 +0800 CST

不断写入 `/proc` 或 `/sys` 中的“文件”是否会因为写入次数有限而缩短我的 SSD 的使用寿命?

  • 0

我的笔记本电脑有一个 SSD 驱动器,我运行一个脚本,每隔一秒写入/sys/class/thermal/cooling_device4/cur_state. 我不认为这算作写入 SSD 并因此减少其剩余的写入周期数,因为procfs和sysfs是虚拟文件系统。

或者我忽略了什么,这是一个问题?

linux files
  • 1 个回答
  • 190 Views
Martin Hope
finefoot
Asked: 2018-07-27 05:10:54 +0800 CST

如何禁用“xclipboard”中的历史记录?

  • 0

如果我运行xclipboard以保持持久性CLIPBOARD,则会自动创建一个历史记录,该历史记录由CLIPBOARD某个时间的所有内容创建。

在此处输入图像描述

如何禁用历史记录?

linux x11
  • 1 个回答
  • 299 Views
Martin Hope
finefoot
Asked: 2018-06-19 12:53:54 +0800 CST

关闭 XTerm 后如何保留 `CLIPBOARD` 内容?(例如,像 Firefox 或 Leafpad 一样。)

  • 2

我想在 XTerm 和其他应用程序中使用CTRLSHIFTCandCTRLSHIFTV进行复制和粘贴,所以我添加了

XTerm*vt100.translations: #override \
    Shift Ctrl <Key> C: copy-selection(CLIPBOARD) \n\
    Shift Ctrl <Key> V: insert-selection(CLIPBOARD)

到我的~/.Xresources. 只要我不关闭 XTerm,复制和粘贴就可以正常工作。然后,所有CLIPBOARD内容都丢失了。使用时也会出现同样的问题

XTerm*vt100.selectToClipboard: true

一旦选择了文本,它就会直接复制到CLIPBOARD(而不是复制到PRIMARY- 或者可能同时复制到两者?),但只有在 XTerm 运行时才可用。

所以,我读了更多关于CLIPBOARD

  • https://www.jwz.org/doc/x-cut-and-paste.html
  • https://mutelight.org/subtleties-of-the-x-clipboard
  • https://en.wikipedia.org/wiki/X_Window_selection
  • 如何在选择关闭窗口后进行 Shift+Insert 粘贴选择?
  • https://burrows.svbtle.com/universal-copy-paste-in-linux

...但找不到明确的答案。例如,似乎存在能够同步CLIPBOARD的工具PRIMARY。或者使CLIPBOARD内容持久化。或者某种CLIPBOARD历史。但我不确定这就是我要找的东西,在这里。

例如:如果CLIPBOARD内容并没有真正离开应用程序,并且其他程序必须“向”原始应用程序“询问”的内容CLIPBOARD,那么这只有在该程序运行时才有可能是有道理的。CLIPBOARD但是,即使程序已关闭,来自 Firefox 或 Leafpad的选定文本如何保持可用?Firefox/Leafpad 如何做到这一点?他们不使用外部工具,是吗?!

xorg x11
  • 1 个回答
  • 1863 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve