bash Basics
Improvements? Suggestions? email dna@hola.org
Bash rescue
Tips that helps you getting started.
history: print commands history. When a veteran come to your computer and does a lot of 'black magic', or you remember that you did something somehow, and not sure exacly how, or if you did something wrong and not sure what, this will help you understand, history can come in handy.
Bash Keyboard shortcuts
Glossary
Shortcuts
Esc, B - move one word backwards
Esc, F - move one word forward
Esc, Delete (backspace) - delete one word backwards
Esc, D - delete one word forward
Ctrl+Y - insert last deleted word
Ctrl+A - move to beginning of line
Ctrl+E - move to end of line
Ctrl+U - kill back to beginning of line
Ctrl+K - kill forward to end of line
Esc, / - complete as filename
Ctrl+X, / - list possible filename
Esc, ~ - complete as user
Ctrl+X, ~ :- list possible user
Esc, $ - complete as variable
Ctrl+X, $ :- list possible variable
Esc, @ - complete as hostname
Ctrl+X, @ :- list possible hostname
Esc, ! - complete as command
Ctrl+X, ! :- list possible command
Esc, C - capitalize word
Esc, U - all cap (upper-case) word
Esc, L - all low-case word
ESC, . - insert last killed word
Ctrl+L(ell) - clear screen (not in CRT)
Ctrl+T - transpose char ("swap")
Ctrl+V - quoted insert (next char is "quoted")
Alt+. - retrieve last word from the previous executed command
Esc, . - retrieve last word from the previous executed command
Bash useful techniques
Search for text in all files in the current directory and below
(this example searches for all .c files for the text my_func)find . | grep [.]c | xargs grep my_func
or better:find . -name "*.c" | xargs grep my_func
or:find . -name "*.c" -exec grep -Hn my_func {} \;
Searching for my_func in files that might include a space in the name
find . -printf "\"%p\" " | xargs grep my_func
Sending all files to a utility one by one
edit a file run_dos2unix:for filename in "$@" ; do dos2unix $filename ; done
execute in the bash: $ chmod +x run_dos2unix
$ find . -name "*.c" | xargs ./run_dos2unix
Sending all files to a utility one by one, but in one line
find . -name '*.c' | xargs -n 1 dos2unix
Defining a "workset" of files you usually work on
edit file with names of files you work on, one on a line.
then run gvim `cat workset`
to load them all into gvim.
Capture all terminal output into file using script
$ script my_output_file
now all the output you saw between
:
: some commands & stuff here
: (e.g., make)
:
$ exitscript
and exit
is in my_output_file