最近遇到的乙個問題:在程式中有乙個檔名,需要生成並執行乙個 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...