I am tired of creating a file with nano, saving it and then making it executable. Is there a command that makes it in one step?

  • CameronDev@programming.dev
    link
    fedilink
    arrow-up
    39
    arrow-down
    1
    ·
    edit-2
    7 months ago

    Write an alias/function to do it and add to your bashrc.

    function nanox() {
        nano "$1"
        chmod +x "$1"
    }
    
  • kayaven@lemmy.world
    link
    fedilink
    arrow-up
    13
    ·
    7 months ago

    You could define a function that takes a parameter, which touches a file with the parameters value, chmods it and then opens it with nano?

    create_exec() {
        touch "$1"
        chmod +x "$1"
        nano "$1"
    }
    

    Then you could type create_exec file.sh and it would do the rest for you.

  • sneakyninjapants@sh.itjust.works
    link
    fedilink
    arrow-up
    12
    ·
    7 months ago

    Here’s one I have saved in my shell aliases.

    nscript() {
        local name="${1:-nscript-$(printf '%s' $(echo "$RANDOM" | md5sum) | cut -c 1-10)}"
        echo -e "#!/usr/bin/env bash\n#set -Eeuxo pipefail\nset -e" > ./"$name".sh && chmod +x ./"$name".sh && hx ./"$name".sh
    }
    alias nsh='nscript'
    

    Admittedly much more complicated than necessary, but it’s pretty full featured. first line constructs a filename for the new script from a generated 10 character random hash and prepends “nscript” and a user provided name.

    The second line writes out the shebang and a few oft used bash flags, makes the file executable and opens in in my editor (Helix in my case).

    The third line is just a shortened alias for the function.

    • chi-chan~@lemmy.world
      link
      fedilink
      arrow-up
      18
      ·
      7 months ago

      - && means execute if the command before ended successfully

      - || means execute if the commnad before failed

      - ; just means execute the command - no matter if succeeded or failed