linux-commands-guide 2.1.1__tar.gz → 2.2.1__tar.gz

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 (233) hide show
  1. linux_commands_guide-2.2.1/CHANGELOG.md +75 -0
  2. linux_commands_guide-2.2.1/CONTRIBUTING.md +42 -0
  3. linux_commands_guide-2.2.1/MANIFEST.in +8 -0
  4. linux_commands_guide-2.2.1/PKG-INFO +337 -0
  5. linux_commands_guide-2.2.1/README.md +310 -0
  6. linux_commands_guide-2.2.1/docs/compatibility.md +30 -0
  7. linux_commands_guide-2.2.1/docs/content-guide.md +66 -0
  8. linux_commands_guide-2.2.1/docs/demo.cast +224 -0
  9. linux_commands_guide-2.2.1/docs/demo.gif +0 -0
  10. linux_commands_guide-2.2.1/docs/demo.md +44 -0
  11. linux_commands_guide-2.2.1/docs/learning-path.md +30 -0
  12. linux_commands_guide-2.2.1/docs/releasing.md +20 -0
  13. linux_commands_guide-2.2.1/guia_linux/__init__.py +8 -0
  14. linux_commands_guide-2.2.1/guia_linux/catalog.py +159 -0
  15. linux_commands_guide-2.2.1/guia_linux/cli.py +111 -0
  16. linux_commands_guide-2.2.1/guia_linux/content/exercises/grep.json +23 -0
  17. linux_commands_guide-2.2.1/guia_linux/content/exercises/navigation.json +24 -0
  18. linux_commands_guide-2.2.1/guia_linux/content/exercises/pipes.json +23 -0
  19. linux_commands_guide-2.2.1/guia_linux/content/exercises/regex.json +23 -0
  20. linux_commands_guide-2.2.1/guia_linux/content/exercises/wc.json +23 -0
  21. linux_commands_guide-2.2.1/guia_linux/content/tools/apropos.json +56 -0
  22. linux_commands_guide-2.2.1/guia_linux/content/tools/apt.json +81 -0
  23. linux_commands_guide-2.2.1/guia_linux/content/tools/awk.json +286 -0
  24. linux_commands_guide-2.2.1/guia_linux/content/tools/bat.json +37 -0
  25. linux_commands_guide-2.2.1/guia_linux/content/tools/bg.json +47 -0
  26. linux_commands_guide-2.2.1/guia_linux/content/tools/cat.json +176 -0
  27. linux_commands_guide-2.2.1/guia_linux/content/tools/cd.json +67 -0
  28. linux_commands_guide-2.2.1/guia_linux/content/tools/chmod.json +173 -0
  29. linux_commands_guide-2.2.1/guia_linux/content/tools/chown.json +99 -0
  30. linux_commands_guide-2.2.1/guia_linux/content/tools/command.json +56 -0
  31. linux_commands_guide-2.2.1/guia_linux/content/tools/cp.json +47 -0
  32. linux_commands_guide-2.2.1/guia_linux/content/tools/crontab.json +269 -0
  33. linux_commands_guide-2.2.1/guia_linux/content/tools/curl.json +176 -0
  34. linux_commands_guide-2.2.1/guia_linux/content/tools/cut.json +88 -0
  35. linux_commands_guide-2.2.1/guia_linux/content/tools/date.json +25 -0
  36. linux_commands_guide-2.2.1/guia_linux/content/tools/descriptors.json +209 -0
  37. linux_commands_guide-2.2.1/guia_linux/content/tools/df.json +195 -0
  38. linux_commands_guide-2.2.1/guia_linux/content/tools/diff.json +57 -0
  39. linux_commands_guide-2.2.1/guia_linux/content/tools/dig.json +61 -0
  40. linux_commands_guide-2.2.1/guia_linux/content/tools/dirs.json +25 -0
  41. linux_commands_guide-2.2.1/guia_linux/content/tools/dnf.json +71 -0
  42. linux_commands_guide-2.2.1/guia_linux/content/tools/docker.json +286 -0
  43. linux_commands_guide-2.2.1/guia_linux/content/tools/du.json +213 -0
  44. linux_commands_guide-2.2.1/guia_linux/content/tools/echo.json +57 -0
  45. linux_commands_guide-2.2.1/guia_linux/content/tools/env.json +47 -0
  46. linux_commands_guide-2.2.1/guia_linux/content/tools/export.json +47 -0
  47. linux_commands_guide-2.2.1/guia_linux/content/tools/fd.json +58 -0
  48. linux_commands_guide-2.2.1/guia_linux/content/tools/fg.json +47 -0
  49. linux_commands_guide-2.2.1/guia_linux/content/tools/file.json +57 -0
  50. linux_commands_guide-2.2.1/guia_linux/content/tools/find.json +284 -0
  51. linux_commands_guide-2.2.1/guia_linux/content/tools/firewall-cmd.json +176 -0
  52. linux_commands_guide-2.2.1/guia_linux/content/tools/free.json +143 -0
  53. linux_commands_guide-2.2.1/guia_linux/content/tools/fzf.json +46 -0
  54. linux_commands_guide-2.2.1/guia_linux/content/tools/getent.json +61 -0
  55. linux_commands_guide-2.2.1/guia_linux/content/tools/git.json +446 -0
  56. linux_commands_guide-2.2.1/guia_linux/content/tools/grep.json +311 -0
  57. linux_commands_guide-2.2.1/guia_linux/content/tools/gzip.json +57 -0
  58. linux_commands_guide-2.2.1/guia_linux/content/tools/head.json +110 -0
  59. linux_commands_guide-2.2.1/guia_linux/content/tools/help.json +58 -0
  60. linux_commands_guide-2.2.1/guia_linux/content/tools/history.json +46 -0
  61. linux_commands_guide-2.2.1/guia_linux/content/tools/hostname.json +25 -0
  62. linux_commands_guide-2.2.1/guia_linux/content/tools/htop.json +132 -0
  63. linux_commands_guide-2.2.1/guia_linux/content/tools/id.json +25 -0
  64. linux_commands_guide-2.2.1/guia_linux/content/tools/ifconfig.json +165 -0
  65. linux_commands_guide-2.2.1/guia_linux/content/tools/ip.json +209 -0
  66. linux_commands_guide-2.2.1/guia_linux/content/tools/iptables.json +187 -0
  67. linux_commands_guide-2.2.1/guia_linux/content/tools/jobs.json +48 -0
  68. linux_commands_guide-2.2.1/guia_linux/content/tools/journalctl.json +73 -0
  69. linux_commands_guide-2.2.1/guia_linux/content/tools/jq.json +209 -0
  70. linux_commands_guide-2.2.1/guia_linux/content/tools/kill.json +68 -0
  71. linux_commands_guide-2.2.1/guia_linux/content/tools/less.json +43 -0
  72. linux_commands_guide-2.2.1/guia_linux/content/tools/ln.json +25 -0
  73. linux_commands_guide-2.2.1/guia_linux/content/tools/locate.json +25 -0
  74. linux_commands_guide-2.2.1/guia_linux/content/tools/logs.json +331 -0
  75. linux_commands_guide-2.2.1/guia_linux/content/tools/ls.json +39 -0
  76. linux_commands_guide-2.2.1/guia_linux/content/tools/lsblk.json +176 -0
  77. linux_commands_guide-2.2.1/guia_linux/content/tools/lsof.json +187 -0
  78. linux_commands_guide-2.2.1/guia_linux/content/tools/lxc.json +220 -0
  79. linux_commands_guide-2.2.1/guia_linux/content/tools/man.json +62 -0
  80. linux_commands_guide-2.2.1/guia_linux/content/tools/mkdir.json +28 -0
  81. linux_commands_guide-2.2.1/guia_linux/content/tools/more.json +25 -0
  82. linux_commands_guide-2.2.1/guia_linux/content/tools/mv.json +45 -0
  83. linux_commands_guide-2.2.1/guia_linux/content/tools/nano.json +61 -0
  84. linux_commands_guide-2.2.1/guia_linux/content/tools/nc.json +154 -0
  85. linux_commands_guide-2.2.1/guia_linux/content/tools/ncdu.json +51 -0
  86. linux_commands_guide-2.2.1/guia_linux/content/tools/netstat.json +165 -0
  87. linux_commands_guide-2.2.1/guia_linux/content/tools/nl.json +25 -0
  88. linux_commands_guide-2.2.1/guia_linux/content/tools/nmap.json +220 -0
  89. linux_commands_guide-2.2.1/guia_linux/content/tools/pacman.json +71 -0
  90. linux_commands_guide-2.2.1/guia_linux/content/tools/pgrep.json +61 -0
  91. linux_commands_guide-2.2.1/guia_linux/content/tools/ping.json +48 -0
  92. linux_commands_guide-2.2.1/guia_linux/content/tools/popd.json +25 -0
  93. linux_commands_guide-2.2.1/guia_linux/content/tools/printf.json +58 -0
  94. linux_commands_guide-2.2.1/guia_linux/content/tools/ps.json +187 -0
  95. linux_commands_guide-2.2.1/guia_linux/content/tools/pushd.json +25 -0
  96. linux_commands_guide-2.2.1/guia_linux/content/tools/pwd.json +25 -0
  97. linux_commands_guide-2.2.1/guia_linux/content/tools/readlink.json +47 -0
  98. linux_commands_guide-2.2.1/guia_linux/content/tools/realpath.json +57 -0
  99. linux_commands_guide-2.2.1/guia_linux/content/tools/regex.json +275 -0
  100. linux_commands_guide-2.2.1/guia_linux/content/tools/rg.json +57 -0
  101. linux_commands_guide-2.2.1/guia_linux/content/tools/rm.json +47 -0
  102. linux_commands_guide-2.2.1/guia_linux/content/tools/rsync.json +154 -0
  103. linux_commands_guide-2.2.1/guia_linux/content/tools/scp.json +143 -0
  104. linux_commands_guide-2.2.1/guia_linux/content/tools/sed.json +143 -0
  105. linux_commands_guide-2.2.1/guia_linux/content/tools/sha256sum.json +46 -0
  106. linux_commands_guide-2.2.1/guia_linux/content/tools/shortcuts.json +209 -0
  107. linux_commands_guide-2.2.1/guia_linux/content/tools/sort.json +125 -0
  108. linux_commands_guide-2.2.1/guia_linux/content/tools/ss.json +209 -0
  109. linux_commands_guide-2.2.1/guia_linux/content/tools/ssh.json +195 -0
  110. linux_commands_guide-2.2.1/guia_linux/content/tools/stat.json +25 -0
  111. linux_commands_guide-2.2.1/guia_linux/content/tools/sudo.json +58 -0
  112. linux_commands_guide-2.2.1/guia_linux/content/tools/system.json +429 -0
  113. linux_commands_guide-2.2.1/guia_linux/content/tools/systemctl.json +231 -0
  114. linux_commands_guide-2.2.1/guia_linux/content/tools/tail.json +132 -0
  115. linux_commands_guide-2.2.1/guia_linux/content/tools/tar.json +154 -0
  116. linux_commands_guide-2.2.1/guia_linux/content/tools/tee.json +77 -0
  117. linux_commands_guide-2.2.1/guia_linux/content/tools/timeout.json +46 -0
  118. linux_commands_guide-2.2.1/guia_linux/content/tools/tmux.json +249 -0
  119. linux_commands_guide-2.2.1/guia_linux/content/tools/top.json +229 -0
  120. linux_commands_guide-2.2.1/guia_linux/content/tools/touch.json +25 -0
  121. linux_commands_guide-2.2.1/guia_linux/content/tools/tr.json +110 -0
  122. linux_commands_guide-2.2.1/guia_linux/content/tools/tree.json +25 -0
  123. linux_commands_guide-2.2.1/guia_linux/content/tools/type.json +57 -0
  124. linux_commands_guide-2.2.1/guia_linux/content/tools/umask.json +57 -0
  125. linux_commands_guide-2.2.1/guia_linux/content/tools/uname.json +121 -0
  126. linux_commands_guide-2.2.1/guia_linux/content/tools/uniq.json +92 -0
  127. linux_commands_guide-2.2.1/guia_linux/content/tools/unzip.json +47 -0
  128. linux_commands_guide-2.2.1/guia_linux/content/tools/uptime.json +25 -0
  129. linux_commands_guide-2.2.1/guia_linux/content/tools/vim.json +445 -0
  130. linux_commands_guide-2.2.1/guia_linux/content/tools/watch.json +121 -0
  131. linux_commands_guide-2.2.1/guia_linux/content/tools/wc.json +71 -0
  132. linux_commands_guide-2.2.1/guia_linux/content/tools/whoami.json +25 -0
  133. linux_commands_guide-2.2.1/guia_linux/content/tools/xargs.json +110 -0
  134. linux_commands_guide-2.2.1/guia_linux/content/tools/zip.json +47 -0
  135. linux_commands_guide-2.2.1/guia_linux/content/topics/environment.json +25 -0
  136. linux_commands_guide-2.2.1/guia_linux/content/topics/exit-status.json +23 -0
  137. linux_commands_guide-2.2.1/guia_linux/content/topics/globs.json +23 -0
  138. linux_commands_guide-2.2.1/guia_linux/content/topics/help.json +27 -0
  139. linux_commands_guide-2.2.1/guia_linux/content/topics/navigation.json +25 -0
  140. linux_commands_guide-2.2.1/guia_linux/content/topics/permissions.json +25 -0
  141. linux_commands_guide-2.2.1/guia_linux/content/topics/pipes.json +27 -0
  142. linux_commands_guide-2.2.1/guia_linux/content/topics/processes.json +26 -0
  143. linux_commands_guide-2.2.1/guia_linux/content/topics/quoting.json +24 -0
  144. linux_commands_guide-2.2.1/guia_linux/content/topics/redirections.json +24 -0
  145. linux_commands_guide-2.2.1/guia_linux/learning.py +96 -0
  146. linux_commands_guide-2.2.1/guia_linux/models.py +39 -0
  147. linux_commands_guide-2.2.1/guia_linux/render.py +137 -0
  148. linux_commands_guide-2.2.1/helper.py +10 -0
  149. linux_commands_guide-2.2.1/install.sh +9 -0
  150. linux_commands_guide-2.2.1/linux_commands_guide.egg-info/PKG-INFO +337 -0
  151. linux_commands_guide-2.2.1/linux_commands_guide.egg-info/SOURCES.txt +171 -0
  152. {linux_commands_guide-2.1.1 → linux_commands_guide-2.2.1}/linux_commands_guide.egg-info/requires.txt +1 -1
  153. {linux_commands_guide-2.1.1 → linux_commands_guide-2.2.1}/pyproject.toml +6 -2
  154. linux_commands_guide-2.2.1/scripts/castrec.py +150 -0
  155. linux_commands_guide-2.2.1/scripts/install.py +112 -0
  156. linux_commands_guide-2.2.1/scripts/record_demo.py +81 -0
  157. linux_commands_guide-2.2.1/scripts/smoke_installed.py +33 -0
  158. linux_commands_guide-2.2.1/scripts/update_catalog_docs.py +40 -0
  159. linux_commands_guide-2.2.1/tests/fixtures/legacy_ids.json +919 -0
  160. linux_commands_guide-2.2.1/tests/test_beginner_cli.py +46 -0
  161. linux_commands_guide-2.2.1/tests/test_catalog.py +111 -0
  162. linux_commands_guide-2.2.1/tests/test_demo.py +41 -0
  163. linux_commands_guide-2.2.1/tests/test_examples.py +55 -0
  164. linux_commands_guide-2.2.1/tests/test_guide.py +73 -0
  165. linux_commands_guide-2.2.1/tests/test_installer.py +101 -0
  166. linux_commands_guide-2.2.1/tests/test_learning.py +61 -0
  167. linux_commands_guide-2.2.1/tests/test_render.py +57 -0
  168. linux_commands_guide-2.1.1/PKG-INFO +0 -212
  169. linux_commands_guide-2.1.1/README.md +0 -185
  170. linux_commands_guide-2.1.1/guia_linux/__init__.py +0 -5
  171. linux_commands_guide-2.1.1/guia_linux/cli.py +0 -155
  172. linux_commands_guide-2.1.1/guia_linux/tools/__init__.py +0 -62
  173. linux_commands_guide-2.1.1/guia_linux/tools/awk.py +0 -39
  174. linux_commands_guide-2.1.1/guia_linux/tools/cat.py +0 -29
  175. linux_commands_guide-2.1.1/guia_linux/tools/chmod.py +0 -28
  176. linux_commands_guide-2.1.1/guia_linux/tools/chown.py +0 -22
  177. linux_commands_guide-2.1.1/guia_linux/tools/crontab.py +0 -40
  178. linux_commands_guide-2.1.1/guia_linux/tools/curl.py +0 -29
  179. linux_commands_guide-2.1.1/guia_linux/tools/cut.py +0 -21
  180. linux_commands_guide-2.1.1/guia_linux/tools/df.py +0 -30
  181. linux_commands_guide-2.1.1/guia_linux/tools/docker.py +0 -39
  182. linux_commands_guide-2.1.1/guia_linux/tools/du.py +0 -32
  183. linux_commands_guide-2.1.1/guia_linux/tools/file_descriptors.py +0 -32
  184. linux_commands_guide-2.1.1/guia_linux/tools/find.py +0 -38
  185. linux_commands_guide-2.1.1/guia_linux/tools/firewall_cmd.py +0 -29
  186. linux_commands_guide-2.1.1/guia_linux/tools/free.py +0 -26
  187. linux_commands_guide-2.1.1/guia_linux/tools/git.py +0 -62
  188. linux_commands_guide-2.1.1/guia_linux/tools/grep.py +0 -39
  189. linux_commands_guide-2.1.1/guia_linux/tools/head.py +0 -23
  190. linux_commands_guide-2.1.1/guia_linux/tools/htop.py +0 -25
  191. linux_commands_guide-2.1.1/guia_linux/tools/ifconfig.py +0 -28
  192. linux_commands_guide-2.1.1/guia_linux/tools/ip.py +0 -32
  193. linux_commands_guide-2.1.1/guia_linux/tools/iptables.py +0 -30
  194. linux_commands_guide-2.1.1/guia_linux/tools/jq.py +0 -32
  195. linux_commands_guide-2.1.1/guia_linux/tools/logs.py +0 -48
  196. linux_commands_guide-2.1.1/guia_linux/tools/lsblk.py +0 -29
  197. linux_commands_guide-2.1.1/guia_linux/tools/lsof.py +0 -30
  198. linux_commands_guide-2.1.1/guia_linux/tools/lxc.py +0 -33
  199. linux_commands_guide-2.1.1/guia_linux/tools/nc.py +0 -27
  200. linux_commands_guide-2.1.1/guia_linux/tools/netstat.py +0 -28
  201. linux_commands_guide-2.1.1/guia_linux/tools/nmap.py +0 -33
  202. linux_commands_guide-2.1.1/guia_linux/tools/ps.py +0 -30
  203. linux_commands_guide-2.1.1/guia_linux/tools/regex.py +0 -38
  204. linux_commands_guide-2.1.1/guia_linux/tools/rsync.py +0 -27
  205. linux_commands_guide-2.1.1/guia_linux/tools/scp.py +0 -26
  206. linux_commands_guide-2.1.1/guia_linux/tools/sed.py +0 -26
  207. linux_commands_guide-2.1.1/guia_linux/tools/shortcuts.py +0 -32
  208. linux_commands_guide-2.1.1/guia_linux/tools/sort.py +0 -24
  209. linux_commands_guide-2.1.1/guia_linux/tools/ss.py +0 -32
  210. linux_commands_guide-2.1.1/guia_linux/tools/ssh.py +0 -30
  211. linux_commands_guide-2.1.1/guia_linux/tools/system.py +0 -54
  212. linux_commands_guide-2.1.1/guia_linux/tools/systemctl.py +0 -34
  213. linux_commands_guide-2.1.1/guia_linux/tools/tail.py +0 -25
  214. linux_commands_guide-2.1.1/guia_linux/tools/tar.py +0 -27
  215. linux_commands_guide-2.1.1/guia_linux/tools/tee.py +0 -20
  216. linux_commands_guide-2.1.1/guia_linux/tools/tmux.py +0 -37
  217. linux_commands_guide-2.1.1/guia_linux/tools/top.py +0 -34
  218. linux_commands_guide-2.1.1/guia_linux/tools/tr.py +0 -23
  219. linux_commands_guide-2.1.1/guia_linux/tools/uname.py +0 -24
  220. linux_commands_guide-2.1.1/guia_linux/tools/uniq.py +0 -21
  221. linux_commands_guide-2.1.1/guia_linux/tools/vim.py +0 -58
  222. linux_commands_guide-2.1.1/guia_linux/tools/watch.py +0 -24
  223. linux_commands_guide-2.1.1/guia_linux/tools/xargs.py +0 -23
  224. linux_commands_guide-2.1.1/guia_linux/utils.py +0 -99
  225. linux_commands_guide-2.1.1/linux_commands_guide.egg-info/PKG-INFO +0 -212
  226. linux_commands_guide-2.1.1/linux_commands_guide.egg-info/SOURCES.txt +0 -66
  227. linux_commands_guide-2.1.1/tests/test_guide.py +0 -83
  228. {linux_commands_guide-2.1.1 → linux_commands_guide-2.2.1}/LICENSE +0 -0
  229. {linux_commands_guide-2.1.1 → linux_commands_guide-2.2.1}/guia_linux/__main__.py +0 -0
  230. {linux_commands_guide-2.1.1 → linux_commands_guide-2.2.1}/linux_commands_guide.egg-info/dependency_links.txt +0 -0
  231. {linux_commands_guide-2.1.1 → linux_commands_guide-2.2.1}/linux_commands_guide.egg-info/entry_points.txt +0 -0
  232. {linux_commands_guide-2.1.1 → linux_commands_guide-2.2.1}/linux_commands_guide.egg-info/top_level.txt +0 -0
  233. {linux_commands_guide-2.1.1 → linux_commands_guide-2.2.1}/setup.cfg +0 -0
@@ -0,0 +1,75 @@
1
+ # Changelog
2
+
3
+ ## 2.2.1 — 2026-10-13
4
+
5
+ ### Fixed
6
+ - Source packaging uses project files only. No CLI or catalogue changes.
7
+
8
+ ## 2.2.0 — 2026-10-13
9
+
10
+ ### Added
11
+ - Beginner quick/explained views, grouped categories, direct basic-command references and additional tools.
12
+ - Ten bilingual terminal lessons and five fixture-based practice plans with opt-in hints/solutions.
13
+ - Isolated user installer (`install.sh`), dry-run, guarded managed upgrades and offline wheelhouse support.
14
+ - Content/contribution/compatibility/release guides, issue templates and generated README catalogue.
15
+ - 114 command references, preserving the original examples.
16
+
17
+ ### Changed
18
+ - Validated JSON catalogue and immutable models replace the Python content wrappers; existing CLI/shim entries remain.
19
+ - Stream-local shellcolorize presentation removes import-time ANSI and global color mutation.
20
+ - A tool plus `-s` now searches that tool; multiword searches require all words, ignoring accents/case.
21
+ - Narrow terminals use stacked descriptions. Quick/explained views select at most eight examples.
22
+ - CI checks minimum/published shellcolorize and an installed wheel outside the checkout.
23
+ - English-only README and a real terminal demo alternating English and Spanish output.
24
+
25
+ ### Fixed
26
+ - grep directory include/exclude examples now use recursion.
27
+ - chmod guidance accounts for umask; regex examples identify their dialect.
28
+ - find/xargs filename recipes use NUL separators; xargs -I receives one filename per line.
29
+ - Dangerous examples include effects and warnings; SSH/TLS bypasses are not routine fixes.
30
+
31
+
32
+ ## 2.1.1
33
+
34
+ ### Changed
35
+ - Project metadata: author and project links now point to github.com/serber-info.
36
+ - No functional changes.
37
+
38
+ ## 2.1.0
39
+
40
+ ### Fixed (content)
41
+ - `regex`: `word{3}`, `word*`, `word+` and `word?` were described as repeating the whole word; a quantifier only
42
+ applies to the previous item. Now `(word){3}`, `(word){2,5}`, `a*`, `a+` and `colou?r`.
43
+ - `lxc`: `lxc-config -n … -s storage|network|security`, `lxc-attach -f /path` and `lxc-restart` do not exist or
44
+ do something else. The tool now covers create, start/stop/reboot, attach, console, info, freeze, copy,
45
+ snapshot, destroy and checkconfig.
46
+ - `chown --from` had the wrong syntax (`--from=old_user new_user file`).
47
+ - `cat` listed `bat` options (`-r`, `--theme`, `--paging`, `-L`) as if they were `cat` options.
48
+ - `rsync` examples without `-a` did not recurse (`--delete`, `--exclude`, `--dry-run`…).
49
+ - `xargs -P 4 python3` passed many files to one process; now `-n 1 -P 4`.
50
+ - `iptables` uses `-m conntrack --ctstate` instead of the deprecated `-m state`.
51
+ - Clarified `ifconfig add` (IPv6), tmux split directions and netcat variants (`-p`, `-e`).
52
+
53
+ ### Fixed
54
+ - README install command (`pip install linux-commands-guide`), badges and clone folder.
55
+ - Missing LICENSE file (MIT, as declared).
56
+ - Colors were written into pipes and files; output is plain when piped or when `NO_COLOR` is set.
57
+ - Header boxes were two characters too wide.
58
+ - `lh tool | head` printed a BrokenPipeError traceback.
59
+
60
+ ### Added
61
+ - Language is picked from the locale (`es_*` → Spanish, anything else → English); `--lang` still forces it.
62
+ - Search matches both the Spanish and the English descriptions.
63
+ - `lh --version` and `python -m guia_linux`.
64
+ - Test suite (content checks for all 51 tools) and GitHub Actions CI.
65
+
66
+ ### Removed
67
+ - The legacy top-level `tools/` directory (v1 code, no longer used).
68
+
69
+ ## 2.0.1
70
+
71
+ - Visual redesign: clean box headers, ANSI-aware alignment.
72
+
73
+ ## 2.0.0
74
+
75
+ - Bilingual, search, 51 tools, pip-installable.
@@ -0,0 +1,42 @@
1
+ # Contributing / Contribuir
2
+
3
+ Help beginners understand a task, not just memorize an option. Small contributions are welcome:
4
+ translations, corrected examples, clearer warnings and new beginner references.
5
+
6
+ ## Before changing content
7
+
8
+ 1. Check whether the command already exists inside a grouped reference (`system`, `cat`, `ssh`).
9
+ 2. Read the [content guide](docs/content-guide.md) and the installed tool's manual.
10
+ 3. Keep Spanish and English equally useful, and cite primary documentation.
11
+ 4. Describe effects and prerequisites. Never recommend bypassing permissions, TLS or host-key
12
+ checks as a routine fix. Do not suggest `chmod 777` as a troubleshooting shortcut.
13
+ 5. Test only safe examples with temporary fixtures. Never run the whole catalogue.
14
+
15
+ ## Local checks
16
+
17
+ ```bash
18
+ python3 -m venv .venv
19
+ . .venv/bin/activate
20
+ python -m pip install -e '.[dev]'
21
+ python -m scripts.update_catalog_docs
22
+ ruff check .
23
+ pytest -q
24
+ ```
25
+
26
+ Adding `guia_linux/content/tools/<name>.json` automatically registers it. No handwritten Python
27
+ wrapper or registry is needed. The README table is generated; CI checks it is up to date.
28
+
29
+ A PR should state the learner's task, official source, compatibility, effects and verification.
30
+ Do not include real credentials, customer data, private infrastructure or personal paths.
31
+
32
+ ## Useful issue labels
33
+
34
+ Suggested labels for maintainers: `content`, `beginner`, `translation`, `bug`, `good first issue`.
35
+ They are suggestions, not automatically created GitHub labels.
36
+
37
+ ## Scope
38
+
39
+ Keep runtime offline and small. New services, telemetry, automatic command execution and access to
40
+ personal files are not part of this project. A fixture exercise is not a general shell runner.
41
+ Internal Python catalogue modules changed in this refactor; the supported public surface is `lh`,
42
+ `python -m guia_linux`, `helper.py`, and the lazy `guia_linux.main()` entry.
@@ -0,0 +1,8 @@
1
+ include install.sh
2
+ include helper.py
3
+ include CONTRIBUTING.md
4
+ include CHANGELOG.md
5
+ recursive-include scripts *.py
6
+ recursive-include docs *.md *.gif *.cast
7
+ recursive-include tests *.py
8
+ recursive-include tests *.json
@@ -0,0 +1,337 @@
1
+ Metadata-Version: 2.4
2
+ Name: linux-commands-guide
3
+ Version: 2.2.1
4
+ Summary: Learn Linux in your terminal: bilingual quick reference, lessons and safe practice plans
5
+ Author: Sergio Berruetta
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/serber-info/linux-commands-guide
8
+ Project-URL: Bug Tracker, https://github.com/serber-info/linux-commands-guide/issues
9
+ Project-URL: Source Code, https://github.com/serber-info/linux-commands-guide
10
+ Project-URL: Changelog, https://github.com/serber-info/linux-commands-guide/blob/main/CHANGELOG.md
11
+ Keywords: linux,cheatsheet,commands,reference,sysadmin,bilingual,cli
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Operating System :: POSIX :: Linux
14
+ Classifier: Environment :: Console
15
+ Classifier: Intended Audience :: System Administrators
16
+ Classifier: Natural Language :: English
17
+ Classifier: Natural Language :: Spanish
18
+ Classifier: Topic :: System :: Systems Administration
19
+ Requires-Python: >=3.9
20
+ Description-Content-Type: text/markdown
21
+ License-File: LICENSE
22
+ Requires-Dist: shellcolorize>=1.1.1
23
+ Provides-Extra: dev
24
+ Requires-Dist: pytest>=7; extra == "dev"
25
+ Requires-Dist: ruff>=0.4; extra == "dev"
26
+ Dynamic: license-file
27
+
28
+ # linux-commands-guide — `lh`
29
+
30
+ [![CI](https://github.com/serber-info/linux-commands-guide/actions/workflows/ci.yml/badge.svg)](https://github.com/serber-info/linux-commands-guide/actions/workflows/ci.yml)
31
+ [![PyPI version](https://badge.fury.io/py/linux-commands-guide.svg)](https://badge.fury.io/py/linux-commands-guide)
32
+ [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
33
+
34
+ **Learn Linux from your terminal. Find a command, understand it, then practice.**
35
+
36
+ `lh` is an offline Spanish/English quick reference for beginners, with advanced entries when you
37
+ need them. It displays examples; **it never executes them**. No account, telemetry or network
38
+ connection is needed after installation. It also works over SSH.
39
+
40
+ <p align="center">
41
+ <img src="docs/demo.gif" alt="Real terminal demo: quick reference, search, explanations, lessons and practice, alternating English and Spanish" width="1000">
42
+ </p>
43
+
44
+ *Real CLI output. [Reproduce this recording](docs/demo.md).*
45
+
46
+ ## Start here
47
+
48
+ ```bash
49
+ lh ls --quick # A short reference
50
+ lh grep --explain # Explanation and sources
51
+ lh learn pipes # Understand pipelines
52
+ lh practice grep # A challenge with sample data
53
+ lh practice grep --hint # Hint
54
+ lh practice grep --solution # Solution
55
+ ```
56
+
57
+ Language follows your locale. Use `--lang es` or `--lang en` to choose explicitly.
58
+
59
+ ## Install
60
+
61
+ ### From a checkout: one command
62
+
63
+ Requires Linux, Python 3.9+ with `venv`/pip, and Internet access during installation.
64
+
65
+ ```bash
66
+ git clone https://github.com/serber-info/linux-commands-guide.git
67
+ cd linux-commands-guide
68
+ ./install.sh
69
+ ```
70
+
71
+ The installer creates an isolated environment in `~/.local/share/linux-commands-guide/venv`
72
+ and a launcher in `~/.local/bin/lh`. **Do not use sudo.** It does not change system Python or shell
73
+ configuration, and refuses to overwrite an unrelated `lh` or reuse an unknown installation directory.
74
+ If `~/.local/bin` is not on PATH, it prints the command to enable it for your current terminal.
75
+ On Debian/Ubuntu you may need the distribution's `python3-venv` package first.
76
+
77
+ If installation fails, it reports the error and preserves files for inspection instead of deleting them.
78
+
79
+ ```bash
80
+ ./install.sh --dry-run # Inspect paths without writes
81
+ ./install.sh --upgrade # Update a managed install
82
+ ./install.sh --help # Custom paths and offline wheelhouse
83
+ ```
84
+
85
+ ### Published version
86
+
87
+ If you already use [pipx](https://pipx.pypa.io/stable/), the published release can be installed with:
88
+
89
+ ```bash
90
+ pipx install linux-commands-guide
91
+ ```
92
+
93
+ Version 2.2.0 includes the beginner references, lessons, practice plans and installer.
94
+
95
+ For an existing virtual environment:
96
+
97
+ ```bash
98
+ python -m pip install linux-commands-guide
99
+ ```
100
+
101
+ `shellcolorize` is the author's separate project, published on PyPI, and remains the color dependency.
102
+ Its repository does not need to be cloned for installation.
103
+
104
+ ## Reference
105
+
106
+ ```bash
107
+ lh awk # Full reference
108
+ lh ls --quick # Up to 8 curated examples
109
+ lh grep --explain # Curated examples, explanation, notes and sources
110
+ lh -s 'disk space' # Search both languages
111
+ lh grep -s recursive # Search only grep
112
+ lh list # Browse categories
113
+ lh list --category files # Filter a category
114
+ lh --lang en ssh # Force English
115
+ lh --help
116
+ lh --version
117
+ python -m guia_linux awk # Same CLI
118
+ python helper.py awk # Legacy shim remains
119
+ ```
120
+
121
+ Search is case/accent-insensitive and requires every query word to match an entry's text, tool
122
+ summary or curated task keywords. It is local, not AI or natural-language reasoning. Use a few specific words.
123
+
124
+ Long references can be piped into `less`. `NO_COLOR=1` disables color; redirected output is plain
125
+ unless you explicitly set `FORCE_COLOR`. Commands are never reflowed, so copying preserves their
126
+ syntax; descriptions stack on narrow terminals.
127
+
128
+ ```bash
129
+ lh tar | less
130
+ NO_COLOR=1 lh grep
131
+ ```
132
+
133
+ `--explain` focuses on selected examples, not every advanced option. The most detailed explanations
134
+ are in foundational entries; advanced entries retain notes, effect warnings and source links.
135
+ `--explain` is not a replacement for the complete manual of each program.
136
+
137
+ ## Learn and practice
138
+
139
+ ```bash
140
+ lh learn
141
+ lh practice
142
+ ```
143
+
144
+ Suggested route:
145
+
146
+ 1. `navigation` — paths, directories
147
+ 2. `quoting` — quotes and arguments
148
+ 3. `globs` — filename globs versus regex
149
+ 4. `pipes` — stdin, stdout and stderr
150
+ 5. `redirections` — input/output and overwrite risk
151
+ 6. `exit-status` — exit codes, `&&` and `||`
152
+ 7. `environment`, `permissions`, `processes`, `help`
153
+
154
+ Practices currently cover `grep`, `pipes`, `navigation`, `wc` and `regex`. They print fixture setup,
155
+ a challenge and expected output; hints and solutions are opt-in. **No commands run and no files
156
+ are created by lh.** If you copy the setup, it creates a fresh temporary directory. Use only that
157
+ directory; root is not required. There is no automatic assessment or cleanup of your files.
158
+
159
+ Practices are guided: you run commands and compare results. `lh` does not inspect your documents,
160
+ execute your input or store your progress.
161
+
162
+ ## Safety and compatibility
163
+
164
+ - Examples may **write, delete, change system state, generate traffic or expose sensitive data**.
165
+ Such effects are labeled. An unlabelled reference is not a guarantee of safety.
166
+ - Never copy placeholders such as `<file>` literally. Replace them, omit the angle brackets and
167
+ quote paths with spaces. Do not copy shell prompts (`$`/`#`) as commands.
168
+ - Read notes before using `sudo`, destructive options, recursive permissions or network changes.
169
+ - Scan only systems you own or have permission to test.
170
+ - The reference primarily covers GNU/Linux. Shell builtins, regex engines, netcat variants,
171
+ distributions and installed versions can differ. systemd entries require systemd.
172
+ - Structural tests cover all content. Behavioral tests cover **selected** safe examples and practice
173
+ fixtures, not every command or every Linux distribution.
174
+
175
+ See [compatibility](docs/compatibility.md) and [learning path](docs/learning-path.md).
176
+
177
+ ## Available references
178
+
179
+ <!-- BEGIN GENERATED CATALOG -->
180
+
181
+ 114 references. Categories and aliases are available through `lh list`.
182
+
183
+ | Tool | Description | Category |
184
+ |------|-------------|----------|
185
+ | `apropos` | Find manuals by topic | basics |
186
+ | `apt` | Packages on Debian/Ubuntu | system |
187
+ | `awk` | Column-based text processing | text |
188
+ | `bat` | Read files with syntax highlighting | files |
189
+ | `bg` | Resume jobs in the background | processes |
190
+ | `cat` | Display and concatenate file contents | files |
191
+ | `cd` | Change to the specified directory | basics |
192
+ | `chmod` | Change file and directory permissions | files |
193
+ | `chown` | Change file owner and group | files |
194
+ | `command` | Check command resolution | basics |
195
+ | `cp` | Copy a file | files |
196
+ | `crontab` | Periodic task scheduling | system |
197
+ | `curl` | Transfer data with URLs | network |
198
+ | `cut` | Extract sections from each line | text |
199
+ | `date` | Show current date and time | system |
200
+ | `descriptors` | stdin, stdout and stderr redirections | shell |
201
+ | `df` | Display disk space usage | files |
202
+ | `diff` | Compare text files | files |
203
+ | `dig` | Query DNS records | network |
204
+ | `dirs` | Show the directory stack | shell |
205
+ | `dnf` | Packages on compatible Fedora/RHEL systems | system |
206
+ | `docker` | Docker container management | advanced |
207
+ | `du` | Display directory space usage | files |
208
+ | `echo` | Display text or variables | text |
209
+ | `env` | Inspect or pass environment variables | shell |
210
+ | `export` | Pass variables to child processes | shell |
211
+ | `fd` | Find files with fd | files |
212
+ | `fg` | Bring jobs to the foreground | processes |
213
+ | `file` | Identify file types | files |
214
+ | `find` | Search for files and directories | files |
215
+ | `firewall-cmd` | Manage the firewalld firewall | advanced |
216
+ | `free` | Display system memory usage | processes |
217
+ | `fzf` | Select text interactively | shell |
218
+ | `getent` | Query system name resolution | network |
219
+ | `git` | Version control with Git | development |
220
+ | `grep` | Search for patterns in files | text |
221
+ | `gzip` | Compress individual files | files |
222
+ | `head` | Display the beginning of a file | text |
223
+ | `help` | Help for Bash builtins | basics |
224
+ | `history` | Inspect your shell history | shell |
225
+ | `hostname` | Show or set the hostname | system |
226
+ | `htop` | Interactive process monitor | processes |
227
+ | `id` | Show UID, GID and groups of current user | system |
228
+ | `ifconfig` | Network interface configuration (legacy) | network |
229
+ | `ip` | Modern network interface and routing management | network |
230
+ | `iptables` | Kernel firewall rule management | advanced |
231
+ | `jobs` | Inspect jobs in your shell | processes |
232
+ | `journalctl` | Read systemd logs | system |
233
+ | `jq` | Command-line JSON processor | text |
234
+ | `kill` | Send signals to processes | processes |
235
+ | `less` | Display file contents interactively | files |
236
+ | `ln` | Create a symbolic link | files |
237
+ | `locate` | Find files using the locate database | files |
238
+ | `logs` | Important log file paths in Linux | system |
239
+ | `ls` | List the current directory contents | basics |
240
+ | `lsblk` | List block devices | files |
241
+ | `lsof` | List open files by processes | processes |
242
+ | `lxc` | LXC container management | advanced |
243
+ | `man` | Read command manuals | basics |
244
+ | `mkdir` | Create a new directory | files |
245
+ | `more` | Display file contents page by page | files |
246
+ | `mv` | Move or rename a file or directory | files |
247
+ | `nano` | Edit files in the terminal | files |
248
+ | `nc` | TCP/IP Swiss army knife | network |
249
+ | `ncdu` | Explore disk usage interactively | files |
250
+ | `netstat` | Network connection statistics | network |
251
+ | `nl` | Display file contents with line numbers | files |
252
+ | `nmap` | Network and port scanner | advanced |
253
+ | `pacman` | Packages on Arch-based systems | system |
254
+ | `pgrep` | Find PIDs by name | processes |
255
+ | `ping` | Check ICMP responses | network |
256
+ | `popd` | Return to the previously saved directory | shell |
257
+ | `printf` | Print predictably formatted text | text |
258
+ | `ps` | Information about running processes | processes |
259
+ | `pushd` | Save current directory and switch to the given one | shell |
260
+ | `pwd` | Print the current working directory | basics |
261
+ | `readlink` | Inspect symbolic links | files |
262
+ | `realpath` | Resolve absolute paths | files |
263
+ | `regex` | Regex search patterns | text |
264
+ | `rg` | Search text with ripgrep | text |
265
+ | `rm` | Remove a file | files |
266
+ | `rsync` | Efficient file synchronization | files |
267
+ | `scp` | Secure file copy over SSH | files |
268
+ | `sed` | Stream text editor | text |
269
+ | `sha256sum` | Check integrity with SHA-256 | files |
270
+ | `shortcuts` | Bash/zsh keyboard shortcuts | basics |
271
+ | `sort` | Sort lines of text | text |
272
+ | `ss` | Socket statistics (replaces netstat) | network |
273
+ | `ssh` | Secure Shell client | network |
274
+ | `stat` | Show file details (timestamps, permissions) | files |
275
+ | `sudo` | Understand and inspect privileges | system |
276
+ | `system` | Navigation, files and system management | basics |
277
+ | `systemctl` | Manage services with systemd | system |
278
+ | `tail` | Display the end of a file | text |
279
+ | `tar` | File archiving and compression | files |
280
+ | `tee` | Read stdin and write to stdout and files | text |
281
+ | `timeout` | Limit a command’s duration | processes |
282
+ | `tmux` | Terminal multiplexer | shell |
283
+ | `top` | Real-time process monitor | processes |
284
+ | `touch` | Create an empty file or update its timestamp | files |
285
+ | `tr` | Translate or delete characters | text |
286
+ | `tree` | Display directories as a tree | files |
287
+ | `type` | Identify commands, aliases and functions | basics |
288
+ | `umask` | Understand new-file permissions | shell |
289
+ | `uname` | System and kernel information | system |
290
+ | `uniq` | Filter adjacent duplicate lines | text |
291
+ | `unzip` | Inspect and extract ZIP archives | files |
292
+ | `uptime` | Show how long the system has been running | system |
293
+ | `vim` | Modal terminal text editor | shell |
294
+ | `watch` | Execute a command periodically | processes |
295
+ | `wc` | Count lines, words and bytes | text |
296
+ | `whoami` | Show the current user | system |
297
+ | `xargs` | Build and execute commands from stdin | text |
298
+ | `zip` | Create ZIP archives | files |
299
+
300
+ <!-- END GENERATED CATALOG -->
301
+
302
+ ## Development
303
+
304
+ ```bash
305
+ python3 -m venv .venv
306
+ . .venv/bin/activate
307
+ python -m pip install -e '.[dev]'
308
+ ruff check .
309
+ python -m scripts.update_catalog_docs --check
310
+ pytest -q
311
+ python -m build
312
+ ```
313
+
314
+ Content lives in validated bilingual JSON under `guia_linux/content/`, not in executable Python or
315
+ ANSI-colored strings. References can share example IDs without duplicating definitions.
316
+
317
+ - `catalog.py` loads/validates content and handles lookup/search.
318
+ - `render.py` presents it using stream-local `shellcolorize` colors, without global color mutation.
319
+ - `learning.py` displays lessons and practice plans without executing commands.
320
+ - `cli.py` parses requests; `models.py` holds immutable reference data.
321
+
322
+ The CI tests the declared minimum and published `shellcolorize` versions, builds a wheel and
323
+ checks installation outside the checkout. There is no automatic publication.
324
+
325
+ ## Contribute
326
+
327
+ Found an incorrect example or confusing explanation? Open an issue; please remove private paths,
328
+ credentials and personal information from output. New contributors can improve a translation,
329
+ add a tested beginner example or clarify an error message.
330
+
331
+ See [CONTRIBUTING.md](CONTRIBUTING.md) and the [content guide](docs/content-guide.md).
332
+ For releases, see the [release checklist](docs/releasing.md). The [demo](docs/demo.gif) shows the
333
+ current beginner journey with real terminal output; its [recording](docs/demo.cast) is also included.
334
+
335
+ ## License
336
+
337
+ [MIT](LICENSE). [Changelog](CHANGELOG.md).