buninu 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/README.md +21 -0
  2. package/apps/bunmsh/CHANGELOG.md +262 -0
  3. package/apps/bunmsh/LICENSE +21 -0
  4. package/apps/bunmsh/LICENSE-MKSH +295 -0
  5. package/apps/bunmsh/PORTING.md +192 -0
  6. package/apps/bunmsh/README.md +801 -0
  7. package/apps/bunmsh/bunmsh +7 -0
  8. package/apps/bunmsh/bunshell.md +61 -0
  9. package/apps/bunmsh/help/README.md +1945 -0
  10. package/apps/bunmsh/help/alias.md +22 -0
  11. package/apps/bunmsh/help/basename.md +38 -0
  12. package/apps/bunmsh/help/builtin.md +25 -0
  13. package/apps/bunmsh/help/bun.md +27 -0
  14. package/apps/bunmsh/help/bunmsh.md +47 -0
  15. package/apps/bunmsh/help/cat.md +31 -0
  16. package/apps/bunmsh/help/catfancy.md +35 -0
  17. package/apps/bunmsh/help/cd.md +22 -0
  18. package/apps/bunmsh/help/chmod.md +27 -0
  19. package/apps/bunmsh/help/clear.md +21 -0
  20. package/apps/bunmsh/help/colon.md +22 -0
  21. package/apps/bunmsh/help/command.md +27 -0
  22. package/apps/bunmsh/help/cp.md +28 -0
  23. package/apps/bunmsh/help/cut.md +25 -0
  24. package/apps/bunmsh/help/date.md +25 -0
  25. package/apps/bunmsh/help/dirname.md +25 -0
  26. package/apps/bunmsh/help/echo.md +25 -0
  27. package/apps/bunmsh/help/env.md +27 -0
  28. package/apps/bunmsh/help/eval.md +22 -0
  29. package/apps/bunmsh/help/exec.md +22 -0
  30. package/apps/bunmsh/help/exit.md +21 -0
  31. package/apps/bunmsh/help/export.md +22 -0
  32. package/apps/bunmsh/help/false.md +22 -0
  33. package/apps/bunmsh/help/find.md +33 -0
  34. package/apps/bunmsh/help/getopts.md +28 -0
  35. package/apps/bunmsh/help/grep.md +34 -0
  36. package/apps/bunmsh/help/head.md +27 -0
  37. package/apps/bunmsh/help/kill.md +27 -0
  38. package/apps/bunmsh/help/ln.md +28 -0
  39. package/apps/bunmsh/help/ls.md +37 -0
  40. package/apps/bunmsh/help/lsbun.md +29 -0
  41. package/apps/bunmsh/help/lsfancy.md +37 -0
  42. package/apps/bunmsh/help/md5sum.md +21 -0
  43. package/apps/bunmsh/help/mkdir.md +27 -0
  44. package/apps/bunmsh/help/mktemp.md +26 -0
  45. package/apps/bunmsh/help/mv.md +26 -0
  46. package/apps/bunmsh/help/print.md +30 -0
  47. package/apps/bunmsh/help/printf.md +25 -0
  48. package/apps/bunmsh/help/pwd.md +21 -0
  49. package/apps/bunmsh/help/read.md +27 -0
  50. package/apps/bunmsh/help/readonly.md +27 -0
  51. package/apps/bunmsh/help/realpath.md +21 -0
  52. package/apps/bunmsh/help/rm.md +33 -0
  53. package/apps/bunmsh/help/rmdir.md +27 -0
  54. package/apps/bunmsh/help/sed.md +29 -0
  55. package/apps/bunmsh/help/seq.md +29 -0
  56. package/apps/bunmsh/help/serve.md +50 -0
  57. package/apps/bunmsh/help/set.md +26 -0
  58. package/apps/bunmsh/help/sha256sum.md +21 -0
  59. package/apps/bunmsh/help/shift.md +23 -0
  60. package/apps/bunmsh/help/sleep.md +25 -0
  61. package/apps/bunmsh/help/sort.md +29 -0
  62. package/apps/bunmsh/help/source.md +23 -0
  63. package/apps/bunmsh/help/tab.md +30 -0
  64. package/apps/bunmsh/help/tac.md +29 -0
  65. package/apps/bunmsh/help/tail.md +27 -0
  66. package/apps/bunmsh/help/tee.md +25 -0
  67. package/apps/bunmsh/help/test.md +30 -0
  68. package/apps/bunmsh/help/time.md +29 -0
  69. package/apps/bunmsh/help/touch.md +26 -0
  70. package/apps/bunmsh/help/tr.md +26 -0
  71. package/apps/bunmsh/help/true.md +22 -0
  72. package/apps/bunmsh/help/type.md +21 -0
  73. package/apps/bunmsh/help/umask.md +22 -0
  74. package/apps/bunmsh/help/unalias.md +28 -0
  75. package/apps/bunmsh/help/uname.md +31 -0
  76. package/apps/bunmsh/help/unset.md +28 -0
  77. package/apps/bunmsh/help/wc.md +27 -0
  78. package/apps/bunmsh/help/whence.md +26 -0
  79. package/apps/bunmsh/help/which.md +41 -0
  80. package/apps/bunmsh/help/yes.md +23 -0
  81. package/apps/bunmsh/package.json +26 -0
  82. package/apps/bunmsh/serve.js +468 -0
  83. package/apps/bunmsh/single-exe/README.md +402 -0
  84. package/apps/bunmsh/single-exe/assetsHelper.js +371 -0
  85. package/apps/bunmsh/single-exe/assetsLoader.mjs +85 -0
  86. package/apps/bunmsh/single-exe/assetsPacker.js +218 -0
  87. package/apps/bunmsh/single-exe/compiled.js +527 -0
  88. package/apps/bunmsh/single-exe/entry.mjs +17 -0
  89. package/apps/bunmsh/src/cat-fancy.js +117 -0
  90. package/apps/bunmsh/src/cat-operands.js +31 -0
  91. package/apps/bunmsh/src/completion.js +247 -0
  92. package/apps/bunmsh/src/environment.js +61 -0
  93. package/apps/bunmsh/src/fancy-ls.js +186 -0
  94. package/apps/bunmsh/src/find.js +119 -0
  95. package/apps/bunmsh/src/history.js +198 -0
  96. package/apps/bunmsh/src/main.js +776 -0
  97. package/apps/bunmsh/src/mouse.js +103 -0
  98. package/apps/bunmsh/src/shell.js +3557 -0
  99. package/apps/bunmsh/test/catfancy.test.js +102 -0
  100. package/apps/bunmsh/test/reference-source.sh +1 -0
  101. package/apps/bunmsh/test/reference.test.js +677 -0
  102. package/apps/bunmsh/test/serve/README.md +3 -0
  103. package/apps/bunmsh/test/serve/bad.json +1 -0
  104. package/apps/bunmsh/test/serve/data.json +1 -0
  105. package/apps/bunmsh/test/serve/data.json5 +1 -0
  106. package/apps/bunmsh/test/serve/data.jsonc +2 -0
  107. package/apps/bunmsh/test/serve/data.jsonl +2 -0
  108. package/apps/bunmsh/test/serve/data.ndjson +1 -0
  109. package/apps/bunmsh/test/serve/data.toml +3 -0
  110. package/apps/bunmsh/test/serve/data.ts +15 -0
  111. package/apps/bunmsh/test/serve/data.xml +1 -0
  112. package/apps/bunmsh/test/serve/data.yaml +3 -0
  113. package/apps/bunmsh/test/serve/data.yml +1 -0
  114. package/apps/bunmsh/test/serve.test.js +241 -0
  115. package/apps/bunmsh/test/shell.test.js +1778 -0
  116. package/apps/bunmsh/test/t.sh +12 -0
  117. package/bin/init.js +11 -3
  118. package/package.json +2 -1
@@ -0,0 +1,7 @@
1
+ #!/bin/sh
2
+
3
+ ':' //; sd=$(dirname "$(realpath "$0")")
4
+
5
+ ':' //; exec bun "$sd"/src/main.js "$@"
6
+
7
+ import "./src/main.js";
@@ -0,0 +1,61 @@
1
+ # Bun Shell builtin 旗標支援表
2
+
3
+ `Bun.$` 的 19 個內建指令各自支援哪些旗標。
4
+
5
+ - 實測版本:Bun 1.4.0(Linux)
6
+ - 原始碼對照:oven-sh/bun `main` @ 8eb5b6e2b5(2026-08-22),`src/runtime/shell/builtin/*.rs`,註冊表在 `src/runtime/shell/Builtin.rs:170-196`
7
+
8
+ 旗標有三種下場:**可用**、**吃掉**(收下、不報錯、什麼都不做)、**報錯**。下表只列前兩種 —— 沒列到的旗標都會報錯,至少炸得出來。
9
+
10
+ ## 一覽
11
+
12
+ | builtin | 可用 | 吃掉(收下但無作用) |
13
+ | --- | --- | --- |
14
+ | `ls` | `-a -A -d -l -R` | `-r -1 -b -B -c -C -D -f -F -g -G -h -H -i -I -k -L -m -n -N -o -p -q -Q -s -S -t -T -u -U -v -w -x -X -Z` |
15
+ | `mv` | — | `-f -h -i -n -v` |
16
+ | `rm` | `-f -r -R -v -d -i -I`<br>`--recursive --verbose --dir`<br>`--interactive=never\|once\|always` | `--preserve-root --no-preserve-root` |
17
+ | `mkdir` | `-p -v` `--parents` `--vebose` | — |
18
+ | `echo` | `-n -e -E` | — |
19
+ | `seq` | `-s/--separator` `-t/--terminator` `-w/--fixed-width` | — |
20
+ | `cp` ※ | `-R -v` | `-n` |
21
+ | `touch` | — | — |
22
+ | `cat` ※ | — | — |
23
+ | `cd` | `-` | — |
24
+ | `exit` | `[n]` | — |
25
+ | `basename` `dirname` `pwd` `export` `which` `yes` `true` `false` | 無旗標 | — |
26
+
27
+ ※ `cat` 和 `cp` 在 Linux/macOS 上**不是** builtin(`Builtin.rs:195` 的 `posix_disabled`),會直接交給系統執行檔,旗標全支援。上表是 Windows、或設了 `BUN_ENABLE_EXPERIMENTAL_SHELL_BUILTINS=1` 時的內建版本 —— 反而少很多旗標。
28
+
29
+ ## 地雷
30
+
31
+ **`mv -n` / `mv -i` 是空操作,會直接覆蓋。** 這兩個旗標的用途就是防覆蓋,在這裡給的是假的安全感:
32
+
33
+ ```
34
+ src.txt = "OLD", dst.txt = "KEEP"
35
+ $ mv -n src.txt dst.txt
36
+ $ cat dst.txt
37
+ OLD ← 蓋掉了,沒有任何訊息
38
+ ```
39
+
40
+ **`ls` 完全不排序**,是 readdir 的原始順序(不是字母序)。`-r` `-t` `-S` 都被吃掉,所以也沒辦法排。
41
+
42
+ **`ls -lh` 的 `-h` 被吃掉**,size 欄仍是 bytes。
43
+
44
+ **`seq -w` 不補零,而且尾端多一個分隔符**:
45
+
46
+ ```
47
+ bun: seq -w 8 11 → 8\n9\n10\n11\n (GNU: 08 09 10 11)
48
+ bun: seq -s , 1 3 → "1,2,3," (GNU: "1,2,3\n")
49
+ ```
50
+
51
+ **`mkdir --verbose` 會報錯,`mkdir --vebose` 才行。** 原始碼註解說這個拼錯是刻意保留相容性用的,但沒有同時接受正確拼法。
52
+
53
+ **`pwd` 不吃任何參數**,`pwd -P` 直接失敗。
54
+
55
+ **`basename` 沒有 suffix 參數。** `basename x.txt .txt` 會把兩個都當成路徑,各印一行。
56
+
57
+ **`touch` 一個旗標都沒有**,只有 `touch file` 可用。
58
+
59
+ ## 實務結論
60
+
61
+ `Bun.$` 裡只信「可用」那一欄。報錯的至少看得到,**「吃掉」那批才是真正的風險** —— 特別是 `mv -n` / `mv -i` 和 `ls` 的排序。需要那些語意時,改用 `Bun.file` / `node:fs` 自己判斷,或明確呼叫系統執行檔(`/bin/mv`)。