Bash 使用感叹号进行历史扩展,如该问题的答案中所述(例如,使用sudo !!
运行先前的命令行sudo
)。但是,我找不到任何解释运行以下命令(即单个感叹号)的作用的地方:
!
Run Code Online (Sandbox Code Playgroud)
它似乎不打印任何内容并以 1 退出,但我不确定为什么会这样。我已经在网上和 Bash 手册页中查看过,但除了它是一个“保留字”这一事实之外,找不到任何东西——但也是如此}
,并运行这个:
}
Run Code Online (Sandbox Code Playgroud)
打印错误:
bash: syntax error near unexpected token `}'
Run Code Online (Sandbox Code Playgroud) 只有read -r
是通过POSIX规定; read -n NUM
,用于读取NUM
字符,不是。从标准输入读取给定数量的字符后,是否有一种可移植的方式自动返回?
我的用例正在打印这样的提示:
Do the thing? [y/n]
Run Code Online (Sandbox Code Playgroud)
如果可能,我希望程序在键入后自动运行y
或n
,而无需用户随后按 Enter 键。
通常,安装具有当前未安装的依赖项的软件包将使 apt在继续安装之前确认是否需要:
$ sudo apt install gnome-terminal
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
gnome-terminal-data gnome-user-guide libhyphen0 libjavascriptcoregtk-4.0-18 libnautilus-extension1a libwebkit2gtk-4.0-37 libwebkit2gtk-4.0-37-gtk2
libyelp0 yelp yelp-xsl
The following NEW packages will be installed:
gnome-terminal gnome-terminal-data gnome-user-guide libhyphen0 libjavascriptcoregtk-4.0-18 libnautilus-extension1a libwebkit2gtk-4.0-37
libwebkit2gtk-4.0-37-gtk2 libyelp0 yelp yelp-xsl
0 upgraded, 11 newly installed, 0 to remove and 0 not upgraded.
Need to get 23.5 MB of archives.
After this operation, 115 …
Run Code Online (Sandbox Code Playgroud) 我最近正在尝试安装 Go,但被我使用的软件包将二进制文件放入/usr/lib/go-1.9/bin/
.
我对此进行了更多研究,并发现*我有 212 个可用的软件包可以将某些内容放入/usr/lib/*/bin/
. 为什么包会把二进制文件放在这里而不是在/usr/bin
?
*通过 apt-file search -xl '/usr/lib/[^/]*/bin/' | wc -l