Spool Five

Shell Commands

:TODO: Clean up!

setting default shell on linux:

popd and pushd

Exclamation mark !

Tail

tail -n +1 file1.txt file2.txt file3.txt

Inserts filename with output

less +F ...

start less at the end of the file (for bigger files) you can also do shift + f to take to the end (not great on large files)

Find & Replace in Multiple Files

What is happening:

grep -rl: search recursively, and only print the files that contain “old_string” xargs: take the output of the grep command and make it the input of the next command (ie, the sed command) sed -i ‘s/old_string/new_string/g’: search and replace, within each file, old_string by new_string

Less

Once your file is open in `less` (or `journalctl`) press the following keys:

Ampersand opens the pattern matching mode, exclamation mark tells `less` to exclude the following part, and then you enter your search term.

Shuf - shuffle

-o output (to file, for example)

Sort - sort

sorts alphabetically, use -n flag for numeric sorting. -r for reverse order -f ignore case Can use field separators. e.g.:

sort -t : -k 3n /etc/passwd
# sort using colon as delimiter, using 3rd column.

-u unique sorting - only sort unique lines. -o output (to file, for example) -R random sorting, but groups identical keys

Uniq - unique

Usually used in conjunction with sort. Removes duplicated lines. -u only return unique lines -d only return duplicated lines -c provide ‘count’ for how many times lines occur

Search and Replace within multiple files

I used this to replace all the footer email links in the blog directory. Seemed to work perfectly. The section included with find makes sure to skip the git directory.

find . \( -type d -name .git -prune \) -o -type f -print0 | xargs -0 sed -i 's/mailto\:eoin\@spool\-five\.com/mailto\:eoincarney0\@gmail\.com/g'