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

https://lemmy.ml/post/15185955

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

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?

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

You mean like

touch file && chmod +x file ?

Wrap it up folks, we’re done here.

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

function nanox() { nano $1 chmod +x $1 }
This is the way.

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.

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.

You want the install command.

install

Using Install Command in Linux

The install command lets you copy file with advanced parameters. See some examples in this article.

Linux Handbook
touch file && chmod +x file is good but this here is the one true command for the purpose.
install -m755 /dev/null target was the first thing I thought of. I would never use this but it is a single command.
Why would you never use it?
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.
Use && to use multiple commands one after the other, don’t use ;.

- && means execute if the command before ended successfully

- || means execute if the commnad before failed failed

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

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

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.