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?

  • bionicjoey@lemmy.ca
    link
    fedilink
    arrow-up
    25
    arrow-down
    1
    ·
    edit-2
    4 months ago

    Personally I had to come to terms with the idea that anything other than just running the raw commands will get me into trouble. I work on a lot of servers, and so I need to be able to rely on my shell knowledge even when my bashrc isn’t handy. So for me it became more about just remembering what software does what thing broadly, and then checking man for the finer details.

    But for a single personal machine, script it however you want. Just be aware that you’ll start to build muscle memory for aliases and custom functions that won’t follow you to new machines.

  • crime [she/her, any]@hexbear.net
    link
    fedilink
    English
    arrow-up
    12
    ·
    4 months ago

    an easier approach to start with would just be to namespace them all with your initials when you set them as aliases, like rk-update, rk-scrub — then you could tab-complete them instead of doing rk --help. way less to maintain (unless you’re adding aliases from a bunch of different sources, in which case you may have bigger problems)

  • thingsiplay@beehaw.org
    link
    fedilink
    arrow-up
    5
    ·
    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.

  • filister@lemmy.world
    link
    fedilink
    arrow-up
    5
    ·
    4 months ago

    What you described is a common practice to make oneself life easier.

    If you want to write something like rk you would need to create a bash script and place it in your PATH so you can access it from there. It is fairly easy to do so, and you can back it up in GIT so that you have the latest version of the command line utility there. Even for the alias, I would say back it up in GIT, because you might lose them.

  • LeFantome@programming.dev
    link
    fedilink
    arrow-up
    4
    ·
    3 months ago

    You have taken the first step towards creating your own distro.

    Seriously though, what you suggest is fairly common but really a matter of preference. The same answer applies to “is it just extra work”.

    I tend not to customize heavily because it keeps “me” generic and I can sit down at anything and be equally effective. Others heavily customize their environments to keep themselves productive and happy on the machines they actually use.

    One advantage of your approach is you can create a “standard” user space across multiple distos. You do not have to remember if this system or that is Debian or Arch if “rk update” works everywhere ( even if is doing something different under the hood. This could be useful if you run a bunch of VMs or containers.

    Do you have a favourite text editor that you heavily customize or do you use whatever? Same question for your DE. It is all scratching the same itch.

  • thingsiplay@beehaw.org
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    3 months ago

    What I forgot in my previous comment: I have bunch of *rc aliases to open a specific config file with my neovim. It does not matter how the configuration file is named, with an extension, with rc in name, in what directory, it always follows the pattern singlecharacter+rc. Here some examples:

    alias brc='nvim ~/.bashrc && source ~/.bashrc'
    alias nrc='nvim ~/.config/nvim'
    

    As you see, it can even be a directory and not a file in case of nvim config. It would then show a filemanager on that directory with many config files.

    Edit: Another thing I forgot (man I’m getting old) is that you can add a backslash at the front of a command, to run the actual command and not an alias. A common example is to have alias='grep --color=auto' and alias='ls --color=auto' . If this gets in your way, just run the command as \grep or \ls to run the original command instead.