@fredlackey/devutils 0.0.1 → 0.0.3

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 (259) hide show
  1. package/README.md +5 -5
  2. package/package.json +1 -1
  3. package/src/commands/install.js +374 -36
  4. package/src/installs/adobe-creative-cloud.js +527 -25
  5. package/src/installs/adobe-creative-cloud.md +605 -0
  6. package/src/installs/appcleaner.js +303 -26
  7. package/src/installs/appcleaner.md +699 -0
  8. package/src/installs/apt-transport-https.js +390 -0
  9. package/src/installs/apt-transport-https.md +678 -0
  10. package/src/installs/atomicparsley.js +624 -26
  11. package/src/installs/atomicparsley.md +795 -0
  12. package/src/installs/aws-cli.js +779 -26
  13. package/src/installs/aws-cli.md +727 -0
  14. package/src/installs/balena-etcher.js +688 -26
  15. package/src/installs/balena-etcher.md +761 -0
  16. package/src/installs/bambu-studio.js +912 -26
  17. package/src/installs/bambu-studio.md +780 -0
  18. package/src/installs/bash-completion.js +554 -23
  19. package/src/installs/bash-completion.md +833 -0
  20. package/src/installs/bash.js +399 -26
  21. package/src/installs/bash.md +993 -0
  22. package/src/installs/beyond-compare.js +585 -26
  23. package/src/installs/beyond-compare.md +813 -0
  24. package/src/installs/build-essential.js +511 -26
  25. package/src/installs/build-essential.md +977 -0
  26. package/src/installs/ca-certificates.js +618 -0
  27. package/src/installs/ca-certificates.md +937 -0
  28. package/src/installs/caffeine.js +490 -26
  29. package/src/installs/caffeine.md +839 -0
  30. package/src/installs/camtasia.js +577 -25
  31. package/src/installs/camtasia.md +762 -0
  32. package/src/installs/chatgpt.js +458 -26
  33. package/src/installs/chatgpt.md +814 -0
  34. package/src/installs/chocolatey.js +447 -0
  35. package/src/installs/chocolatey.md +661 -0
  36. package/src/installs/chrome-canary.js +472 -26
  37. package/src/installs/chrome-canary.md +641 -0
  38. package/src/installs/chromium.js +645 -26
  39. package/src/installs/chromium.md +838 -0
  40. package/src/installs/claude-code.js +558 -26
  41. package/src/installs/claude-code.md +1173 -0
  42. package/src/installs/curl.js +361 -26
  43. package/src/installs/curl.md +714 -0
  44. package/src/installs/cursor.js +561 -26
  45. package/src/installs/cursor.md +970 -0
  46. package/src/installs/dbschema.js +674 -26
  47. package/src/installs/dbschema.md +925 -0
  48. package/src/installs/dependencies.md +435 -0
  49. package/src/installs/development-tools.js +600 -0
  50. package/src/installs/development-tools.md +977 -0
  51. package/src/installs/docker.js +1010 -25
  52. package/src/installs/docker.md +1109 -0
  53. package/src/installs/drawio.js +1001 -26
  54. package/src/installs/drawio.md +795 -0
  55. package/src/installs/elmedia-player.js +328 -25
  56. package/src/installs/elmedia-player.md +556 -0
  57. package/src/installs/ffmpeg.js +870 -25
  58. package/src/installs/ffmpeg.md +852 -0
  59. package/src/installs/file.js +464 -0
  60. package/src/installs/file.md +987 -0
  61. package/src/installs/gemini-cli.js +793 -26
  62. package/src/installs/gemini-cli.md +1153 -0
  63. package/src/installs/git.js +382 -26
  64. package/src/installs/git.md +907 -0
  65. package/src/installs/gitego.js +931 -26
  66. package/src/installs/gitego.md +1172 -0
  67. package/src/installs/go.js +913 -26
  68. package/src/installs/go.md +958 -0
  69. package/src/installs/google-chrome.js +801 -25
  70. package/src/installs/google-chrome.md +862 -0
  71. package/src/installs/gpg.js +412 -73
  72. package/src/installs/gpg.md +1056 -0
  73. package/src/installs/homebrew.js +1015 -26
  74. package/src/installs/homebrew.md +988 -0
  75. package/src/installs/imageoptim.js +950 -26
  76. package/src/installs/imageoptim.md +1119 -0
  77. package/src/installs/installers.json +2297 -0
  78. package/src/installs/jq.js +382 -26
  79. package/src/installs/jq.md +809 -0
  80. package/src/installs/keyboard-maestro.js +701 -26
  81. package/src/installs/keyboard-maestro.md +825 -0
  82. package/src/installs/latex.js +771 -26
  83. package/src/installs/latex.md +1095 -0
  84. package/src/installs/lftp.js +338 -26
  85. package/src/installs/lftp.md +907 -0
  86. package/src/installs/lsb-release.js +346 -0
  87. package/src/installs/lsb-release.md +814 -0
  88. package/src/installs/messenger.js +829 -26
  89. package/src/installs/messenger.md +900 -0
  90. package/src/installs/microsoft-office.js +550 -26
  91. package/src/installs/microsoft-office.md +760 -0
  92. package/src/installs/microsoft-teams.js +782 -25
  93. package/src/installs/microsoft-teams.md +886 -0
  94. package/src/installs/node.js +886 -26
  95. package/src/installs/node.md +1153 -0
  96. package/src/installs/nordpass.js +698 -26
  97. package/src/installs/nordpass.md +921 -0
  98. package/src/installs/nvm.js +977 -26
  99. package/src/installs/nvm.md +1057 -0
  100. package/src/installs/openssh.js +734 -64
  101. package/src/installs/openssh.md +1056 -0
  102. package/src/installs/pandoc.js +644 -26
  103. package/src/installs/pandoc.md +1036 -0
  104. package/src/installs/pinentry.js +492 -26
  105. package/src/installs/pinentry.md +1142 -0
  106. package/src/installs/pngyu.js +851 -26
  107. package/src/installs/pngyu.md +896 -0
  108. package/src/installs/postman.js +781 -26
  109. package/src/installs/postman.md +940 -0
  110. package/src/installs/procps.js +425 -0
  111. package/src/installs/procps.md +851 -0
  112. package/src/installs/safari-tech-preview.js +355 -25
  113. package/src/installs/safari-tech-preview.md +533 -0
  114. package/src/installs/sfnt2woff.js +640 -26
  115. package/src/installs/sfnt2woff.md +795 -0
  116. package/src/installs/shellcheck.js +463 -26
  117. package/src/installs/shellcheck.md +1005 -0
  118. package/src/installs/slack.js +722 -25
  119. package/src/installs/slack.md +865 -0
  120. package/src/installs/snagit.js +566 -25
  121. package/src/installs/snagit.md +844 -0
  122. package/src/installs/software-properties-common.js +372 -0
  123. package/src/installs/software-properties-common.md +805 -0
  124. package/src/installs/spotify.js +858 -25
  125. package/src/installs/spotify.md +901 -0
  126. package/src/installs/studio-3t.js +803 -26
  127. package/src/installs/studio-3t.md +918 -0
  128. package/src/installs/sublime-text.js +780 -25
  129. package/src/installs/sublime-text.md +914 -0
  130. package/src/installs/superwhisper.js +687 -25
  131. package/src/installs/superwhisper.md +630 -0
  132. package/src/installs/tailscale.js +727 -26
  133. package/src/installs/tailscale.md +1100 -0
  134. package/src/installs/tar.js +389 -0
  135. package/src/installs/tar.md +946 -0
  136. package/src/installs/termius.js +780 -26
  137. package/src/installs/termius.md +844 -0
  138. package/src/installs/terraform.js +761 -26
  139. package/src/installs/terraform.md +899 -0
  140. package/src/installs/tidal.js +752 -25
  141. package/src/installs/tidal.md +864 -0
  142. package/src/installs/tmux.js +328 -26
  143. package/src/installs/tmux.md +1030 -0
  144. package/src/installs/tree.js +393 -26
  145. package/src/installs/tree.md +833 -0
  146. package/src/installs/unzip.js +460 -0
  147. package/src/installs/unzip.md +879 -0
  148. package/src/installs/vim.js +403 -26
  149. package/src/installs/vim.md +1040 -0
  150. package/src/installs/vlc.js +803 -26
  151. package/src/installs/vlc.md +927 -0
  152. package/src/installs/vscode.js +825 -26
  153. package/src/installs/vscode.md +1002 -0
  154. package/src/installs/wget.js +415 -0
  155. package/src/installs/wget.md +791 -0
  156. package/src/installs/whatsapp.js +710 -25
  157. package/src/installs/whatsapp.md +854 -0
  158. package/src/installs/winpty.js +352 -0
  159. package/src/installs/winpty.md +620 -0
  160. package/src/installs/woff2.js +535 -26
  161. package/src/installs/woff2.md +977 -0
  162. package/src/installs/wsl.js +572 -0
  163. package/src/installs/wsl.md +699 -0
  164. package/src/installs/xcode-clt.js +520 -0
  165. package/src/installs/xcode-clt.md +351 -0
  166. package/src/installs/xcode.js +542 -26
  167. package/src/installs/xcode.md +573 -0
  168. package/src/installs/yarn.js +806 -26
  169. package/src/installs/yarn.md +1074 -0
  170. package/src/installs/yq.js +636 -26
  171. package/src/installs/yq.md +944 -0
  172. package/src/installs/yt-dlp.js +683 -26
  173. package/src/installs/yt-dlp.md +946 -0
  174. package/src/installs/yum-utils.js +297 -0
  175. package/src/installs/yum-utils.md +648 -0
  176. package/src/installs/zoom.js +740 -25
  177. package/src/installs/zoom.md +884 -0
  178. package/src/scripts/README.md +567 -45
  179. package/src/scripts/STATUS.md +208 -0
  180. package/src/scripts/afk.js +395 -7
  181. package/src/scripts/backup-all.js +731 -9
  182. package/src/scripts/backup-source.js +711 -8
  183. package/src/scripts/brewd.js +373 -7
  184. package/src/scripts/brewi.js +505 -9
  185. package/src/scripts/brewr.js +512 -9
  186. package/src/scripts/brews.js +462 -9
  187. package/src/scripts/brewu.js +488 -7
  188. package/src/scripts/c.js +185 -7
  189. package/src/scripts/ccurl.js +325 -8
  190. package/src/scripts/certbot-crontab-init.js +488 -8
  191. package/src/scripts/certbot-init.js +641 -9
  192. package/src/scripts/ch.js +339 -7
  193. package/src/scripts/claude-danger.js +253 -8
  194. package/src/scripts/clean-dev.js +419 -8
  195. package/src/scripts/clear-dns-cache.js +525 -7
  196. package/src/scripts/clone.js +417 -7
  197. package/src/scripts/code-all.js +420 -7
  198. package/src/scripts/count-files.js +195 -8
  199. package/src/scripts/count-folders.js +195 -8
  200. package/src/scripts/count.js +248 -8
  201. package/src/scripts/d.js +203 -7
  202. package/src/scripts/datauri.js +373 -8
  203. package/src/scripts/delete-files.js +363 -7
  204. package/src/scripts/docker-clean.js +410 -8
  205. package/src/scripts/dp.js +426 -7
  206. package/src/scripts/e.js +375 -9
  207. package/src/scripts/empty-trash.js +497 -7
  208. package/src/scripts/evm.js +428 -9
  209. package/src/scripts/fetch-github-repos.js +441 -10
  210. package/src/scripts/get-channel.js +329 -8
  211. package/src/scripts/get-course.js +384 -11
  212. package/src/scripts/get-dependencies.js +290 -9
  213. package/src/scripts/get-folder.js +783 -10
  214. package/src/scripts/get-tunes.js +411 -10
  215. package/src/scripts/get-video.js +352 -9
  216. package/src/scripts/git-backup.js +561 -9
  217. package/src/scripts/git-clone.js +477 -9
  218. package/src/scripts/git-pup.js +303 -7
  219. package/src/scripts/git-push.js +380 -8
  220. package/src/scripts/h.js +607 -9
  221. package/src/scripts/hide-desktop-icons.js +483 -7
  222. package/src/scripts/hide-hidden-files.js +522 -7
  223. package/src/scripts/install-dependencies-from.js +440 -9
  224. package/src/scripts/ips.js +647 -10
  225. package/src/scripts/iso.js +354 -8
  226. package/src/scripts/killni.js +561 -7
  227. package/src/scripts/ll.js +451 -8
  228. package/src/scripts/local-ip.js +310 -8
  229. package/src/scripts/m.js +508 -8
  230. package/src/scripts/map.js +293 -8
  231. package/src/scripts/mkd.js +287 -7
  232. package/src/scripts/ncu-update-all.js +441 -8
  233. package/src/scripts/nginx-init.js +702 -12
  234. package/src/scripts/npmi.js +366 -7
  235. package/src/scripts/o.js +495 -8
  236. package/src/scripts/org-by-date.js +321 -7
  237. package/src/scripts/p.js +208 -7
  238. package/src/scripts/packages.js +313 -8
  239. package/src/scripts/path.js +209 -7
  240. package/src/scripts/ports.js +582 -8
  241. package/src/scripts/q.js +290 -8
  242. package/src/scripts/refresh-files.js +378 -10
  243. package/src/scripts/remove-smaller-files.js +500 -8
  244. package/src/scripts/rename-files-with-date.js +517 -9
  245. package/src/scripts/resize-image.js +523 -9
  246. package/src/scripts/rm-safe.js +653 -8
  247. package/src/scripts/s.js +525 -9
  248. package/src/scripts/set-git-public.js +349 -7
  249. package/src/scripts/show-desktop-icons.js +459 -7
  250. package/src/scripts/show-hidden-files.js +456 -7
  251. package/src/scripts/tpa.js +265 -8
  252. package/src/scripts/tpo.js +264 -7
  253. package/src/scripts/u.js +489 -7
  254. package/src/scripts/vpush.js +422 -8
  255. package/src/scripts/y.js +267 -7
  256. package/src/utils/common/os.js +94 -2
  257. package/src/utils/ubuntu/apt.js +13 -7
  258. package/src/utils/windows/choco.js +82 -26
  259. package/src/utils/windows/winget.js +89 -27
@@ -0,0 +1,833 @@
1
+ # Installing Bash Completion 2
2
+
3
+ ## Dependencies
4
+
5
+ ### macOS (Homebrew)
6
+ - **Required:**
7
+ - Homebrew package manager - Install via `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"` or run `dev install homebrew`
8
+ - Bash 4.2 or later - Install via `brew install bash` (macOS ships with Bash 3.2 which is incompatible)
9
+ - **Optional:** None
10
+ - **Auto-installed:** None
11
+
12
+ ### Ubuntu (APT/Snap)
13
+ - **Required:**
14
+ - APT package manager (built-in on Ubuntu/Debian systems)
15
+ - Bash 4.2 or later (typically pre-installed on modern Ubuntu/Debian)
16
+ - **Optional:** None
17
+ - **Auto-installed:** All runtime dependencies are handled automatically by APT
18
+
19
+ ### Raspberry Pi OS (APT/Snap)
20
+ - **Required:**
21
+ - APT package manager (built-in on Raspberry Pi OS)
22
+ - Bash 4.2 or later (typically pre-installed on Raspberry Pi OS)
23
+ - **Optional:** None
24
+ - **Auto-installed:** All runtime dependencies are handled automatically by APT
25
+
26
+ ### Amazon Linux (DNF/YUM)
27
+ - **Required:**
28
+ - DNF (Amazon Linux 2023) or YUM (Amazon Linux 2) package manager (built-in)
29
+ - rpm command for verification (built-in)
30
+ - Bash 4.2 or later (typically pre-installed on Amazon Linux)
31
+ - **Optional:** None
32
+ - **Auto-installed:** All runtime dependencies are handled automatically by DNF/YUM
33
+
34
+ ### Windows (Chocolatey/winget)
35
+ - **Required:** None (bash-completion is not natively supported on Windows)
36
+ - **Optional:**
37
+ - Clink (for Bash-style line editing in cmd.exe) - Install via `choco install clink -y` (Note: This is NOT the same as bash-completion)
38
+ - **Auto-installed:** None
39
+ - **Note:** For actual bash-completion support on Windows, use WSL (see WSL section) or Git Bash (see Git Bash section)
40
+
41
+ ### Git Bash (Manual/Portable)
42
+ - **Required:**
43
+ - Git for Windows (includes Git Bash/MINGW64 environment) - Download from https://git-scm.com/download/win
44
+ - curl command (included with Git for Windows) for downloading completion scripts
45
+ - **Optional:** None
46
+ - **Auto-installed:** Git completion scripts are typically bundled with Git for Windows installation
47
+ - **Note:** Git Bash provides limited bash-completion support. For full functionality, use WSL instead.
48
+
49
+ ## Overview
50
+
51
+ Bash Completion (bash-completion) is a collection of shell functions that take advantage of the programmable completion feature of Bash. It provides intelligent auto-completion for commands, file paths, options, and arguments when you press the Tab key. Version 2 (bash-completion@2) is designed for Bash 4.2 and later, offering improved performance and more comprehensive completion support compared to version 1.
52
+
53
+ Key benefits include:
54
+ - Faster command entry through Tab-triggered auto-completion
55
+ - Reduced typing errors by suggesting valid options and arguments
56
+ - Discovery of command options without consulting documentation
57
+ - Support for hundreds of common commands out of the box
58
+
59
+ ## Prerequisites
60
+
61
+ Before installing bash-completion on any platform, ensure:
62
+
63
+ 1. **Bash 4.2 or later** - Version 2 of bash-completion requires Bash 4.2+. Check your version with `bash --version`.
64
+ 2. **Terminal access** - You need access to a terminal or command-line interface.
65
+ 3. **Administrative privileges** - Required on most platforms for system-wide installation.
66
+
67
+ **Important**: bash-completion version 1 and version 2 conflict with each other. If you have version 1 installed, remove it before installing version 2.
68
+
69
+ ## Platform-Specific Installation
70
+
71
+ ### macOS (Homebrew)
72
+
73
+ #### Prerequisites
74
+
75
+ - macOS 11 (Big Sur) or later
76
+ - Homebrew package manager installed
77
+ - Bash 4.2 or later installed (macOS ships with Bash 3.2 by default)
78
+
79
+ If Homebrew is not installed, install it first:
80
+
81
+ ```bash
82
+ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
83
+ ```
84
+
85
+ **Critical**: macOS ships with Bash 3.2 (from 2007) due to licensing. You must install a modern version of Bash before using bash-completion@2:
86
+
87
+ ```bash
88
+ brew install --quiet bash
89
+ ```
90
+
91
+ Add the new Bash to allowed shells and set it as default:
92
+
93
+ ```bash
94
+ echo '/opt/homebrew/bin/bash' | sudo tee -a /etc/shells
95
+ chsh -s /opt/homebrew/bin/bash
96
+ ```
97
+
98
+ #### Installation Steps
99
+
100
+ Run the following command to install bash-completion@2:
101
+
102
+ ```bash
103
+ brew install --quiet bash-completion@2
104
+ ```
105
+
106
+ The `--quiet` flag suppresses non-essential output, making the command suitable for automation scripts.
107
+
108
+ #### Configuration
109
+
110
+ After installation, you must configure your shell to load bash-completion. Add the following to your `~/.bash_profile`:
111
+
112
+ ```bash
113
+ # Enable bash-completion@2
114
+ [[ -r "${HOMEBREW_PREFIX}/etc/profile.d/bash_completion.sh" ]] && . "${HOMEBREW_PREFIX}/etc/profile.d/bash_completion.sh"
115
+ ```
116
+
117
+ For Intel Macs, `HOMEBREW_PREFIX` is `/usr/local`. For Apple Silicon Macs (M1/M2/M3/M4), it is `/opt/homebrew`. If `HOMEBREW_PREFIX` is not set in your environment, use the explicit path:
118
+
119
+ For Apple Silicon:
120
+ ```bash
121
+ [[ -r "/opt/homebrew/etc/profile.d/bash_completion.sh" ]] && . "/opt/homebrew/etc/profile.d/bash_completion.sh"
122
+ ```
123
+
124
+ For Intel:
125
+ ```bash
126
+ [[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh"
127
+ ```
128
+
129
+ Apply the changes:
130
+
131
+ ```bash
132
+ source ~/.bash_profile
133
+ ```
134
+
135
+ #### Verification
136
+
137
+ Confirm the installation succeeded:
138
+
139
+ ```bash
140
+ type _init_completion
141
+ ```
142
+
143
+ Expected output:
144
+
145
+ ```
146
+ _init_completion is a function
147
+ ```
148
+
149
+ Test completion by typing `git ` followed by pressing Tab twice. You should see a list of Git subcommands.
150
+
151
+ #### Troubleshooting
152
+
153
+ **Problem**: `bash: _init_completion: command not found`
154
+
155
+ **Solution**: The completion script is not being sourced. Verify the path exists and add the source line to `~/.bash_profile`:
156
+
157
+ ```bash
158
+ ls -la "${HOMEBREW_PREFIX}/etc/profile.d/bash_completion.sh"
159
+ ```
160
+
161
+ **Problem**: Completion not working despite configuration
162
+
163
+ **Solution**: Ensure you are running Bash 4.2+ and not the system default Bash 3.2:
164
+
165
+ ```bash
166
+ echo $BASH_VERSION
167
+ ```
168
+
169
+ If it shows 3.x, restart your terminal or ensure the new Bash is your default shell.
170
+
171
+ **Problem**: Conflicts with bash-completion version 1
172
+
173
+ **Solution**: Uninstall version 1 first:
174
+
175
+ ```bash
176
+ brew uninstall bash-completion
177
+ brew install --quiet bash-completion@2
178
+ ```
179
+
180
+ ---
181
+
182
+ ### Ubuntu/Debian (APT)
183
+
184
+ #### Prerequisites
185
+
186
+ - Ubuntu 18.04 or later, or Debian 10 or later (64-bit)
187
+ - sudo privileges
188
+ - Bash 4.2 or later (default on modern Ubuntu/Debian)
189
+
190
+ **Note**: On Ubuntu/Debian, the APT package `bash-completion` provides version 2.x functionality. The `@2` version suffix is specific to Homebrew on macOS.
191
+
192
+ #### Installation Steps
193
+
194
+ Run the following commands to install bash-completion:
195
+
196
+ ```bash
197
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
198
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y bash-completion
199
+ ```
200
+
201
+ The `DEBIAN_FRONTEND=noninteractive` and `-y` flags ensure fully non-interactive installation suitable for scripts and automation.
202
+
203
+ #### Configuration
204
+
205
+ Ubuntu and Debian typically enable bash-completion by default. The installer places a script at `/etc/profile.d/bash_completion.sh` that is automatically sourced for login shells.
206
+
207
+ Verify that `/etc/bash.bashrc` or `~/.bashrc` contains the completion loading logic:
208
+
209
+ ```bash
210
+ grep -q bash_completion /etc/bash.bashrc && echo "System-wide completion configured" || echo "Check configuration"
211
+ ```
212
+
213
+ If completion is not enabled, add the following to your `~/.bashrc`:
214
+
215
+ ```bash
216
+ # Enable bash-completion
217
+ if ! shopt -oq posix; then
218
+ if [ -f /usr/share/bash-completion/bash_completion ]; then
219
+ . /usr/share/bash-completion/bash_completion
220
+ elif [ -f /etc/bash_completion ]; then
221
+ . /etc/bash_completion
222
+ fi
223
+ fi
224
+ ```
225
+
226
+ Apply changes:
227
+
228
+ ```bash
229
+ source ~/.bashrc
230
+ ```
231
+
232
+ #### Verification
233
+
234
+ Confirm the installation succeeded:
235
+
236
+ ```bash
237
+ type _init_completion
238
+ ```
239
+
240
+ Expected output:
241
+
242
+ ```
243
+ _init_completion is a function
244
+ ```
245
+
246
+ Check the installed version:
247
+
248
+ ```bash
249
+ apt show bash-completion 2>/dev/null | grep Version
250
+ ```
251
+
252
+ Expected output (version may vary):
253
+
254
+ ```
255
+ Version: 1:2.11-8
256
+ ```
257
+
258
+ #### Troubleshooting
259
+
260
+ **Problem**: Completion not working after installation
261
+
262
+ **Solution**: Source the completion script manually or restart your terminal:
263
+
264
+ ```bash
265
+ source /etc/profile.d/bash_completion.sh
266
+ ```
267
+
268
+ **Problem**: `apt show bash-completion` returns "N: Unable to locate package"
269
+
270
+ **Solution**: Update the package list:
271
+
272
+ ```bash
273
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
274
+ ```
275
+
276
+ **Problem**: Tab completion works for some commands but not others
277
+
278
+ **Solution**: Individual command completions are stored in `/usr/share/bash-completion/completions/`. Check if the completion file exists for your command:
279
+
280
+ ```bash
281
+ ls /usr/share/bash-completion/completions/
282
+ ```
283
+
284
+ ---
285
+
286
+ ### Raspberry Pi OS (APT)
287
+
288
+ #### Prerequisites
289
+
290
+ - Raspberry Pi OS (32-bit or 64-bit)
291
+ - Raspberry Pi 3, 4, 5, or Zero 2 W (any model with sufficient resources)
292
+ - sudo privileges
293
+ - Bash 4.2 or later (default on Raspberry Pi OS)
294
+
295
+ **Note**: Raspberry Pi OS is based on Debian, so the installation process is nearly identical to Ubuntu/Debian.
296
+
297
+ #### Installation Steps
298
+
299
+ Run the following commands to install bash-completion:
300
+
301
+ ```bash
302
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
303
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y bash-completion
304
+ ```
305
+
306
+ #### Configuration
307
+
308
+ Raspberry Pi OS typically enables bash-completion by default after installation. Verify the configuration exists in `/etc/bash.bashrc`:
309
+
310
+ ```bash
311
+ grep -q bash_completion /etc/bash.bashrc && echo "System-wide completion configured" || echo "Check configuration"
312
+ ```
313
+
314
+ If completion is not enabled, add the following to your `~/.bashrc`:
315
+
316
+ ```bash
317
+ # Enable bash-completion
318
+ if ! shopt -oq posix; then
319
+ if [ -f /usr/share/bash-completion/bash_completion ]; then
320
+ . /usr/share/bash-completion/bash_completion
321
+ elif [ -f /etc/bash_completion ]; then
322
+ . /etc/bash_completion
323
+ fi
324
+ fi
325
+ ```
326
+
327
+ Apply changes:
328
+
329
+ ```bash
330
+ source ~/.bashrc
331
+ ```
332
+
333
+ #### Verification
334
+
335
+ Confirm the installation succeeded:
336
+
337
+ ```bash
338
+ type _init_completion
339
+ ```
340
+
341
+ Expected output:
342
+
343
+ ```
344
+ _init_completion is a function
345
+ ```
346
+
347
+ Test ARM-specific functionality by ensuring completions work:
348
+
349
+ ```bash
350
+ # Type 'sudo apt-get install ' and press Tab twice
351
+ # You should see package name suggestions
352
+ ```
353
+
354
+ #### Troubleshooting
355
+
356
+ **Problem**: Installation is slow or times out
357
+
358
+ **Solution**: Raspberry Pi may have limited bandwidth. Use a wired ethernet connection or wait for the download to complete. Avoid interrupting the installation.
359
+
360
+ **Problem**: Completion not working after reboot
361
+
362
+ **Solution**: Ensure `~/.bashrc` is sourced by `~/.bash_profile`. Add to `~/.bash_profile` if needed:
363
+
364
+ ```bash
365
+ if [ -f ~/.bashrc ]; then
366
+ . ~/.bashrc
367
+ fi
368
+ ```
369
+
370
+ **Problem**: Completion works for user but not for root
371
+
372
+ **Solution**: Root may have a different shell configuration. Source completion in root's profile:
373
+
374
+ ```bash
375
+ sudo bash -c 'echo "source /etc/profile.d/bash_completion.sh" >> /root/.bashrc'
376
+ ```
377
+
378
+ ---
379
+
380
+ ### Amazon Linux (DNF/YUM)
381
+
382
+ #### Prerequisites
383
+
384
+ - Amazon Linux 2023 (uses DNF) or Amazon Linux 2 (uses YUM)
385
+ - sudo privileges
386
+ - Bash 4.2 or later (default on Amazon Linux)
387
+
388
+ #### Installation Steps
389
+
390
+ **For Amazon Linux 2023:**
391
+
392
+ ```bash
393
+ sudo dnf install -y bash-completion
394
+ ```
395
+
396
+ **For Amazon Linux 2:**
397
+
398
+ ```bash
399
+ sudo yum install -y bash-completion
400
+ ```
401
+
402
+ Both commands use the `-y` flag for non-interactive installation.
403
+
404
+ #### Configuration
405
+
406
+ After installation, the completion script is placed at `/etc/profile.d/bash_completion.sh` and is typically sourced automatically for login shells.
407
+
408
+ To ensure completion is available in all sessions, verify your `~/.bashrc` sources the profile scripts:
409
+
410
+ ```bash
411
+ grep -q bash_completion /etc/bashrc && echo "System-wide completion configured" || echo "Manual configuration may be needed"
412
+ ```
413
+
414
+ If needed, add the following to your `~/.bashrc`:
415
+
416
+ ```bash
417
+ # Enable bash-completion
418
+ [[ $PS1 && -f /etc/profile.d/bash_completion.sh ]] && . /etc/profile.d/bash_completion.sh
419
+ ```
420
+
421
+ Apply changes:
422
+
423
+ ```bash
424
+ source ~/.bashrc
425
+ ```
426
+
427
+ #### Verification
428
+
429
+ Confirm the installation succeeded:
430
+
431
+ ```bash
432
+ type _init_completion
433
+ ```
434
+
435
+ Expected output:
436
+
437
+ ```
438
+ _init_completion is a function
439
+ ```
440
+
441
+ Verify the package installation:
442
+
443
+ ```bash
444
+ # Amazon Linux 2023
445
+ rpm -q bash-completion
446
+
447
+ # Amazon Linux 2
448
+ rpm -q bash-completion
449
+ ```
450
+
451
+ Expected output (version may vary):
452
+
453
+ ```
454
+ bash-completion-2.11-3.amzn2023.noarch
455
+ ```
456
+
457
+ #### Troubleshooting
458
+
459
+ **Problem**: `dnf: command not found` on Amazon Linux 2
460
+
461
+ **Solution**: Amazon Linux 2 uses YUM, not DNF. Use `yum` instead:
462
+
463
+ ```bash
464
+ sudo yum install -y bash-completion
465
+ ```
466
+
467
+ **Problem**: Completion not loading in SSH sessions
468
+
469
+ **Solution**: SSH sessions may not source `/etc/profile.d/` scripts. Add explicit sourcing to `~/.bashrc`:
470
+
471
+ ```bash
472
+ [[ -f /etc/profile.d/bash_completion.sh ]] && . /etc/profile.d/bash_completion.sh
473
+ ```
474
+
475
+ **Problem**: EPEL repository required for some completions
476
+
477
+ **Solution**: Install EPEL for additional packages:
478
+
479
+ ```bash
480
+ # Amazon Linux 2
481
+ sudo amazon-linux-extras install epel -y
482
+
483
+ # Amazon Linux 2023 (EPEL not typically needed)
484
+ ```
485
+
486
+ ---
487
+
488
+ ### Windows (Not Natively Supported)
489
+
490
+ #### Overview
491
+
492
+ Bash Completion is a Linux/Unix tool that does not run natively on Windows. Windows uses PowerShell or Command Prompt, which have their own completion mechanisms.
493
+
494
+ For Bash functionality on Windows, use one of these alternatives:
495
+
496
+ 1. **WSL (Windows Subsystem for Linux)** - Recommended. See the WSL section below.
497
+ 2. **Git Bash** - Limited Bash environment. See the Git Bash section below.
498
+ 3. **Clink** - Provides Bash-style completion for Command Prompt (not actual bash-completion).
499
+
500
+ #### Clink (Bash-Style Completion for cmd.exe)
501
+
502
+ If you want Bash-style command-line editing in the native Windows Command Prompt, install Clink:
503
+
504
+ ```powershell
505
+ choco install clink -y
506
+ ```
507
+
508
+ **Note**: Clink provides Bash-like line editing features for `cmd.exe`, but it is not the same as bash-completion and does not provide the same completion functionality.
509
+
510
+ #### Verification
511
+
512
+ Clink enhances Command Prompt automatically after installation. Open a new `cmd.exe` window and look for the Clink banner on startup.
513
+
514
+ #### Troubleshooting
515
+
516
+ **Problem**: Want actual bash-completion on Windows
517
+
518
+ **Solution**: Install WSL and follow the WSL installation instructions below. This provides a full Linux environment with proper bash-completion support.
519
+
520
+ ---
521
+
522
+ ### WSL (Windows Subsystem for Linux - Ubuntu)
523
+
524
+ #### Prerequisites
525
+
526
+ - Windows 10 version 1903 or later, or Windows 11
527
+ - WSL 2 installed and configured (WSL 1 also works but WSL 2 is recommended)
528
+ - Ubuntu distribution installed via WSL
529
+ - sudo privileges within the WSL environment
530
+
531
+ To check if WSL is installed:
532
+
533
+ ```powershell
534
+ wsl --version
535
+ ```
536
+
537
+ If WSL is not installed, install it from PowerShell (Administrator):
538
+
539
+ ```powershell
540
+ wsl --install
541
+ ```
542
+
543
+ #### Installation Steps
544
+
545
+ Open your WSL Ubuntu terminal and run:
546
+
547
+ ```bash
548
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
549
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y bash-completion
550
+ ```
551
+
552
+ #### Configuration
553
+
554
+ WSL Ubuntu typically enables bash-completion by default. Verify the configuration:
555
+
556
+ ```bash
557
+ grep -q bash_completion /etc/bash.bashrc && echo "System-wide completion configured" || echo "Check configuration"
558
+ ```
559
+
560
+ If completion is not enabled, add the following to your `~/.bashrc`:
561
+
562
+ ```bash
563
+ # Enable bash-completion
564
+ if ! shopt -oq posix; then
565
+ if [ -f /usr/share/bash-completion/bash_completion ]; then
566
+ . /usr/share/bash-completion/bash_completion
567
+ elif [ -f /etc/bash_completion ]; then
568
+ . /etc/bash_completion
569
+ fi
570
+ fi
571
+ ```
572
+
573
+ Apply changes:
574
+
575
+ ```bash
576
+ source ~/.bashrc
577
+ ```
578
+
579
+ #### Verification
580
+
581
+ Confirm the installation succeeded:
582
+
583
+ ```bash
584
+ type _init_completion
585
+ ```
586
+
587
+ Expected output:
588
+
589
+ ```
590
+ _init_completion is a function
591
+ ```
592
+
593
+ #### Troubleshooting
594
+
595
+ **Problem**: Completion not working after WSL restart
596
+
597
+ **Solution**: Ensure `~/.bashrc` is being sourced. WSL may use `~/.profile` for login shells. Add to `~/.profile`:
598
+
599
+ ```bash
600
+ if [ -f ~/.bashrc ]; then
601
+ . ~/.bashrc
602
+ fi
603
+ ```
604
+
605
+ **Problem**: systemd-related errors when installing packages
606
+
607
+ **Solution**: Enable systemd in WSL if needed. Add to `/etc/wsl.conf`:
608
+
609
+ ```ini
610
+ [boot]
611
+ systemd=true
612
+ ```
613
+
614
+ Then restart WSL from PowerShell:
615
+
616
+ ```powershell
617
+ wsl --shutdown
618
+ ```
619
+
620
+ **Problem**: PATH conflicts between Windows and Linux
621
+
622
+ **Solution**: Windows paths may interfere with Linux commands. You can disable Windows path interop by adding to `/etc/wsl.conf`:
623
+
624
+ ```ini
625
+ [interop]
626
+ appendWindowsPath=false
627
+ ```
628
+
629
+ ---
630
+
631
+ ### Git Bash (Manual Installation)
632
+
633
+ #### Prerequisites
634
+
635
+ - Windows 10 or Windows 11
636
+ - Git for Windows installed (includes Git Bash/MINGW64)
637
+ - Write access to your home directory
638
+
639
+ **Important**: Git Bash provides a minimal Bash environment. While it includes Git-specific completions, general bash-completion is limited. For full bash-completion support, use WSL instead.
640
+
641
+ #### Installation Steps
642
+
643
+ Git Bash includes Git command completion by default. To verify and enable it:
644
+
645
+ 1. Create a directory for completion scripts:
646
+
647
+ ```bash
648
+ mkdir -p ~/bash_completion.d
649
+ ```
650
+
651
+ 2. Download the official Git completion script:
652
+
653
+ ```bash
654
+ curl -fsSL -o ~/bash_completion.d/git-completion.bash https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash
655
+ ```
656
+
657
+ 3. Add the following to your `~/.bashrc` (create the file if it does not exist):
658
+
659
+ ```bash
660
+ # Enable Git completion
661
+ if [ -f ~/bash_completion.d/git-completion.bash ]; then
662
+ . ~/bash_completion.d/git-completion.bash
663
+ fi
664
+ ```
665
+
666
+ 4. Apply changes by restarting Git Bash or running:
667
+
668
+ ```bash
669
+ source ~/.bashrc
670
+ ```
671
+
672
+ #### Adding Additional Completions
673
+
674
+ To add completion for other commands, download their completion scripts to `~/bash_completion.d/` and source them in `~/.bashrc`:
675
+
676
+ ```bash
677
+ # Example: Download Docker completion
678
+ curl -fsSL -o ~/bash_completion.d/docker-completion.bash https://raw.githubusercontent.com/docker/cli/master/contrib/completion/bash/docker
679
+
680
+ # Add to ~/.bashrc
681
+ echo '[ -f ~/bash_completion.d/docker-completion.bash ] && . ~/bash_completion.d/docker-completion.bash' >> ~/.bashrc
682
+ ```
683
+
684
+ #### Verification
685
+
686
+ Confirm Git completion is working:
687
+
688
+ ```bash
689
+ # Type 'git chec' and press Tab
690
+ # Should complete to 'git checkout'
691
+ git chec<TAB>
692
+ ```
693
+
694
+ Test branch completion:
695
+
696
+ ```bash
697
+ # In a Git repository, type 'git checkout ' and press Tab
698
+ # Should show available branches
699
+ ```
700
+
701
+ #### Troubleshooting
702
+
703
+ **Problem**: Tab completion does not work
704
+
705
+ **Solution**: Ensure the completion script is sourced. Check that `~/.bashrc` exists and contains the source line:
706
+
707
+ ```bash
708
+ cat ~/.bashrc | grep git-completion
709
+ ```
710
+
711
+ **Problem**: Completion script not found at the expected location
712
+
713
+ **Solution**: Git for Windows may include completion scripts in a different location. Check:
714
+
715
+ ```bash
716
+ ls "/c/Program Files/Git/mingw64/share/git/completion/"
717
+ ```
718
+
719
+ If found, source from that location instead:
720
+
721
+ ```bash
722
+ if [ -f "/c/Program Files/Git/mingw64/share/git/completion/git-completion.bash" ]; then
723
+ . "/c/Program Files/Git/mingw64/share/git/completion/git-completion.bash"
724
+ fi
725
+ ```
726
+
727
+ **Problem**: `~/.bashrc` is not being sourced
728
+
729
+ **Solution**: Git Bash may source `~/.bash_profile` instead. Add to `~/.bash_profile`:
730
+
731
+ ```bash
732
+ if [ -f ~/.bashrc ]; then
733
+ . ~/.bashrc
734
+ fi
735
+ ```
736
+
737
+ ---
738
+
739
+ ## Post-Installation Configuration
740
+
741
+ ### Adding Completions for Homebrew Packages (macOS)
742
+
743
+ After installing tools via Homebrew, link their completions:
744
+
745
+ ```bash
746
+ brew completions link
747
+ ```
748
+
749
+ This makes completions for Homebrew-installed tools available to bash-completion.
750
+
751
+ ### Adding Custom Completions
752
+
753
+ Place custom completion scripts in the appropriate directory:
754
+
755
+ | Platform | Completion Directory |
756
+ |----------|---------------------|
757
+ | macOS (Homebrew) | `${HOMEBREW_PREFIX}/etc/bash_completion.d/` |
758
+ | Ubuntu/Debian | `/usr/share/bash-completion/completions/` |
759
+ | Amazon Linux | `/usr/share/bash-completion/completions/` |
760
+ | Git Bash | `~/bash_completion.d/` |
761
+
762
+ ### Verifying Completion is Active
763
+
764
+ Test completion functionality with any command that supports it:
765
+
766
+ ```bash
767
+ # Type a partial command and press Tab twice
768
+ git <TAB><TAB> # Shows Git subcommands
769
+ ssh <TAB><TAB> # Shows known hosts
770
+ cd <TAB><TAB> # Shows directories
771
+ ```
772
+
773
+ ---
774
+
775
+ ## Common Issues
776
+
777
+ ### Issue: Completion Works for Some Commands but Not Others
778
+
779
+ **Cause**: Not all commands ship with completion scripts. Completions must be installed separately or provided by the package.
780
+
781
+ **Solution**: Check if a completion script exists for the command:
782
+
783
+ ```bash
784
+ # On Ubuntu/Debian/Amazon Linux
785
+ ls /usr/share/bash-completion/completions/ | grep <command>
786
+
787
+ # On macOS
788
+ ls ${HOMEBREW_PREFIX}/etc/bash_completion.d/ | grep <command>
789
+ ```
790
+
791
+ ### Issue: Slow Completion Performance
792
+
793
+ **Cause**: Large completion lists or slow disk access.
794
+
795
+ **Solution**: bash-completion@2 includes lazy loading to improve performance. Ensure you are using version 2.x:
796
+
797
+ ```bash
798
+ # Check the bash_completion script version
799
+ grep -m1 "BASH_COMPLETION_VERSINFO" /usr/share/bash-completion/bash_completion 2>/dev/null || \
800
+ grep -m1 "BASH_COMPLETION_VERSINFO" ${HOMEBREW_PREFIX}/etc/profile.d/bash_completion.sh 2>/dev/null
801
+ ```
802
+
803
+ ### Issue: Completion Breaks After System Update
804
+
805
+ **Cause**: Configuration files may be overwritten or package updates may change paths.
806
+
807
+ **Solution**: Re-source your configuration and verify paths:
808
+
809
+ ```bash
810
+ source ~/.bashrc
811
+ type _init_completion
812
+ ```
813
+
814
+ ### Issue: "bash: _init_completion: command not found" After Installation
815
+
816
+ **Cause**: The completion script is not being sourced by your shell configuration.
817
+
818
+ **Solution**: Manually add the source line to your `~/.bashrc` or `~/.bash_profile` as documented in the platform-specific sections above.
819
+
820
+ ---
821
+
822
+ ## References
823
+
824
+ - [bash-completion GitHub Repository](https://github.com/scop/bash-completion)
825
+ - [bash-completion@2 Homebrew Formula](https://formulae.brew.sh/formula/bash-completion@2)
826
+ - [Homebrew Shell Completion Documentation](https://docs.brew.sh/Shell-Completion)
827
+ - [Ubuntu bash-completion Package](https://launchpad.net/ubuntu/+source/bash-completion)
828
+ - [Debian Wiki - Add Bash Completion](https://wiki.debian.org/Add%20Bash%20Completion)
829
+ - [nixCraft - How to Add Bash Auto Completion in Ubuntu Linux](https://www.cyberciti.biz/faq/add-bash-auto-completion-in-ubuntu-linux/)
830
+ - [nixCraft - RHEL/CentOS Install and Activate Bash Completion](https://www.cyberciti.biz/faq/fedora-redhat-scientific-linuxenable-bash-completion/)
831
+ - [Git Completion Script (Official)](https://github.com/git/git/blob/master/contrib/completion/git-completion.bash)
832
+ - [Microsoft - Install WSL](https://learn.microsoft.com/en-us/windows/wsl/install)
833
+ - [Microsoft - Use systemd to manage Linux services with WSL](https://learn.microsoft.com/en-us/windows/wsl/systemd)