在“标准 BASH”上,双引号内是否有通配符?例如:
$ touch abc
$ ls "*abc*"
Run Code Online (Sandbox Code Playgroud)
会,还是不会在 bash 上工作?
有人告诉我 Ubuntu 附带了一个不符合 POSIX 或 BASH 的 bash 变体。真的吗?
简短回答:没有
man bash 的长回答:
双引号中的字符会保留引号内所有字符的字面值,但 $、`、\ 除外
所以:
~$ touch sas
~$ ls *a*
sas
~$ ls "*a*"
ls: cannot access *a*: No such file or directory
Run Code Online (Sandbox Code Playgroud)
当然,在谈论双引号和星号时,还有另一个例外:参数扩展(即:“$*”)……但那是另一段历史了
对于第二个问题:你问的是破折号吗?dash 是一个轻量级的脚本 shell。在 debian 和 ubuntu 中,每个扩展(基于 debian),别名为 sh;与 bash 相比,它的主要优势在于它的速度,因此它默认用于系统脚本;然而,默认情况下 bash 仍然可以作为用户的交互式 shell
~$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 2011-04-21 11:54 /bin/sh -> dash
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4940 次 |
| 最近记录: |