53 lines
1.9 KiB
Markdown
53 lines
1.9 KiB
Markdown
Speed up your shell game
|
|
|
|
Part of good use of the shell is doing repetitive things fast. A GUI can often
|
|
be faster than using the command line because you can almost select things with
|
|
your eyes ( eg, shift click files in a list to copy selectively. ) You can't
|
|
always use a gui, however.
|
|
|
|
---
|
|
|
|
Perhaps your forced to move files around through the terminal. Today I was faced
|
|
with such a task and to make matters worse, the files were quite large. So
|
|
copying them individually would take a long time, and running them in parallel
|
|
by using the `&` trick would have lead to huge io issues.
|
|
|
|
By defining a few quick and dirty functions, I was able to make my job a lot
|
|
easier:
|
|
|
|
1. add - This functions will take a single argument to add a file to a list of
|
|
files to process later
|
|
|
|
function add() { echo "${1}" >> ~/list.txt; }
|
|
|
|
2. l - This one is a quick shortcut to list files starting with a particular
|
|
letter. I used this to make shorter lists to scan through as I had quite a
|
|
few files to look at.
|
|
|
|
function l() { ls | grep -i "^$1.*"; }
|
|
|
|
3. upload - This one will read the list and upload files that haven't been
|
|
copied yet and are available in the current relative directory.
|
|
|
|
function upload() {
|
|
cat ~/list.txt | while read p
|
|
do
|
|
[[ -f "${p}" ]] &&
|
|
[[ ! -f /media/extHDD/"${p}" ]] &&
|
|
echo "Copying : ${p}" &&
|
|
cp "${p}" /media/extHDD/
|
|
done
|
|
}
|
|
|
|
Using these functions together, I would use `l a` to list all the files
|
|
starting with a, then `add a_file_.mkv` to add it to the list to be processed.
|
|
|
|
Finally, use `upload` to have files pushed to the destination.
|
|
|
|
As you can see, none of these function are special or tricky, just simple little
|
|
hacks to reduce keystrokes and make a job easier.
|
|
I would say the main learning is, whatever you are doing use the tools to make
|
|
your life easier.
|
|
|
|
Tags: bash, shells
|