how to create a file and make it executable in one command?

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?

24 points · 14 comments · view on lemmy.world

14 Comments

cyborganism@lemmy.ca · 70 pts · 2y (1 reply)

You mean like

touch file && chmod +x file ?

MrAlternateTape@lemm.ee · 14 pts · 2y

Wrap it up folks, we're done here.

CameronDev@programming.dev · 35 pts · 2y (1 reply)

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

function nanox() {
    nano "$1"
    chmod +x "$1"
}
psmgx@lemmy.world · 0 pts · 2y

This is the way.

NegativeLookBehind@lemmy.world · 16 pts · 2y (6 replies)
[ removed ]
kureta@lemmy.ml · 6 pts · 2y (2 replies)

touch file && chmod +x file is good but this here is the one true command for the purpose.

hapidjus@mastodon.social · 1 pts · 2y (1 reply)
[ removed ]
kureta@lemmy.ml · 2 pts · 2y

that's what I was trying to say.

2xsaiko@discuss.tchncs.de · 2 pts · 2y (2 replies)

install -m755 /dev/null target was the first thing I thought of. I would never use this but it is a single command.

NegativeLookBehind@lemmy.world · 1 pts · 2y (1 reply)
[ removed ]
2xsaiko@discuss.tchncs.de · 1 pts · 2y

I'm going to write (at least part of) the script first anyway, and then I can just use chmod +x after the file is saved which is shorter.

kayaven@lemmy.world · 12 pts · 2y

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 · 11 pts · 2y

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.

eruchitanda@lemmy.world · 7 pts · 2y (3 replies)

Use && to use multiple commands one after the other, don't use ;.

eruchitanda@lemmy.world · 18 pts · 2y (1 reply)

- && 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

ArcaneSlime@lemmy.dbzer0.com · 1 pts · 2y

My dude, thanks for this. I've been using && for a long time now but never knew the rest, I'm still pretty new to linux comparatively.

eruchitanda@lemmy.world · 2 pts · 2y
[ removed ]
bjoern_tantau@swg-empire.de · 3 pts · 2y

You could append the chmod command with && but that's probably not what you wanted.