Get acquainted with the command line

From Parallel Library Services
Revision as of 17:42, 9 December 2021 by Gg (talk | contribs) (→‎Wildcards and Shortcuts)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Unix Cheat Sheet

Unix commands are useful to get familiar with in order to use software with command line interfaces. Many computers have a terminal program through which users may use an operating system. These commands can also be used on Unix-like systems, such as Mac OS, and a wide variety of Linux distributions, including Debian and Ubuntu. In a Unix shell session, a user can "pipe" commands, use wildcards, and write scripts that automate a wide variety of tasks.

General commands

pwd Print working directory - show where you are as full path. Useful if you're lost or exploring
man {command} Shows the manual. For example, type man rm to read the manual for the rm command
whoami Shows which user account is being used in a current session
whatis {command} Give short description of command

List a directory

ls lists the contents of a directory. It can be used with many options and attributes to show particular settings given to files, including file permissions.

It's ok to combine attributes, e.g. ls -laF gets a long listing of all files with types.

ls {path} List the contents of the path
ls {path_1} {path_2}List both {path_1} and {path_2}
ls -l {path} Long listing, with date, size and permissions
ls -a {path} Show all files, including important .dot files that don't otherwise show
ls -F {path} Show type of each file. "/" = directory, "*" = executable
ls -R {path} Recursive listing, with all sub-directories

Change to directory

cd is to change directory.

cd {dirname} There must be a space between the command and the {dirname}
cd ~ Go back to home directory, useful if you're lost
cd ..Go back one directory

Make a new directory

mkdir {dirname} Make a directory and name it

Remove a directory

rmdir {dirname} Only works if the directory is empty
rm -r {dirname} Remove all files and sub-directories. Careful!

Copy a file or directory

cp {file1} {file2} Copy file1 and call it file2
cp -r {dir1} {dir2} Recursive, copy directory and all subdirectories
cat {newfile} >> {oldfile} Append newfile to end of oldfile

Move (or rename) a file

mv {file1} folder2/{file1} Move file1 to a subdirectory called folder2
mv {oldname} {newname} In UNIX, moving a file and renaming it are the same thing, much like moving or renaming pages on a wiki

Delete a file

Warning: Be very careful when using the rm command. Anything removed with it will be gone forever - there is no undo!

rm {file1} Removes the file named file1

View a text file

more {filename} View file one screen at a time
less {filename} Like more, with extra features
cat {filename} View file, but it scrolls
cat {filename} | more View file one screen at a time

Edit a text file

nano {filename} Basic text editor for Unix-like systems, including Mac
gedit {filename} A text editor included with GNOME systems

Create a text file

touch {filename} Create a file and save it. It will remain empty until you edit it
cat > {filename} Enter your text (multiple lines with enter are ok) and press control-d to save
nano {filename} Create some text and save it in a file

Compare two files

diff {file1} {file2} Show the differences
sdiff {file1} {file2} Show files side by side

Other text commands

grep '{pattern}' {file} Find regular expression in file
spell {file} Display misspelled words in Linux - for Mac install ispell with homebrew
wc {file} Count words in file
wc -l {file} Count the number of lines in a file

Make an Alias

alias {name}='{command}' Put the command in 'single quotes'. More useful in your .bashrc file

Wildcards and Shortcuts

* Match any string of characters, e.g. page* gets page1, page10, and page.txt
? Match any single character, e.g. page? gets page1 and page2, but not page10
[...] Match any characters in a range, e.g. page[1-3] gets page1, page2, and page3
~ Short for your home directory, e.g. cd ~ will take you home, and rm -r ~ will destroy it
. The current directory
.. One directory up the tree

ctrl + r displays (reverse-i-search) prompt. Start typing and use ctrl + r to cycle results. enter will execute selected command or esc to exit.

Pipes and Redirection

You pipe a command to another command, and redirect it to a file. The pipe symbol is |.

{command} > {file} Redirect output to a file, e.g. ls > list.txt writes directory to file
{command} >> {file} Append output to an existing file, e.g. cat update >> archive adds update to end of archive
{command} < {file} Get input from a file, e.g. sort < file.txt
{command} < {file1} > {file2} Get input from file1, and write to file2, e.g. sort < old.txt > new.txt sorts old.txt and saves as new.txt
{command} | {command} Pipe one command to another, e.g. ls | more gets directory and sends it to more to show it one page at a time

System info

date Show date and time
df Check system disk capacity
du Check your disk usage and show bytes in each directory
du -h Check your disk usage in a human readable format
printenv Show all environmental variables
uptime Find out system load
w Who's online and what are they doing?
top Real time processor and memory usage

For fun

If you are sharing a computer with other users who are also logged in at the same time, write a message using the wall command:

wall {message}