[問題] 什麼情況文字會以 null 作為換行符?

看板Linux作者 (項為之強)時間9年前 (2016/03/14 00:03), 9年前編輯推噓7(7013)
留言20則, 10人參與, 最新討論串1/1
在 sed 的 man page 中看到選項 -z , 以 null 作為輸入資料的換行符。 當我希望 sed 不要一次只處理一行時, 會用這個選項。 但這應該不是它本來的目的。 我在其它命令也有看到類似的選項; (像 xargs 的 -0 選項。) 是什麼時候文字會以 null 作為換行符? C 語言的字串是以 null 結尾, 我猜這些選項可能是要和 C 語言配合。 但感覺有點小題大作……。 請教各位知道這個選項的意義嗎? -- 因為她不知道,唯一值得她流淚的人,絕不會讓她流淚。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.102.204 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1457885033.A.6D2.html

03/14 02:02, , 1F
/proc/<pid>/cmdline 和 /proc/<pid>/environ?
03/14 02:02, 1F

03/14 07:55, , 2F
當批量處理的檔案有含空白字元的檔名的時候
03/14 07:55, 2F

03/14 09:51, , 3F
因為linux檔名的限制只有/和null byte不能用 要最精確分
03/14 09:51, 3F

03/14 09:51, , 4F
隔多個檔名當然就只有用null byte了
03/14 09:51, 4F
檔名可以含控制字元 XD touch '^C'

03/14 11:24, , 5F
不是用換行符就可以了嗎?
03/14 11:24, 5F

03/14 13:52, , 6F
假設你把執行檔的的data segment存成檔案(或直接是記憶體
03/14 13:52, 6F

03/14 13:52, , 7F
映射檔)來處理,不就自然有一堆用\0分隔的字串資料?
03/14 13:52, 7F

03/14 14:41, , 8F
you can have \n (0x0a) in your file name (WTF..)
03/14 14:41, 8F

03/14 14:42, , 9F
example: echo abc | xargs -0 touch
03/14 14:42, 9F

03/14 20:44, , 10F
還真的 XD
03/14 20:44, 10F
也可以用 touch $'new\nline' 或單引號內直接 Enter. $ touch 'a > b' ※ 編輯: Gold740716 (140.116.102.204), 03/14/2016 20:49:03 ※ 編輯: Gold740716 (140.116.102.204), 03/14/2016 20:51:06

03/14 23:43, , 11F
還有各種non-printable,甚至像xfs檔名可以有/
03/14 23:43, 11F

03/15 04:20, , 12F
xfs 檔案可以有 / 字元 ? 那請問怎麼區分路徑呢
03/15 04:20, 12F

03/15 04:21, , 13F
一般 linux 下檔案系統大多久是 \0 與 / 不可以當檔名
03/15 04:21, 13F

03/15 04:21, , 14F
若 / 可以成為檔案名稱部分,識別方式就很有意思了
03/15 04:21, 14F

03/15 20:45, , 15F
xfs 可以有 / ? 請問有詳細資訊嗎
03/15 20:45, 15F

03/16 00:28, , 16F
我也忘了.. FS的spec中可以,但我忘了那時是怎麼辦到的
03/16 00:28, 16F

03/16 00:28, , 17F
還好是用loopback device玩的,因為刪不掉XD
03/16 00:28, 17F

03/16 00:33, , 18F
我查到的答案是即使xfs也不能用/
03/16 00:33, 18F

03/16 00:33, , 19F
若硬改為/的話fsck會當作異常把檔名修掉
03/16 00:33, 19F

03/16 18:18, , 20F
不少FS其實都可以 只是一般系統不會允許XD
03/16 18:18, 20F
文章代碼(AID): #1MvOzfRI (Linux)
文章代碼(AID): #1MvOzfRI (Linux)