How To: Command Line Cheatsheet

I was showing a friend how to be more productive while working in a terminal and she asked me about the keys I was pressing during the demonstration. I explained some of the keyboard shortcuts I use and she asked if I could write them down for her. Since this was the third person to ask me for a copy of the keyboard shortcuts I use, I thought I'd post them here in the hopes that they can help others too.

tar cf file.tar files - create a tar named file.tar containing files
tar xf file.tar - extract the files from file.tar
tar cf file.tar.gz files - create a tar with Gzip compression
tar xf file.tar.gz - extract a tar using Gzip
tar cf file.tar.bz2 - create a tar with Bzip2 compression
tar xf file.tar.bz2 - extract a tar using Bzip2
gzip file - compresses file and renames it to file.gz
gzip -d file.gz - decompresses file.gz back to file

Disk Space
ls -lSr show files by size, largest last
df -h show free space on mounted filesystems
df -i show free inodes on mounted filesystems
fdisk -l show disks partitions sizes and types

File Commands
ls - directory listing
ls -a - directory listing with hidden files
ls -al - formatted directory listing with hidden files
cd dir - change directory to dir
cd - change to home
cd - - change back to previous directory
pwd - show current directory
mkdir dir - create directory dir
rm file - delete file
rmdir dir - delete empty directory dir
rm -r dir - recursively delete directory dir (use with caution)
rm -f file - force remove file; no error output if file doesn't exist
rm -rf dir - recursively force remove directory dir (use with caution)
cp file1 file2 - copy file1 to file2
cp file1 file2 file3 dir - copy file1, file2 and file3 to dir
cp -r dir1 dir2 - recursively copy dir1 to dir2; create dir2 if it doesn't exist
mv file1 file2 - move file1 to file2 if file2 is an existing directory, moves file1 into directory file2
ln -s file link - create symbolic link link to file
>file - create file (use with caution, doing this on an existing file will overwrite the content)
touch file - create or update file
cat > file - places standard input into file
cat file1 > file2 - overwrites the content of file2 with the content of file1
cat file1 >> file2 - appends the content of file1 to file2
echo "Hello World" > file - overwrites file's content with HelloWorld
echo "Hello World" >> file - appends Hello World to the end of file
less file - output the contents of file
more file - output the contents of file
head file - output the first 10 lines of file
tail file - output the last 10 lines of file
tail -f file - output the contents of file as it grows, starting with the last 10 lines
sed 's/foo/bar/g' file - replaces all occurrences of foo with bar in file
sed -i.backup 's/foo/bar/g' file - replaces all occurrences of foo with bar in file after backing up file as file.backup
rm {m,M}yfile - remove files according to a pattern
$ ls
$ touch myfile Myfile myfile1 Myfile1
$ ls
myfile Myfile myfile1 Myfile1
$ rm {m,M}yfile
$ ls
myfile1 Myfile1

File Permissions
chmod octal file - change the permissions of file to octal, which can be found separately for user, group, and world by adding:
4 – read (r)
2 – write (w)
1 – execute (x)
chmod 777 - rwx for all
chmod 755 - rwx for owner, rx for group and world. For more options, see man chmod

ping host - ping host and output results
whois domain - get whois information for domain
dig domain - get DNS information for domain
dig domain @DNSserv - get DNS information for domain from specific DNS server
dig -x host - reverse lookup host
wget file - download file
wget -c file - continue a stopped download

Package Manipulation (Debian, Ubuntu)
apt-cache show foo - Show info about package foo
apt-cache showsrc - Displays information about a source package
apt-cache showpkg - Displays information about the packages listed on the command line
apt-cache depends foo - Show the depends of package foo
apt-cache rdepends - Shows reverse dependencies for a package
apt-cache search foo - Find packages that include "foo"
apt-cache search --names-only foo - Find packages which have "foo" in the filename
apt-cache pkgnames - Fast listing of every package known by the system
apt-cache policy - Lists the repositories in which a package exists
dpkg -L package - List files in the package
dpkg -S foo - Find out which package installed foo
dpkg -c foo - Lists the contents of a binary package
dpkg -f foo - Shows the control file for a binary package
dpkg --get-selections > /path/selectionfile - Get a list of all packages installed
sudo dpkg --set-selections < /path/selectionfile && apt-get dselect-upgrade - Install packages from an exported list
dlocate foo - Determines which installed package owns foo
apt-file search foo - Determines which non-installed package owns foo
sudo aptitude install foo - Install package foo
sudo aptitude remove foo - Uninstall package foo
sudo aptitude purge foo - Uninstall package foo and all of its dependencies
sudo aptitude update - Update the package sources
sudo aptitude safe-upgrade - Update all installed packages to the newest versions
sudo aptitude dist-upgrade - Update the kernel to the newest version
sudo aptitude clean - Remove packages from the package cache

Process Management
ps - display your currently active processes
top - display all running processes
kill pid - kill process id pid
killall proc - kill all processes named proc * file
bg - lists stopped or background jobs; resume a stopped job in the background
fg - brings the most recent job to foreground
fg n - brings job n to the foreground
\ls - ignore alias ls
time command - see how long a command takes to finish
which command - display the full path of a command
(cd dir && command) - go to dir, execute command and return to current dir

grep pattern files - search for pattern in files
grep -r pattern dir - search recursively for pattern in dir
command | grep pattern - search for pattern in the output of command
updatedb - updates the slocate database; see next item
locate file - find all instances of file; may need to run updatedb first
find $HOME -user root - find files owned by root in $HOME
find /path -depth -type d -empty - find empty directories
find /path -type d -empty -exec rm -rf '{}' \; - find and delete empty directories
find /path -depth -type f -empty - find empty files
find /path -name [name_of_file] - find a file with a specific name
find /path -name "*.[given_extension]" - find a file with a specific extension
find /path -name '*.txt' -perm 644 - find .txt files with specific permissions
find /path -perm -[permission_bits] - find files with some given permissions
find /path -name '[given_name].*' - find files with a given name and any extension
man -t man | ps2pdf - > man.pdf - make a pdf of a man page

Ctrl+A - move to the start of the line
Ctrl+E - move to the end of the line.
Ctrl+U - delete from the cursor to the beginning of the line.
Ctrl+K - delete from the cursor to the end of the line.
Ctrl+W - delete from the cursor to the start of the word.
Ctrl+Y - pastes text from the clipboard.
Ctrl+L - clear the screen leaving the current line at the top of the screen.
Ctrl+C - halts the current command
Ctrl+Z - stops the current command, resume with fg in the foreground or bg in the background
Ctrl+D - log out of current session, similar to exit
Ctrl+R - reverse search
^abc^xyz - replace first occurrence of abc with xyz in last command and execute it
!! - repeats the last command
sudo !! - repeats the last command with sudo privileges
exit - log out of current session

Software Installation
Install from source:
./configure - execute the configure script
make - compile the source
make install - install needed files
dpkg -i pkg.deb - install a deb package on .deb-based systems
rpm -Uvh pkg.rpm - install an rpm package on .rpm-based systems

ssh [email protected] - connect to host as user
ssh -p port [email protected] - connect to host on port port as user
ssh-copy-id [email protected] - add your key to host for user to enable a keyed or password-less login

date - show the current date and time
cal - show this month's calendar
uptime - show current uptime
w - display who is online
whoami - who you are logged in as
finger user - display information about user
uname -a - show kernel information
cat /proc/cpuinfo - cpu information
cat /proc/meminfo - memory information
man command - show the manual for command
df - show disk usage
du - show directory space usage
free - show memory and swap usage
whereis app - show possible locations of app
which app - show which app will be run by default
lshw -html > hardware.html - create an overview of hardware
lsb_release -a - show information about the distro
tr : '\n' <<<$PATH - show directories in the PATH, one per line
sed 's/:/\n/g' <<<$PATH - show directories in the PATH, one per line with sed
mount - list currently mounted file systems
mount -o loop cdrom.iso /mnt/dir - mount cdrom image at /mnt/dir
lspci - list all PCI devices
lsusb - list al USB devices
who - list users currently logged in
which command - show the full path of command
time command - see how long command takes to complete

Text Manipulation
sed 's/string1/string2/g'- replace string1 with string2
sed 's/\(.*\)1/\12/g' - modify anystring1 to anystring2
sed '/ *#/d; /^ *$/d' - remove comments and blank lines
sed 's/[ \t]*$//' - remove trailing spaces from lines
history | wc -l - count lines in

Инструменты командной строки для веб-разработчика

Годная статья про curl siege ngrep


Управление gnome VNC vino-server с коммандной строки

Запуск и остановка VNC

gconftool-2 -s -t bool /desktop/gnome/remote_access/enabled false
gconftool-2 -s -t bool /desktop/gnome/remote_access/enabled true

Смена и установка пароля на VNC

gconftool-2 --type list --list-type string --set /desktop/gnome/remote_access/authentication_methods '[vnc]'
gconftool-2 --type string --set /desktop/gnome/remote_access/vnc_password $(echo -n 'mypassword'|base64)



Глюк установщика Ubuntu (не видит диски)

В логах (/var/vog/syslog) обнаружил интересные сообщения

Feb 10 04:18:06 ubuntu activate-dmraid: Serial ATA RAID disk(s) detected. If this was bad, boot with 'nodmraid'.
Feb 10 04:18:06 ubuntu activate-dmraid: Enabling dmraid support.

хотя gparted прекрасно все видит.
проблема решается просто - прямо из LiveCD в терминале набрать:

sudo apt-get remove dmraid

и перезапустить установщик.
[email protected]



Примеры настройки Tacacs, SSH в Cisco Catalyst

В Debian оно есть в squeeze
#apt-get install tacacs+