簡體   English   中英

為什么值“?” 更改取決於我當前的目錄?

[英]Why does the value of '?' change depending on my current directory?

我的計算機上有一個奇怪的文件夾,叫做template /(我相信它是在我對樹莓派進行一些底層編程時創建的)。 奇怪的是,如果我在文件夾中並運行命令

$echo -n ? | hexdump

它顯示

0000000 000d                                   
0000001

但是,如果我在其他任何文件夾中,則命令如下所示

$echo -n ? | hexdump
0000000 003f                                   
0000001

為什么值“?” 只能在該文件夾中更改。

我應該注意到,我發現它的原因是有一個名為“?”的文件。 在template /文件夾中,這在我編寫的某些php中引起了問題。 我試圖在其他地方重新創建它,但發現我做不到。

Why does the value of '?' change in that folder and only that folder.

? 是Shell Globing中的特殊字符。

? 匹配任何字符並echo ? 將匹配並列出當前目錄中的任何文件名,文件名的長度必須恰好為1個字符。

PS:如果目錄沒有任何1個字符的文件名,則它將回顯文字?

表達echo ? 首先由處理。 它取代? 包含任何單個字符文件名(如果存在)。 如果沒有這樣的文件,它仍然存在?

示例(有兩個具有單個字符文件名的文件):

$ ls ?
b  c
$ echo ?
b c

或(無單個字符文件)

$ ls ?
ls: cannot access ?: No such file or directory
$ echo ?
?

因此,如果您只想提出一個? 您需要轉義的字符:

$ echo \?
?
$ echo '?'
?
$ echo "?"
?

我希望這個能有一點幫助...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM