From bash to zsh and everywhere in between, show me yours and I’ll show you mines. Inspire others or get some feedback.

Simply copy & paste the output of alias in your terminal or add some comments to explain things for others.

Edit: Kbin users, click ‘More’ on a comment and use the fediverse link to read responses that have funky formatting

    • @[email protected]
      link
      fedilink
      141 year ago

      I couldn’t even work if I had aliases in my muscle memory. Imagine ssh’ing to a server and every second command you issue doesn’t exist because it’s some weird alias you set up for yourself.

      I’ll stick with the “pure” command and use tab completion.

      That’s also part of the reason why I don’t use some of the fancy new tools like ripgrep and exa.

      • @[email protected]
        link
        fedilink
        English
        111 year ago

        Yeah, I remember when Linux was first becoming cool, in the mid-to-late 90s. There was a lot of folk wisdom going around, and one of them was “make an alias rm='rm -i' so you don’t accidentally delete anything!”

        And then there was the (correct, IMHO) counter-wisdom of “no, that actually makes it more likely to accidentally delete something, because one day you’re going to be on a machine where that alias doesn’t exist, but you’ve become dependent on it existing”.

        I don’t mind creating aliases to add colour or change formatting a little bit or something, but don’t make an alias to keep yourself safe, because it’ll probably backfire on you.

      • RaivoKulli
        link
        fedilink
        21 year ago

        You couldn’t even work if you made a few longer commonly used commands convenient aliases? Well alright.

        I can’t imagine how you feel about bash scripts lol.

        • @[email protected]
          link
          fedilink
          21 year ago

          Not the person you responded to, but sure. Breaking muscle memory is extremely grating.

          Also, it’s pretty easy to type long commands with little typing. If you use ctrl+r to search backward in your history, you can easily recall long commands - and also, you can use ctrl+x,ctrl+e to edit the current command line in $EDITOR so you can edit long commands. These two tricks make it very easy to type long commands quickly with very little typing.

          • RaivoKulli
            link
            fedilink
            -11 year ago

            it’s pretty easy to type long commands with little typing

            Big if true

  • @[email protected]
    link
    fedilink
    20
    edit-2
    1 year ago

    What… I didn’t know this was a thing.

    So I could make be “sudo gimme-dat-new-new” Instead of “sudo DNF upgrade -y”

    • @[email protected]
      link
      fedilink
      10
      edit-2
      1 year ago

      alias gimmie-dat-new-new='sudo dnf upgrade -y'

      Although you should probably look over your upgrade before applying it as a general good practice. But, hey, I do this myself (dnfup instead of gimmie-dat-etc.), so I can’t talk too much shit.

      ETA: If you want it to be a persistent alias, though, you gotta add it to your .bashrc

  • macallikOP
    link
    fedilink
    17
    edit-2
    1 year ago

    (Bash-Specific)

    App-Specific

    alias battery='upower -i $(upower -e | grep 'BAT') | grep -E "state|to\ full|percentage"' # Get the battery level of my laptop server when I ssh into it
    
    alias audio="yt-dlp -f 'ba' -x --audio-format mp3" # Download the audio version of a youtube video
    
    alias wttr="curl wttr.in/Chicago" # Get the weather of my city in the terminal
    
    

    Terminal Navigation

    alias ba2sy="cp ~/.bash_aliases ~/Sync/" # copy my current iteration of my aliases to my shared syncthing folder so that it's accessible across devices
    
    alias sy2ba="cp ~/Sync/.bash_aliases ~/" # replace the current iteration of my aliases w/ the synced version from my syncthing folder
    
    alias mba='micro .bash_aliases' # open my aliases file in the modernized version of 'nano'
    
    alias reload="source ~/.bashrc" # Quickly refresh my system so that the latest alias file is loaded
    
    alias l='exa --group-directories-first -hlras modified --no-user --icons' # exa is a prettier version of ls. Options toggled: Human-readable, long format, reverse output, show hidden files/folders, sort by modified, hide the 'user' column since I'm the only one that uses the computer, and show the icons to make it look fancy```
    
    

    Replaced Commands

    alias cat='batcat --theme=ansi ' # Replace generic output of cat w/ a formatted version. This is bat (batcat in Debian)
    
    alias rm='trash ' # Instead of auto-deleting files, put them in the 'trash' bin for 30 days, then delete.
    
    

    Server & Docker-related

    alias lazy='/home/macallik/.local/bin/lazydocker' # Run Docker
    
    alias pad='ssh MyPad20334' # shorthand to ssh into my server
    
    
    • @babeuh
      link
      21 year ago

      exa is unmaintained, as per the the developer you should use eza instead.

    • RaivoKulli
      link
      fedilink
      11 year ago

      I wonder if you can be a madlad and symlink your bash-aliases to a synced file.

      • @[email protected]
        link
        fedilink
        31 year ago

        Not a symlink, but you can add source /path/to/aliases one your bashrc file to load them from another file. I do that and keep all of my dot files in a hit repo.

  • darcy
    link
    fedilink
    151 year ago

    vim grindset 💪

    alias q=exit
    alias :q=exit
    alias :wq=exit
    
      • Gamma
        link
        fedilink
        English
        31 year ago

        That would make my shell unusable, since some plugins use ./source.

          • Gamma
            link
            fedilink
            English
            2
            edit-2
            1 year ago

            I know; I’m not talking about ./. I put the slash outside the inline codeblock in the parent comment.

            My shell is setup with a chdir hook to [[ -r. /.autoenv.zsh ]] && . ./.autoenv.zsh.

            (Edit: Jerboa is bugged with “&” in codeblocks, that should be a “&&”, not &&)

            • @[email protected]
              link
              fedilink
              21 year ago

              Ah, ok. For me it was an alias common in the university labs back on Ultrix. Became a habit way back then.

    • Alper Çelik
      link
      21 year ago

      I have :q to exit too since i was trying to exit shell with :q. I guess (n)vim users cant exit their shells :)

      • darcy
        link
        fedilink
        21 year ago

        we spent so much time learning to exit vim, we forgot how to exit shell 😔

  • megane-kun
    link
    fedilink
    English
    14
    edit-2
    1 year ago

    Some QoL stuff my good friend set-up for me.

    # ALIASES -- EXA
    alias ls='exa --group-directories-first --color=auto -h -aa -l --git'
    
    # ALIASES -- YAY
    alias yy='yay -Y --needed --norebuild --nocleanafter --nodiffmenu --noredownload --nocleanmenu --removemake --sudoloop'
    alias ya='yay -S --needed --norebuild --nocleanafter --nodiffmenu --noredownload --nocleanmenu --removemake --sudoloop'
    alias yu='yay -R --recursive --nosave'
    
    # ALIASES -- CP
    alias cp="cp --reflink=auto -i"
    

    And then there’s a bunch of stuff from the output of alias, most of them are git aliases. Those which aren’t git-related are listed below:

    -='cd -'
    ...=../..
    ....=../../..
    .....=../../../..
    ......=../../../../..
    1='cd -1'
    2='cd -2'
    3='cd -3'
    4='cd -4'
    5='cd -5'
    6='cd -6'
    7='cd -7'
    8='cd -8'
    9='cd -9'
    _='sudo '
    cp='cp --reflink=auto -i'
    egrep='grep -E --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn,.idea,.tox}'
    fgrep='grep -F --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn,.idea,.tox}'
    history=omz_history
    l='ls -lah'
    la='ls -lAh'
    ll='ls -lh'
    ls='exa --group-directories-first --color=auto -h -aa -l --git'
    lsa='ls -lah'
    md='mkdir -p'
    rd=rmdir
    run-help=man
    which-command=whence
    
    • macallikOP
      link
      fedilink
      71 year ago

      Good to see another exa user. Care to break down what yay does btw?

      • megane-kun
        link
        fedilink
        English
        2
        edit-2
        1 year ago

        Ah, yay is an AUR helper, though I personally see it as a pacman helper as well. Link here. Some of the flags and options that can be used for pacman can be used for yay, thus, some of the flags in the aliases I use are actually for pacman. Anyways, on to the breakdown.

        alias yy='yay -Y --needed --norebuild --nocleanafter --nodiffmenu --noredownload --nocleanmenu --removemake --sudoloop'

        This one is what I use to look up for packages. The result of runnning yy «search term» would be a list of packages matching the search term and prompting the user on which package(s) to install.

        flag description
        -Y performs yay-specific operations.
        --needed (pacman) do not reinstall up to date packages
        --norebuild skips package build if in cache and up to date
        --nocleanafter do not remove package sources after successful build
        --noredownlod skip pkgbuild download if in cache and up to date
        --nodiffmenu don’t show diffs for build files
        --nocleanmenu don’t clean build PKGBUILDS
        --removemake remove makedepends after install
        --sudoloop loop sudo calls in the background to avoid timeout

        alias ya='yay -S --needed --norebuild --nocleanafter --nodiffmenu --noredownload --nocleanmenu --removemake --sudoloop'

        This one is what I use for installing packages. Useful if I already know what package I would be installing.

        flag description
        -S (pacman, extended by Yay to cover AUR as well) Synchronize packages. Packages are installed directly from the remote repositories, including all dependencies required to run the packages.

        alias yu='yay -R --recursive --nosave'

        This one is what I use when uninstalling packages. I usually check the package name with something like yay -Qi «package-name-guess» beforehand.

        flag description
        -R (pacman, extended by Yay to also remove cached data about devel packages) Remove package(s) from the system.
        --recursive (pacman) Remove each target specified including all of their dependencies, provided that (A) they are not required by other packages; and (B) they were not explicitly installed by the user. This operation is recurisve and analogous to a backwards --sync operation.
        --nosave (pacman) Instructs pacman to ignore file backup designations. (This avoids the removed files being renamed with a .pacsave extension.)

        I actually don’t know much about both yay and pacman myself, since the aliases were just passed onto me by the same friend who helped me (re-)install my system (long story) and set-up the aliases. Having looked all these up, however, I might make a few changes (like changing the --nocleanafter and --nocleanmenu options to their clean ones`).

    • @soloner
      link
      3
      edit-2
      1 year ago

      I like the idea of binding numbers to parent directory traversal. I do cd …/… a lot in one of my projects (switching between source code and terraform folder), it’d be handy to get out of the terraform folder by just typing 2.

      • megane-kun
        link
        fedilink
        English
        11 year ago

        I actually would do cd .. and then do a pwd (and so on, repeatedly) because I often get confused and have a very short attention span that the aliases ended up unused.

  • SALT
    link
    fedilink
    English
    121 year ago
    alias ls='ls --time-style=long-iso'
    alias la='ls -alh'
    alias ncdu='ncdu --color=off'
    alias wttr='curl wttr.in/?T0'
    alias vim='vimx'
    alias ipinfo='curl ipinfo.io --no-progress-meter | jq "del(.readme)"'
    alias pp="pkill -SIGSTOP -f "
    alias pc="pkill -SIGCONT -f "
    
  • Krafting
    link
    101 year ago

    ussr

    For connecting as root with a private key on my main server named Undine Sous Speed.

    • macallikOP
      link
      fedilink
      2
      edit-2
      1 year ago

      The best alliases are little inside jokes that are easy to remember imo

  • conkbin
    link
    fedilink
    10
    edit-2
    1 year ago

    I got so much crap gathered throughout the years… some of them I don’t even use, but, here they are:

    #!/usr/bin/zsh
    # vi: ft=zsh
    
    #############
    # zsh aliases
    #############
    
    # grep
    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
    alias zgrep='zgrep --color=auto'
    
    # processes
    #alias pss='ps auxww | grep -v grep | grep'   # show all processes with user, hide grep itself
    alias top='top -i -e m -E m'                # hide inactive and zombie processes, show ram in MB
    
    # update system
    alias p='sudo pacman'
    alias pu='paru -Sua --noconfirm'
    # clean up
    alias pc='sudo pacman -Rsn $(pacman -Qdtq) --noconfirm 2>/dev/null; paru -Sccd --noconfirm'
    
    # lvim
    alias nvim='lvim'
    alias vim='lvim'
    alias vi='lvim'
    alias v='lvim'
    
    # cpg & mvg
    alias cp='/usr/bin/cpg -ig'
    alias mv='/usr/bin/mvg -ig'
    
    # other useful ones
    alias rm='trash'
    alias duu='du -d 1 -h'
    
    # wayland
    alias gparted='sudo /bin/env WAYLAND_DISPLAY="$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY"  XDG_RUNTIME_DIR=/user/run/0  /usr/sbin/gparted'
    
    # edit configs
    alias vcs="$EDITOR $XDG_CONFIG_HOME/starship/config.toml"     # starship
    alias vca="$EDITOR $XDG_CONFIG_HOME/alacritty/alacritty.yml"  # alacritty
    alias vct="$EDITOR $XDG_CONFIG_HOME/tmux/tmux.conf"           # tmux
    alias vcv="$EDITOR $XDG_CONFIG_HOME/nvim/init.vim"            # neovim
    alias vcl="$EDITOR $XDG_CONFIG_HOME/lvim/config.lua"          # lunarvim
    alias vch="$EDITOR $XDG_CONFIG_HOME/hypr/hyprland.conf"       # hyprland
    alias vcw="$EDITOR $XDG_CONFIG_HOME/waybar/config"            # waybar
    
    # edit & source zsh configs
    alias scz="source $ZDOTDIR/.zshrc"
    alias vcz="$EDITOR $ZDOTDIR/.zshrc && source $ZDOTDIR/.zshrc"
    alias vczo="$EDITOR $ZDOTDIR/options && source $ZDOTDIR/options"
    alias vczb="$EDITOR $ZDOTDIR/bindkeys && source $ZDOTDIR/bindkeys"
    alias vcze="$EDITOR $ZDOTDIR/exports && source $ZDOTDIR/exports"
    alias vcza="$EDITOR $ZDOTDIR/aliases && source $ZDOTDIR/aliases"
    alias vczc="$EDITOR $ZDOTDIR/completions && source $ZDOTDIR/completions"
    alias vczf="$EDITOR $ZDOTDIR/functions && source $ZDOTDIR/functions"
    
    # other cool toys
    alias exa='exa --long --header --git --sort=name --group-directories-first'
    alias ls='exa'
    alias cat='bat -pp'
    alias bat='bat --style=full'
    
    # x11
    # alias X='startx ${XDG_CONFIG_HOME}/X11/xinitrc'
    # alias XX='~/.screenlayout/home2.sh'
    # alias kb='setxkbmap -rules evdev -model pc105 -layout "ro,de" -variant "basic" -option "grp:shift_caps_toggle"'
    
    # tmux
    alias tmux="tmux -f $XDG_CONFIG_HOME/tmux/tmux.conf"
    alias t="tmux new-session -A -s id"
    
    # dmenu stuff
    # alias dnm='networkmanager_dmenu'
    # alias dbt='dmenu-bluetooth'
    
    # other cli utils
    alias pm='pulsemixer'
    
    # locations
    alias lab='cd ~/priv/code/lab'
    alias own='cd ~/priv/code/own'
    alias pixl='aft-mtp-mount ~/priv/pixl'
    
    # cleanup home
    alias irssi="irssi --home ${XDG_CONFIG_HOME}/irssi"
    alias svn="svn --config-dir ${XDG_CONFIG_HOME}/subversion"
    alias wget="wget --hsts-file=$XDG_DATA_HOME/wget-hsts"
    
    # dotfiles
    alias stowe="sudo stow -d $HOME/.dotfiles/etc/ -t /etc/"
    
    # ansible
    alias ansible-vault='EDITOR=lvim ansible-vault'
    
    # acme
    alias acme='acme.sh --home "$XDG_CONFIG_HOME"/acme.sh/'
    
    # vscode
    alias code='vscodium --enable-features=UseOzonePlatform --ozone-platform=wayland'
    
    # time sync
    alias synctime='echo "time now:" && date && sudo systemctl stop ntpd && sudo ntpd -gq && sudo systemctl start ntpd && echo "new time:" && date'
    
    # nordvpn
    alias nvro='sudo systemctl start nordvpnd && nordvpn c ro && nordvpn whitelist add subnet 10.0.0.0/8 && nordvpn set dns 10.10.10.10'
    alias nvdown='nordvpn d && sudo systemctl stop nordvpnd'
    
    # work
    alias vpnup='nmcli con up vpn-work --ask'
    alias vpndown='nmcli con down vpn-work'
    alias vpn='nmcli con down vpn-work; nmcli con up vpn-work --ask'
    alias vault-connect='source $HOME/work/secrets/vault.work'
    alias terraform-connect='source $HOME/work/secrets/terraform.work'
    alias teamsx='killall -15 teams'
    alias adm='sudo mount /home/$HOME/work/adm'
    alias mongo='ssh -L \*:27777:appserver:27017 jumphost'
    
    
    • macallikOP
      link
      fedilink
      2
      edit-2
      1 year ago

      Good to see someone else using trash & bat. Kudos for the clean alias file w/ commented headers too! I just started doing it recently and it makes edits/additions so much easier

      • conkbin
        link
        fedilink
        21 year ago

        Thanks. It’s not the prettiest, but I try to keep an order of some kind… My zshrc was getting quite large, so I split it and when I did that I also put in some comments and headers.

        • macallikOP
          link
          fedilink
          2
          edit-2
          1 year ago

          Care to elaborate?

          For me, it once caused an issue once when I thought I was deleting files to make space for /boot/efi/ being at capacity (dual booting issues at the time) when in actuality I was just moving files to an impromptu trash can created on /boot/efi (so the lack of space remained the same lol), but on numerous occasions, it has actually saved my ass and allowed me to retrieve documents that I realized I needed to look at again.

          The only other quirk is it straight up ignores all options, so I’ve tried to delete interactively (rm -i) and then had to use trash-list to view the deleted files

          • @[email protected]
            link
            fedilink
            1
            edit-2
            1 year ago

            Maybe I’m being a little paranoid, but I DID accidentally delete a few directories with dotenvs in them, which is what led me to find trash in the first place. That experience really traumatized me… so to break the rm habit and make sure I don’t do that on ANY computer I set up abbr rm '# Don\'t use this! Use trash-cli instead' # and abbr t trash.

            • conkbin
              link
              fedilink
              21 year ago

              I try to keep backups of almost everything, so even if I accidentally delete something and only notice after a clear the trash, there is still a chance I will recover the missing pieces.

  • @[email protected]
    link
    fedilink
    English
    101 year ago

    So I’ve checked and…

    alias la='ls -a'
    alias mplayer='mplayer -noautosub -alang en'
    alias ll='ls $LS_OPTIONS -lh'
    alias l='ls $LS_OPTIONS -lAa'
    alias x='startx'
    alias ekgi='ekg -i'
    alias glinks='links2 -g'
    

    My god, this must be in my .bashrc since forever. I mean… links2? ekg? startx? It’s like archeology.

    I will keep it there for future historians.

  • ProtonBadger
    link
    fedilink
    81 year ago

    Just some simple stuff:

    Strix ~> alias
    alias balanced 'asusctl profile -P balanced'
    alias performance 'asusctl profile -P performance'
    alias quiet 'asusctl profile -P quiet'
    alias upd 'yay ; flatpak update'
    
    
    • Ádám
      link
      fedilink
      English
      11 year ago

      There is a shell option for this (at least in zsh): setopt autocd. This allows you to change directories while omitting the cd in front

  • @mysticallego
    link
    81 year ago

    My favorite one: alias upgrate=“sudo apt update && sudo apt upgrade”

  • learnbyexample
    link
    fedilink
    English
    7
    edit-2
    1 year ago
    alias a='alias'
    
    a c='clear'
    a p='pwd'
    a e='exit'
    a q='exit'
    
    a h='history | tail -n20'
    # turn off history, use 'set -o history' to turn it on again
    a so='set +o history'
    
    a b1='cd ../'
    a b2='cd ../../'
    a b3='cd ../../../'
    a b4='cd ../../../../'
    a b5='cd ../../../../../'
    
    a ls='ls --color=auto'
    a l='ls -ltrhG'
    a la='l -A'
    a vi='gvim'
    a grep='grep --color=auto'
    
    # open and source aliases
    a oa='vi ~/.bash_aliases'
    a sa='source ~/.bash_aliases'
    
    # sort file/directory sizes in current directory in human readable format
    a s='du -sh -- * | sort -h'
    
    # save last command from history to a file
    # tip, add a comment to end of command before saving, ex: ls --color=auto # colored ls output
    a sl='fc -ln -1 | sed "s/^\s*//" >> ~/.saved_commands.txt'
    # short-cut to grep that file
    a slg='< ~/.saved_commands.txt grep'
    
    # change ascii alphabets to unicode bold characters
    a ascii2bold="perl -Mopen=locale -Mutf8 -pe 'tr/a-zA-Z/𝗮-𝘇𝗔-𝗭/'"
    
    ### functions
    # 'command help' for command name and single option - ex: ch ls -A
    # see https://github.com/learnbyexample/command_help for a better script version
    ch() { whatis $1; man $1 | sed -n "/^\s*$2/,/^$/p" ; }
    
    # add path to filename(s)
    # usage: ap file1 file2 etc
    ap() { for f in "$@"; do echo "$PWD/$f"; done; }
    
    # simple case-insensitive file search based on name
    # usage: fs name
    # remove '-type f' if you want to match directories as well
    fs() { find -type f -iname '*'"$1"'*' ; }
    
    # open files with default application, don't print output/error messages
    # useful for opening docs, pdfs, images, etc from command line
    o() { xdg-open "$@" &> /dev/null ; }
    
    # if unix2dos and dos2unix commands aren't available by default
    unix2dos() { sed -i 's/$/\r/' "$@" ; }
    dos2unix() { sed -i 's/\r$//' "$@" ; }
    
      • learnbyexample
        link
        fedilink
        English
        11 year ago

        I used to use it for posting on Twitter, with some keywords (like book title) in bold.

  • Turing spider
    link
    fedilink
    71 year ago

    alias nano='nano -l'

    my only one, to have line numbers when searching for errors in log files

    • @[email protected]
      link
      fedilink
      21 year ago

      Copying multiple lines will be more difficult. You can use Ctrl+C to display the current position, use page up/down for coarse navigation.

  • @[email protected]
    link
    fedilink
    6
    edit-2
    1 year ago

    I alias most of my flatpaks to autorun, made a tool for that called flatalias.

    https://github.com/trytomakeyouprivate/flatalias

    Also

    set fish_greeting
    
    alias update='flatpak update -y && notify-send -a Updater "Flatpaks ready" && rpm-ostree update && notify-send -a Updater "rpm-ostree ready"'
    
    alias upfin='flatpak update -y && rpm-ostree update && shutdown -h now''
    
    alias flatrm='flatpak remove --delete-data'
    
    alias ls="ls --color=auto -GF"
    
    alias reload="source ~/.config/fish/config.fish && echo 'Fish-config updated'"
    
    abbr conf "kate ~/.config/fish/config.fish && source ~/.config/fish/config.fish && echo 'Fish-config updated'"
    
    ### NETWORKING
    abbr myip 'curl ifconfig.co'
    abbr netlisten 'netstat -plntu'
    abbr pingtest 'ping -c 2 wikipedia.de'
    
    abbr rpmq "distrobox enter -n fedora -- dnf search"
    abbr rstat "rpm-ostree status"
    
    abbr rpmfind "rpm -qa | grep"
    
    abbr flatinst 'flatpak install -y'
    
    abbr flatfind "flatpak list | grep"
    
    abbr history-off 'set +o history'
    
    abbr sshcloud "ssh -i /home/user/.local/share/Cryptomator/mnt/SSH-keys/KEYNAME -p PORTNUMBER root@IP
    # and others
    
    abbr httpcode "curl --head --silent --output /dev/null --write-out '%{http_code}' "
    
    abbr "pin-this" "ostree admin pin 0"
    abbr "q" "exit"
    abbr c "clear"
    
    abbr errors-boot "journalctl -b"
    abbr errors-last-boot "journalctl -b -1"
    
    function copy
        if test -f $argv[1]
            cat $argv[1] | wl-copy
            echo "Copied to clipboard."
        else
            echo "Error: '$argv[1]' is not a file!"
        end
    end
    
    abbr off "shutdown -h now"
    
    function findmod
        set mod_path (whereis $argv[1] | cut -d' ' -f2)
        kate $mod_path;
    end
    
    function mdtopdf -a filename
      set -x name (basename $filename .md)
      pandoc $filename -o $name.pdf | tee $name.pdf
    end
    
    function mdtoodt -a filename
      set -x name (basename $filename .md)
      pandoc $filename -o $name.odt | tee $name.odt
    end
    
    function mdtotex -a filename
      set -x name (basename $filename .md)
      pandoc $filename -s -o $name.tex | tee $name.tex
    end
    
    abbr rootfish "sudo -i fish"
    
    abbr eng "export LANG=en_US.UTF-8"
    abbr english "export LANG=en_US.UTF-8"
    alias conf='nano ~/.config/fish/config.fish'
    alias reload='. ~/.config/fish/config.fish'
    
    alias pipwire-restart="systemctl --user restart pipewire.service"
    
    function tarbrot #not yet fully working I think
        if test -z $argv[1]
            echo "Usage: tarbrot "
            return 1
        end
    
        set folder $argv[1]
        set tarball (basename $folder).tar
        set brotli_file $tarball.br
    
        # Start the timer
        set start_time (date +%s)
    
        # Create a tarball without compression
        tar -cf $tarball $folder
    
        # Display the time elapsed
        set end_time (date +%s)
        set elapsed_time (math $end_time - $start_time)
    
        # Compress the tarball with Brotli
        brotli $tarball && rm -f "$tarball"
    
        echo "Folder '$folder' has been tarred and Brotli compressed as '$brotli_file'"
        echo "Time elapsed: $elapsed_time seconds"
        echo "Size of compressed file: (du -h $brotli_file | awk '{print $1}')"
    end
    

    I use fish btw, nice shell.