this post was submitted on 23 Jul 2024
44 points (95.8% liked)

Linux

48310 readers
645 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

My question is whether it is good practice to include a unique wrapper phrase for custom commands and aliases.

For example, lets say I use the following command frequently:

apt update && apt upgrade -y && flatpak update

I want to save time by shortening this command. I want to alias it to the following command:

update

And lets say I also make up a command that calls a bash script to scrub all of of my zfs and btrfs pools:

scrub

Lets say I add 100 other aliases. Maybe I am overthinking it, but I feel there should be some easy way to distinguish these from native Unix commands. I feel there should be some abstraction layer.

My question is whether converting these commands into arguments behind a wrapper command is worth it.

For example, lets say my initials are "RK". The above commands would become:

rk update rk scrub

Then I could even create the following to list all of my subcommands and their uses:

rk --help

I would have no custom commands that exist outside of rk, so I add to total of one executable to my system.

I feel like this is the "cleaner" approach, but what do you think? Is this an antipattern? Is is just extra work?

you are viewing a single comment's thread
view the rest of the comments
[–] thingsiplay@beehaw.org 5 points 4 months ago

Disadvantages are, that you probably won't learn the actual command and forget how to do it manually when needed. And that the Bash history will log the name of the alias instead full command.

I definitely think its a good idea to have a simple command running multiple commands, down to single letter changes as in alias vim='nvim' . Updating the system in particular needs an alias to me, because I combine much more with it (yay, flatpak, rustup) and at the end let balooctl6 check for new files to index:

alias update='eos-update --yay \
    && flatpak uninstall --unused \
    && flatpak update \
    && rustup update \
    && balooctl6 check'

In general, I setup a shortcut to expand aliases to their target with CTRL+Space. That means if I type update and hit CTRL+Space, then it will be expanded to the entire list of what it would execute. This allows me to check what the command does and change something before execution. Also the history will log the long format this way, instead the name of the alias. I believe its this line in my .bashrc:

# Expand alias with key binding "Control+Space".
bind '"\C- ":alias-expand-line'

Sometimes I also use functions. Functions can't be expanded. A distinguishing factor between Functions or Aliases set directly in your Bash is, that they have access to all variables and states in the .bashrc. A dedicated script would be much better isolated from your .bashrc file.