An Interest In:
Web News this Week
- April 20, 2024
- April 19, 2024
- April 18, 2024
- April 17, 2024
- April 16, 2024
- April 15, 2024
- April 14, 2024
Rust-ify Linux/GNU/macOS terminal tools
Unix tools, generally written in C, are an exceptionally well-designed and maintained tool set for regular day-to-day terminal usage. Although these traditional GNU and Unix amazing, they are nowadays not enough and over 40-50 years old. So those were not designed keeping the modern computers & software in their mind. We need more cool fancier and feature rich tools that save time and also make us look savage
Rust to the saving
Rust, slowly taking place into the realm of modern computing and crazy terminal space, actually has some cool and brilliant solutions for the old GNU and Unix based CLI problems. Although it might sound weird and out of the world, but surprisingly theres a Rust based equivalent (mostly upgrade) for every single basic CLI (Command Line Interface) tools in Linux/macOS. This kind of thing unseen in the days of computing
Enough goof and trash talk (I hate myself for this), lets see all gems now
Well replace all the native terminal commands with their Rust equivalent using the alias
property of the shell
cd
replacement - Zoxide
A smarter cd command. Supports all major shells.
It remembers which directories you use most frequently, so you can "jump" to them in just a few keystrokes.
So if you go to a directory e.g /home/batman/03842034sakdsuperrmanbadasd21/secret-identity
once, the second you can just type z secret-identity
itll directly navigate to that same directory
So lets bury cd
with zoxide
. Just do:
- open
~/.bashrc
/~/.zshrc
/~/. config/fish/config.fish
- add
alias cd=z
at the end of the file and save the file - close and open the terminal or run
source <config-file-path>
- type
cd ./<any-directory>
and live happily every after
ls
replacement - Exa
exa is a modern replacement for the venerable file-listing command-line program ls
that ships with Unix and Linux operating systems, giving it more features and better defaults. It uses colors to distinguish file types and metadata. It knows about symlinks, extended attributes, and Git
Now, lets unlist ls
with exa
. Just do following:
- open
~/.bashrc
/~/.zshrc
/~/. config/fish/config.fish
- add
alias ls=exa --icons --colors=always
at the end of the file and save the file - close and open the terminal or run
source <config-file-path>
- type
ls <any-directory>
and live a colorful life
grep
replacement - Rip grep (Dude got humor XD)
ripgrep is a line-oriented search tool that recursively searches the current directory for a regex pattern. By default, ripgrep will respect gitignore rules and automatically skip hidden files/directories and binary files. In other word, RIP grep
Now, lets execute (kill) grep
and repalce with ripgrep
. Just do following:
- Open
~/.bashrc
/~/.zshrc
/~/. config/fish/config.fish
- add
alias grep=rg
at the end of the file and save the file - close and open the terminal or run
source <config-file-path>
- Type
grep Life <any-file>
and (are you even a human?)
cat
replacement - Bat
A cat replacement with syntax highlighting and Git integration and line numbers
Cat has nine lives. The cat
command has exactly 10 replacement and bat
is the 10th attempt at making a better cat
(character at)
Now, let's kick off the ungrateful cat
and replace it with bat
. Just do following:
- Open
~/.bashrc
/~/.zshrc
/~/. config/fish/config.fish
- add
alias cat=bat
at the end of the file and save the file - close and open the terminal or run
source <config-file-path>
- type
cat ./<any-file>
and fly out in the night sky and sleep in the day
top
repalcement - bottom
Yet another cross-platform graphical process/system monitor. Its a customizable cross-platform graphical process/system monitor for the terminal. No matter what system stats/monitor tool anyone makes/writes, itd still be better than top
Now, let's remove top
from the top and put bottom
there
- Open
~/.bashrc
/~/.zshrc
/~/. config/fish/config.fish
- add
alias top=bottom
at the end of the file and save the file - close and open the terminal or run
source <config-file-path>
- type
bottom
and find out why Chromes taking the 99% of RAM
See kids, anyone(tool) can go from bottom to top
sed
replacement - Sd
sd
is an intuitive find & replace CLI and the sed
butcher. sd
uses regex syntax that you already know from JavaScript and Python. Forget about dealing with quirks of sed
or awk
- get productive immediately. Its find & replace expressions are split up, which makes them easy to read and write. No more messing with unclosed and escaped slashes
Now, let's replace sed
with sd
. Just do following:
- Open
~/.bashrc
/~/.zshrc
/~/. config/fish/config.fish
- add
alias sed=sd
at the end of the file and save the file - close and open the terminal or run
source <config-file-path>
- Example: type
echo 'lots((([]))) of special chars' | sed -s '((([])))' ''
and youll get the output aslots of special chars
cloc
repalcement - Tokei
Tokei is a program that displays statistics about your code. Tokei will show the number of files, total lines within those files and code, comments, and blanks grouped by language. Its a great replacement for cloc (count lines of code)
Now, let's count cloc
off and use tokei instead. Just do following:
- Open
~/.bashrc
/~/.zshrc
/~/. config/fish/config.fish
- add
alias cloc=tokei
at the end of the file and save the file - close and open the terminal or run
source <config-file-path>
- type
tokei ./
and itll output 0 lines of code cause you didnt write any
find
replacement - Fd
fd
is a program to find entries in your file system. It is a simple, fast and user-friendly alternative to find
. While it does not aim to support all of find
's powerful functionality, it provides sensible (opinionated) defaults for a majority of use cases.
It has an intuitive syntax: fd PATTERN
instead of find -iname '*PATTERN*'
. Supports Regular expression (default) and glob-based patterns. Superfast due to parallelized directory traversal. Uses colors to highlight different file types (same as ls
). Ignores hidden directories, files & patterns from your.gitignore
, by default. AND The command name is 50% shorter than find
:-)
Now, lets forget, find
and replace it with fd
. Just do following:
- Open
~/.bashrc
/~/.zshrc
/~/. config/fish/config.fish
- add
alias find=fd
at the end of the file and save the file - close and open the terminal or run
source <config-file-path>
- type
find useful-files
and forget
du
repalcement - Dust
du + rust = dust. Like du but more intuitive. dust
shows the disk usage more efficiently, fast and in a more organized way
Now, let's throw du
to dust and replace it with dust
. Just do following:
- Open
~/.bashrc
/~/.zshrc
/~/. config/fish/config.fish
- add
alias du=dust
at the end of the file and save the file - close and open the terminal or run
source <config-file-path>
- type
du
and see the reason why your disk space at 69% (I know its all Pokmon movies)
ps
replacement - Procs
procs is a modern replacement for ps. It has colored and human-readable outputs. Supports Multi-column keyword search. Additionally, it shows TCP/UDP port, read/write throughput, docker container name, more memory information too which ps
cant show
Now, lets SIGKILL ps
and replace it with procs
. Just do following:
- Open
~/.bashrc
/~/.zshrc
/~/. config/fish/config.fish
- add
alias ps=procs
at the end of the file and save the file - close and open the terminal or run
source <config-file-path>
- type
ps
and to exit, pressq
bash
repalcement (more like powershell) - Nushell
A new type of shell. Its an alternative shell, quite different compared to bash, zsh or fish like terminals. Instead of thinking of files and data as raw streams of text, Nu looks at each input as something with structure. For example, when you list the contents of a directory what you get back is a table of rows, where each row represents an item in that directory. These values can be piped through a series of steps, in a series of commands called a 'pipeline'. (~ copied from the official doc)
It supports plugins which interacts with Nushell using JSON-IPC. Plugins are basically binaries available in the path and follows the nu_plugin_*
naming convention
Nushell is extremely powerful and flexible and brings organization to the outputs. It structures the output in an intuitive and human-readable way. Nushell is basically the non-corporate open-source terminal, but keeping the UNIX spirit. Its more like a PowerShell replacement. But in Linux/macOS it shines bright too. It needs more adaptation and updates and let's keep our finger crossed hoping itll one day become the top shell of all time
Nushell supports all major platforms (Linux, Windows, macOS). Now install it and then run chsh -s $(which nu)
Without sudo
it should work. If you use sudo
it will change the shell not for your working user but for root. Finally, log out of your computer and log back in.
What? You want more?
All the configurations at once for replacing the GNU/Unix tools. Put this on ~/.bashrc
/ ~/.zshrc
etc shell configuration files and restart your Terminal
alias cd=zalias ls=exa --icons --colors=alwaysalias cat=batalias find=fdalias grep=rgalias du=dustalias sed=sdalias cloc=tokeialias ps=procs
Well, you can always support me for more
Social
Follow me on:
Original Link: https://dev.to/krtirtho/rust-ify-linuxgnumacos-terminal-tools-40c6
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To