This is the first post of a five part series aimed at development productivity. The subjects covered in the series will be:
- Basic linux commands
- "dot" file configurations
- SSH, Networking commands
- PHP and git command options and shortcuts
- Process and disk monitoring
The first part deals with shortcuts and common commands I use in my day to day development on a linux environment.
Moving around the command line
These shortcuts are useful when you type a long command and need to modify the beginning
part or end part without using the mouse
ctrl-a jump to the start of the current line.
ctrl-e jump to the end of a line
[up arrow] cycle through previous commands
Start typing a command, file name or directory and then hit tab to complete it.
You can also type
historyto view your most recent commands
Moving about
To switching to the directory foobar
you would type
cd foobar. To switch to the directory
zerotheorem
you would type cd zerotheorem. To go back and forth between directories you can push and pop the directory onto a stack for later retrieval, you can type
pushd foobar. This saves the previous directory,
zerotheorem
onto the
stack. Now if you type popd, this will bring you back to
zerotheorem
directory.
I find that if I have a few directories that I frequently navigate to, then setting up some permanent aliases
in my .bashrc
file can be very useful. I will cover this in part 2 - "dot" file configurations.
Finding things
To view the contents of a directory use ls
.
ls -alwill give you a list and show hidden files.
Find files matching a pattern in the present directory and subdirectories with
find . -name 'foobar'This might give output that you do not want such as
y[$]› find / -name 'hola' find: `/run/udisks2': Permission denied find: `/run/lightdm': Permission denied find: `/run/wpa_supplicant': Permission deniedTo hide the errors send the error stream to
/dev/null
with 2>/dev/nullso that the previous command is
find . -name 'foobar' 2>/dev/null
To search files, grep
is your best friend.
grep function *phpwould find all of the occurences of the word function in PHP files in the current directory. Common flags are
-R
for recursion, -i
for case insensitivity, -v
to
ignore (invert) matches, -e
, and -n
to list the line number to specify a pattern.
For example, grep FUNction * -Rni 2>/dev/null | grep -v -e "private" -e "js"would recursively match, case insensively lines with the keyword "FUNction" but not those that also contain the words "private" or "js".
Another useful flag for use with grep are -C=num_lines
which allows you to specify a number of lines to
output before and after the matching lines. This is useful when you want more context into matches. Lastly, the flag
-l
is useful when you only care about the files that match and not the details.
Create a file with touch
. For example,
touch hello.txt. Change permissions with
chmod
and owner/group with chown
. For example,
touch hello.txt && chmod 755 hello.txt && chown brian.mygroup hello.txt
Sometimes you need to modify a file timestamp, for example if you have code that caches the file and need to immediately break the cache. Then you can use
touch -D "July 1, 2001" hello.txt"to set the date to July 2001.
Create a directory with mkdir
View a file's contents with less
. ie
less hello.txt. View the start of a file with
head
and the end of it with tail
. You can also specify a number of lines to view such
as tail -3 hello.txtto view the last three lines of that file. Lastly, you can follow a file with the
-f
flag, such as tail -f /some_log_file.log, useful when monitoring logs or other frequently updated files.
Finally, one my favourite command shortcuts is the brace notation {}
which enables a short hand for
certian commands. Normally, a command such as copying a file would be
cp my_great_file.txt my_greatest_file.txt. However you can also use the shorthand
cp my_great{,est}_file.txt. Another use would be creating or moving multiple files
touch daily_file_{1,2,3,4,5,6,7}.txtwhich is much nicer than typing out
daily_file_
six more times!!
Hope you find a few of these shortcuts and commands useful. Stay tuned for more advanced usage and command examples. And feel free to comment about your favorite shortcuts/commands.