Bash 扩展glob can';t回溯行为
我看了一本bash指南,其中有一个示例: 我熟悉Bash 扩展glob can';t回溯行为,bash,Bash,我看了一本bash指南,其中有一个示例: 我熟悉正则表达式的基本概念,可能这让我感到困惑,因为我正试图将这些概念应用到bash中的扩展globs 我不明白为什么!(my)*.txt正在bash中展开myscript.txt。指南中的解释对我毫无帮助 我的理由是: !(my*).txt与myscript.txt不匹配,因为它确实以my开头,然后与script的其余字符匹配,最后与.txt匹配 !(my)*.txt不匹配(错误!!!)匹配myscript.txt,因为它以my开头,后跟任何字符,
正则表达式的基本概念
,可能这让我感到困惑,因为我正试图将这些概念应用到bash中的扩展globs
我不明白为什么!(my)*.txt
正在bash
中展开myscript.txt
。指南中的解释对我毫无帮助
我的理由是:
!(my*).txt与
不匹配,因为它确实以myscript.txt
开头,然后与my
的其余字符匹配,最后与.txt匹配script
不匹配(错误!!!)匹配!(my)*.txt
,因为它以myscript.txt
开头,后跟任何字符,最后匹配my
.txt
我的论证哪里错了 这是通配符的常见问题。要问自己的问题是,有没有办法拆分
myscript.txt
,使第一个片段匹配!(my)
第二个匹配*.txt
与直觉相反,答案是肯定的:如果将“
”myscript.txt“
拆分为”
(空字符串)和”myscript.txt“
,则空字符串匹配!(my)
和“myscript.txt”
匹配*.txt
空字符串是有效匹配这是通配符的常见问题。要问自己的问题是,有没有办法拆分myscript.txt
,使第一个片段匹配!(my)
第二个匹配*.txt
与直觉相反,答案是肯定的:如果将“
”myscript.txt“
拆分为”
(空字符串)和”myscript.txt“
,则空字符串匹配!(my)
和“myscript.txt”
匹配*.txt
空字符串是有效匹配@Cyrus我知道-我的措辞拙劣=>更新了question@Cyrus我知道-我的措辞很糟糕=>更新了问题
$ ls !(my*).txt # All the .txt files that do not begin with my.
hello.txt
$ ls !(my)*.txt # Can you guess why this one matches myscript.txt?
myscript.txt
hello.txt