shell-builtin

如何使用非标准文件描述符通过映射文件将文件读入数组?
shell-builtin

如何使用非标准文件描述符通过映射文件将文件读入数组?

mapfile -t -u 7 arr < textfile给我 bash: mapfile: 7: invalid file descriptor: Bad file descriptor 其他更详细的逐行读取文件的方法确实允许这样的描述符,例如 read_w_while() { while IFS="" read -u 7 -r l || [[ -n "${l}" ]]; do echo "${l}" done 7< textfile 标准描述0符 被大量使用。使用这样的描述符是否可以使脚本编写更安全,免受干扰?我的经验是,到目前为止,...

Admin

如何在我的所有脚本中自动执行“命令-p”?
shell-builtin

如何在我的所有脚本中自动执行“命令-p”?

我想使用command -p以下命令执行脚本中的所有命令: command -p pwd 因为我可能会在脚本中执行一些命令,其名称被其他一些自定义用户脚本使用,在这种情况下,该command命令会导致执行系统命令而不是用户的命令(这是一个友好的解释,如果您想要从技术上了解幕后真正发生的事情,请查阅手册页)这就是我想要的。 好吧,这样我就不必每次command -p在脚本中调用任何命令时都在行首逐字输入“”,有没有办法command -p在脚本中定义全局的行为? ...

Admin

以下“readonly”使用 POSIX 正确吗?
shell-builtin

以下“readonly”使用 POSIX 正确吗?

我将以下内容定义为只读: readonly root_command='sudo -s' 后来在我的脚本中使用,如下所示: exec $root_command 我的问题是,也许我是慢的或其他什么,但我不完全理解POSIX 手册页,例如我是否可以单引号或必须双引号以及类似的-p选项的用途是什么? 谢谢。 ...

Admin

脚本失败时如何避免 SSH 退出
shell-builtin

脚本失败时如何避免 SSH 退出

请原谅我基本的 unix/linux 脚本编写能力和糟糕的英语 我正在 Linux VM 中测试一个脚本,假设它是work.sh.所以我必须 ssh 到虚拟机 ssh [email protected] 有了我的访问权限,那么我需要在我的主文件夹中运行脚本 [[email protected] ~]. work.sh param1 param2 当批处理脚本中出现问题时,我可以看到错误,但也会被踢出 VM/ssh 会话 Connection to [email protected] closed. 所以我必须重新登录。 ...

Admin

如何解释睡眠和等待被中断时的不同行为
shell-builtin

如何解释睡眠和等待被中断时的不同行为

我试图理解sleep和之间的微妙之处sleep & wait。 如果运行脚本test.sh #!/bin/bash sleep 10000 在一个终端和ps -aef --forest另一个终端中,然后我看到 myuser 14355 14113 0 23:26 pts/5 00:00:00 | \_ /bin/bash ./test.sh myuser 14356 14355 0 23:26 pts/5 00:00:00 | \_ sleep 10000 s...

Admin

zsh 中的 some_variable 与 some-variable
shell-builtin

zsh 中的 some_variable 与 some-variable

为什么zsh看似明白要做什么some_variable=1 command,却又不明白some-variable=1 command?例如:$ fs_screen=1 mpv --fs-screen=${fs_screen} someFile.mp4工作正常,但$ fs-screen=1 mpv --fs-screen=${fs-screen} someFile.mp4结果是zsh: command not found: fs-screen=1 我深入研究了 zsh 文档,发现了我认为的问题所在。摘自https://zsh.sourceforge.io/Do...

Admin

仅使用 bash 中的内置函数从基数 10 进行任意基数转换
shell-builtin

仅使用 bash 中的内置函数从基数 10 进行任意基数转换

我正在尝试整理一个 bash 命令,使用一组指定的字符将数字从 10 基数转换为任意基数(例如,使用字母 az 转换为 26 基数,尽管这实际上不是我的用例)。 我有以前解决过这个问题,但不是在 bash 中(我的经验有限),而且在相当长的一段时间内都没有解决过。 有任何想法吗? ...

Admin

为什么“popd”弹出错误的目录?
shell-builtin

为什么“popd”弹出错误的目录?

这是预期的行为吗popd? >>> dirs -v 0 dirA 1 dirB >>> dirs +0 dirA >>> popd -n +0 dirA >>> dirs -v 0 dirA 我希望最后一行告诉我堆栈中只剩下 dirB 了。我不明白为什么它删除了 dirB。 这是 GNU bash,版本 5.2.15(1)-release (aarch64-apple-darwin22.1.0)。我的 Pushd 和 Popd 已被 RVM 转换为函数,但即使我取消设置它们并使用内置函...

Admin

问题
shell-builtin

问题

从man test页面: -n STRING the length of STRING is nonzero STRING equivalent to -n STRING -z STRING the length of STRING is zero 执行[ -n $foo ]、、、、[ -n ]均[ -z $foo ]返回[ -z ]true。这只是草率的返回值吗?未设置的变量不是字符串。表达式的完全省略也不是。即使它以某种方式“强制”为一,我也不愿意认为它的长度可以同时为零和非零。 确实...

Admin

bash 内置绑定和转义的问题
shell-builtin

bash 内置绑定和转义的问题

我正在尝试将历史模糊查找热键添加到我的 bash shell 中。然而,我想要的命令被中间切断了: [april@Capybara-2:~]$ cat ~/.bashrc bind "\"\C-r\": \"\$(history | fzf | awk '{\$1=\"\"; print substr(\$0,2)}')\"" [april@Capybara-2:~]$ $(history | fzf | awk '{$1=""; (第二行是按下 \C+r 时的结果。)我预计 \C+r 应该绑定到$(history | fzf | awk '{$1="...

Admin

如何让 cd shell-builtin 停止猜测?
shell-builtin

如何让 cd shell-builtin 停止猜测?

例如: $ ls -aF ./ ../ bin/ $ cd tin # with a tee, not bee bin $ pwd /home/user/bin 换句话说,cd猜测我真正的意思是cd bin,并且成功地(嗯?)相应地更改当前目录。我没有发现这种行为记录在man bash或Bash 参考手册。 我希望 Bash 产生一个错误,向标准错误写入一些信息,并保持当前目录不变如果没有与参数匹配的目录dir(占扩张)被发现。 供参考, $ type cd cd is a shell builtin $ ps -p $$ PID TTY ...

Admin

将 set -e (errexit) 与命令块一起使用,并在该块失败时执行另一个命令 (SC2181)
shell-builtin

将 set -e (errexit) 与命令块一起使用,并在该块失败时执行另一个命令 (SC2181)

我刚刚发现,set -e因为我正在寻找“如何运行许多命令(不带&&)并立即停止其中任何命令的非零退出代码?”的答案。这set -e对我来说已经足够好了,直到我发现 (set -e; false; echo here) || echo error 确实产生here而不是error.但当我很快找到一个新问题的解决方案时: (set -e; false; echo here); [ $? -ne 0 ] && echo error 我还遇到了一个老问题,$?而不是if cmd(SC2181)。 现在我有一个新问题:我是否只是忽略...

Admin

为什么某些属于 shell 函数的 shell 命令并不总是可用?
shell-builtin

为什么某些属于 shell 函数的 shell 命令并不总是可用?

我注意到使用 zshhistory从 Emacs 通过 执行时该命令不可用shell-command。 history | grep runserver结果是zsh:fc:1: no such event: 1。 我也使用histdb来自的命令https://github.com/larkery/zsh-histdb尽管该命令可以从 zsh 获得,但不能从 Emacs 调用。 histdb --limit 2000 | grep runserver输出zsh:1: command not found: histdb 显然,我不明白 shell 的核心方面。 ...

Admin

如何通过“创建适当的 shell 参数”来修改指定目录哈希表?
shell-builtin

如何通过“创建适当的 shell 参数”来修改指定目录哈希表?

我习惯于zsh使用 .s 向命名目录哈希表添加条目hash -d <name>=<value>。最近,我阅读了zshbuiltins(1)手册页,在那里我发现了以下内容(hash内置的描述): 通常,人们可以通过修改 PATH(对于命令哈希表)或通过创建适当的 shell 参数(对于命名目录哈希表)来修改这些表。 我不明白这个by creating appropriate shell parameters机制是如何运作的。有人能给我举个例子吗? ...

Admin