A while ago I made a tiny function in my ~/.zshrc to download a video from the link in my clipboard. I use this nearly every day to share videos with people without forcing them to watch it on whatever site I found it. What’s a script/alias that you use a lot?

# Download clipboard to tmp with yt-dlp
tmpv() {
  cd /tmp/ && yt-dlp "$(wl-paste)"
}
  • jsomae@lemmy.ml
    link
    fedilink
    arrow-up
    1
    ·
    13 minutes ago

    I wrote a script called please. You input please followed by any other command (e.g. please git clone, please wget blahblah) and a robotic voice will say “affirmative,” then the command will run, and when it completes, the robotic voice reads out the exit code (e.g. “completed successfully” or “failed with status 1” etc.)

    This is useful for when you have a command that takes a long time and you want to be alerted when it’s finished. And it’s a gentleman.

  • data1701d (He/Him)@startrek.website
    link
    fedilink
    English
    arrow-up
    1
    ·
    50 minutes ago

    I use Clevis to auto-unlock my encrypted root partition with my TPM; this means when my boot partition is updated (E.G a kernel update), I have to update the PCR register values in my TPM. I do it with my little script /usr/bin/update_pcr:

    #!/bin/bash
    clevis luks regen -d /dev/nvme1n1p3 -s 1 tpm2
    

    I run it with sudo and this handles it for me. The only issue is I can’t regenerate the binding immediately after the update; I have to reboot, manually enter my password to decrypt the drive, and then do it.

    Now, if I were really fancy and could get it to correctly update the TPM binding immediately after the update, I would have something like an apt package shim with a hook that does it seamlessly. Honestly, I’m surprised that distributions haven’t developed robust support for this; the technology is clearly available (I’m using it), but no one seems to have made a user-friendly way for the common user to have TPM encryption in the installer.

  • JTskulk@lemmy.world
    link
    fedilink
    English
    arrow-up
    2
    ·
    2 hours ago

    Hey OP, consider using $XDG_RUNTIME_DIR instead of /tmp. It’s now the more proper place for these kinds of things to avoid permission issues, although I’m sure you’re on a single user system like most people. I have clipboard actions set to download with yt-dlp :)

    My favorite aliases are:

    alias dff='findmnt -D -t nosquashfs,notmpfs,nodevtmpfs,nofuse.portal,nocifs,nofuse.kio-fuse'

    alias lt='ls -t | less'

  • thingsiplay@beehaw.org
    link
    fedilink
    arrow-up
    1
    ·
    3 hours ago

    Here is on that I actually don’t use, but want to use it in scripts. It is meant to be used by piping it. It’s simple branch with user interaction. I don’t even know if there is a standard program doing exactly that already.

    # usage: yesno [prompt]
    # example:
    #   yesno && echo yes
    #   yesno Continue? && echo yes || echo no
    yesno() {
        local prompt
        local answer
        if [[ "${#}" -gt 0 ]]; then
            prompt="${*} "
        fi
        read -rp "${prompt}[y/n]: " answer
        case "${answer}" in
        [Yy0]*) return 0 ;;
        [Nn1]*) return 1 ;;
        *) return 2 ;;
        esac
    }
    
  • kittenroar@beehaw.org
    link
    fedilink
    English
    arrow-up
    3
    ·
    3 hours ago

    here we go:

    dedup:

    #!/usr/bin/awk -f
    !x[$0]++
    

    this removes duplicate lines, preserving line order

    iter:

    #!/usr/bin/bash
    if [[ "${@}" =~ /$ ]]; then
        xargs -rd '\n' -I {} "${@}"{}
    else
        xargs -rd '\n' -I {} "${@}" {}
    fi
    

    This executes a command for each line. It can also be used to compare two directories, ie:

    du -sh * > sizes; ls | iter du -sh ../kittens/ > sizes2
    

    fadeout:

    #!/bin/bash
    # I use this to fade out layered brown noise that I play at a volume of 130%
    # This takes about 2 minutes to run, and the volume is at zero several seconds before it's done.
    # ################
    # DBUS_SESSION_BUS_ADDRESS is needed so that playerctl can find the dbus to use MPRIS so it can control mpv
    export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus"
    # ################
    for i in {130..0}
    do
        volume=$(echo "scale=3;$i/100" | bc)
        sleep 2.3
        playerctl --player=mpv volume $volume
    done
    

    lbn:

    #!/bin/bash
    #lbn_pid=$(cat ~/.local/state/lbn.pid)
    if pgrep -fl layered_brown
    then
    	pkill -f layered_brown
    else
    	export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus"
    	mpv -ao pulse ~/layered_brown_noise.mp3 >>lbn.log 2>&1 &
    	sleep 3
    	playerctl -p mpv volume 1.3 >>lbn.log 2>&1 &
    fi
    

    This plays “layered brown noise” by crysknife. It’s a great sleep aid.

    here are some aliases:

    alias m='mpc random off; mpc clear'
    alias mpcc='ncmpcpp'
    alias thesaurus='dict -d moby-thesaurus'
    alias wtf='dict -d vera'
    alias tvplayer='mpv -fs --geometry=768x1366+1366+0'
    
  • spv.sh@lemmy.spv.sh
    link
    fedilink
    English
    arrow-up
    2
    ·
    5 hours ago
    alias bat="batcat"
    alias msc="ncmpcpp"
    alias xcp="xclip -selection clipboard"
    alias wgq="sudo wg-quick"
    

    also a couple to easily power on/off my 4g modem

  • hallettj@leminal.space
    link
    fedilink
    English
    arrow-up
    6
    ·
    6 hours ago

    One of favorites cds to the root of a project directory from a subdirectory,

    # Changes to top-level directory of git repository.
    alias gtop="cd \$(git rev-parse --show-toplevel)"
    
  • kibiz0r@midwest.social
    link
    fedilink
    English
    arrow-up
    30
    ·
    edit-2
    8 hours ago

    I often want to know the status code of a curl request, but I don’t want that extra information to mess with the response body that it prints to stdout.

    What to do?

    Render an image instead, of course!

    curlcat takes the same params as curl, but it uses iTerm2’s imgcat tool to draw an “HTTP Cat” of the status code.

    It even sends the image to stderr instead of stdout, so you can still pipe curlcat to jq or something.

    #!/usr/bin/env zsh
    
    stdoutfile=$( mktemp )
    curl -sw "\n%{http_code}" $@ > $stdoutfile
    exitcode=$?
    
    if [[ $exitcode == 0 ]]; then
      statuscode=$( cat $stdoutfile | tail -1 )
    
      if [[ ! -f $HOME/.httpcat$statuscode ]]; then
        curl -so $HOME/.httpcat$statuscode https://http.cat/$statuscode
      fi
    
      imgcat $HOME/.httpcat$statuscode 1>&2
    fi
    
    cat $stdoutfile | ghead -n -1
    
    exit $exitcode
    

    Note: This is macOS-specific, as written, but as long as your terminal supports images, you should be able to adapt it just fine.

  • golden_zealot@lemmy.ml
    link
    fedilink
    English
    arrow-up
    9
    ·
    9 hours ago

    alias clip='xclip -selection clipboard'

    When you pipe to this, for example ls | clip, it will stick the output of the command ran into the clipboard without needing to manually copy the output.

    • mmmm@sopuli.xyz
      link
      fedilink
      arrow-up
      7
      ·
      edit-2
      8 hours ago

      I use a KDE variant of this that uses klipper instead (whatever you pipe to this will be available in klipper):

      ` #!/bin/sh

      function copy {
          if ! tty -s && stdin=$(</dev/stdin) && [[ "$stdin" ]]; then
              stdin=$stdin$(cat)
              qdbus6 org.kde.klipper /klipper setClipboardContents "$stdin"
              exit
          fi
      
          qdbus6 org.kde.klipper /klipper getClipboardContents
      }
      
      copy $@`
      
  • DarkSirrush@lemmy.ca
    link
    fedilink
    arrow-up
    1
    ·
    edit-2
    5 hours ago

    I have a few:

    loginserver
    
    • 3 of these, 1 for each of my headless vm’s/computers that’s just an SSH command
    dcompose(d/pull) - docker compose (down/pull)
    

    3 scripts that are just docker compose up/down/pull, as scripts (remind me in 6 hours and I will post the scripts) so that it will CD to my compose folder, execute the command (with option for naming specific containers or blank for all) and then CD back to the directory I started in.

  • vortexal@lemmy.ml
    link
    fedilink
    arrow-up
    4
    ·
    8 hours ago

    I’ve only used aliases twice so far. The first was to replace yt-dlp with a newer version because the version that comes pre-installed in Linux Mint is too outdated to download videos from YouTube. The second was because I needed something called “Nuget”. I don’t remember exactly what Nuget is but I think it was a dependency for some application I tried several months ago.

    alias yt-dlp='/home/j/yt-dlp/yt-dlp'
    alias nuget="mono /usr/local/bin/nuget.exe"
    
    • vithigar@lemmy.ca
      link
      fedilink
      arrow-up
      2
      ·
      6 hours ago

      Nuget is a the .NET package manager. Like npm or pip, but for .NET projects.

      If you needed it for a published application that strikes me as fairly strange.

      • vortexal@lemmy.ml
        link
        fedilink
        arrow-up
        2
        ·
        edit-2
        5 hours ago

        I looked through my bash history and it looks like I needed it to build an Xbox eeprom editor for Xemu. Xemu doesn’t (or at least didn’t, I haven’t used newer versions yet) have a built in eeprom editor and editing the Xbox eeprom is required for enabling both wide screen and higher resolutions for the games that support them natively.

        I just looked at Xemu’s documentation, and it looks like they’ve added a link to an online eeprom editor, so the editor I used (which they do still link to) is no longer required.

    • thingsiplay@beehaw.org
      link
      fedilink
      arrow-up
      2
      ·
      6 hours ago

      For the newer version of program, that’s why we have the $PATH. You put your program into one of the directories that is in your $PATH variable, then you can access your script or program from any of these like a regular program. Check the directories with echo "$PATH" | tr ':' '\n'

      My custom scripts and programs directory is “~/.local/bin”, but it has to be in the $PATH variable too. Every program and script i put there can be run like any other program. You don’t even need an alias for this specific program in example.

  • Stubb@lemmy.sdf.org
    link
    fedilink
    arrow-up
    3
    ·
    7 hours ago
    function seesv
        column -s, -t < $argv[1] | less -#2 -N -S
    end
    

    I used this a lot when I had to deal with CSV files — it simply shows the data in a nice format. It’s an alias for the fish shell by the way.