Get acquainted with the command line

From Parallel Library Services
Revision as of 17:34, 2 November 2021 by Simon (talk | contribs)
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 shows 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}

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}
cp -r {dir1} {dir2} Recursive, copy directory and all subdirs
cat {newfile} >> {oldfile} Append newfile to end of oldfile

Move (or rename) a file

mv {oldfile} {newfile} Moving a file and renaming it are the same thing
mv {oldname} {newname}

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 {filespec}? and * wildcards work like DOS should. "?" is any character; "*" is any string of characters.
ls {filespec}
rm {filespec} Good strategy: first list a group to make sure it's what's you think... then delete it all at once.

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

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
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, eg page* gets page1, page10, and page.txt
? Match any single character, eg page? gets page1 and page2, but not page10
[...] Match any characters in a range, eg page[1-3] gets page1, page2, and page3
~ Short for your home directory, eg cd ~ will take you home, and rm -r ~ will destroy it
. The current directory
.. One directory up the tree, eg ls ...

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, eg ls > list.txt writes directory to file
{command} >> {file} Append output to an existing file, eg cat update >> archive adds update to end of archive
{command} < {file} Get input from a file, eg sort < file.txt
{command} < {file1} > {file2} Get input from file1, and write to file2, eg sort < old.txt > new.txt sorts old.txt and saves as new.txt
{command} | {command} Pipe one command to another, eg 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

wall {message} Write a message to all the other users currently logged in