@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.
- package/README.md +5 -5
- package/package.json +1 -1
- package/src/commands/install.js +374 -36
- package/src/installs/adobe-creative-cloud.js +527 -25
- package/src/installs/adobe-creative-cloud.md +605 -0
- package/src/installs/appcleaner.js +303 -26
- package/src/installs/appcleaner.md +699 -0
- package/src/installs/apt-transport-https.js +390 -0
- package/src/installs/apt-transport-https.md +678 -0
- package/src/installs/atomicparsley.js +624 -26
- package/src/installs/atomicparsley.md +795 -0
- package/src/installs/aws-cli.js +779 -26
- package/src/installs/aws-cli.md +727 -0
- package/src/installs/balena-etcher.js +688 -26
- package/src/installs/balena-etcher.md +761 -0
- package/src/installs/bambu-studio.js +912 -26
- package/src/installs/bambu-studio.md +780 -0
- package/src/installs/bash-completion.js +554 -23
- package/src/installs/bash-completion.md +833 -0
- package/src/installs/bash.js +399 -26
- package/src/installs/bash.md +993 -0
- package/src/installs/beyond-compare.js +585 -26
- package/src/installs/beyond-compare.md +813 -0
- package/src/installs/build-essential.js +511 -26
- package/src/installs/build-essential.md +977 -0
- package/src/installs/ca-certificates.js +618 -0
- package/src/installs/ca-certificates.md +937 -0
- package/src/installs/caffeine.js +490 -26
- package/src/installs/caffeine.md +839 -0
- package/src/installs/camtasia.js +577 -25
- package/src/installs/camtasia.md +762 -0
- package/src/installs/chatgpt.js +458 -26
- package/src/installs/chatgpt.md +814 -0
- package/src/installs/chocolatey.js +447 -0
- package/src/installs/chocolatey.md +661 -0
- package/src/installs/chrome-canary.js +472 -26
- package/src/installs/chrome-canary.md +641 -0
- package/src/installs/chromium.js +645 -26
- package/src/installs/chromium.md +838 -0
- package/src/installs/claude-code.js +558 -26
- package/src/installs/claude-code.md +1173 -0
- package/src/installs/curl.js +361 -26
- package/src/installs/curl.md +714 -0
- package/src/installs/cursor.js +561 -26
- package/src/installs/cursor.md +970 -0
- package/src/installs/dbschema.js +674 -26
- package/src/installs/dbschema.md +925 -0
- package/src/installs/dependencies.md +435 -0
- package/src/installs/development-tools.js +600 -0
- package/src/installs/development-tools.md +977 -0
- package/src/installs/docker.js +1010 -25
- package/src/installs/docker.md +1109 -0
- package/src/installs/drawio.js +1001 -26
- package/src/installs/drawio.md +795 -0
- package/src/installs/elmedia-player.js +328 -25
- package/src/installs/elmedia-player.md +556 -0
- package/src/installs/ffmpeg.js +870 -25
- package/src/installs/ffmpeg.md +852 -0
- package/src/installs/file.js +464 -0
- package/src/installs/file.md +987 -0
- package/src/installs/gemini-cli.js +793 -26
- package/src/installs/gemini-cli.md +1153 -0
- package/src/installs/git.js +382 -26
- package/src/installs/git.md +907 -0
- package/src/installs/gitego.js +931 -26
- package/src/installs/gitego.md +1172 -0
- package/src/installs/go.js +913 -26
- package/src/installs/go.md +958 -0
- package/src/installs/google-chrome.js +801 -25
- package/src/installs/google-chrome.md +862 -0
- package/src/installs/gpg.js +412 -73
- package/src/installs/gpg.md +1056 -0
- package/src/installs/homebrew.js +1015 -26
- package/src/installs/homebrew.md +988 -0
- package/src/installs/imageoptim.js +950 -26
- package/src/installs/imageoptim.md +1119 -0
- package/src/installs/installers.json +2297 -0
- package/src/installs/jq.js +382 -26
- package/src/installs/jq.md +809 -0
- package/src/installs/keyboard-maestro.js +701 -26
- package/src/installs/keyboard-maestro.md +825 -0
- package/src/installs/latex.js +771 -26
- package/src/installs/latex.md +1095 -0
- package/src/installs/lftp.js +338 -26
- package/src/installs/lftp.md +907 -0
- package/src/installs/lsb-release.js +346 -0
- package/src/installs/lsb-release.md +814 -0
- package/src/installs/messenger.js +829 -26
- package/src/installs/messenger.md +900 -0
- package/src/installs/microsoft-office.js +550 -26
- package/src/installs/microsoft-office.md +760 -0
- package/src/installs/microsoft-teams.js +782 -25
- package/src/installs/microsoft-teams.md +886 -0
- package/src/installs/node.js +886 -26
- package/src/installs/node.md +1153 -0
- package/src/installs/nordpass.js +698 -26
- package/src/installs/nordpass.md +921 -0
- package/src/installs/nvm.js +977 -26
- package/src/installs/nvm.md +1057 -0
- package/src/installs/openssh.js +734 -64
- package/src/installs/openssh.md +1056 -0
- package/src/installs/pandoc.js +644 -26
- package/src/installs/pandoc.md +1036 -0
- package/src/installs/pinentry.js +492 -26
- package/src/installs/pinentry.md +1142 -0
- package/src/installs/pngyu.js +851 -26
- package/src/installs/pngyu.md +896 -0
- package/src/installs/postman.js +781 -26
- package/src/installs/postman.md +940 -0
- package/src/installs/procps.js +425 -0
- package/src/installs/procps.md +851 -0
- package/src/installs/safari-tech-preview.js +355 -25
- package/src/installs/safari-tech-preview.md +533 -0
- package/src/installs/sfnt2woff.js +640 -26
- package/src/installs/sfnt2woff.md +795 -0
- package/src/installs/shellcheck.js +463 -26
- package/src/installs/shellcheck.md +1005 -0
- package/src/installs/slack.js +722 -25
- package/src/installs/slack.md +865 -0
- package/src/installs/snagit.js +566 -25
- package/src/installs/snagit.md +844 -0
- package/src/installs/software-properties-common.js +372 -0
- package/src/installs/software-properties-common.md +805 -0
- package/src/installs/spotify.js +858 -25
- package/src/installs/spotify.md +901 -0
- package/src/installs/studio-3t.js +803 -26
- package/src/installs/studio-3t.md +918 -0
- package/src/installs/sublime-text.js +780 -25
- package/src/installs/sublime-text.md +914 -0
- package/src/installs/superwhisper.js +687 -25
- package/src/installs/superwhisper.md +630 -0
- package/src/installs/tailscale.js +727 -26
- package/src/installs/tailscale.md +1100 -0
- package/src/installs/tar.js +389 -0
- package/src/installs/tar.md +946 -0
- package/src/installs/termius.js +780 -26
- package/src/installs/termius.md +844 -0
- package/src/installs/terraform.js +761 -26
- package/src/installs/terraform.md +899 -0
- package/src/installs/tidal.js +752 -25
- package/src/installs/tidal.md +864 -0
- package/src/installs/tmux.js +328 -26
- package/src/installs/tmux.md +1030 -0
- package/src/installs/tree.js +393 -26
- package/src/installs/tree.md +833 -0
- package/src/installs/unzip.js +460 -0
- package/src/installs/unzip.md +879 -0
- package/src/installs/vim.js +403 -26
- package/src/installs/vim.md +1040 -0
- package/src/installs/vlc.js +803 -26
- package/src/installs/vlc.md +927 -0
- package/src/installs/vscode.js +825 -26
- package/src/installs/vscode.md +1002 -0
- package/src/installs/wget.js +415 -0
- package/src/installs/wget.md +791 -0
- package/src/installs/whatsapp.js +710 -25
- package/src/installs/whatsapp.md +854 -0
- package/src/installs/winpty.js +352 -0
- package/src/installs/winpty.md +620 -0
- package/src/installs/woff2.js +535 -26
- package/src/installs/woff2.md +977 -0
- package/src/installs/wsl.js +572 -0
- package/src/installs/wsl.md +699 -0
- package/src/installs/xcode-clt.js +520 -0
- package/src/installs/xcode-clt.md +351 -0
- package/src/installs/xcode.js +542 -26
- package/src/installs/xcode.md +573 -0
- package/src/installs/yarn.js +806 -26
- package/src/installs/yarn.md +1074 -0
- package/src/installs/yq.js +636 -26
- package/src/installs/yq.md +944 -0
- package/src/installs/yt-dlp.js +683 -26
- package/src/installs/yt-dlp.md +946 -0
- package/src/installs/yum-utils.js +297 -0
- package/src/installs/yum-utils.md +648 -0
- package/src/installs/zoom.js +740 -25
- package/src/installs/zoom.md +884 -0
- package/src/scripts/README.md +567 -45
- package/src/scripts/STATUS.md +208 -0
- package/src/scripts/afk.js +395 -7
- package/src/scripts/backup-all.js +731 -9
- package/src/scripts/backup-source.js +711 -8
- package/src/scripts/brewd.js +373 -7
- package/src/scripts/brewi.js +505 -9
- package/src/scripts/brewr.js +512 -9
- package/src/scripts/brews.js +462 -9
- package/src/scripts/brewu.js +488 -7
- package/src/scripts/c.js +185 -7
- package/src/scripts/ccurl.js +325 -8
- package/src/scripts/certbot-crontab-init.js +488 -8
- package/src/scripts/certbot-init.js +641 -9
- package/src/scripts/ch.js +339 -7
- package/src/scripts/claude-danger.js +253 -8
- package/src/scripts/clean-dev.js +419 -8
- package/src/scripts/clear-dns-cache.js +525 -7
- package/src/scripts/clone.js +417 -7
- package/src/scripts/code-all.js +420 -7
- package/src/scripts/count-files.js +195 -8
- package/src/scripts/count-folders.js +195 -8
- package/src/scripts/count.js +248 -8
- package/src/scripts/d.js +203 -7
- package/src/scripts/datauri.js +373 -8
- package/src/scripts/delete-files.js +363 -7
- package/src/scripts/docker-clean.js +410 -8
- package/src/scripts/dp.js +426 -7
- package/src/scripts/e.js +375 -9
- package/src/scripts/empty-trash.js +497 -7
- package/src/scripts/evm.js +428 -9
- package/src/scripts/fetch-github-repos.js +441 -10
- package/src/scripts/get-channel.js +329 -8
- package/src/scripts/get-course.js +384 -11
- package/src/scripts/get-dependencies.js +290 -9
- package/src/scripts/get-folder.js +783 -10
- package/src/scripts/get-tunes.js +411 -10
- package/src/scripts/get-video.js +352 -9
- package/src/scripts/git-backup.js +561 -9
- package/src/scripts/git-clone.js +477 -9
- package/src/scripts/git-pup.js +303 -7
- package/src/scripts/git-push.js +380 -8
- package/src/scripts/h.js +607 -9
- package/src/scripts/hide-desktop-icons.js +483 -7
- package/src/scripts/hide-hidden-files.js +522 -7
- package/src/scripts/install-dependencies-from.js +440 -9
- package/src/scripts/ips.js +647 -10
- package/src/scripts/iso.js +354 -8
- package/src/scripts/killni.js +561 -7
- package/src/scripts/ll.js +451 -8
- package/src/scripts/local-ip.js +310 -8
- package/src/scripts/m.js +508 -8
- package/src/scripts/map.js +293 -8
- package/src/scripts/mkd.js +287 -7
- package/src/scripts/ncu-update-all.js +441 -8
- package/src/scripts/nginx-init.js +702 -12
- package/src/scripts/npmi.js +366 -7
- package/src/scripts/o.js +495 -8
- package/src/scripts/org-by-date.js +321 -7
- package/src/scripts/p.js +208 -7
- package/src/scripts/packages.js +313 -8
- package/src/scripts/path.js +209 -7
- package/src/scripts/ports.js +582 -8
- package/src/scripts/q.js +290 -8
- package/src/scripts/refresh-files.js +378 -10
- package/src/scripts/remove-smaller-files.js +500 -8
- package/src/scripts/rename-files-with-date.js +517 -9
- package/src/scripts/resize-image.js +523 -9
- package/src/scripts/rm-safe.js +653 -8
- package/src/scripts/s.js +525 -9
- package/src/scripts/set-git-public.js +349 -7
- package/src/scripts/show-desktop-icons.js +459 -7
- package/src/scripts/show-hidden-files.js +456 -7
- package/src/scripts/tpa.js +265 -8
- package/src/scripts/tpo.js +264 -7
- package/src/scripts/u.js +489 -7
- package/src/scripts/vpush.js +422 -8
- package/src/scripts/y.js +267 -7
- package/src/utils/common/os.js +94 -2
- package/src/utils/ubuntu/apt.js +13 -7
- package/src/utils/windows/choco.js +82 -26
- package/src/utils/windows/winget.js +89 -27
|
@@ -0,0 +1,833 @@
|
|
|
1
|
+
# Installing Tree
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Tree is a recursive directory listing command-line utility that produces a depth-indented listing of files and directories in a tree-like format. It provides a visual representation of a directory structure, making it easy to understand folder hierarchies at a glance. Tree is invaluable for developers, system administrators, and anyone who works with complex directory structures.
|
|
6
|
+
|
|
7
|
+
Tree displays:
|
|
8
|
+
- Directory hierarchy with indentation showing parent-child relationships
|
|
9
|
+
- File and directory counts at the end of output
|
|
10
|
+
- Optional colorized output when the `LS_COLORS` environment variable is set
|
|
11
|
+
- Optional HTML output for documentation purposes
|
|
12
|
+
|
|
13
|
+
Common use cases include:
|
|
14
|
+
- Documenting project structures for README files
|
|
15
|
+
- Understanding unfamiliar codebases
|
|
16
|
+
- Verifying deployment directory layouts
|
|
17
|
+
- Debugging file organization issues
|
|
18
|
+
- Generating visual documentation of folder structures
|
|
19
|
+
|
|
20
|
+
The original Unix tree command was written by Steve Baker and is licensed under the GNU General Public License v2 (GPL-2.0).
|
|
21
|
+
|
|
22
|
+
## Dependencies
|
|
23
|
+
|
|
24
|
+
### macOS (Homebrew)
|
|
25
|
+
- **Required:**
|
|
26
|
+
- Homebrew - Install via `dev install homebrew` or `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"`
|
|
27
|
+
- **Optional:** None
|
|
28
|
+
- **Auto-installed:** None
|
|
29
|
+
|
|
30
|
+
### Ubuntu (APT/Snap)
|
|
31
|
+
- **Required:** None (APT package manager is pre-installed on Ubuntu)
|
|
32
|
+
- **Optional:** None
|
|
33
|
+
- **Auto-installed:** None
|
|
34
|
+
|
|
35
|
+
### Raspberry Pi OS (APT/Snap)
|
|
36
|
+
- **Required:** None (APT package manager is pre-installed on Raspberry Pi OS)
|
|
37
|
+
- **Optional:** None
|
|
38
|
+
- **Auto-installed:** None
|
|
39
|
+
|
|
40
|
+
### Amazon Linux (DNF/YUM)
|
|
41
|
+
- **Required:** None (DNF is pre-installed on Amazon Linux 2023, YUM is pre-installed on Amazon Linux 2)
|
|
42
|
+
- **Optional:** None
|
|
43
|
+
- **Auto-installed:** None
|
|
44
|
+
|
|
45
|
+
### Windows (Chocolatey/winget)
|
|
46
|
+
- **Required:**
|
|
47
|
+
- Chocolatey - Install via `dev install chocolatey` or follow instructions at https://chocolatey.org/install
|
|
48
|
+
- **Optional:**
|
|
49
|
+
- winget (pre-installed on Windows 10 version 1809+ and Windows 11) - Can be used as alternative to Chocolatey via `winget install --id GnuWin32.Tree`
|
|
50
|
+
- **Auto-installed:** None
|
|
51
|
+
|
|
52
|
+
### Git Bash (Manual/Portable)
|
|
53
|
+
- **Required:**
|
|
54
|
+
- `curl` - Pre-bundled with Git for Windows (https://git-scm.com/download/win)
|
|
55
|
+
- `unzip` - Included in recent Git for Windows versions (https://git-scm.com/download/win)
|
|
56
|
+
- **Optional:** None
|
|
57
|
+
- **Auto-installed:** None
|
|
58
|
+
|
|
59
|
+
## Prerequisites
|
|
60
|
+
|
|
61
|
+
Before installing tree on any platform, ensure:
|
|
62
|
+
|
|
63
|
+
1. **Internet connectivity** - Required to download packages
|
|
64
|
+
2. **Administrative privileges** - Required on most platforms for system-wide installation
|
|
65
|
+
3. **Package manager installed** - Each platform requires its respective package manager (Homebrew, APT, DNF/YUM, Chocolatey, etc.)
|
|
66
|
+
|
|
67
|
+
## Platform-Specific Installation
|
|
68
|
+
|
|
69
|
+
### macOS (Homebrew)
|
|
70
|
+
|
|
71
|
+
#### Prerequisites
|
|
72
|
+
|
|
73
|
+
- macOS 10.15 (Catalina) or later (macOS 14 Sonoma or later recommended)
|
|
74
|
+
- Homebrew package manager installed
|
|
75
|
+
- Terminal access
|
|
76
|
+
|
|
77
|
+
If Homebrew is not installed, install it first:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
#### Installation Steps
|
|
84
|
+
|
|
85
|
+
Run the following command to install tree via Homebrew:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
brew install --quiet tree
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
The `--quiet` flag suppresses non-essential output, making the command suitable for automation scripts and CI/CD pipelines.
|
|
92
|
+
|
|
93
|
+
#### Verification
|
|
94
|
+
|
|
95
|
+
Confirm the installation succeeded:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
tree --version
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Expected output (version numbers may vary):
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
tree v2.2.1 (c) 1996 - 2024 by Steve Baker, Thomas Moore, Francesc Rocher, Florian Sesser, Kyosuke Tokoro
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Verify the installation path:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
which tree
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Expected output: `/opt/homebrew/bin/tree` (Apple Silicon) or `/usr/local/bin/tree` (Intel).
|
|
114
|
+
|
|
115
|
+
Test the command on a directory:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
tree -L 1 --dirsfirst .
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
This displays the current directory structure limited to one level deep, with directories listed before files.
|
|
122
|
+
|
|
123
|
+
#### Troubleshooting
|
|
124
|
+
|
|
125
|
+
**Problem**: `tree: command not found` after installation
|
|
126
|
+
|
|
127
|
+
**Solution**: Homebrew may not be in your PATH. For Apple Silicon Macs, add Homebrew to your PATH:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
eval "$(/opt/homebrew/bin/brew shellenv)"
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
For a permanent fix, add this to your shell configuration:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc && source ~/.zshrc
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**Problem**: `brew install tree` fails with permission errors
|
|
140
|
+
|
|
141
|
+
**Solution**: Fix Homebrew directory ownership:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
sudo chown -R $(whoami) $(brew --prefix)/*
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
**Problem**: Installation fails with network errors
|
|
148
|
+
|
|
149
|
+
**Solution**: Check your internet connection and try again. If behind a corporate proxy, configure Homebrew to use it:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
export ALL_PROXY=http://proxy.example.com:8080
|
|
153
|
+
brew install --quiet tree
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
### Ubuntu/Debian (APT)
|
|
159
|
+
|
|
160
|
+
#### Prerequisites
|
|
161
|
+
|
|
162
|
+
- Ubuntu 18.04 LTS or later, or Debian 10 (Buster) or later
|
|
163
|
+
- sudo privileges
|
|
164
|
+
- Internet connectivity
|
|
165
|
+
|
|
166
|
+
Tree is available in the default Ubuntu and Debian repositories and does not require adding external PPAs.
|
|
167
|
+
|
|
168
|
+
#### Installation Steps
|
|
169
|
+
|
|
170
|
+
Run the following command to update package lists and install tree:
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y tree
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
The `DEBIAN_FRONTEND=noninteractive` environment variable and `-y` flag ensure fully automated installation without prompts.
|
|
177
|
+
|
|
178
|
+
#### Verification
|
|
179
|
+
|
|
180
|
+
Confirm the installation succeeded:
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
tree --version
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Expected output (version numbers may vary depending on your distribution version):
|
|
187
|
+
|
|
188
|
+
```
|
|
189
|
+
tree v2.1.0 (c) 1996 - 2022 by Steve Baker, Thomas Moore, Francesc Rocher, Florian Sesser, Kyosuke Tokoro
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Verify the installation path:
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
which tree
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
Expected output: `/usr/bin/tree`
|
|
199
|
+
|
|
200
|
+
Check the installed package version:
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
dpkg -l tree
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
#### Troubleshooting
|
|
207
|
+
|
|
208
|
+
**Problem**: `E: Unable to locate package tree`
|
|
209
|
+
|
|
210
|
+
**Solution**: Update the package list first:
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
**Problem**: `Permission denied` errors
|
|
217
|
+
|
|
218
|
+
**Solution**: Ensure you are using `sudo` with the installation command.
|
|
219
|
+
|
|
220
|
+
**Problem**: Older tree version than expected
|
|
221
|
+
|
|
222
|
+
**Solution**: Ubuntu/Debian repositories prioritize stability over bleeding-edge releases. The repository version is sufficient for most use cases. For the latest version, you can build from source (see Common Issues section).
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
### Raspberry Pi OS (APT)
|
|
227
|
+
|
|
228
|
+
#### Prerequisites
|
|
229
|
+
|
|
230
|
+
- Raspberry Pi OS (32-bit or 64-bit)
|
|
231
|
+
- Raspberry Pi 2 or later (Raspberry Pi 3B+ or later recommended for 64-bit)
|
|
232
|
+
- sudo privileges
|
|
233
|
+
- Internet connectivity
|
|
234
|
+
|
|
235
|
+
Raspberry Pi OS is based on Debian, so tree installation follows the same APT-based process. The package is available for both ARM architectures (armhf for 32-bit and arm64 for 64-bit).
|
|
236
|
+
|
|
237
|
+
#### Installation Steps
|
|
238
|
+
|
|
239
|
+
Run the following command to update package lists and install tree:
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y tree
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
The `DEBIAN_FRONTEND=noninteractive` environment variable and `-y` flag ensure fully automated installation without prompts.
|
|
246
|
+
|
|
247
|
+
#### Verification
|
|
248
|
+
|
|
249
|
+
Confirm the installation succeeded:
|
|
250
|
+
|
|
251
|
+
```bash
|
|
252
|
+
tree --version
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
Expected output (version numbers may vary):
|
|
256
|
+
|
|
257
|
+
```
|
|
258
|
+
tree v2.1.0 (c) 1996 - 2022 by Steve Baker, Thomas Moore, Francesc Rocher, Florian Sesser, Kyosuke Tokoro
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
Verify your architecture:
|
|
262
|
+
|
|
263
|
+
```bash
|
|
264
|
+
uname -m
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
Expected output: `aarch64` (64-bit) or `armv7l` (32-bit).
|
|
268
|
+
|
|
269
|
+
Verify the installation path:
|
|
270
|
+
|
|
271
|
+
```bash
|
|
272
|
+
which tree
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
Expected output: `/usr/bin/tree`
|
|
276
|
+
|
|
277
|
+
#### Troubleshooting
|
|
278
|
+
|
|
279
|
+
**Problem**: `E: Unable to locate package tree`
|
|
280
|
+
|
|
281
|
+
**Solution**: Update the package list first:
|
|
282
|
+
|
|
283
|
+
```bash
|
|
284
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
**Problem**: Very slow download speeds
|
|
288
|
+
|
|
289
|
+
**Solution**: Raspberry Pi may have limited bandwidth. Use a wired ethernet connection for faster downloads, or wait for the installation to complete.
|
|
290
|
+
|
|
291
|
+
**Problem**: Installation fails with disk space errors
|
|
292
|
+
|
|
293
|
+
**Solution**: Check available disk space and clean up if needed:
|
|
294
|
+
|
|
295
|
+
```bash
|
|
296
|
+
df -h
|
|
297
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get autoremove -y
|
|
298
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get clean
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
### Amazon Linux (DNF/YUM)
|
|
304
|
+
|
|
305
|
+
#### Prerequisites
|
|
306
|
+
|
|
307
|
+
- Amazon Linux 2023 (AL2023) or Amazon Linux 2 (AL2)
|
|
308
|
+
- sudo privileges
|
|
309
|
+
- Internet connectivity
|
|
310
|
+
|
|
311
|
+
Tree is available in the default Amazon Linux repositories. Amazon Linux 2023 uses `dnf` as the package manager, while Amazon Linux 2 uses `yum`. On AL2023, `yum` is aliased to `dnf` for backward compatibility.
|
|
312
|
+
|
|
313
|
+
#### Installation Steps
|
|
314
|
+
|
|
315
|
+
**For Amazon Linux 2023:**
|
|
316
|
+
|
|
317
|
+
Run the following command to install tree:
|
|
318
|
+
|
|
319
|
+
```bash
|
|
320
|
+
sudo dnf install -y tree
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
**For Amazon Linux 2:**
|
|
324
|
+
|
|
325
|
+
Run the following command to install tree:
|
|
326
|
+
|
|
327
|
+
```bash
|
|
328
|
+
sudo yum install -y tree
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
The `-y` flag automatically confirms installation prompts, enabling non-interactive execution.
|
|
332
|
+
|
|
333
|
+
#### Verification
|
|
334
|
+
|
|
335
|
+
Confirm the installation succeeded:
|
|
336
|
+
|
|
337
|
+
```bash
|
|
338
|
+
tree --version
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
Expected output (version numbers may vary):
|
|
342
|
+
|
|
343
|
+
```
|
|
344
|
+
tree v2.1.0 (c) 1996 - 2022 by Steve Baker, Thomas Moore, Francesc Rocher, Florian Sesser, Kyosuke Tokoro
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
Check which tree package is installed:
|
|
348
|
+
|
|
349
|
+
```bash
|
|
350
|
+
rpm -q tree
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
Expected output: `tree-2.1.0-2.amzn2023.x86_64` or similar.
|
|
354
|
+
|
|
355
|
+
#### Troubleshooting
|
|
356
|
+
|
|
357
|
+
**Problem**: `No match for argument: tree`
|
|
358
|
+
|
|
359
|
+
**Solution**: Refresh the repository cache:
|
|
360
|
+
|
|
361
|
+
```bash
|
|
362
|
+
sudo dnf makecache
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
Or for Amazon Linux 2:
|
|
366
|
+
|
|
367
|
+
```bash
|
|
368
|
+
sudo yum makecache
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
**Problem**: `dnf: command not found` on Amazon Linux 2
|
|
372
|
+
|
|
373
|
+
**Solution**: Use `yum` instead of `dnf` on Amazon Linux 2:
|
|
374
|
+
|
|
375
|
+
```bash
|
|
376
|
+
sudo yum install -y tree
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
**Problem**: Permission denied when running tree
|
|
380
|
+
|
|
381
|
+
**Solution**: This is unusual for tree. Check that the binary has execute permissions:
|
|
382
|
+
|
|
383
|
+
```bash
|
|
384
|
+
ls -la /usr/bin/tree
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
---
|
|
388
|
+
|
|
389
|
+
### Windows (Chocolatey)
|
|
390
|
+
|
|
391
|
+
#### Prerequisites
|
|
392
|
+
|
|
393
|
+
- Windows 10 (version 1803+) or Windows 11
|
|
394
|
+
- Chocolatey package manager installed
|
|
395
|
+
- Administrator PowerShell or Command Prompt
|
|
396
|
+
|
|
397
|
+
**Note**: Windows includes a built-in `tree` command that displays directory structure in ASCII format. The steps below install the GnuWin32 tree, which provides additional features like colorized output and extended options matching the Unix version.
|
|
398
|
+
|
|
399
|
+
If Chocolatey is not installed, install it first by running this command in an Administrator PowerShell:
|
|
400
|
+
|
|
401
|
+
```powershell
|
|
402
|
+
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
#### Installation Steps
|
|
406
|
+
|
|
407
|
+
Run the following command in an Administrator PowerShell or Command Prompt:
|
|
408
|
+
|
|
409
|
+
```powershell
|
|
410
|
+
choco install tree -y
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
The `-y` flag automatically confirms all prompts, enabling fully non-interactive installation.
|
|
414
|
+
|
|
415
|
+
Chocolatey installs the GnuWin32 version of tree (version 1.5.2.2), which provides Unix-compatible options and colorized output support.
|
|
416
|
+
|
|
417
|
+
#### Verification
|
|
418
|
+
|
|
419
|
+
Open a **new** Command Prompt or PowerShell window (required for PATH to update), then run:
|
|
420
|
+
|
|
421
|
+
```powershell
|
|
422
|
+
tree --version
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
Expected output:
|
|
426
|
+
|
|
427
|
+
```
|
|
428
|
+
tree v1.5.2.2 (c) 2004-2009 by Steve Baker, Thomas Moore, Francesc Rocher, Florian Sesser
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
Verify the installation path:
|
|
432
|
+
|
|
433
|
+
```powershell
|
|
434
|
+
where tree
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
Expected output should include: `C:\ProgramData\chocolatey\bin\tree.exe`
|
|
438
|
+
|
|
439
|
+
**Note**: You may also see `C:\Windows\System32\tree.com` listed, which is the built-in Windows tree command. The Chocolatey-installed version takes precedence due to PATH ordering.
|
|
440
|
+
|
|
441
|
+
#### Troubleshooting
|
|
442
|
+
|
|
443
|
+
**Problem**: `tree --version` shows "Invalid switch" error
|
|
444
|
+
|
|
445
|
+
**Solution**: The built-in Windows tree command is being invoked instead of the GnuWin32 version. Use the full path:
|
|
446
|
+
|
|
447
|
+
```powershell
|
|
448
|
+
"C:\ProgramData\chocolatey\bin\tree.exe" --version
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
Or ensure Chocolatey's bin directory appears before System32 in your PATH.
|
|
452
|
+
|
|
453
|
+
**Problem**: `choco` command not found
|
|
454
|
+
|
|
455
|
+
**Solution**: Chocolatey may not be in PATH. Close all terminal windows, open a new Administrator PowerShell, and try again. If the issue persists, reinstall Chocolatey.
|
|
456
|
+
|
|
457
|
+
**Problem**: Installation fails with access denied
|
|
458
|
+
|
|
459
|
+
**Solution**: Ensure you are running PowerShell or Command Prompt as Administrator. Right-click and select "Run as administrator".
|
|
460
|
+
|
|
461
|
+
**Problem**: Prefer using winget instead of Chocolatey
|
|
462
|
+
|
|
463
|
+
**Solution**: winget is also supported. Run the following in PowerShell or Command Prompt:
|
|
464
|
+
|
|
465
|
+
```powershell
|
|
466
|
+
winget install --id GnuWin32.Tree --silent --accept-package-agreements --accept-source-agreements
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
The `--silent` flag ensures non-interactive installation.
|
|
470
|
+
|
|
471
|
+
---
|
|
472
|
+
|
|
473
|
+
### WSL (Ubuntu)
|
|
474
|
+
|
|
475
|
+
#### Prerequisites
|
|
476
|
+
|
|
477
|
+
- Windows 10 version 2004+ or Windows 11
|
|
478
|
+
- Windows Subsystem for Linux (WSL) with Ubuntu installed
|
|
479
|
+
- WSL 2 recommended for best performance
|
|
480
|
+
- sudo privileges within WSL
|
|
481
|
+
|
|
482
|
+
WSL Ubuntu installations follow the same process as native Ubuntu, using APT.
|
|
483
|
+
|
|
484
|
+
#### Installation Steps
|
|
485
|
+
|
|
486
|
+
Open your WSL Ubuntu terminal and run:
|
|
487
|
+
|
|
488
|
+
```bash
|
|
489
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y tree
|
|
490
|
+
```
|
|
491
|
+
|
|
492
|
+
The `DEBIAN_FRONTEND=noninteractive` environment variable and `-y` flag ensure fully automated installation without prompts.
|
|
493
|
+
|
|
494
|
+
#### Verification
|
|
495
|
+
|
|
496
|
+
Confirm the installation succeeded:
|
|
497
|
+
|
|
498
|
+
```bash
|
|
499
|
+
tree --version
|
|
500
|
+
```
|
|
501
|
+
|
|
502
|
+
Expected output (version numbers may vary):
|
|
503
|
+
|
|
504
|
+
```
|
|
505
|
+
tree v2.1.0 (c) 1996 - 2022 by Steve Baker, Thomas Moore, Francesc Rocher, Florian Sesser, Kyosuke Tokoro
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
Verify the installation path:
|
|
509
|
+
|
|
510
|
+
```bash
|
|
511
|
+
which tree
|
|
512
|
+
```
|
|
513
|
+
|
|
514
|
+
Expected output: `/usr/bin/tree`
|
|
515
|
+
|
|
516
|
+
#### Troubleshooting
|
|
517
|
+
|
|
518
|
+
**Problem**: `E: Unable to locate package tree`
|
|
519
|
+
|
|
520
|
+
**Solution**: Update the package list first:
|
|
521
|
+
|
|
522
|
+
```bash
|
|
523
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
**Problem**: WSL itself is not installed
|
|
527
|
+
|
|
528
|
+
**Solution**: Install WSL from an Administrator PowerShell on Windows:
|
|
529
|
+
|
|
530
|
+
```powershell
|
|
531
|
+
wsl --install
|
|
532
|
+
```
|
|
533
|
+
|
|
534
|
+
Restart your computer after installation.
|
|
535
|
+
|
|
536
|
+
**Problem**: Network connectivity issues in WSL
|
|
537
|
+
|
|
538
|
+
**Solution**: WSL may have DNS resolution issues. Try restarting WSL:
|
|
539
|
+
|
|
540
|
+
```powershell
|
|
541
|
+
# From Windows PowerShell
|
|
542
|
+
wsl --shutdown
|
|
543
|
+
wsl
|
|
544
|
+
```
|
|
545
|
+
|
|
546
|
+
---
|
|
547
|
+
|
|
548
|
+
### Git Bash (Manual/Portable)
|
|
549
|
+
|
|
550
|
+
#### Prerequisites
|
|
551
|
+
|
|
552
|
+
- Windows 10 or Windows 11
|
|
553
|
+
- Git for Windows installed (includes Git Bash)
|
|
554
|
+
- Internet connectivity
|
|
555
|
+
|
|
556
|
+
Git Bash does not include tree by default. You must download the Windows binary and place it in a directory included in Git Bash's PATH.
|
|
557
|
+
|
|
558
|
+
#### Installation Steps
|
|
559
|
+
|
|
560
|
+
Open Git Bash and run the following commands:
|
|
561
|
+
|
|
562
|
+
**Step 1: Create the local bin directory (if it does not exist)**
|
|
563
|
+
|
|
564
|
+
```bash
|
|
565
|
+
mkdir -p /usr/local/bin
|
|
566
|
+
```
|
|
567
|
+
|
|
568
|
+
**Step 2: Download the tree binary from GnuWin32**
|
|
569
|
+
|
|
570
|
+
First, download the zip file and extract tree.exe:
|
|
571
|
+
|
|
572
|
+
```bash
|
|
573
|
+
curl -L -o /tmp/tree.zip https://downloads.sourceforge.net/gnuwin32/tree-1.5.2.2-bin.zip && unzip -o -j /tmp/tree.zip bin/tree.exe -d /usr/local/bin && rm /tmp/tree.zip
|
|
574
|
+
```
|
|
575
|
+
|
|
576
|
+
This command:
|
|
577
|
+
1. Downloads the GnuWin32 tree binary package to a temporary location
|
|
578
|
+
2. Extracts only the `tree.exe` file to `/usr/local/bin`
|
|
579
|
+
3. Cleans up the temporary zip file
|
|
580
|
+
|
|
581
|
+
**Alternative: Copy from Chocolatey installation**
|
|
582
|
+
|
|
583
|
+
If you have already installed tree via Chocolatey on Windows, you can copy the binary to Git Bash:
|
|
584
|
+
|
|
585
|
+
```bash
|
|
586
|
+
cp "/c/ProgramData/chocolatey/bin/tree.exe" /usr/local/bin/
|
|
587
|
+
```
|
|
588
|
+
|
|
589
|
+
**Alternative: Use Windows CMD tree command**
|
|
590
|
+
|
|
591
|
+
If you prefer not to install anything, you can use the built-in Windows tree command from Git Bash:
|
|
592
|
+
|
|
593
|
+
```bash
|
|
594
|
+
cmd //c tree
|
|
595
|
+
```
|
|
596
|
+
|
|
597
|
+
Note: This uses the Windows version, which has different options than the Unix version.
|
|
598
|
+
|
|
599
|
+
#### Verification
|
|
600
|
+
|
|
601
|
+
Confirm the installation succeeded:
|
|
602
|
+
|
|
603
|
+
```bash
|
|
604
|
+
tree --version
|
|
605
|
+
```
|
|
606
|
+
|
|
607
|
+
Expected output:
|
|
608
|
+
|
|
609
|
+
```
|
|
610
|
+
tree v1.5.2.2 (c) 2004-2009 by Steve Baker, Thomas Moore, Francesc Rocher, Florian Sesser
|
|
611
|
+
```
|
|
612
|
+
|
|
613
|
+
Verify tree is accessible:
|
|
614
|
+
|
|
615
|
+
```bash
|
|
616
|
+
which tree
|
|
617
|
+
```
|
|
618
|
+
|
|
619
|
+
Expected output: `/usr/local/bin/tree`
|
|
620
|
+
|
|
621
|
+
Test the command:
|
|
622
|
+
|
|
623
|
+
```bash
|
|
624
|
+
tree -L 1 .
|
|
625
|
+
```
|
|
626
|
+
|
|
627
|
+
#### Troubleshooting
|
|
628
|
+
|
|
629
|
+
**Problem**: `tree: command not found`
|
|
630
|
+
|
|
631
|
+
**Solution**: The `/usr/local/bin` directory may not be in Git Bash's PATH. Add it manually:
|
|
632
|
+
|
|
633
|
+
```bash
|
|
634
|
+
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc
|
|
635
|
+
```
|
|
636
|
+
|
|
637
|
+
**Problem**: Permission denied when downloading
|
|
638
|
+
|
|
639
|
+
**Solution**: Run Git Bash as Administrator. Press Windows key, type "Git Bash", then press Ctrl+Shift+Enter.
|
|
640
|
+
|
|
641
|
+
**Problem**: SSL certificate errors during download
|
|
642
|
+
|
|
643
|
+
**Solution**: Update the CA certificates or use the `-k` flag (not recommended for production):
|
|
644
|
+
|
|
645
|
+
```bash
|
|
646
|
+
curl -k -L -o /tmp/tree.zip https://downloads.sourceforge.net/gnuwin32/tree-1.5.2.2-bin.zip
|
|
647
|
+
```
|
|
648
|
+
|
|
649
|
+
**Problem**: `unzip: command not found`
|
|
650
|
+
|
|
651
|
+
**Solution**: Git Bash includes unzip by default in recent versions. If missing, download and extract manually on Windows, then copy tree.exe to the Git Bash bin directory.
|
|
652
|
+
|
|
653
|
+
**Problem**: Want to install to Git's built-in bin directory
|
|
654
|
+
|
|
655
|
+
**Solution**: Alternatively, copy to Git's usr/bin directory (requires running Git Bash as Administrator):
|
|
656
|
+
|
|
657
|
+
```bash
|
|
658
|
+
curl -L -o /tmp/tree.zip https://downloads.sourceforge.net/gnuwin32/tree-1.5.2.2-bin.zip && unzip -o -j /tmp/tree.zip bin/tree.exe -d /usr/bin && rm /tmp/tree.zip
|
|
659
|
+
```
|
|
660
|
+
|
|
661
|
+
---
|
|
662
|
+
|
|
663
|
+
## Post-Installation Configuration
|
|
664
|
+
|
|
665
|
+
Tree works out of the box for most use cases. The following optional tips may be useful:
|
|
666
|
+
|
|
667
|
+
### Shell Aliases
|
|
668
|
+
|
|
669
|
+
Create convenient aliases for common tree operations. Add to your shell configuration file (`~/.bashrc`, `~/.zshrc`, or `~/.bash_profile`):
|
|
670
|
+
|
|
671
|
+
```bash
|
|
672
|
+
# Show directory tree with directories first, limited depth
|
|
673
|
+
alias t='tree -L 2 --dirsfirst'
|
|
674
|
+
|
|
675
|
+
# Show hidden files
|
|
676
|
+
alias ta='tree -a -L 2 --dirsfirst'
|
|
677
|
+
|
|
678
|
+
# Show only directories
|
|
679
|
+
alias td='tree -d -L 2'
|
|
680
|
+
|
|
681
|
+
# Show with file sizes
|
|
682
|
+
alias ts='tree -sh --dirsfirst'
|
|
683
|
+
|
|
684
|
+
# Show with permissions and ownership (Unix-like systems)
|
|
685
|
+
alias tl='tree -pughD --dirsfirst'
|
|
686
|
+
```
|
|
687
|
+
|
|
688
|
+
### Colorized Output
|
|
689
|
+
|
|
690
|
+
Tree supports colorized output when the `LS_COLORS` environment variable is set. Most modern Linux and macOS terminals have this configured by default.
|
|
691
|
+
|
|
692
|
+
To verify colorized output is working:
|
|
693
|
+
|
|
694
|
+
```bash
|
|
695
|
+
tree -C .
|
|
696
|
+
```
|
|
697
|
+
|
|
698
|
+
The `-C` flag forces color output even when piping to another command.
|
|
699
|
+
|
|
700
|
+
### Ignoring Directories
|
|
701
|
+
|
|
702
|
+
To exclude specific directories from tree output (useful for large projects):
|
|
703
|
+
|
|
704
|
+
```bash
|
|
705
|
+
# Exclude node_modules and .git directories
|
|
706
|
+
tree -I 'node_modules|.git' -L 3 --dirsfirst
|
|
707
|
+
```
|
|
708
|
+
|
|
709
|
+
### Output to File
|
|
710
|
+
|
|
711
|
+
Generate a tree structure for documentation:
|
|
712
|
+
|
|
713
|
+
```bash
|
|
714
|
+
# Plain text output
|
|
715
|
+
tree -L 3 --dirsfirst > directory_structure.txt
|
|
716
|
+
|
|
717
|
+
# With charset for universal compatibility
|
|
718
|
+
tree -L 3 --dirsfirst --charset=ascii > directory_structure.txt
|
|
719
|
+
```
|
|
720
|
+
|
|
721
|
+
---
|
|
722
|
+
|
|
723
|
+
## Common Issues
|
|
724
|
+
|
|
725
|
+
### Issue: Tree Output Truncated in Terminal
|
|
726
|
+
|
|
727
|
+
**Symptoms**: Large directory trees are cut off or difficult to read.
|
|
728
|
+
|
|
729
|
+
**Solution**: Pipe tree output to a pager:
|
|
730
|
+
|
|
731
|
+
```bash
|
|
732
|
+
tree -L 3 | less -R
|
|
733
|
+
```
|
|
734
|
+
|
|
735
|
+
The `-R` flag preserves colors in less.
|
|
736
|
+
|
|
737
|
+
### Issue: Character Encoding Problems
|
|
738
|
+
|
|
739
|
+
**Symptoms**: Tree lines appear as question marks or garbled characters.
|
|
740
|
+
|
|
741
|
+
**Solution**: Use ASCII character set for maximum compatibility:
|
|
742
|
+
|
|
743
|
+
```bash
|
|
744
|
+
tree --charset=ascii
|
|
745
|
+
```
|
|
746
|
+
|
|
747
|
+
Or ensure your terminal supports UTF-8:
|
|
748
|
+
|
|
749
|
+
```bash
|
|
750
|
+
export LANG=en_US.UTF-8
|
|
751
|
+
tree
|
|
752
|
+
```
|
|
753
|
+
|
|
754
|
+
### Issue: Permission Denied on Some Directories
|
|
755
|
+
|
|
756
|
+
**Symptoms**: Tree shows "Permission denied" errors for certain directories.
|
|
757
|
+
|
|
758
|
+
**Solution**: This is expected behavior for directories you do not have read access to. To suppress these errors:
|
|
759
|
+
|
|
760
|
+
```bash
|
|
761
|
+
tree 2>/dev/null
|
|
762
|
+
```
|
|
763
|
+
|
|
764
|
+
Or run with elevated privileges if appropriate:
|
|
765
|
+
|
|
766
|
+
```bash
|
|
767
|
+
sudo tree /path/to/restricted
|
|
768
|
+
```
|
|
769
|
+
|
|
770
|
+
### Issue: Tree Command Not Found After Reboot
|
|
771
|
+
|
|
772
|
+
**Symptoms**: Tree works in the current session but not after restarting the terminal.
|
|
773
|
+
|
|
774
|
+
**Solution**: The PATH modification was not persisted. Add the appropriate PATH export to your shell configuration:
|
|
775
|
+
|
|
776
|
+
For Bash:
|
|
777
|
+
```bash
|
|
778
|
+
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc
|
|
779
|
+
```
|
|
780
|
+
|
|
781
|
+
For Zsh:
|
|
782
|
+
```bash
|
|
783
|
+
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.zshrc
|
|
784
|
+
```
|
|
785
|
+
|
|
786
|
+
### Issue: Slow Performance on Large Directories
|
|
787
|
+
|
|
788
|
+
**Symptoms**: Tree takes a long time to run on directories with many files.
|
|
789
|
+
|
|
790
|
+
**Solution**: Limit the depth and exclude large directories:
|
|
791
|
+
|
|
792
|
+
```bash
|
|
793
|
+
tree -L 2 -I 'node_modules|.git|vendor|__pycache__' --dirsfirst
|
|
794
|
+
```
|
|
795
|
+
|
|
796
|
+
### Issue: Building from Source
|
|
797
|
+
|
|
798
|
+
**Symptoms**: Need to build tree from source for the latest version or custom configuration.
|
|
799
|
+
|
|
800
|
+
**Solution**: Clone the repository and build:
|
|
801
|
+
|
|
802
|
+
```bash
|
|
803
|
+
# Install build dependencies (Ubuntu/Debian)
|
|
804
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential
|
|
805
|
+
|
|
806
|
+
# Clone and build
|
|
807
|
+
git clone https://github.com/Old-Man-Programmer/tree.git
|
|
808
|
+
cd tree
|
|
809
|
+
make
|
|
810
|
+
sudo make install
|
|
811
|
+
```
|
|
812
|
+
|
|
813
|
+
**Note**: On macOS, the Makefile needs adjustment for System Integrity Protection. The binary cannot be installed to `/usr/bin`. Install to `/usr/local/bin` instead:
|
|
814
|
+
|
|
815
|
+
```bash
|
|
816
|
+
make
|
|
817
|
+
sudo make PREFIX=/usr/local install
|
|
818
|
+
```
|
|
819
|
+
|
|
820
|
+
---
|
|
821
|
+
|
|
822
|
+
## References
|
|
823
|
+
|
|
824
|
+
- [Tree Official Source Code](https://oldmanprogrammer.net/source.php?dir=projects/tree)
|
|
825
|
+
- [Tree GitHub Repository](https://github.com/Old-Man-Programmer/tree)
|
|
826
|
+
- [Tree GitLab Mirror](https://gitlab.com/OldManProgrammer/unix-tree)
|
|
827
|
+
- [Tree Homebrew Formula](https://formulae.brew.sh/formula/tree)
|
|
828
|
+
- [Tree Chocolatey Package](https://community.chocolatey.org/packages/tree)
|
|
829
|
+
- [GnuWin32 Tree for Windows](https://gnuwin32.sourceforge.net/packages/tree.htm)
|
|
830
|
+
- [GnuWin32 Tree winget Package](https://winget.run/pkg/GnuWin32/Tree)
|
|
831
|
+
- [Tree Linux Man Page](https://linux.die.net/man/1/tree)
|
|
832
|
+
- [Tree Command Wikipedia](https://en.wikipedia.org/wiki/Tree_(command))
|
|
833
|
+
- [Git Bash Tree Installation Guide](https://dev.to/flyingduck92/add-tree-to-git-bash-on-windows-10-1eb1)
|