相关疑难解决方法(0)

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

查找目录中的文件数

Linux中是否有任何方法可以计算O(1)中目录(即直接子节点)中的文件数(与文件数无关),而无需先列出目录?如果不是O(1),是否有合理有效的方法?

我在寻找替代方案ls | wc -l.

linux directory shell file counting

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

为什么反斜杠会阻止别名扩展?

在我的问题的第一部分,我将提供一些背景信息作为社区服务.第二部分包含实际问题.

第一部分

假设我创建了以下别名:

alias ls='ls -r'
Run Code Online (Sandbox Code Playgroud)

我知道如何使用以下方式暂时unalias(即覆盖此别名),使用:

1)命令的完整路径名: /bin/ls

2)命令替换: $(which ls)

3)内置命令: command ls

4)双引号: "ls"

5)单引号: 'ls'

6)反斜杠字符: \ls

案例1是显而易见的,案例2只是一种变化.案例3中内置的命令旨在忽略shell函数,但显然它也可用于规避别名.最后,案例4和5与POSIX标准(2.3.1)一致:

"应检查一个被识别为简单命令的命令名字的结果字,以确定它是否是一个不带引号的有效别名."

Bash参考手册(6.6):

"检查每个简单命令的第一个单词,如果没有引用,则检查它是否有别名."

第二部分

这是一个问题:为什么案例6(通过说法覆盖别名\ls)考虑引用这个词?为了与这个问题的风格保持一致,我正在寻找对"官方"文档的引用.

文档说反斜杠只转义后续字符,而不是单引号和双引号引用一系列字符. POSIX标准(2.2.1):

"未引用的反斜杠应保留以下字符的字面值,但<newline>除外"

Bash参考手册(3.1.2.1):

"一个非引用的反斜杠'\'是Bash转义字符.它保留了下一个字符的字面值,除了换行符."

(顺便说一句,是不是"下一个角色"有点矫枉过正?)

一个可能的答案可能是这种情况并不那么特别:它类似于ANSI-C引用中的一些情况,例如\nnn.然而,这仍然是逸出的单个字符(八位字符,其值是八进制值NNN),而不是一个字符序列.

bash shell alias posix escaping

23
推荐指数
2
解决办法
4428
查看次数

标签 统计

shell ×3

bash ×2

alias ×1

counting ×1

directory ×1

escaping ×1

file ×1

linux ×1

posix ×1