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
    • 最新
    • 标签
主页 / unix / 问题

问题[shell](unix)

Martin Hope
Ivoirians
Asked: 2025-04-24 04:29:39 +0800 CST

如何删除脚本执行期间写入终端的缓冲文本

  • 14

假设我正在执行一个长时间运行的 bash 脚本,并且在运行时,我不小心右键单击终端并将敏感密码(刚从密码管理器中复制出来的)粘贴到终端中。

~$ process_data.sh
[useful data 1]
[useful data 2]
...
[useful data N-1]
hunter2[useful data N]
[useful data N+1]

有什么方法可以删除终端上显示的文本 (hunter2),同时保留有用的数据? Ctrl-L 可以clear删除屏幕上的所有内容。Ctrl-H 可以删除当前行的字符,但我无法将光标向上移动。

我不需要从中删除文本~/.bash_history,我只是希望有用的数据显示在终端中,而没有令人反感的文本。

我认为答案可能取决于终端的功能/实现。我使用的是 Ubuntu 18,但任何针对常见终端的解决方案都将不胜感激。

shell
  • 3 个回答
  • 772 Views
Martin Hope
TimSO
Asked: 2025-04-21 21:50:40 +0800 CST

解析控制台输出并发出声音提示错误

  • 9

我正在测试应用程序,mycommand它在控制台和 /tmp/mycommand.log 中都有输出。使用 zsh。mycommand它实际上是一个带参数的函数,但在控制台中运行时也能得到相同的结果。mycommand我在浏览器中测试应用程序时运行。完成后,我按 Ctrl+C 完成运行。

程序中可能会发生错误,控制台会输出如下内容:ERROR: Fatal signal! Attach debugger with: 由于我没有查看控制台,日志中也没有显示,我希望在发生这种情况时能够收到通知。我需要的是简单的 声音error,而不是冗长的应用程序日志输出。

我正在研究如何在解析命令的同时显示命令的输出?但这似乎并不以同样的方式适用于此。

shell
  • 3 个回答
  • 518 Views
Martin Hope
Alex Martian
Asked: 2025-04-19 12:33:30 +0800 CST

在 { fd1>&fd3 } 之后,fd3>&fd1 如何(内部)将原始 fd 放回(或不放回)fd1?(“坏文件描述符”)

  • 10

`我正在阅读https://stackoverflow.com/questions/692000/how-do-i-write-standard-error-to-a-file-while-using-tee-with-a-pipe/692009#692009、https://stackoverflow.com/a/14737103/5499118的答案:

{ { ./aaa.sh | tee bbb.out; } 2>&1 1>&3 | tee ccc.out; } 3>&1 1>&2

正如我所检查的,它按照解释的那样工作,答案链接到https://unix.stackexchange.com/a/18904/266260,而后者链接到https://unix.stackexchange.com/a/3540/266260。

我不明白为什么{ ... 1>&3 ... } 3>&1会起作用(后面的重定向如何逆转前者的效果),因为当我想了解 man bash 时:

请注意,重定向的顺序很重要。例如,命令

ls > dirlist 2>&1

将标准输出和标准错误定向到文件 dirlist,而命令

ls 2>&1 > dirlist

仅将标准输出定向到文件 dirlist,因为在将标准输出重定向到 dirlist 之前,标准错误已从标准输出复制。

我发现重定向中的文件描述符重复:

重定向是通过 dup 系列系统函数实现的。dup 是“duplication”的缩写,例如:

3>&2

您将文件描述符 2 复制(dup2)到文件描述符 3 上...

因此我理解1>&3将 3 重复为 1,并且从该命令开始它们指向同一个对象。man dup:

成功返回后,新旧文件描述符可以互换使用。它们指向同一个打开的文件描述符

从dup解释上看,我预计3>&1不会有任何变化,因为 3 和 1 已经相同了。但显然情况并非如此,因为3>&1 省略{ { ./aaa.sh | tee bbb.out; } 2>&1 1>&3 | tee ccc.out; } 3>&1 1>&2结果bash: 3: bad file descriptor

在解释使用调用进行重定向时,哪些地方(如果有的话)是错误的dup?在1>&3和期间内部发生了什么3>&1?也许{ }在这里很重要,但我发现它们仅用于分组,并且每个man bash:

list 只是在当前 shell 环境中执行。

shell
  • 2 个回答
  • 364 Views
Martin Hope
rdong8
Asked: 2025-04-15 16:19:59 +0800 CST

我的 GNOME 状态栏中瞬间出现的图标(灰色曲线上的点)是什么?

  • 14

GNOME 状态栏图标的屏幕截图

最左边的图标(thunderbolt-获取-symbolic.svg)就是有问题的图标。

具体来说,我有一对多点蓝牙耳机,同时连接到我的 iPhone 和 Linux 笔记本电脑。当我用手机听音乐时,即使我没有播放任何音频,也会定期看到这个图标出现在笔记本电脑上。这个图标通常会在几秒钟内消失,但我的音乐会暂时听不见(但手机上仍在播放)。然后就会恢复正常。

shell
  • 2 个回答
  • 1401 Views
Martin Hope
LuckyJollyMoments
Asked: 2025-04-13 20:00:00 +0800 CST

为什么“sudo -E”不保留“PERL5LIB”?

  • 16

我在 macOS(15.2)上使用 sudo 保存环境变量时遇到了奇怪的行为:sudo -E不保存环境变量PERL5LIB。

复制步骤

  1. 在shell中设置环境变量: export PERL5LIB=foo 。命令 env | grep PERL5LIB 输出与预期一致: PERL5LIB=foo 。

  2. 但是,命令 sudo -E env | grep PERL5LIB 不返回任何内容。相反,以下命令有效: sudo --preserve-env=PERL5LIB env | grep PERL5LIB 。它成功保留了PERL5LIB。

这很令人困惑,因为我希望sudo -E保留调用shell的所有环境变量,包括PERL5LIB。但显然,对于这个特定的变量,它不是这样工作的。

问题

  • 为什么在 macOS 上PERL5LIB没有保存?sudo -E
  • 这种行为是特定的吗PERL5LIB,还是也会影响其他变量?
  • 在使用 sudo 时,有什么推荐的、可靠的方法来确保PERL5LIB保存?
shell
  • 1 个回答
  • 972 Views
Martin Hope
Persimmonium
Asked: 2025-04-04 19:10:21 +0800 CST

是否可以使用 tar.gz 路径作为参数来调用 mc 以直接在 tar.gz 中打开 mc?

  • 5

我正在尝试显而易见的事情:

mc file.tar.gz

但 tar.gz 未打开

有什么想法吗?

shell
  • 1 个回答
  • 13 Views
Martin Hope
Fravadona
Asked: 2025-03-14 21:49:20 +0800 CST

POSIX 问题 8 中 `realpath` 命令的 -E 选项的起源是什么?

  • 7

命令realpath实用程序现在由 POSIX 在其第 8 期 (2024) 中定义:realpath — 解析路径名

真实路径 [-E|-e] 文件

realpath 实用程序将规范化文件操作数指定的路径名​​,如下所示:

如果使用指定路径名作为其第一个参数的函数调用realpath()成功,则规范化路径名应为该调用返回的路径名realpath()。否则:

  • 如果指定了-e选项,规范化将失败。

  • 如果指定了-Erealpath()选项,则如果以指定路径名作为其第一个参数对函数的调用遇到 [ENOENT] 以外的错误情况,则规范化将失败;如果调用遇到 [ENOENT] 错误,realpath 将扩展所有遇到的符号链接,尝试使用 XBD 4.16 路径名解析中指定的算法来解析指定的路径名​​,但应忽略任何<slash>不是前导<slash>字符的尾随字符。如果此扩展成功,并且扩展路径名的路径前缀解析为现有目录,则规范化路径名应为扩展路径名。在所有其他情况下,规范化都将失败。如果扩展路径名不为空、不以 开头<slash>,并且只有一个路径名组件,则应将其视为具有路径前缀“ ./”。

  • 如果未指定任何选项,realpath 将以未指定的方式规范化指定的路径名​​,使得生成的绝对路径名不包含任何引用符号链接类型文件的组件,也不包含任何点或点点组件。

成功规范化后,realpath 会将规范化的路径名(后跟一个<newline>字符)写入标准输出。

如果规范化失败,或者规范化的路径名为空,则不会向标准输出写入任何内容,而会向标准错误写入诊断消息,并且 realpath 会以非零状态退出。

[...]

我的问题是:至少 GNU 和 Solaris 已经支持-e该选项,但我在检查过的所有版本(macOS、FreeBSD、Solaris、GNU)中realpath都找不到该选项的提及。OpenGroup 发明了它吗?-Erealpath

shell
  • 1 个回答
  • 122 Views
Martin Hope
An5Drama
Asked: 2025-03-07 16:32:05 +0800 CST

如果 `{}` 包含诸如 `"` 之类的特殊字符,`find` 将如何替换它?

  • 5

最近,当我阅读一个 QA时,它有一些令我意想不到的行为:

~/findtest % echo three > file\ with\ \"double\ quotes\"
~ % find findtest -type f -exec sh -c 'set -x;cat "{}"' \;
+ cat 'findtest/file with double' quotes
cat: findtest/file with double: No such file or directory
cat: quotes: No such file or directory

在我看来,当进行替换时,'cat findtest/file\ with\ \"double\ quotes\"'只要替换上面的文件名就可以了file\ with\ \"double\ quotes\"。如果我们保留引号包装器,它将显示:

$ cat "findtest/file\ with\ \"double\ quotes\""
cat: 'findtest/file\ with\ "double\ quotes"': No such file or directory

问:

该替换实际上做了什么导致上述有点奇怪的行为,其中 2 个子字符串“findtest/file with double”和“quotes”,而不是“findtest/file with”和“double quotes”作为"分隔符?

shell
  • 1 个回答
  • 59 Views
Martin Hope
luator
Asked: 2025-02-25 21:38:28 +0800 CST

对 CSV 文件的每一行运行命令,使用命令不同位置的字段

  • 10

我有一个 CSV 文件,想要对每一行运行一个命令,并使用文件的字段作为单独的参数。

例如给定以下文件:

foo,42,red
bar,13,blue
baz,27,green

我想依次运行以下命令:

my_cmd --arg1 42 --arg2 foo --arg3 red
my_cmd --arg1 13 --arg2 bar --arg3 blue
my_cmd --arg1 27 --arg2 baz --arg3 green

实现此目的的最简单方法是什么?似乎可以使用 xargs 来实现,但我不知道具体如何实现。

shell
  • 5 个回答
  • 340 Views
Martin Hope
Zoltan King
Asked: 2025-02-25 08:52:04 +0800 CST

如何在 FreeBSD 中对所有 ZFS 快照输出运行命令?

  • 5

当我启动单用户模式并列出我感兴趣的 ZFS 快照时,我想恢复到“xfcedesktop”快照。但是,这需要我zfs rollback snapshotname@xfcedesktop为每个快照手动输入命令,如下所示:

# zfs list -t snapshot -o name | grep xfcedesktop
zroot@xfcedesktop
zroot/ROOT@xfcedesktop
zroot/ROOT/default@xfcedesktop
zroot/home@xfcedesktop
zroot/home/zoliky@xfcedesktop
zroot/tmp@xfcedesktop
zroot/usr@xfcedesktop
zroot/usr/ports@xfcedesktop
zroot/usr/src@xfcedesktop
zroot/var@xfcedesktop
zroot/var/audit@xfcedesktop
zroot/var/crash@xfcedesktop
zroot/var/log@xfcedesktop
zroot/var/mail@xfcedesktop
zroot/var/tmp@xfcedesktop

# now I need to type this for each line:
zfs rollback zroot@xfcedesktop
zfs rollback zroot/ROOT@xfcedesktop
zfs rollback zroot/ROOT/default@xfcedesktop
.. and so on

这很耗时,而且容易出错。我想知道是否有一个 shell 技巧或一行代码可以让我循环遍历 grep 的输出并执行每个快照的回滚命令。我在 FreeBSD 上使用 sh(不是 bash),以单用户模式运行。理想情况下,我希望它是一行代码而不是脚本。

shell
  • 3 个回答
  • 31 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