相关疑难解决方法(0)

为什么 cd 不是程序?

我一直想知道为什么cd不是程序,但从未设法找到答案。

有谁知道为什么会这样?

shell cd-command shell-builtin command

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

为什么“回声”比“触摸”快这么多?

我正在尝试将我目录中所有 xml 文件的时间戳更新为当前时间(递归)。我使用的是 Mac OSX 10.8.5。

在大约 300,000 个文件上,以下echo命令需要10 秒

for file in `find . -name "*.xml"`; do echo >> $file; done
Run Code Online (Sandbox Code Playgroud)

但是,以下touch命令需要10 分钟!:

for file in `find . -name "*.xml"`; do touch $file; done
Run Code Online (Sandbox Code Playgroud)

为什么这里的回声比触摸快得多?

shell echo command

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

为什么 POSIX 要求某些 shell 内置函数具有外部实现?

有关的printf是否是这个问题,一个内置的佳日,谈到这个答案是报价POSIX标准

答案指出,POSIX 搜索顺序是查找所需命令的外部实现,然后,如果 shell 已将其实现为内置,则运行内置。(对于不是特殊内置函数的内置函数。)

为什么 POSIX 要求在允许运行内部实现之前存在外部实现?

似乎……随意,所以我很好奇。

shell posix shell-builtin

24
推荐指数
2
解决办法
1726
查看次数

为什么“ls”需要一个单独的进程来执行?

为什么ls需要一个单独的进程来执行?我知道为什么像这样的命令cd不能通过分叉机制执行,但是如果ls不分叉就执行有什么危害吗?

ls cd-command fork

14
推荐指数
2
解决办法
4057
查看次数

关键字、保留字和内置字之间的区别?

Make bash use external `time` 命令而不是 shell built-in,Stéphane Chazelas 写道:

没有time内置 bash。time是一个关键字,所以你可以做例如time { foo; bar; }

我们可以验证一下:

$ type -a time
time is a shell keyword
time is /usr/bin/time
Run Code Online (Sandbox Code Playgroud)

它没有显示time可以是内置命令。

  1. “关键字”的定义是什么?
  2. “关键字”与“Bash 参考手册”中的“保留字”是同一个概念吗?

    保留字

    一个对壳有特殊意义的词。大多数保留字都引入了 shell 流控制结构,例如forwhile

  3. 关键字是否一定不是命令(或不是内置命令)?

    作为关键字,是time不是命令(或不是内置命令)?

    根据关键字和内建的定义,为什么time 不是内建而是关键字?

  4. 为什么“你可以做例如time { foo; bar; }”因为“time是一个关键字”?

bash

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

内置的 echo 命令和 /bin/echo 有什么区别?

我正在玩typewhich命令,我发现了一些奇怪的东西。

type或者返回的路径或者说,一个命令是一个bash内置的。 which要么返回内置插件,如路径或没有exittype

奇怪的是,type echo说 echo 是我预期的内置。

但是which echo将 /bin/echo 作为 echo 可执行文件的路径。对于任何其他内置命令,这似乎不会发生。

我想知道两者之间的区别是什么,Bash 选择在脚本和命令行中执行哪一个,以及这两个回声背后的故事是什么。

我的系统是 Ubuntu Desktop 12.04

shell bash executable echo shell-builtin

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

即使 echo 是内置函数的外壳,为什么“$ sudo echo 'yo'”仍然有效?

我明白那个

sudo cd /directory
Run Code Online (Sandbox Code Playgroud)

将返回:

sudo: cd: command not found
Run Code Online (Sandbox Code Playgroud)

因为 cd 是内置的 shell 而不是二进制文件。但是,为什么

sudo echo 'this is a test'
Run Code Online (Sandbox Code Playgroud)

工作正常?

这里到底发生了什么?如果不是shell,如何sudo找到命令echo

shell sudo echo

6
推荐指数
2
解决办法
1326
查看次数

标签 统计

shell ×5

echo ×3

shell-builtin ×3

bash ×2

cd-command ×2

command ×2

executable ×1

fork ×1

ls ×1

posix ×1

sudo ×1