Questions tagged «shell-builtin»

内置的Shell是从Shell调用的命令,直接在Shell本身中执行。

5
如何在Bash中N次执行命令1次
我想要一种随机运行命令的方法,每10次说1次。是否有内置的或GNU coreutil来执行此操作,理想情况是: chance 10 && do_stuff 每do_stuff十次执行一次?我知道我可以编写脚本,但这似乎很简单,我想知道是否有定义的方法。

3
关于yash shell中的printf是否是内置命令有些困惑
根据其手册,该yash外壳具有printf内置功能。 但是,这是我在yash具有默认配置的shell中看到的内容: kk@eeyore ~ $ command -v printf /usr/bin/printf kk@eeyore ~ $ type printf printf: a regular built-in at /usr/bin/printf 是否printf在此外壳中内置?对于许多其他假定的内置实用程序(也可以作为外部命令使用),结果是相似的。 作为对比,在pdksh(ksh在OpenBSD,这里printf是不是内置的): $ command -v printf /usr/bin/printf $ type printf printf is /usr/bin/printf 而在bash(这里printf 是一个内置的): $ command -v printf printf $ type printf printf is a shell builtin

4
如何显式调用内置的shell?
我想根据需要自定义cd命令功能。 我定义了以下功能- function cd () { cd "$@" && pushd "$@"; } 此功能的目的是自动将目录推送到堆栈上,这样可以节省我pushd .每次手动键入的工作量。 但是,上述函数是一个无限递归函数,因为对的调用cd被解释为函数本身,而不是cd内置函数。 如何引用cd此函数中的内置函数? 我知道可以使用来转义别名\。如何以更明确的方式转义函数或引用内置函数? 注意:我不想将函数重命名为其他任何名称。

2
在bash中启动可执行文件的顺序
如果我test在bash中执行命令,test(评估条件表达式)内置实用程序将启动: $ type test test is a shell builtin $ type -a test test is a shell builtin test is /usr/local/bin/test test is /usr/bin/test $ 但是,从type -a test上面的输出中可以看到,test/ usr / local / bin目录中有另一个,/ usr / bin目录中又有一个。可执行文件如何排序,即始终首选内置命令,然后其余命令取决于$ PATH变量中的目录顺序?另外,是否可以更改可执行文件的启动顺序,例如,如果键入test,则启动/ usr / bin / test而不是bash-builtin test?

1
我如何获得有关zsh内置的帮助消息?
如果我想获得内置bash的简短用法消息,可以help <builtin>在命令提示符下使用,例如 $ help export export: export [-fn] [name[=value] ...] or export -p Set export attribute for shell variables. Marks each NAME for automatic export to the environment of subsequently executed commands. If VALUE is supplied, assign VALUE before exporting. Options: -f refer to shell functions -n remove the export …


1
在bash中使用内置的“ time”命令,而不是外部命令
使用该time命令时,遇到了一种情况,我应该使用内置的time而不是外部的GNU time命令/usr/bin/time。那么,我该怎么做呢?我在某处看到使用enable和/或command会有所帮助,但没有。 这是一个用例: watch "time ls" 它使用了/usr/bin/time我不想要的外部命令!time当我time ls在终端上运行时调用内部bash函数时会发生这种情况,如下所示: $ time ls 请注意,此处已回答了完全相反的要求: 使bash使用外部`time`命令而不是内置的shell 两个命令有很多区别。内部命令time更精确(我想要),但是外部命令有更多选项(我不需要)。

1
“ wait&”(“ wait&”符号)是有用的(流行的)shell / shell脚本惯用法或技巧吗?
我已经“继承”了运行GNU“ bash” shell的Linux机器的一些shell脚本。在一种特定情况下,机器运行GNU bash版本2.0.5b 这些脚本之一有一个wait &(“&”符号)作为for循环“ for行”的一部分。乍一看,这似乎是一种好奇/有趣的习惯用法,但是我在网上搜索时并未返回任何相关信息。man wait显示了“ BASH_BUILTINS”(“ BASH BUILTINS COMMAND”)联机帮助页,该联机帮助具有以下描述: wait [n] Wait for the specified process and return its termination status. n may be a process ID or a job spec­ification; if a job spec is given, all processes in that job's pipeline are waited for. If …

3
可以同时使用大括号(排列)和数组扩展吗?
Bash的{}大括号扩展语法允许创建简单的排列 # echo {b,c,d}{a,e,i,o,u} ba be bi bo bu ca ce ci co cu da de di do du 但是我不清楚是否/如何将其与数组一起使用,除非非常笨拙地使用$() echoandeval 有没有一种简单的方法可以将数组与花括号(排列)扩展一起使用? 例如,想象一下类似的事情(这当然不起作用): CONS=( b c d ) VOWEL=( a e i o u ) echo {${CONS[@]}}{${VOWEL[@]}}

2
了解Shell内置命令
在bash手册中,写道 Builtin commands are contained >>> within <<< the shell itself 另外,这个答案指出 A built-in command is simply a command that the shell carries out itself, instead of interpreting it as a request to load and run some >>> other program <<< 在上运行compgen -b时bash 4.4,我会收到所有shell内置命令的列表。我看到例如,[并且kill被列为shell内置程序。但是它们的实际位置是: /usr/bin/[ /bin/kill 我认为这是builtin将命令编译为/bin/bash可执行文件的一种手段。因此,真正使我感到困惑的是:请纠正我,但是builtin当一个单独的命令实际上不属于shell的一部分时,它又如何成为a 呢?

4
内置命令何时加载到内存
假设我输入cd了我的shell。cd那时候是从内存加载的吗?我的直觉是,这些内置命令在内核加载后会预先加载到系统内存中,但是有人坚持说只有在我实际调用命令时(在外壳上按Enter键)才加载它们。您能否告诉我是否有参​​考文献对此进行解释?

2
计算bash数组中元素的数目,其中数组名称是动态的(即存储在变量中)
问题的简要说明: 是否有内置的bash方法来计算bash数组中元素的数量,而该数组的名称是动态的(即存储在变量中),而无需求助于对该数组的完全复制或使用eval? 更多信息: 使用bash参数替换,可以执行以下操作: 确定数组的长度: myArr=(A B C); echo ${#myArr[@]}。 通过名称间接引用变量:( NAME=myVar; echo ${!NAME}这也适用于数组元素): NAME=myArr[1]; echo ${!NAME} 但是,如果数组的名称存储在另一个变量中,那么如何确定数组中元素的数量呢?(可以将其视为上述两个参数替换的组合。)例如: myArr=(A B C D) NAME=myArr # Get the number of elements in the array indirectly referenced by NAME. count=${#$NAME[@]} # This syntax is invalid. What is the right way? 以下是所有失败的多次尝试: # Setup …

1
“ $-”中的“ s”是什么?
我通常很了解的内容$-。在最近的CentOS上,我得到: [grochmal@orion ~]$ echo $- himBH hmBH是的所有选项set,这i意味着我的外壳是交互式的。 但是,在Arch Linux上,我得到了: [grochmal@haps ~]$ echo $- himBHs 我找不到任何有用的东西,man bash并set -s给我一个错误。那s代表什么呢?

4
为什么我的程序“ set”没有执行?
我创建了一个简单的C程序,如下所示: int main(int argc, char *argv[]) { if (argc != 5) { fputs("Not enough arguments!\n", stderr); exit(EXIT_FAILURE); } 我在etc / bash.bashrc中修改了我的PATH,如下所示: PATH=.:$PATH 我已经将该程序保存为set.c,并使用 gcc -o set set.c 在文件夹中 ~/Programming/so 但是,当我打电话 set 2 3 什么都没发生。没有文字出现。 呼唤 ./set 2 3 给出预期的结果 我以前从未遇到过PATH问题 which set 返回./set。因此,似乎PATH是正确的路径。发生什么事了?

2
什么不是特定于外壳的?
在某些答案下,我看到一些建议不要在答案中使用特定于Shell的命令的注释。 我如何知道所有shell中都存在哪些命令,运算符等?有标准清单吗? man builtins给出命令列表。这些是我可以在所有shell中都能使用的可移植shell脚本中唯一使用的命令吗? 内置可以是特定于外壳的吗? Linux的标准是否与其他Unix的标准不同? 语法呢?标点符号,运算符等在某些shell中可以不同吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.