為 bash 轉義檔名

2021-06-05 11:02:56 字數 762 閱讀 4586

最近遇到的乙個問題:在程式中有乙個檔名,需要生成並執行乙個 shell 命令,比如通過 os.execute 執行。但這個檔名可能包含特殊字元。

比如,如果檔名是:這個檔名不能直接在 shell 命令中使用

[sumisora&caso&hkg][tears_to_tiara][02][gb].rmvb

那麼轉義之後就是:

\[sumisora\&caso\&hkg\]\[tears_to_tiara\]\[02\]\[gb\].rmvb

或者採用單引號的辦法:

'[sumisora&caso&hkg][tears_to_tiara][02][gb].rmvb'

經過一些搜尋:

ansic_shouldquote

ansic_quote

sh_backslash_quote

前兩個函式在 lib/sh/strtrans.c 中,後乙個函式在 lib/sh/shquote.c 中。所以最後終於定位到 shquote.c 這個檔案。

1. 如果要使用單引號轉義,那麼使用 sh_single_quote 的演算法

2. 想用反斜線轉義,使用 sh_blackslash_quote 的演算法

## 實現

出於方便考慮,我只實現了單引號轉義,下面是乙個 lua 的實現

function shquote(s)

return "."..string.gsub("'", "'\''").."'"

end

為 bash 轉義檔名

最近遇到的乙個問題 在程式中有乙個檔名,需要生成並執行乙個 shell 命令,比如通過 os.execute 執行。但這個檔名可能包含特殊字元。比如,如果檔名是 這個檔名不能直接在 shell 命令中使用 sumisora caso hkg tears to tiara 02 gb rmvb 那麼轉...

檔名 EXCEL批量修改檔名

場景一 面臨問題 將圖紙匯出為pdf格式時,因首字母按拼音排序,導致圖紙順序錯亂,需要在檔名前插入編號,以使檔案按照理想狀態排序。如下圖,預設的 按名稱排序 狀態為 節點 立面 平面 而理想的狀態為 平面 立面 節點 解決辦法 儲存,關閉文字文件。將字尾名 txt 修改為 bat 雙擊執行 提取檔名...

拿檔名 如何批量修改檔名

在工作和生活中,我們經常需要將許多檔案命名為固定格式,如果需要重新命名的檔案數量龐大,那重新命名將會變成一件非常枯燥繁瑣費時的工作,今天在這裡分享乙個批量修改檔名的 希望對大家有所幫助,就算是數百個檔名,也就幾秒鐘完事。先貼上 文字框內下滑可以複製完整內容哦 address r d 中銀國際實習 r...