From 7bfde3d1aae65b5d10267a1e392bdc5f6a8b0e1c Mon Sep 17 00:00:00 2001 From: xplshn Date: Sat, 9 Mar 2024 11:58:08 -0300 Subject: [PATCH] + --- .main.go | 221 ---------- .main_cliparsed.go | 193 -------- bigdl | Bin 5698360 -> 5698360 bytes helperFunctions.go | 3 +- list | 1051 -------------------------------------------- 5 files changed, 2 insertions(+), 1466 deletions(-) delete mode 100644 .main.go delete mode 100644 .main_cliparsed.go mode change 100644 => 100755 bigdl delete mode 100644 list diff --git a/.main.go b/.main.go deleted file mode 100644 index e982619..0000000 --- a/.main.go +++ /dev/null @@ -1,221 +0,0 @@ -// main.go // This is the main entrypoint, which calls all the different functions //> -package main - -import ( - "fmt" - "os" - "path/filepath" - "runtime" -) - -var ( - Repositories []string - MetadataURLs []string - validatedArch = [3]string{} - InstallDir = os.Getenv("INSTALL_DIR") - installUseCache = true - useProgressBar = true -) - -const ( - RMetadataURL = "https://raw.githubusercontent.com/Azathothas/Toolpacks/main/metadata.json" // This is the file from which we extract descriptions for different binaries - RNMetadataURL = "https://bin.ajam.dev/METADATA.json" // This is the file which contains a concatenation of all metadata in the different repos, this one also contains sha256 checksums. - VERSION = "1.3.1" - usagePage = " [-vh] [list|install|remove|update|run|info|search|tldr] " - // Truncation indicator - indicator = "...>" - // Cache size limit & handling. - MaxCacheSize = 10 - BinariesToDelete = 5 - TEMP_DIR = "/tmp/bigdl_cached" -) - -func init() { - if InstallDir == "" { - homeDir, err := os.UserHomeDir() - if err != nil { - fmt.Fprintf(os.Stderr, "Error: Failed to get user's Home directory. %v\n", err) - os.Exit(1) - } - InstallDir = filepath.Join(homeDir, ".local", "bin") - } - if err := os.MkdirAll(InstallDir, os.ModePerm); err != nil { - fmt.Fprintf(os.Stderr, "Error: Failed to get user's Home directory. %v\n", err) - os.Exit(1) - } - switch runtime.GOARCH { - case "amd64": - validatedArch = [3]string{"x86_64_Linux", "x86_64", "x86_64-Linux"} - case "arm64": - validatedArch = [3]string{"aarch64_arm64_Linux", "aarch64_arm64", "aarch64-Linux"} - default: - fmt.Println("Unsupported architecture:", runtime.GOARCH) - os.Exit(1) - } - arch := validatedArch[0] - Repositories = append(Repositories, "https://bin.ajam.dev/"+arch+"/") - Repositories = append(Repositories, "https://bin.ajam.dev/"+arch+"/Baseutils/") - Repositories = append(Repositories, "https://raw.githubusercontent.com/xplshn/Handyscripts/master/") - // These are used for listing the binaries themselves - MetadataURLs = append(MetadataURLs, "https://bin.ajam.dev/"+arch+"/METADATA.json") - MetadataURLs = append(MetadataURLs, "https://bin.ajam.dev/"+arch+"/Baseutils/METADATA.json") - MetadataURLs = append(MetadataURLs, "https://api.github.com/repos/xplshn/Handyscripts/contents") // You may add other repos if need be? bigdl is customizable, feel free to open a PR, ask questions, etc. -} - -func printHelp() { - helpMessage := "Usage:\n" + usagePage + ` - -Options: - -h, --help Show this help message - -v, --version Show the version number - -Commands: - list List all available binaries - install, add Install a binary - remove, del Remove a binary - update Update binaries, by checking their SHA against the repo's SHA. - run Run a binary - info Show information about a specific binary - search Search for a binary - (not all binaries have metadata. Use list to see all binaries) - tldr Show a brief description & usage examples for a given program/command - -Examples: - bigdl search editor - bigdl install micro - bigdl remove bed - bigdl info jq - bigdl tldr gum - bigdl run --verbose curl -qsfSL "https://raw.githubusercontent.com/xplshn/bigdl/master/stubdl" | sh - - bigdl run --silent elinks -no-home "https://fatbuffalo.neocities.org/def" - bigdl run btop - -Version: ` + VERSION - - fmt.Println(helpMessage) -} - -func main() { - // Check for flags directly in the main function - if len(os.Args) > 1 { - switch os.Args[1] { - case "--version", "-v": - fmt.Println("bigdl", VERSION) - os.Exit(0) - case "--help", "-h": - printHelp() - os.Exit(0) - } - } - - // If no arguments are received, show the usage text - if len(os.Args) < 2 { - fmt.Printf(" bigdl:%s\n", usagePage) - os.Exit(1) - } - - switch os.Args[1] { - case "find_url": - if len(os.Args) < 3 { - fmt.Println("Usage: bigdl find_url [binary]") - os.Exit(1) - } - findURLCommand(os.Args[2]) - case "list": - binaries, err := listBinaries() - if err != nil { - fmt.Println("Error listing binaries:", err) - os.Exit(1) - } - for _, binary := range binaries { - fmt.Println(binary) - } - case "install", "add": - if len(os.Args) < 3 { - fmt.Printf("Usage: bigdl %s [binary] \n", os.Args[1]) - os.Exit(1) - } - binaryName := os.Args[2] - var installMessage string - if len(os.Args) > 3 { - InstallDir = os.Args[3] - } - if len(os.Args) > 4 { - installMessage = os.Args[4] - } - err := installCommand(binaryName, installMessage) - if err != nil { - fmt.Printf("%s\n", err.Error()) - os.Exit(1) - } - case "remove", "del": - if len(os.Args) < 3 { - fmt.Printf("Usage: bigdl %s [binary]\n", os.Args[1]) - os.Exit(1) - } - remove(os.Args[2:]) - case "run": - if len(os.Args) < 3 { - fmt.Println("Usage: bigdl run <--verbose, --silent> [binary] ") - os.Exit(1) - } - RunFromCache(os.Args[2], os.Args[3:]) - case "tldr": - if len(os.Args) < 3 { - fmt.Println("Usage: bigdl tldr [page]") - os.Exit(1) - } - RunFromCache("tlrc", os.Args[2:]) - case "info": - if len(os.Args) != 3 { - fmt.Println("Usage: bigdl info [binary]") - os.Exit(1) - } - binaryName := os.Args[2] - binaryInfo, err := getBinaryInfo(binaryName) - if err != nil { - fmt.Println(err) - os.Exit(1) - } - - // Print the fields - fmt.Printf("Name: %s\n", binaryInfo.Name) - if binaryInfo.Description != "" { - fmt.Printf("Description: %s\n", binaryInfo.Description) - } - if binaryInfo.Repo != "" { - fmt.Printf("Repo: %s\n", binaryInfo.Repo) - } - if binaryInfo.Size != "" { - fmt.Printf("Size: %s\n", binaryInfo.Size) - } - if binaryInfo.SHA256 != "" { - fmt.Printf("SHA256: %s\n", binaryInfo.SHA256) - } - if binaryInfo.B3SUM != "" { - fmt.Printf("B3SUM: %s\n", binaryInfo.B3SUM) - } - if binaryInfo.Source != "" { - fmt.Printf("Source: %s\n", binaryInfo.Source) - } - case "search": - if len(os.Args) != 3 { - fmt.Println("Usage: bigdl search [query]") - os.Exit(1) - } - searchTerm := os.Args[2] - fSearch(searchTerm) - case "update": - var programsToUpdate []string - if len(os.Args) > 2 { - // Bulk update with list of programs to update - programsToUpdate = os.Args[2:] - } - if err := update(programsToUpdate); err != nil { - fmt.Printf("Error updating programs: %v\n", err) - os.Exit(1) - } - default: - fmt.Printf("bigdl: Unknown command: %s\n", os.Args[1]) - os.Exit(1) - } -} diff --git a/.main_cliparsed.go b/.main_cliparsed.go deleted file mode 100644 index 3a364bc..0000000 --- a/.main_cliparsed.go +++ /dev/null @@ -1,193 +0,0 @@ -// main.go // This is the main entrypoint, which calls all the different functions //> -package main - -import ( - "fmt" - "github.com/urfave/cli/v2" - "os" - "path/filepath" - "runtime" -) - -var ( - Repositories []string - MetadataURLs []string - validatedArch = [3]string{} - InstallDir = os.Getenv("INSTALL_DIR") - installUseCache = true - useProgressBar = true -) - -const ( - RMetadataURL = "https://raw.githubusercontent.com/Azathothas/Toolpacks/main/metadata.json" // This is the file from which we extract descriptions for different binaries - RNMetadataURL = "https://bin.ajam.dev/METADATA.json" // This is the file which contains a concatenation of all metadata in the different repos, this one also contains sha256 checksums. - VERSION = "1.3.1" - usagePage = "Usage: bigdl [-vh] [list|install|remove|update|run|info|search|tldr] " - // Truncation indicator - indicator = "...>" - // Cache size limit & handling. - MaxCacheSize = 10 - BinariesToDelete = 5 - TEMP_DIR = "/tmp/bigdl_cached" -) - -func main() { - app := &cli.App{ - Name: "bigdl", - Usage: "bigdl is a command-line tool for managing binaries", - Before: func(c *cli.Context) error { - // Prepare global variables - if InstallDir == "" { - homeDir, err := os.UserHomeDir() - if err != nil { - return fmt.Errorf("failed to get user's Home directory: %v", err) - } - InstallDir = filepath.Join(homeDir, ".local", "bin") - } - if err := os.MkdirAll(InstallDir, os.ModePerm); err != nil { - return fmt.Errorf("failed to create install directory: %v", err) - } - switch runtime.GOARCH { - case "amd64": - validatedArch = [3]string{"x86_64_Linux", "x86_64", "x86_64-Linux"} - case "arm64": - validatedArch = [3]string{"aarch64_arm64_Linux", "aarch64_arm64", "aarch64-Linux"} - default: - return fmt.Errorf("unsupported architecture: %s", runtime.GOARCH) - } - arch := validatedArch[0] - Repositories = append(Repositories, "https://bin.ajam.dev/"+arch+"/") - Repositories = append(Repositories, "https://bin.ajam.dev/"+arch+"/Baseutils/") - Repositories = append(Repositories, "https://raw.githubusercontent.com/xplshn/Handyscripts/master/") - // These are used for listing the binaries themselves - MetadataURLs = append(MetadataURLs, "https://bin.ajam.dev/"+arch+"/METADATA.json") - MetadataURLs = append(MetadataURLs, "https://bin.ajam.dev/"+arch+"/Baseutils/METADATA.json") - MetadataURLs = append(MetadataURLs, "https://api.github.com/repos/xplshn/Handyscripts/contents") - return nil - }, - Commands: []*cli.Command{ - { - Name: "install", - Aliases: []string{"add"}, - Usage: "Install a binary", - Action: func(c *cli.Context) error { - if c.NArg() < 1 { - return cli.NewExitError("Missing binary name", 1) - } - binaryName := c.Args().First() - err := installCommand(binaryName) - if err != nil { - return err - } - return nil - }, - }, - { - Name: "remove", - Aliases: []string{"del"}, - Usage: "Remove a binary", - Action: func(c *cli.Context) error { - if c.NArg() < 1 { - return cli.NewExitError("Missing binary name", 1) - } - remove(c.Args().Slice()) - return nil - }, - }, - { - Name: "update", - Usage: "Update binaries", - Action: func(c *cli.Context) error { - var binariesToUpdate []string - if c.NArg() > 0 { - binariesToUpdate = c.Args().Slice() - } - err := update(binariesToUpdate) - if err != nil { - return err - } - return nil - }, - }, - { - Name: "run", - Usage: "Run a binary", - Action: func(c *cli.Context) error { - if c.NArg() < 1 { - return cli.NewExitError("Missing binary name", 1) - } - binaryName := c.Args().First() - RunFromCache(binaryName, c.Args().Tail()) - return nil - }, - }, - { - Name: "info", - Usage: "Show information about a specific binary", - Action: func(c *cli.Context) error { - if c.NArg() < 1 { - return cli.NewExitError("Missing binary name", 1) - } - binaryName := c.Args().First() - binaryInfo, err := getBinaryInfo(binaryName) - if err != nil { - return err - } - // Assuming binaryInfo is a struct with fields like Name, Description, etc. - fmt.Printf("Name: %s\n", binaryInfo.Name) - // Add other fields as necessary - return nil - }, - }, - { - Name: "search", - Usage: "Search for a binary", - Action: func(c *cli.Context) error { - if c.NArg() < 1 { - return cli.NewExitError("Missing search term", 1) - } - searchTerm := c.Args().First() - fSearch(searchTerm) - return nil - }, - }, - { - Name: "tldr", - Usage: "Show a brief description & usage examples for a given program/command", - Action: func(c *cli.Context) error { - if c.NArg() < 1 { - return cli.NewExitError("Missing program/command name", 1) - } - // Directly use the first argument as the program/command name - RunFromCache("tlrc", c.Args().Slice()) - return nil - }, - }, - }, - Flags: []cli.Flag{ - &cli.BoolFlag{ - Name: "version", - Aliases: []string{"v"}, - Usage: "Show the version number", - }, - }, - Action: func(c *cli.Context) error { - if c.Bool("version") { - fmt.Println("bigdl", "1.3.1") // Use the actual version from your original main.go - return nil - } - if c.Bool("help") { - cli.ShowAppHelp(c) - return nil - } - cli.ShowAppHelp(c) - return nil - }, - } - - err := app.Run(os.Args) - if err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } -} diff --git a/bigdl b/bigdl old mode 100644 new mode 100755 index 4d082f5b530363397b5691ab7b47cebb10233fa7..d0ea7137b498f4f4e5b40fa12d3081ba2a315384 GIT binary patch delta 2524 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 UAHNr%8CqZov?lUqF3mmrZ*D-OSpWb4 diff --git a/helperFunctions.go b/helperFunctions.go index dfb6f3c..88255b0 100644 --- a/helperFunctions.go +++ b/helperFunctions.go @@ -1,5 +1,4 @@ // helperFunctions.go // This file contains commonly used functions //> -// TODO: Add *PROPER* error handling in the truncate functions. Ensure escape sequences are correctly handled? package main import ( @@ -18,6 +17,8 @@ import ( "syscall" ) +// TODO: Add *PROPER* error handling in the truncate functions. Ensure escape sequences are correctly handled? + // signalHandler sets up a channel to listen for interrupt signals and returns a function // that can be called to check if an interrupt has been received. func signalHandler(ctx context.Context, cancel context.CancelFunc) (func() bool, error) { diff --git a/list b/list deleted file mode 100644 index 0b4c3f5..0000000 --- a/list +++ /dev/null @@ -1,1051 +0,0 @@ -.std.h.sh -7z -[ -act -actionlint -addpart -age -age-keygen -agetty -agg -agrind -airixss -aix -albafetch -algernon -alist -allxfr -alterx -amass -amp -analyticsrelationships -anew -anew-rs -anewer -ansi2html -ansi2txt -apk.sh -archey -arduino-cli -aretext -aria2c -arping -asn -asnmap -assetfinder -assh -atuin -awk -aws-nuke -axel -b2sum -b3sum -baker -bandwhich -base32 -base64 -basename -basenc -bash -bat -batcat -bbscope -bbtargets -bdl -bearer -bed -berty -bigdl -bin -binary-security-check -binfetch -binfetch.cfg -bingrep -binocle -bleve -blkdiscard -blkid -blkpr -blkzone -blockdev -bluetuith -boltconn -bombadillo -bore -boringtun-cli -bottom -boxxy -brename -broot -brutespray -btop -bucketloot -busybox -byp4xx -caddy -caido-cli -cal -capconvert -cat -catatonit -catp -catservice -ccat -cdncheck -cent -certgraph -certspotter -certstream -certstream-server-go -certwatcher -cexec -cfdisk -cfssl -cfssl-bundle -cfssl-certinfo -cfssl-newkey -cfssl-scan -cfssljson -chainredir -chameleon -chaos-client -chcon -chcpu -cheat -checkbypass -cherrybomb -chgrp -chisel -chmem -chmod -choom -chown -chroot -chrt -cifsiostat -circumflex -cksum -cleanpath -clear -clipcat-menu -clipcat-notify -clipcatctl -clipcatd -clockdiff -cloudcash -cloudfox -cloudlist -cloudreve -cog -col -colcrt -colrm -column -comb -comm -containerd -containerd-shim-runc-v2 -coreutils -cotp -cowitness -cowsay -cowthink -cp -cproxy -cpufetch -crawley -crictl -crlfuzz -croc -crt -csplit -csprecon -csview -csvtk -ct_monitor -ctlwatcher -ctr -ctrlaltdel -curl -curlie -cut -cut-cdn -cvemap -dalfox -darkhttpd -dasel -datadash -date -dbclient -dcgen -dd -ddns-go -delpart -delta -depmod -devbox -devpod -df -diffoci -dir -dircolors -direnv -dirname -dizi -dizi-server -dmesg -dns-doctor -dnslookup -dnstake -dnsx -doas -docker -docker-init -docker-proxy -dockerd -dockerd-rootless-setuptool.sh -dockerd-rootless.sh -doggo -dogservice -dontgo403 -doomxss -dos2unix -dotenv-linter -dropbear -dropbearconvert -dropbearkey -dropbearmulti -dropbearscp -ds -dsieve -du -duf -dufs -dura -dust -dysk -eae -eah -eap -eaparam -eapath -earh -echo -ecoji -edgevpn -eefjsf -eget -ehole -ein -eject -elfcat -elinks -elinks-lite -elvish -enc -encode -enola -enosys -enumerepo -env -etcd -etcdctl -etcdutl -exa -exch -exiflooter -expand -expr -eza -factor -fadvise -falconhound -fallocate -false -fastfetch -fasttld -fblog -fclones -fd -fdisk -fdupes -feroxbuster -ffmpeg -ffprobe -ffuf -ffufPostprocessing -ffufw -fget -filan -filebrowser -fincore -find -find-rs -findfs -findmnt -findomain -fingerprintx -flock -fmt -fnm -fold -fq -frcode -free -fscan -fsck -fsck.cramfs -fsck.minix -fsfreeze -fstrim -fuse-overlayfs -fusermount3 -fuzzuli -fwanalyzer -fx -fzf -gau -gawk -gdu -genact -genscope -getJS -getghrel -getlimits -getopt -gf -gfx -gh -gh-dash -ginstall -gip -git -git-checkout -git-cliff -git-clone -git-cvsserver -git-lfs -git-log -git-pull -git-receive-pack -git-shell -git-sizer -git-tag -git-upload-archive -git-upload-pack -git-xet -gitdorks_go -gitea -github-endpoints -github-regexp -github-subdomains -gitk -gitlab-subdomains -gitleaks -gitpod-cli -gitql -gitui -gix -glow -go-simplehttpserver -goawk -gobuster -gocurl -godns -godnsbench -gofireprox -gojq -golem -goop -gorilla -gosec -gost -gosu -gotator -gotld -gotty -gowitness -gpg-tui -gping -grep -grex -gron -groups -grpcurl -gs-netcat -gsocket -gum -gunzip -gup -gxss -gzexe -gzip -hacker-scoper -hadolint -hakip2host -hakoriginfinder -hakrawler -hakrevdns -halp -hardeningmeter_staticx -hardlink -heacoll -head -hednsextractor -hexdump -hexyl -horust -hostctl -hostid -hpwd -hrekt -htb-cli -htmlq -httprobe -httpx -hub -hugetop -hugo -hurl -hurlfmt -hwclock -hx -hxn -hyperfine -hysp -i386 -id -imix -infocmp -inscope -insmod -interactsh-client -interactsh-server -invidtui -ionice -iostat -ipcmk -ipcrm -ipcs -iperf -iperf3 -ipt2socks -irqtop -isosize -istioctl -jaeles -jaq -jc -jc_staticx -jira -jira-cli -jj -jless -jless_staticx -join -jq -jql -jqp -just -jwt-hack -k9s -kadeessh -kakoune -kalker -kanha -katana -katana_staticx -kill -killport -kmod -kmon -knoxssme -kondo -kopia -ksubdomain -ksubdomain_staticx -kubemetrics -ladder -last -lastb -lazydocker -lazygit -ldattach -legba -lf -link -linux32 -linux64 -linuxwave -listmonk -litefs -ln -lnav -locate -logcli -logger -logname -logtimer -loki -loki-canary -look -losetup -ls -lsblk -lsclocks -lscpu -lsd -lsfd -lsipc -lsirq -lslocks -lslogins -lsmem -lsmod -lsns -luet -lux -lzcat -lzcmp -lzdiff -lzegrep -lzfgrep -lzgrep -lzless -lzma -lzmadec -lzmainfo -lzmore -mabel -mac2unix -macchina -maddy -mailpit -make-prime-list -mani -mantra -mapcidr -massdns -matterbridge -mcfly -mcookie -md5sum -mdcat -mdsh -melange -meli -mergerfs -mesg -mgwls -micro -miniflux -miniserve -minisign -mise -mkbundle -mkdir -mkfifo -mkfs -mkfs.bfs -mkfs.cramfs -mkfs.minix -mknod -mksub -mkswap -mktemp -mlr -mmv -modinfo -modprobe -more -mount -mount.fuse3 -mountpoint -mpstat -mqttui -mubeng -multirootca -mv -naabu -naabu_staticx -namei -navi -ncat -ncdu -neofetch -nerdctl -netbird -netmaker -nfs-cat -nfs-cp -nfs-ls -nfs-stat -nginx -ngocok -ngrok -nice -niltalk -njs -nl -nmap -nmap-formatter -nmapurls -nmctl -nnn -nohup -noir -nologin -notify -nping -nproc -nrich -nrp -nsenter -nu -nuclei -numfmt -nushell -od -og++4.8 -oha -onetun -opengfw -openrisk -orbiton -osmedeus -ouch -ov -overmind -partx -passdetective -paste -pathbuster -pathchk -pdfcpu -pelf -pelf.ascii85 -pelf.raw -pencode -pfetch-rs -pgrep -pgweb -phantun-client -phantun-server -pidof -pidstat -pidwait -pier -ping -pinky -pipesz -pipetty -pivot_root -pixi -pkgtop -pkill -planor -pmap -podman -podsync -ppath -ppfuzz -pping -pr -presenterm -pretender -prettyping -prev -printenv -printf -prlimit -procan -procs -progress -promtail -proxify -ps -pspy -ptx -pueue -pueued -puredns -pwd -pwdx -pwninit -q -qbittorrent-nox -qsreplace -qsv -quickcert -randexec -rapwp -rate-limit-checker -rathole -rattler-build -rclone -reader -readlink -readprofile -realm -realpath -rebuildctl -rebuilderd -rebuilderd-worker -recollapse_staticx -redguard -redive -rekor -rekor-cli -rekor-server -relic -removehost -removepro -rename -renice -reptyr -rescope -resdns -resizepart -restic -resto -rev -reviewdog -revit -revive -rfkill -rg -rga -ripgen -ripgrep -rm -rmdir -rmmod -rnr -roboxtractor -rootlesskit -rootlesskit-docker-proxy -ropr -rospo -rpaste -rpfu -rqbit -rshijack -rsync -rsync-ssl -rtcwake -ruff -runc -runcon -runiq -runme -rush -rust-parallel -rustcan -rustypaste -s3scanner -s3sync -s5cmd -sa1 -sa2 -sadc -sadf -sake -sar -sbctl -scalar -scilla -scopegen -scopeview -scp -screenfetch -script -scriptlive -scriptreplay -sd -sed -seq -sessionprobe -setarch -setpgid -setsid -setterm -sfdisk -sftp -sftp-server -sha1sum -sha224sum -sha256sum -sha384sum -sha512sum -shc -shellharden -shellz -shfmt -shortscan -shortutil -shred -shuf -shuffledns -sish -sj -sk -sk-tmux -skupper -slabtop -sleep -slirp4netns -sliver-client -sliver-server -smap -smenu -sn0int -sns -socat -soft-serve -sort -speedtest-go -spk -split -spoof-dpi -sq -sqlc -ssh -ssh-add -ssh-agent -ssh-keygen -ssh-keyscan -ssh-keysign -sshd -sshd_config -sshesame -sshkeys -sshportal -sshx -sshx-server -sslsearch -starship -stat -stdbuf -steampipe -stew -strace -sttr -stty -stuffbin -su-rs -subfinder -subjs -subxtract -sudo-rs -sulogin -sum -sunbeam -supervisord -surf -svg-hush -swaplabel -swapoff -swapon -switch_root -sync -syncat -syncthing -sysbox-fs -sysbox-mgr -sysbox-runc -sysctl -sysinfo-collector -sysstat -system-info-collector -systemctl-tui -systeroid -t-rec -tabs -tac -tahm -tail -tailscale -tailscale_merged -tailscaled -tailspin -tapestat -taplo -tar -taskset -tavern -tcpdump -tdl -tee -teldrive -tere -termshark -test -tgpt -tic -tidy-viewer -timeout -tinja -tldr -tload -tlrc -tlsx -tmate -tmux -toe -tok -tokei -top -touch -toybox -tput -tr -tracepath -traefik -trip -true -trufflehog -truncate -try -tset -tsort -ttts -tty -tty2web -ttyd -ttyrec2ansi -tuiarchiver -tut -twingate-client -twingate-connector -twingate-connector-staticx -twingate-connectorctl -twingate-notifier -txeh -tz -u-root -uclampset -udpx -uip -ul -umount -uname -uname26 -uncompress -uncover -unexpand -unf -unfurl -uniq -unix2dos -unix2mac -unlink -unlzma -unnappear -unshare -unxz -updatedb -uptime -upx -users -usql -utmpdump -uuidd -uuidgen -uuidparse -v2raya -v6disk -v6run -validtoml -vdir -vegeta -vfox -vhs -viddy -viewgen_staticx -visudo-rs -viu -vmstat -volta -vopono -vpnkit -vtm -vultr-cli -wadl-dumper -waitpid -walk -wall -wasminspect -watch -watchexec -waybackrobots -waybackurls -wc -wdctl -web-cache-vulnerability-scanner -websocat -wego -wget -wget-busybox -whereis -which -who -whoami -whoch -wipefs -wireguard-go -wireguard-rs -wireproxy -wiretap -wormhole-rs -wstunnel -wtf -wtfutil -wth -x8 -x86_64 -xargs -xargs-rs -xcp -xet_staticx -xetcmd -xetmnt -xh -xplr -xpointerkeys -xurls -xz -xzcat -xzcmp -xzdec -xzdiff -xzegrep -xzfgrep -xzgrep -xzless -xzmore -yalis -yataf -yazi -yes -yip -yj -yq -z -zcat -zcmp -zdiff -zdns -zegrep -zellij -zenith -zfgrep -zforce -zfxtop -zgrab2 -zgrep -zless -zmore -znew -zoxide -zramctl -zstd