[TriLUG] Single line scripts
Brian Gerard via TriLUG
trilug at trilug.org
Tue Sep 6 00:07:44 EDT 2016
On 09/05/2016 03:34 PM, Grawburg via TriLUG wrote:
>
> I have long commands I enter in a terminal, such as starting
> connecting to a Raspberry Pi located several floors away with ssh, or
> setting up a connection to my NAS (rather than having a line in
> /etc/fstab).
> I can simply have a text file saved and do a copy and paste into
> terminal each time I need it, but I'd like to turn it into a what I
> would have called a .bat file decades ago.
> Is this something I should learn to to do in bash? I don't need
> multiple lines, there is no extra coding, just a single line.
>
> Thanks,
> Brian Grawburg
Going by your description, I would second the recommendation for aliases
or functions. The decision between them will more or less come down to
whether or not you need to pass arguments to the commands.
For example...
#
# Use an alias if the command is exactly the same every time.
#
bash$ alias dfhome='ssh -q my-home-machine "df -h"'
bash$ dfhome
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 312G 112G 185G 38% /
tmpfs 385M 896K 384M 1% /run
/dev/sda2 30G 179M 28G 1% /tmp
/dev/sda3 184G 65G 110G 38% /home
#
# Or a function if you want to be able to change behavior.
#
bash$ function dfon() { ssh -q $1 "df -h"'; }
bash$ dfon my-home-machine
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 312G 112G 185G 38% /
tmpfs 385M 896K 384M 1% /run
/dev/sda2 30G 179M 28G 1% /tmp
/dev/sda3 184G 65G 110G 38% /home
bash$ dfon some-other-machine
# ...etc...
Try it, tweak it, repeat. Once you've got it where you want it, add it
to your .bashrc and you'll have it whenever you log in.
A shell script in your own ~/bin directory or the like is absolutely
fine as well, but sounds a trifle heavy for what you've described.
However, I would say the opposite if these are things you'll need to ssh
in and run without starting up a login shell (like 'ssh my-host
"one-of-these-commands"'). In that case you will want a separate shell
script rather than aliases or functions in your .bashrc.
I covered some of this in the "bash tips n tricks" talk I gave a couple
of years back. You can find the materials for that at:
https://github.com/briangerard/bash_class
(the section on aliases begins on slide 32, and functions begin on
slide 38)
...and the recording is viewable here:
https://www.youtube.com/watch?v=J4_tFm4iRpc
HTH-
Brian
More information about the TriLUG
mailing list