Last active
April 5, 2023 10:29
-
-
Save 101t/1b8930f47633da4e8975b3fc13d4805b to your computer and use it in GitHub Desktop.
Comprehensive Linux Cheatsheet
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
``` | |
____ _ _ | |
/ ___|___ _ __ ___ _ __ _ __ ___| |__ ___ _ __ ___(_)_ _____ | |
| | / _ \| '_ ` _ \| '_ \| '__/ _ \ '_ \ / _ \ '_ \/ __| \ \ / / _ \ | |
| |__| (_) | | | | | | |_) | | | __/ | | | __/ | | \__ \ |\ V / __/ | |
\____\___/|_| |_| |_| .__/|_| \___|_| |_|\___|_| |_|___/_| \_/ \___| | |
|_| | |
_ _ ____ _ _ _ _ | |
| | (_)_ __ _ ___ __ / ___| |__ ___ __ _| |_ ___| |__ ___ ___| |_ | |
| | | | '_ \| | | \ \/ / | | | '_ \ / _ \/ _` | __/ __| '_ \ / _ \/ _ \ __| | |
| |___| | | | | |_| |> < | |___| | | | __/ (_| | |_\__ \ | | | __/ __/ |_ | |
|_____|_|_| |_|\__,_/_/\_\ \____|_| |_|\___|\__,_|\__|___/_| |_|\___|\___|\__| | |
``` | |
########### | |
## GNOME ## | |
########### | |
Ctrl+Alt T — Terminal | |
Ctrl+Alt F — Firefox | |
Ctrl+Alt H — Home | |
Ctrl+Alt G — Gedit | |
Alt F12 — Run command | |
Alt F1 — Minimize window | |
Alt F2 — Toggle maximize window | |
Alt F3 — Toggle full screen | |
Ctrl+Alt D — Minimize all windows | |
Ctrl+Alt F1-F6 — Terminals (tty-s) | |
Ctrl+Alt F7-F12 — Xwindows | |
Ctrl+Alt Bksp — Restart X | |
Ctrl+Alt Del — Log out | |
Ctrl+Alt End — Shutdown | |
Super PgUp/PgDn — Switch workspace | |
Middle mouse button — Paste selected text | |
NAUTILUS/NEMO: | |
Ctrl L — Location, show path | |
Ctrl+Shift N — New folder | |
Ctrl H — Show hidden files | |
GEDIT: | |
Ctrl G — Find next | |
Ctrl+Shift G — Find previous | |
Ctrl+Shift K — Clear highlights | |
TERMINAL: | |
Ctrl+Shift C — Copy | |
Ctrl+Shift V — Paste | |
Ctrl+Shift T — New tab | |
Ctrl+Shift W — Close tab | |
Ctrl PgUp/PgDn — Switch tab | |
Ctrl +/- — Zoom | |
Ctrl D — Close terminal | |
Ctrl S — Scroll lock | |
BASH: | |
Keys when in emacs mode. You can switch to `vi` mode with `set -o vi` command. | |
Ctrl C — Interrupt, erase line | |
Ctrl A — Go to beginning of line | |
Ctrl E — End of line | |
Ctrl U — Copy line | |
Ctrl Y — Paste line | |
Alt . — Last argument | |
Ctrl R — Search trough history | |
Alt * — Show all matches for regular expression | |
Ctrl+Alt E — Show current line passed through alias, history and shell expansion | |
Ctrl X, Ctrl E — Edit command in editor | |
Ctrl P — Show last command (same as up arrow) | |
############################### | |
## AWESOME TERMINAL COMMANDS ## | |
############################### | |
======== | |
PACKAGES: | |
======== | |
dpkg — Low level package manager for Debian. | |
-l — Lists installed packages. | |
-i <package> (sudo) — Installs package from a package file. | |
apt-get — Advanced Package Tool built on top of `dpkg`. New command called | |
simply `apt` is also available. It merges the functionalities of | |
`apt-get` and `apt-cache`. | |
update — Updates local list of existing packages. | |
-u dist-upgrade — Upgrades by intelligently handling changing dependencies | |
with new versions of packages. To regularly update put this line | |
in `crontab`: | |
`apt-get update && apt-get -u dist-upgrade`. | |
upgrade — Same as dist-upgrade, but will not remove installed packages or | |
install new ones. | |
install <package> — Also updates single package. | |
remove <package> — Removes package but leaves its configurations. | |
remove apt-listchanges — Useful when Debian can't find a package. | |
purge <package> — Removes package and its configurations. Run `apt-get | |
autoremove` after to remove all dependencies that are not needed | |
anymore. | |
autoremove — Removes unneeded packages. | |
source <package> — Downloads code. | |
build-dep <package> — Installs the build dependencies. | |
--yes — Answers with 'yes' to most questions (Except the ones that can have | |
potentially harmful consequences). | |
--force-yes — Answers 'yes' to all questions (Not recommended). | |
apt-cache — Queries the APT's internal database. | |
search <keyword> — Searches packages like `apropos`, but globally. | |
show <package> — Shows package info like version, dependencies, etc. | |
showpkg <package> — Similar, but also shows the packages that depend on the | |
searched package (reverse dependencies). | |
policy <package> — Shows installed and remote version. | |
apt-file — APT package searching utility. | |
search <file> — Search in which package a file is included. | |
update — Updates local list of package contents. | |
aptitude — Enables package browsing (skin for apt-get). | |
search '~i!~M' — Lists installed packages that were not installed as a | |
dependency, with short description of each. | |
search <package> — Package search. | |
winetricks — Installs wine applications. | |
update-alternatives — Maintains symbolic links determining default commands. | |
unattended-upgrade — Automatic installation of security upgrades. | |
COMMANDS: | |
apropos <cmd> — Searches the manual page names and descriptions (use quotes | |
for phrases). | |
-a — Matches all keywords. | |
whatis <cmd> — Displays one-line manual page description. | |
whereis <cmd> — Locates the binary, source, and manual page files for a | |
command. | |
which <cmd> — Locates only the binary of a command. | |
wtf — Translates acronyms and filename suffixes. | |
INSTALL MANTRA: | |
``` | |
./configure --help | |
./configure | |
make | |
sudo make install | |
``` | |
======= | |
GENERAL: | |
======= | |
su — Switches user. | |
- <user> — Switches to user. | |
- — Switches to root. | |
man — Help on commands. | |
<section> — Section numbers: 1. Programs, 2. System calls, 3. Library calls, | |
4. Special files, 5. File formats, 7. Miscellaneous, 8. System | |
administration commands | |
echo — Prints passed text. | |
-n — Does not add newline at the end. | |
-e — Enables interpretation of backslashed letters. | |
xargs <cmd> — Passes output from one command to arguments of another: | |
`echo -a | xargs ls` | |
-t — Echoes the command before executing it. | |
-p — Echoes command and asks for confirmation before execution. | |
-0 — Input items are separated by null character instead of space. | |
tee <file> — Sends output of a program to specified file and to standard | |
output: | |
`<cmd_1> | tee out_1.txt | <cmd_2>` | |
/dev/tty — Sends output to terminal and to standard output | |
expr — Evaluates passed expression. | |
1 + 1 — Prints `2`. | |
bc — Evaluates input. It's basically a calculator, but also provides some | |
control commands. | |
echo 1 + 1 | bc — Prints `2`. | |
echo "scale=5;3/4" | bc — Prints `.75000`. | |
sh — Runs command interpreter (shell). Can run a script even if not executable. | |
-c '<commands>' — Starts new non-interactive shell and reads commands from | |
arguments instead of `stdin`. | |
To append lines to system configuration file run: | |
`sudo sh -c 'echo "<text>" >> <file>'` | |
bash — Runs bash command interpreter (shell). | |
-c — Reads commands from arguments instead of `stdin`. | |
-n <script> — Checks script for errors. | |
-x — Prints commands before execution. Useful for debugging. | |
gcc — Gnu C compiler. Run `g++` for C++ code. | |
-w — Supresses warnings (Only prints errors). | |
-Wall — All warnings. | |
-g — Compile for debugging. | |
-std=<std> — Sets the standard. Suported standards for C are: | |
`c90`, `gnu90`, `c99`, `gnu99`, `c11` and `gnu11`. | |
Suported standarts for C++ are: | |
`c++98`, `gnu++98`, `c++11` and `gnu++11`. | |
`gnu90` and `gnu++98` are the default options. | |
-O<level> — Optimization level. `0`: Reduce compilation time (default), | |
`1-3`: - Level of optimization, `s` - Optimize for size, `g` - Optimize | |
debugging experience. | |
run-parts <dir> — Runs all scripts or programs in a directory. | |
date — Tells and sets date and time. | |
-s <string> — Sets date. | |
+%T -s "10:13:13" — Sets time. | |
timedatectl — Controls the system time and date. | |
set-timezone CET — Sets timezone. | |
cal — Calendar | |
xclip — Copies to clipboard. | |
mkfifo <pipe> — Creates named pipe during that shell session. | |
mkisofs — Creates a DVD/CD image. | |
genisoimage — Creates a DVD/CD image (Debian). | |
cdrecord — Writes to a CD/DVD. | |
acpi — Checks battery. | |
fdisk -l (sudo) — Shows partitions. | |
shutdown — Closes down the system at a given time. | |
now — Takes you to the single user mode. | |
-h now — Begins the shutdown procedure, same as `halt` and `poweroff`. | |
-h 11:50 — At 11:50. | |
-r now — Same as `reboot`. | |
make — Utility that maintains groups of programs. | |
-q — Doesn't run any commands, just returns `0` exit code if everything is | |
up to date or non-zero otherwise. | |
-B — Unconditionally makes all targets. | |
FILES: | |
ls -d — List directory names instead of contents | |
-S — Sort by size | |
-t — Sort by time | |
-1 — One file per line | |
./* — Ls one level deep | |
-i — Get inode number of file (file id). Use `sudo find / -inum <number>` to find all links that point to same file. | |
cp -i — Interactive (Prompts before overwrite) | |
-v — Verbose (Explains what is being done) | |
-R — Copy directories recursively | |
-p — Preserve mode, ownership and timestamps | |
--preserve=all — Also preserves context, links and xattr | |
rm -i — Interactive (Prompts before every removal) | |
-v — Verbose (Explains what is being done) | |
-f — Force remove (Does not prompt, useful if `rm` is aliased with `-i`) | |
-R — Removes directories and their content recursively | |
mkdir -p — Make parents if needed | |
ln — Makes links to the files | |
-s <file> <link> — Makes symbolic link. If you want to use relative paths you must be in links directory !!!!!!!!!!!!!!!!!!!!!! | |
df -h — Displays humanly readable free disk space | |
du -s <dir> — Directory size | |
mc — Midnight commander | |
Alt o — Open parent dir in another panel | |
Ctrl o — Switch to bash | |
find <dir> -name <file> — Search by name | |
-regex <regex> — Use regex for name search | |
-not — Insert before other options to negate | |
-maxdepth <levels> — Descend only to levels deep | |
-samefile <file> — Find all hard links of a file | |
-xdev — Don't descend directories on other filesystems | |
-inum <inum> — Find files with the inode number | |
-type <f|d|b|...> — Find files of type | |
-delete — Delete found files | |
-exec <cmd> {} \; — Find files and execute command for every found file. `{}` is replaced with filename | |
-exec <cmd> {} + — Find files and execute command with all filenames in place of `{}` | |
-atime +/-n — Find files that were last accessed less or more than n days. | |
-print0 | xargs -0 <cmd> — Sends found files to a command as parameters. Uses `NUL` character as separator, necessary for filenames with spaces | |
locate <regex> — Similar as `find` but using index | |
-i — Ignore case | |
--regex — Interprets all patterns as extended regex | |
-0 | xargs -0 <cmd> — Sends found files to a command as parameters. | |
updatedb (sudo) — Update locate index | |
md5sum — Prints md5 sum hash of a file | |
read — Read single line from standard input | |
-n 1 — Print after reading one character | |
-s — Do not echo input coming from terminal | |
shred — Securely remove files | |
file — Determine file's type | |
tree — Ls in a tree-like (hierarchical) format | |
install — Copy files and set attributes | |
gpg — Decrypt file with password | |
-c — Encrypt | |
mktemp — Create a temporary file or directory in `/tmp` and returns it's name. | |
rename s/<from>/<to> <files> — Renames multiple files using `sed` syntax | |
rsync — A fast, versatile, remote (and local) file-copying tool | |
-Hbaz -e ssh — `<src_dir> <user>@<host>:<dest_dir>` - Backs up the 'src-dir': | |
`-H` preserves hard links, `-b` renames preexisting destination files (back up), `-a` preserve everything except hard links and `-z` compresses. | |
cmp — Compares two files, similar to diff but also for binaries | |
stat — Displays files status | |
-c%X — Time of last modification of the file | |
readlink -f — Follow link recursively and print files path | |
xdg-open — Open file with default application for the file type | |
dialog — Display dialog box from shell script | |
watch — Execute command periodically | |
ARCHIVES: | |
dtrx <archive> — Universal archive extractor | |
tar — xvzf <file>.tar.gz (.tgz) — Decompress and detar | |
xvjf <file>.tar.bz2 — Decompress and detar | |
-cf <archive>.tar <files> — Compress | |
unzip \*.zip — Backslash is necessary so that bash doesn't expand the `*` | |
-d <dir> — Extract into directory (create if doesn't exist) | |
zip -r <archive> <dir> — Compress whole directory recursively. | |
-g <archive> <files> — Add files to existing archive (grow). | |
unrar e — Extract files from rar archive | |
zcat — Cats gziped file | |
TERMINAL MULTIPLEXERS: | |
screen — Switch between multiple virtual terminals (useful in ssh). Prefix for | |
a command is `Ctrl a`. | |
c — New terminal, | |
n — Next, | |
p — Previous, | |
a — Go to beginning of line, | |
| — New region vertically, | |
S — New region horizontally, | |
tab — Move to next region, | |
Q — Close all but selected region, | |
X — Kill the current region, | |
esc — Enter copy/scrollback mode -> space: start/stop marking, | |
] — Paste, | |
k — Kill window, | |
t — Show time and avg CPU load | |
tmux — Terminal multiplexer, better screen. Prefix for a command is `Ctrl b`. | |
Most commands are the same as in `screen`. | |
ls — Shows running sessions | |
attach [-t <no>] — Attach to running session | |
d — Detach from currently attached session | |
pgup — Enter in copy mode and pageup, | |
[ — Copy mode, | |
] — Paste, | |
" — Split horizontally, | |
% — Split vertically | |
==== | |
BASH: | |
==== | |
"$x" — ALWAYS PUT DOUBLE QUOTES AROUND VARIABLE!!!!!!!!!!!!!!! | |
All variables in bash are global!!!!!!! | |
"$*" — Combines all the arguments into single word, separating them with first character of IFS variable. If IFS is not set, space is used. If IFS is null, no separator is used!!!!!!!!! No args provided will result in one empty string being passed on!!! | |
"$@" — Use this instead!!!!! Will retain arguments as-is, so no args provided will result in no args being passed on. This is in most cases what you want to use for passing on arguments. | |
Google: "$@" is right almost everytime, and $* is wrong almost everytime. | |
"$#" — Number of arguments | |
"$1" — First argument | |
"$0" — Name of the script | |
$'\n' — String literal with escape sequences (there is a backslash before n) | |
If you want IFS to be a new line (useful with for loop) you need to: `IFS=$'\n'` - The dollar forces substitution!!!!! | |
Also if you want 'while read line; do...' to preserve leading spaces and tabs, you need to set IFS="" | |
$? — Exit code of last command (0 - Success) | |
Ctrl-Z, kill %% — Kill looping bash script | |
test <expr> — Same as `[ <expr> ]`. Returns zero exit status if true. | |
-n — Is string non empty | |
-z — Is string empty | |
-a — And | |
-o — Or | |
= — Strings are equal | |
-nt — File newer than | |
-ot — Older then | |
-d — Directory exists | |
-e — File exists | |
-f — Is a regular file | |
-h — Its a symbolic link | |
-r — Has read permission | |
-w — Has write permission | |
-x — Has execute permission | |
[[ <expr> ]] — Same as `[`, but without word splitting and filename expansion. And with additional operators: `&&`, `||`, `<`, `>` (lexicographic less, more), and also regular expression matching. | |
=~ — Regex comparison operator: `[[ "$HOST" =~ ^user.* ]]` | |
let <expr> — Executes expression: let a="$b"+2 | |
$(command) — Same as `command` | |
eval <variable> — Execute string as command | |
$RANDOM — 0 - 32767 | |
input=`cat` — Getting standard input | |
- — In place of a file name means standard in or out | |
set -o vi — Set line editing to vi mode | |
pushd . — Put current dir on stack | |
popd — Pop dir from stack | |
cd - — go to last dir | |
source <script> — Run script: for example source /etc/profile (same as . <cmd>) | |
#!/bin/bash — Good practice to insert at beginning of a bash script | |
export PATH="$PATH:<dir>" — Adds new directory to path environment variable. | |
read -p <message> — Prompt for user input | |
var=${1:-"<default>"} — Setting variable with default value if $1 is empty | |
getopts — Parse parameters/arguments, builtin | |
getopt — GNU version is even better then getopts, not a builtin | |
while read line; do <commands>; done < <file> — Read from file line by line | |
-r — Do not treat backslashes as escape characters | |
complete -F <completion_function> <cmd> — Set completion function for command | |
complete -p <cmd> — Print the completion function for command | |
compgen -c <pattern> — Print all completions for pattern | |
help <builtin> — Display information about builtin command | |
wait — Wait for all background processes to end | |
SAFETY: | |
set — -e — Exit if any command fails | |
-u — Exit if referencing undefined variable | |
-o pipefail — If any command in a pipeline fails, its return code is used as the return code of the whole pipeline | |
IFS=$'\n\t' — Remove space from the default Internal Field Separator | |
HISTORY: | |
sudo !! — Run the last command as root | |
␣<cmd> — Execute a command without saving it in the history | |
!<cmd> — Run last command that starts with cmd | |
REDIRECTIONS: | |
<cmd> 2> /dev/null — Redirect error output to `null` | |
<cmd> &> /dev/null — Redirect both standard and error output to `null` | |
<cmd> >&2 — Write to stderr | |
<cmd> 2>&1 | less — Add stderr to stdout and print it with less (useful for gcc) | |
ARRAYS AND LINES: | |
Reads line by line from variable. To preserve spaces use `IFS=`. | |
``` | |
while IFS= read -r line; do | |
echo "... $line ..." | |
done <<< "$list" — | |
``` | |
${a[1]} — Value of the second element of the array | |
for c in ${a[@]} — Iterate over array | |
${varname:offset:length} — Get substring: `s="aeiou"; ${s:3:1} -> o` | |
${#var} — Length of a var | |
${#name[subscript]} — Length of the element | |
${#name[@]} — Length of the array | |
ALIASES AND FUNCTIONS: | |
alias — Print all aliases | |
<name> — Print alias | |
<name>='cmd' — Set alias | |
command <cmd> — Executes original command, bypassing any aliases or shell functions that may be defined for command | |
\<cmd> — Temporarily disable alias (call original) | |
type <cmd> — Will tell you what is command aliased to or if it is a builtin, function or a command | |
-P just check commands | |
declare -F — Print function names | |
declare -f — Print functions | |
==== | |
TEXT: | |
==== | |
PRINT: | |
head — -n-<num_of_lines> — Print all lines but the last n | |
-c <num_of_chars> — Print first c characters | |
tail — -n+<line_num> — Start at line number | |
-f — Do not stop printing (follow) | |
cat — -n — Number all lines | |
>> file — Simplest text editor (great for pasting) | |
less &<patt> — Display only lines with pattern | |
-N — Show line numbers | |
-~ — Do not show `~` after `EOF` | |
+G — Tells less to start at the end of the file | |
+F — Follow the input (to scroll up first press ctrl+c) | |
-F — Or --quit-if-one-screen | |
v — Opens editor defined in `$VISUAL` or `$EDITOR` | |
:n — Examine the next file | |
<, > — Go to home, end | |
wc — Count lines, words and characters | |
EDIT: | |
sudo -e <file> — Edit file as sudo | |
tr <from> <to> — Translate characters | |
-d — Delete characters | |
cut <file> — Removes columns from each line of files | |
-d ':' -f 1,7 /etc/passwd — Only show the username and the shell | |
sort — Sorts lines | |
-u — Uniq, removes duplicates | |
-t — Set delimiter for fields (default is space) | |
-k — Select by which field to sort | |
uniq — Removes adjacent duplicates | |
-d — Intersection | |
-u — Difference | |
column — Columnate text | |
-t — Create a table | |
shuf — Shuffle input lines | |
tac — Concatenate and print files in reverse (reverse `cat`) | |
join — Join lines of two files on a common field | |
colrm [from [to]] — Removes columns | |
seq <number> — Output numbers from 1 to number | |
ispell, aspell — Interactive spell checker | |
basename <path> — Strips directory from path | |
-s .<suffix> — Also strip suffix | |
-a — Process multiple filenames | |
dirname <path> — Strip last component from path | |
fmt — Produce roughly uniform line lengths | |
fold — Wrap each input line to fit in specified width | |
paste — Glue two documents side by side | |
sed — 's///g' — Substitute every occurrence in line, not just the first one | |
's///I' — Ignore case | |
-r — Extended syntax, for `+`, `?`, ... Also you shouldn't escape the parenthesis | |
-r 's###e' — Execute match as a command | |
-i <file> — Will make changes directly to the file (in place) | |
-u — Unbuffered mode (processes input immediately) | |
-n l — Print escape sequence (keycode) of a pressed key | |
expand — Convert tabs to spaces | |
-t <number> — Set number of spaces (default is 8) | |
-i — Do not convert tabs after non blanks | |
DIFF: | |
diff — -u <files> — Unified format | |
--brief -r — Compare two directory trees | |
colordiff — Version of diff with colors | |
sdiff — Two files side by side | |
comm — Compare two sorted files line by line | |
patch — Apply a diff file to original | |
patch < patch.diff — Apply patch | |
diff -u <old_file> <new_file> > patch.diff — Create patch | |
SEARCH: | |
grep <patt> <file> — -v — Inverse | |
-n — Line numbers | |
-w — Whole word | |
-A<num> — Print also num lines after | |
-B<num> — Print also num lines before | |
-r — Recursive | |
-o — Print only matching part | |
-P — Perl notation with additional operators such as: `\\t`, `+` and `?` (non-greedy!!!!). | |
-i — Ignore case | |
-I — Do not process binary files | |
-l — Just print files with matches | |
-L — Just print files without matches | |
-e <patt> — Necessary to put before pattern if it starts with `-`!!!!!!! or if you want multiple patterns. | |
| wc -l — Count occurrences | |
--line-buffered — Processes input line by line instead of in bigger chunks | |
look — Display lines beginning with a given string | |
strings — Print all text parts of binary file | |
CONVERT: | |
todos, fromdos — Convert line endings form/to windows format (package tofrodos) | |
enscript — Converts text files to postscript, rtf, HTML | |
gs — Ghostscript: postscript and PDF language interpreter and previewer | |
pdftohtml — Pdf to html | |
pdftotext — Pdf to text | |
libreoffice — New Openoffice | |
figlet — Display large characters made up of ordinary screen characters (Ascii art) | |
toilet — Similar (Ascii art) | |
cproto — Generates C function prototypes (declarations) | |
EDITORS: | |
nano — Simple text editor. | |
/etc/nanorc — Config file. | |
/usr/share/nano/<lang>.nanorc — Syntax highlight files. | |
Alt + / or ? — Go to last line. | |
fte — Cool text editor with CUA (IBM)-shortcuts | |
diakonos — Simple terminal text editor with ctrl-c for copy | |
pyroom — Distraction free writing (gui) | |
======= | |
NETWORK: | |
======= | |
whois — Info about domain | |
host <ip/hostname> — DNS lookup utility | |
nslookup — Same interactively | |
dig — Same, lot of options | |
hostname — Prints/sets computer name, to set it permanently edit `/etc/hostname` and `/etc/hosts` | |
netstat — Displays contents of /proc/net files, status of ports... | |
-r — Show routing table | |
-i — Show interfaces | |
arp — Manipulate the system ARP cache (IP -> mac) | |
route — Tool used to display or modify the routing table | |
add default gw <ip> — Change the default gateway | |
should DNS not be configured correctly on your machine, you need to edit `/etc/resolv.conf` to make things work | |
ifconfig eth0 down/up (sudo) — Turn network interface on/off | |
<ip> netmask <mask> up — Set ip and mask | |
ifup eth0 — Will bring eth0 up if it is currently down. | |
ip link show — List network interfaces | |
link set dev eth0 up — Bring interface eth0 up or down | |
addr show — List addresses of interfaces | |
route add default via <ip> — Set default gateway | |
traceroute, traceroute6, traceroute6.iputils — Traces route | |
tracepath, tracepath6 — Similar (iputils package) | |
mtr — Combines the functionality of the traceroute and ping | |
findsmb — List info about machines that respond to SMB name queries - Windows based machines sharing their hard disks | |
/etc/services — List of internet services with their port numbers | |
NetworkManager — Network management daemon, configuration file is in /etc/NetworkManager/NetworkManager.conf | |
nm-tool — Prints info | |
nm-online — Is network connected | |
nmcli — Command-line tool for controlling NetworkManager | |
nc — (netcat) It can open TCP connections, send UDP packets, listen on arbitrary TCP and UDP ports, do port scanning... | |
ncat — Concatenate and redirect sockets | |
ethtool eth0 — Show status of eth0 | |
-S — Statistics | |
-s — Change settings (speed, duplex,...) | |
ss -tupl — List internet services on a system | |
-tuo — List active connections to/from system | |
WIRELESS: | |
iwconfig — Sets the wireless configuration options basic to most wireless devices | |
iwlist wlan0 — <option> — Displays current status information of a device, more detailed then iwconfig | |
scan (sudo) — List wireless networks in range | |
iwspy — Sets the list of IP addresses in a wireless network and checks the quality of their connections | |
iwpriv — Accesses configuration options specific to a particular device | |
rfkill list — Show wireless adapters (wifi and bluetooth) | |
block/unblock <dev_num> — Block/unblock wireless device | |
iw dev wlan0 — link — Show link status of wlan0 | |
set biterates <standard> — Manually set interface speed | |
scan (sudo) — List wireless networks in range | |
wavemon — Monitor wireless connection link quality | |
======== | |
INTERNET: | |
======== | |
mutt — Mail client | |
sftp — Secure ftp | |
sshd — (openssh-server) ssh server deamon, on Windows service is named 'CYGWIN sshd' | |
/etc/init.d/ssh restart (sudo) — Restart sshd (ssh deamon) | |
/usr/local/etc/init.d/openssh start (sudo) — Start openssh deamon | |
ssh-keygen -t rsa -C <email> — Generate rsa key pair, keys are stored in ~/.ssh | |
ssh — SSH client | |
<user>@<address> "mpg321 -" < <file>.mp3 — Stream audio over ssh | |
enter ~. — Kill unresponsive session | |
scp — Securely copy files over network. Example: `scp <local_file> <user>@<host>:~<remote_file>` | |
wget — Download files from WWW | |
-O — Specify output file | |
-c — Continue downloading unfinished file. Can also use wildcards, but use single quotes around url. | |
-r -l1 --no-parent -A.gif — Recursively to the depth of one ignoring references to the parent directory and all gifs. | |
curl — Similar | |
-qO - — Writes to standard output + quiet | |
-i — Urls specified by standard input | |
transmissioncli — Torrent terminal client | |
-d — Download limit (kB/s) | |
-u — Upload limit | |
youtube-dl — Download from YouTube | |
noip2 — Dynamic dns update client | |
rdesktop — Remote Desktop Protocol client | |
tin, nn — Usenet client | |
nrss — Rss feed reader | |
BROWSERS: | |
lynx — Terminal web browser | |
-cmd_log=<file> — Write keystrokes to script | |
-cmd_script=<file> — Read keystrokes from script | |
-syslog-urls — Log requested URLs with syslog. | |
-dumb — Prints txt to stdout | |
-crawl — Same, turns numbers off | |
-source — Prints html to stdout | |
-l — Add the current link to your bookmark file | |
a — Save the address of a document or link to a bookmark file, by default ~/lynx_bookmarks.html | |
o — Options (you can select vim mode) | |
ctrl+n — Scroll down two lines | |
ctrl+p — Scroll up two lines | |
ctrl+p — Previous line | |
crrl+n — Next line | |
elinks — Another web browser (has menus) | |
HACKING: | |
nmap — -sP 192.168.1.1-3 — Network scanning | |
192.168.1.3 -p100-139 — Port scanning | |
-O 192.168.1.3 (sudo) — Scanning os | |
tcpdump (sudo) — Sniffer (show network traffic) | |
-l — Buffered output (for piping to less, etc.) | |
ettercap — Multipurpose sniffer/interceptor/logger for switched LAN (can detect man in the middle, denial of service, DNS spoofing) | |
driftnet — Picks out and displays images from network traffic | |
kismet — Wireless 802.11b monitoring tool | |
aircrack-ng — Wireless WEP/WPA cracking utilities | |
Cain & Abel — Password recovery tool for Microsoft Operating Systems | |
dnsniff — Warious hacking tools: | |
arpspoof — For man in the middle attack | |
dsniff — Password sniffer for several protocols, ... | |
ip link set eth0 promisc on — Set network interface to promiscuous mode | |
multicast off — Set multicast off | |
====== | |
SYSTEM: | |
====== | |
meta, system info — In cinnamon | |
uname -a — Print system info, kernel version | |
cat /etc/issue — Show name and version of distribution | |
init — Upstart init daemon job configuration | |
telinit — Change system runlevel | |
dmesg — Print the contents of your bootup (startup) messages displayed by the kernel. This is often useful when debugging problems | |
getconf -a — Print all system configuration variables | |
nohup <cmd> — Run a command immune to hangups, runs even after the shell is closed (writes output to nohup.out) | |
&>/dev/null & — Run a command immune to hangups in background, do not save output | |
wmctrl — X Window Manager | |
awesome — Tiled window manager | |
-k — Check configuration script for errors | |
busybox <cmd> — Combines tiny versions of many common UNIX utilities into a single small executable. (1.5 Mb) | |
mono — .NET support | |
USERS: | |
users — Prints logged in users | |
who — Logged in users, more data | |
w — Logged in users, also what are they running | |
vipw — Edit password file | |
vigr — Edit groups file | |
umask — the umask is a value set by the shell. It controls the default permissions of any file created | |
usermod <user> — Modify user account information | |
-l <new_name> <old_name> — | |
-c "<new_real_name>" <user> — | |
-d /my/new/home <user> — Change location of the users home | |
-m -d /my/new/home — Also move the files | |
useradd <user> — Add user | |
adduser <user> — More high level (use `adduser <user> sudo` after to add user to sudo group) | |
--system — Create system user (can not log in) | |
<group> — Add user to group (only takes effect after login!!!) | |
groups <user> — What groups user belongs to | |
userdel -r <user> — Remove user and his home dir | |
deluser -remove-all-files <user> — More high level, removes also files outside home, cron jobs, itd | |
passwd <user> — Change password | |
FILE SYSTEMS: | |
mkfs — Build a Linux filesystem | |
mke2fs — Create a ext filesystem | |
mkswap — Set up a swap area | |
parted — Partition manipulation program | |
-l (sudo) — List partitions | |
fdisk — Manipulate disk partition table | |
-l (sudo) — List partitions | |
disks — Nice GUI partition tool | |
mount — List all mounted devices (to get list of devices use `fdisk -l`) | |
<device> <path> — For example mount /dev/hdc2 to /mymedia | |
lsattr — List file attributes | |
chattr — Change file attributes | |
rkhunter -c — Checks if it can find any rootkits under the system | |
ntfsundelete — Undelete files on NTFS partition | |
LOGGING: | |
last — When various users have logged in or out. This includes information on when the computer was rebooted. | |
lastlog — Displays a list of users and what day/time they logged into the | |
system. | |
To get all failed logins run: | |
`cat /var/log/auth.log | grep "failed password" -i`. | |
rsyslogd — manages all the logs on your system | |
closelog, openlog, syslog, vsyslog -> library calls that send messages to the system logger | |
logger — Makes entries in the system log | |
zeitgeist — Activity logger | |
LOAD: | |
tload — 'graphic' representation of system load | |
top — Show processes by resource consumption | |
<, > — Change resource | |
htop — Better top | |
free -tm — Displays memory statistics | |
-s <seconds> — Continuously display | |
vmstat — Performance of system components / virtual memory statistics | |
sar — System activity information | |
iostat — Disk usage | |
time <cmd> — Time a execution of a command | |
perf — Profiler | |
TRACING: | |
auditd — System call auditing (package) | |
ausearch — Querys the audit logs | |
autrace — Traces a specific process | |
auditctl — Controls the behavior of the auditd server | |
strace <cmd> — Trace system calls and signals. All printed system calls can be looked up by `man`! | |
-s — Maximum string size we want printed (default is too short, 2000 is OK) | |
-f — Also follow children | |
-p <pid> — Attach to process | |
-o <file> — Write output to file | |
-c — Count/aggregate | |
-T — Time the execution of each call | |
ltrace — List library calls made by command | |
lsof — List open files with file descriptors | |
-p <pid> — Open files by process | |
<path> — Open files in path | |
lsmod — Show which kernel modules (drivers) are loaded | |
modinfo <module> — Get more information about kernel module | |
HARDWARE: | |
lshw (sudo) — List all hardware | |
lspci [-tv] — Show pci info | |
lsusb [-tv] — Show usb info | |
lscpu — Print CPU information | |
dmidecode -q — Display bios/dmi information like ram size/type, | |
max ram, computer model name, cpu information. | |
smartctl -A /dev/sda — Show disk usage info | |
hdparm -tT /dev/sda — Do a read speed test | |
badblocks -s /dev/sda — Check for bad blocks | |
fstrim -v / — Discard unused blocks, useful for ssd-s | |
sensors — (lm-sensors) hardware monitoring tool, temperature, fan speed | |
pwmconfig — (fancontrol) set fan speed | |
TERMINAL: | |
tty — Print the file name of the terminal connected to standard input | |
stty — Change and print terminal line settings | |
openvt — run a program on a next available tty | |
script — Makes a typescript of everything printed on your terminal. Ctrl-d to stop recording. | |
setterm — Set terminal attributes | |
-cursor off/on — Set cursor on/off | |
gpm — Enable mouse for tty | |
KEYS/CHARACTERS/FONTS: | |
IN X: | |
xmodmap — Remap keys | |
setxkbmap -layout us — Set us keyboard layout | |
xev — Get keycodes of pressed keys | |
xset — User preference utility for X | |
-r — Turn key autorepeat off | |
r — Turn key autorepeat on | |
X NOT NECESSARY: | |
loadkeys <country_code> — Load key mapping | |
showkey — Get keycodes of pressed keys | |
setfont <font> — Set console font | |
/usr/share/consolefonts/Uni2-VGA16.psf.gz — For example | |
/etc/default/console-setup — contains the default settings | |
jfbterm — Enable unicode characters in terminal | |
echo -en "\e]PC7373C9" — Change blue color in tty (first numeral after P means slot, and others shade) | |
========= | |
PROCESSES: | |
========= | |
ps --forest — View hierarchical view of processes | |
v — Virtual memory | |
--sort <field> — Sort by field | |
pstree — Similar | |
pgrep <pattern> — Prints PIDs of processes containing pattern | |
-l — Also print process name | |
pkill <pattern> — Kills every process that contains pattern in name | |
kill <pid> — Sends TERM signal to process | |
-kill <pid> — Sends KILL signal meaning force quit, data will be lost | |
killall — Uses name instead of pid | |
skill — Sends signals to command/user/tty or report process status | |
-stop <user> — Stop all of the users processes | |
-cont <user> — Continue all users processes | |
nice — Sets the priority for a process (from max of -20 to min of 20) | |
-20 <cmd> — Execute command with maximum priority | |
renice — Changes the priority of an existing process | |
+20 <pid> — Change processes priority to lowest level | |
snice — Works very similarly to skill | |
-10 -u root — Increase the priority of all root's processes | |
pmap — Report memory map of a process (mapped file) | |
JOBS: | |
Ctrl z — Put job into background | |
jobs — Prints currently running job | |
bg <job_id> — Put job in background | |
fg <job_id> — Bring job to the foreground | |
%n — Job number n | |
%s — Job whose command line starts with s | |
%% — Current job | |
%- — Previous job | |
SCHEDULED COMMANDS: | |
at — Executes command at a particular time | |
at 21:30 / at now + time / at -f shell_script now + 1 hour | |
echo "ls -l" | at midnight | |
atq — List jobs currently in 'at' queue | |
atrm — Remove a job from the 'at' queue | |
crontab -e — Schedule commands for repeating execution | |
cron — Daemon that executes scheduled commands | |
sudo service cron status — Print status of cron | |
sudo service cron [stop|start|restart] — Stop, start, or restart cron deamon | |
sudo vim /etc/default/cron — Set logging lever | |
cat /var/log/cron — Print log | |
anacron — Like cron but it catches up with tasks next time the computer gets turned on | |
SERVICES: | |
service — Allows you to start, stop or restart a service (it runs a script in /etc/init.d folder) | |
-f sshd — Restart the ssh server | |
httpd status — Get status of apache | |
--status-all — Print status of all services | |
You can also execute the shell script directly from /etc/init.d folder like: /etc/init.d/httpd stop. | |
SYSTEM RUNLEVELS: | |
runlevel — Output previous and current runlevel | |
0 — Shuts down the system | |
1 — Administrative single-user mode | |
2 — Same as 3 but without networking / multiuser with X server | |
3 — Text mode state (ctrl+alt+F1) / User defined | |
4 — User defined | |
5 — X-window mode (ctrl+alt+F7) / User defined | |
6 — Reboots | |
S — Single user mode | |
========== | |
MULTIMEDIA: | |
========== | |
AUDIO: | |
alsamixer — Set audio level (curses) | |
amixer — Set audio levels (command line) | |
rmmod pcspkr (sudo) — Disable pc-speaker, beep | |
cmus — Music player (can be controlled from outside) | |
mplayer — Movie/music player | |
mpg321 — Plays mp3 | |
ogg123 — Plays ogg | |
aplay — Plays audio | |
play — Plays audio | |
arecord <file> — Command line audio recorder and player | |
-f <format> — Set file format (cd) | |
-d <seconds> — Set duration | |
-f cd -d <seconds> -t raw | lame -x -r — Out.mp3 — Capture audio that is playing and convert it to mp3 | |
id3v2 -l — Lists all files tags | |
sound-juicer — Cd ripper | |
xfburn — Cd burner | |
traverso — Simple daw | |
BITMAP: | |
display — Displays an image | |
montage — Creates a montage from images | |
<input_file/s> -set label '%t' <output_file/s> — Labels images | |
convert <old> <new> — Converts file format (imagemagick) | |
import — Captures screen-shots from the X server | |
mogrify — Edit image | |
gocr — Command line text recognition tool | |
ocrad — Command line text recognition tool | |
ppmforge — Creates picture of random planet or clouds | |
gnuplot — Interactive plotter: plot [-10:10] sin(x) | |
-p — Leave plots open after exit | |
plot <file>.dat — Plot data from dat file | |
fbi — Display images inside tty | |
VIDEO: | |
ffmpeg -i <file_in> <file_out> — Video and audio format converter. Has been replaced by avconv | |
avconv -i <file_in> <file_out> — Video and audio format converter (libav-tools) | |
openshot — Gui movie editor | |
openmovieeditor — Gui movie editor | |
aview, asciiview — ASCII art image viewer and video player | |
########################## | |
## AWESOME DEBIAN FILES ## | |
########################## | |
BASH: | |
~/.bashrc — Executed at every shell startup, user specific | |
/etc/bash.bashrc — Executed at every shell startup, all users | |
~/.profile, .bash_profile, .bash_login — First file found executed at login, user specific | |
/etc/profile — Executed at login, all users (put PATHS here) | |
/etc/rc.local — Last startup script executed, runs command as su | |
HOME: | |
~/.Xmodmap — Keyboard map | |
BINS: | |
/bin — Key programs like ls, cat, bash, ... | |
/sbin — Key programs for system management like ifconfig, mkfs, fdisk, ... | |
/usr/bin — Distribution managed programs | |
/usr/sbin — Distribution managed system programs | |
/usr/local/bin — User programs not managed by the distribution package | |
/usr/local/sbin — User system management programs, not managed by the distribution package | |
GENERAL CONFIG: | |
"Edit To Configure" or "Editable Text Configuration". | |
/etc/mailcap — Default programs for extensions | |
/etc/passwd — Users | |
/etc/groups — Groups | |
/etc/default — Boot script parameters that the end user or administrator is likely to change. | |
/console-setup — Set console (tty) character set, font size, ... | |
/etc/fstab — Filesystem table. To mount drive at startup, create dir in `/media` and append line like this : | |
`/dev/sda1 /media/data ntfs user,fmask=0111,dmask=0000 0 2` (Check `man fstab` for details). | |
/etc/alternatives — Links to default application versions (here you can change the default Java JDK) | |
/etc/issue — Name and version of distribution | |
/etc/fstab — Automatic mounts are handled by configuring the file | |
/etc/sudoers — Lists of users and the commands they can run with sudo (needs to be edited with visudo command) | |
/etc/apt /sources.list — List of places where to look for packages | |
SERVICES: | |
/etc/init/, ~/.init/ Init — Upstart init daemon job configuration | |
/etc/init.d — Folder with service scripts, that get executed at start and end | |
/halt — Runs at the end | |
/etc/rc<level>.d — Startup scripts for different runlevels - Links to scripts in /etc/init.d - S85httpd -> S means startup, K is for stop. (To disable service just change S for K) | |
/etc/rc.local — Last initialization file executed - Put your commands here | |
/etc/init/ssh.conf — Sshd config | |
/etc/ssh/sshd_config — Sshd config | |
/etc/crontab — System-wide crontab | |
/etc/cron.hourly, /etc/cron.daily, ... — Links to scripts that will execute periodically. Scripts within a cron directory are run alphabetically. | |
/etc/rsyslog.conf | rsyslog.d/50-default.conf — Log conf (need to restart rsyslogd after edit) | |
/etc/syslog.conf — Configuration information for syslogd | |
NETWORK: | |
/etc/resolv.conf — Dns information | |
/etc/sysconfig /networking/devices/ifcfg-eth0 — Use ifcfg to configure a particular interface | |
/etc/services — List of internet services with their port numbers | |
/etc/NetworkManager /NetworkManager.conf — Configuration file | |
PROC: | |
Various information about the system. | |
/proc/cpuinfo — Information about the CPU | |
/proc/modules — information about which kernel-modules are loaded on your system | |
/proc/net — Network related | |
/route — Routing table | |
/netstat — Displays contents of /proc/net files | |
/proc/iomem — Neat memory map | |
/proc/partitions — Partitions info | |
/proc/acpi /battery/BAT1/info — Battery info | |
/ac_adapter/ACAD/state — Adapter info | |
/wakeup — List of devices that can wake up your machine via acpi | |
sudo sh -c "echo USB1 > /proc/acpi/wakeup" — Enable device USB1 to wakeup computer from sleep/suspend | |
/proc/net/wireless — Wireless connection info | |
USR: | |
"Unix System Resources" | |
/usr/lib /jvm — Java JREs and JDKs | |
/usr/share /man — Man pages | |
/bash-completion — Bash completion functions | |
SBIN: | |
The "system-administrator's bin file". | |
Hosts programs that would be in /bin if they didn't have "root-only" access permissions. | |
VAR: | |
"Variable" | |
/var/log — System logs in here | |
/auth.log — Logins | |
/syslog — Most of the rest of the logs | |
/var/spool — Contains data which is awaiting some kind of later processing | |
BOOT: | |
Kernels. | |
/boot/grub/menu.lst — Grub configuration file | |
/etc/default/grub — Grub configuration file | |
########### | |
## GIT ## | |
########### | |
GIT MANTRA: | |
``` | |
git init | |
git add <file> OR git add . | |
git status | |
git commit -am "<commit_message>" | |
``` | |
CLONE FROM GITHUB: | |
git clone [email protected]:/<user>/<project> — Download repo (later you keep refreshing with 'git pull origin master') -> You need SSH key. If you don't want, use https://github.com/<user>/<repo> for address. | |
GENERATE SSH KEY: | |
1. — Check for existing keys: cd ~/.ssh; ls -al | |
2. — Generate new key: ssh-keygen -t rsa -C "[email protected]" | |
3. — Add your key to the ssh-agent: ssh-add ~/.ssh/id_rsa | |
4. — Add your key to GitHub: copy contents of ~/.ssh/id_rsa.pub and paste them into key field at 'Account settings' > 'SSH Keys' > 'Add SSH key'. | |
ADD TO GITHUB: | |
``` | |
# Create remote repository on website. | |
git remote add origin [email protected]:/<user>/<project>.git | |
git pull origin master | |
git push origin master | |
# Sometimes also: git push --set-upstream origin master | |
``` | |
REMOTE: | |
git remote update — Get info about state of remote | |
show origin — Print address of the origin | |
set-url origin <origin> — `[email protected]:<user>/<repo>.git` - Change the url of origin, ssh key needed; `https://www.github.com/<user>/<repo>.git` - Same, but withouth key. | |
git status -uno — Check if everything up-to-date | |
git fetch; git checkout <branch> — Checkout remote branch | |
TAGS: | |
git push --tags — Push tags | |
git fetch --tags — Pulling tags (automatically if on the same branch and there is a new commit?) | |
UNDO: | |
git reset --hard HEAD~1 — Delete last commit and all of its changes | |
HEAD~1 — Delete last commit but keep your changes | |
ALSO USEFUL: | |
git checkout HEAD^ <file> — Retrieve deleted file | |
git rm --cached <file> — Untrack file without deleting it | |
git tag -a 0.9.1 -m "Version 0.9.1 release" — Tag latest commit | |
git tag — List local tags | |
chown -R <user>:<group> * (sudo) — In .git/objects | |
git format-patch -1 <sha> — Generate patch file | |
git rev-parse HEAD — Get sha of head | |
git revert — | |
git describe — Print version and hash of HEAD | |
git log --name-only --author=<name> — Print changed files by commit | |
git log <file> — Print files history | |
git ls-files — List files | |
git show <revision>:<file> — Take a peek at the older revision of the file | |
git diff <commit> <commit> — Compare two commits | |
git stash — If you want to switch branches, but you don't want to commit your changes yet, you can 'stash' them | |
git stash apply — Apply the changes you stashed | |
git stash list — List all the stashes | |
git stash show -p stash@{0} — Show the diff of most recent stash | |
git update-index --chmod=+x <file> — Change files permissions | |
git config -l — Print repos configuration settings | |
git config core.filemode false — Ignores executable bit of the files | |
CHECKOUT: | |
git log > ../gitLog — First save log to file | |
git checkout <hash> — Then checkout previous versions | |
git checkout head — Return to head | |
GITHUB MD FORMAT: | |
![Alt text](/doc/basket-stats.png?raw=true "<Description>") — Insert image | |
BISECT: | |
git bisect start — | |
git bisect bad — Tell git that current version is bad | |
git bisect good v25.0.2 — Tell git the last good version you know about. | |
Now git will checkout a version in between, so you can check it and tell: | |
git bisect bad/good — This will continue until the commit that introduced the bug is found | |
git bisect reset — Exit bisect mode | |
TOOLS: | |
gitk — Repo explorer | |
gitg — A bit nicer version | |
tig — Text based repo explorer | |
gitstats — Generates stats for git repo, outputs HTML | |
VIRTUAL BOX: | |
git config core.filemode false — Ignores the filemode changes made by the host system | |
git config --global --unset https.proxy — If problem pulling | |
########### | |
## VIM ## | |
########### | |
+<linenum> — Open file at line number | |
alt+<normal mode key> — Escape, key !!!!!!!!!!!!!!!!! | |
ctrl+[ — Escape | |
. — Execute last command again | |
; — Repeat the last character-wise search | |
\c — Case insensitive search | |
? — Search backward | |
V — Linewise visual mode | |
~ — Switch case | |
> — Tab selection right | |
>> — Tab line right | |
P — Paste before cursor | |
x — Delete character | |
gF — Open file under cursor | |
K — Look up word under cursor in man pages | |
ctrl+v — Select visual box (block select) | |
:e — Reload file | |
:sav — Save file as and keep new file open (save as) | |
HELP: | |
ctrl+] — Follow link | |
ctrl+o — Go back | |
:q — Exit help | |
MOVEMENT: | |
e — End of word | |
E — End of WORD | |
W — Start of WORD | |
ge — End of previous word | |
), ( — Sentence | |
{, } — Paragraph | |
]], [[ — Section | |
:<num> — Goto line number | |
ctrl+o — Go to previous location | |
ctrl+i — Go to next location | |
% — Jump to matching bracket | |
LINES: | |
0 — Start of line | |
^,_ — First non-blank of line | |
+,- — First non-blank of next/previous line | |
Enter — First non-blank of next line | |
SCREEN LINES: | |
g0, g$ — Start/end of screen line | |
gm — Middle of screen line | |
gk, gj — Up/down one screen line | |
PAGE UP/DOWN: | |
H,M,L — Go to top/middle/bottom of screen | |
ctrl F,B — Page up/down | |
ctrl D,U — Half page up/down | |
ctrl E,Y — One more line at bottom/top | |
z Enter, z., z- — Reposition line with cursor at top/middle/bottom | |
SEARCH: | |
*,# — Search forward/backward for exact word under cursor | |
g*,g# — Same, but even when word is embedded | |
% — Find match of current brace, quote,... | |
fx,Fx — Move cursor forward/backward to x on current line | |
tx,Tx — Same, but to one char before x | |
;/, — Repeat/reverse last | |
:%s/old/new/gc — Replace, like sed, c means with conformations | |
MARKS: | |
'" — Move to position of last edit of file | |
`. — Move to last change in file | |
`0 — Position where you last exited vim | |
INSERT MODE COMMANDS: | |
ctrl+h — Backspace | |
ctrl+u — Delete line | |
ctrl+w — Delete previous word | |
MACROS: | |
q<x> — Record actions (macro) into x | |
q — Stop recording macro | |
@<x> — Execute x (macro) | |
REGISTERS: | |
"ayy — Copy line into register a | |
"ap — Paste register a | |
:reg — Access all registers | |
SET COMMAND: | |
:set <x> — Set x | |
:set no<x>, <x>! — Unset x | |
:set <x>=value — Assign x | |
:set <x>-=value — Remove value form <x> | |
:set all — Print all values | |
:set <x>? — Print x | |
SET COMMAND OPERANDS: | |
autoident, ai — Autoident (noai) | |
backup, bk — Back file up before overwrite (nobackup) | |
ignorecase, ic — Ignore case in search (noic) | |
number, nu — Display line numbers (nonu) | |
relativenumber, rnu — Display relative numbers (nornu) | |
shiftwidth, sw — Number of spaces added when indenting (8) | |
tabstop, ts — Tab width (8) | |
wrap — Wrap lines (wrap) | |
wrapscan, ws — Search wraps around file (ws) | |
mouse=a — Mouse mode (use shift when selecting to copy to clipboard) | |
linebreak — Do not break words | |
:set iskeyword-=. — Remove dot from words part (two words if separated with dot) | |
EDIT COMMANDS: | |
[n] operation [m] motion — If both n and m are specified then n x m | |
c, d, y — Change, delete, yank | |
C, D, Y — Till the end of line | |
cc, dd, yy — Current line | |
cf<x>, df<x>, yf<x> — Forward up to x | |
c), d), y) — Sentence | |
~ — Change case of character | |
g~w — Switch case of a word | |
gu, gU — To lower/upper case | |
[p — Paste but match current indentation | |
r — Replace character | |
S — Substitute entire line | |
x,X — Delete character/delete back | |
. — Repeat last change | |
ctrl+a, ctrl+x — Increment/decrement number under cursor | |
AUTOMATIC LINEBRAKE (WRAP): | |
gq — Formats (wraps) selected text | |
gqq — Format current line | |
:set tw=72 — Set text width | |
ADVANCED: | |
tw=72 fo=cq wm=0 — No automatic wrapping, rewrapping will wrap to 72 | |
tw — Controls the wrap width you would like to use | |
fo — Controls whether or not automatic text wrapping is enabled, depending whether or not the t flag is set | |
wm — Controls when to wrap based on terminal size | |
COLORSCHEME: | |
:colorscheme — darkblue, torte — Nice, darker | |
slate, default — Less contrast | |
:highlight Normal ctermbg=grey — Set light background | |
SPELLCHECK: | |
:set spell spelllang=en_us — Turn spellcheck on | |
:set nospell — Turn off | |
:setlocal spell spelllang=en_us — Set dictionary | |
z= — Show suggestions for misspelled word | |
]s — Go to next misspelled word | |
[s — Go to previous misspelled word | |
TABS: | |
:tabe <file> — Open new tab | |
gt, gT — Go to next/previous tab | |
ctrl+pgup/pgdn — Switch tab | |
vim -p — Open one tab page per file | |
ZZ — Save and close tab (same as :wq) | |
SPLITS: | |
:vsp — Split vertically | |
ctrl-w, direction — Move to split | |
AUTOCOMPLETE: | |
ctrl+n — Show autocomplete suggestions | |
HEXDUMP: | |
:%!xxd — Convert to hex | |
:%!xxd -r — Convert back | |
VUNDLE: | |
:PluginInstall — Install plugins | |
REFORMAT CODE: | |
= — Fix indentation | |
########## | |
## MISC ## | |
########## | |
PIRATEBAY: | |
torrents.thepiratebay.sx/7532474/Cabin.torrent — Download torrent file | |
JAVA: | |
javac -cp <path>:<path>... — Tell Java where libraries are located | |
java -Xmx6g myprogram — Reserve 6 giga for process | |
-jar <jar> — Execute jar | |
-cp .:<path>:<path>... — Tell java where libraries are located, you also need to pass the location of class among paths, hence .: | |
export _JAVA_OPTIONS=-Xmx1000m — Set heap space globally | |
appletviewer <page>.html — Run Java applet | |
jps -lvm — List java processes | |
jmap -histo:live <pid> — Memory map | |
jvisualvm — Profiler | |
jar cvfe "bla.jar" <main_class> *.class — Create executable jar | |
jar xf <jar> — Extract files from jar | |
jar tf <jar> — Print contents of a jar | |
INSTALL ORACLE JDK: | |
``` | |
sudo apt-get remove openjdk* | |
sudo add-apt-repository ppa:webupd8team/java | |
sudo apt-get update | |
sudo apt-get install oracle-java7-installer | |
``` | |
INSTALL ORACLE JDK ON DEBIAN: | |
``` | |
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" | sudo tee /etc/apt/sources.list.d/webupd8team-java.list | |
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" | sudo tee -a /etc/apt/sources.list.d/webupd8team-java.list | |
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886 | |
sudo apt-get update | |
sudo apt-get install oracle-java7-installer | |
sudo apt-get install oracle-java7-set-default | |
``` | |
FIREFOX: | |
about:config — Layout.css.devPixelsPerPx default zoom (-1.0) | |
XRANDR: | |
xrandr --output VGA1 --primary — Changes primary screen | |
--output VGA1 --auto --pos 0x0 — `--output LVDS1 --auto --right-of VGA1` - To change their relative positions | |
-q — List devices | |
--auto — Reset | |
--output LVDS1 --off — Turn off laptop screen | |
--output [VGA|HDMI] --mode 1600x1200 — 24" 16x12 on | |
MOUNT ISO: | |
``` | |
sudo mkdir /media/x | |
sudo mount -o loop <path_to_iso> /media/x | |
``` | |
ECLIPSE: | |
ctrl+1 — Quick fix | |
alt+shift+s — Source submenu | |
ctrl+F7, esc — Close pop-up console window | |
ctrl+7, ctrl+/ — Toggle comment | |
F3 — Goto definition | |
objectaid — UML plugin | |
WINE: | |
winecfg — Drives tab to set drive | |
wine explorer /desktop=abalaba,1024x768 app.exe — Run wine app in virtual desktop | |
reason on wine: down alt down — Open menu | |
regedit — Registry editor | |
CYGWIN: | |
[cygwin] ssh-host-cofig — | |
[command prompt] net start sshd — | |
[any] ssh <windows_username - CASE MATTERS!>@<host> — Run sshd (use windows password) | |
GOLANG: | |
go build — Compile packages and dependencies | |
clean — Remove object files | |
env — Print Go environment information | |
fix — Run go tool fix on packages | |
fmt — Run gofmt on package sources | |
get — Download and install packages and dependencies (first you need to set GOPATH to dir where packages will get downloaded) | |
install — Compile and install packages and dependencies | |
list — List packages | |
run — Compile and run Go program | |
test — Test packages | |
tool — Run specified go tool | |
version — Print Go version | |
vet — Run go tool vet on packages | |
syntax highlight — `https://github.com/jnwhiteh/vim-golang` | |
for gedit — `sudo cp /usr/share/gtksourceview-3.0/language-specs/go.lang /usr/share/gtksourceview-2.0/language-specs/` | |
simple ncurses — Go get github.com/nsf/termbox-go | |
REPACKAGING A LINUX INSTALL ISO: | |
``` | |
# Mount ISO | |
mkdir -p /mnt/linux | |
mount -o loop /tmp/linux-install.iso /mnt/linux | |
``` | |
``` | |
# Copy contents to a working directory | |
cd /mnt/ | |
tar -cvf — Linux | (cd /var/tmp && tar -xf — ) | |
``` | |
``` | |
# Make your changes and repackage (on Debian use genisoimage). -c passes the name of the file that will be created | |
cd /var/tmp/linux | |
mkisofs -o ../your-new.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -J -R -V Your Disk Name Here . | |
``` | |
GDB: | |
gdb <cmd> — Start gdb | |
run <arguments> — Start debugging | |
run < <file> — Run with piped input | |
up — Follow trace | |
print <variable> — Print variable | |
COREDUMP: | |
ulimit -c unlimited — Set core file limit to unlimited | |
gdb <cmd> core — Debug core file with gdb | |
CHROME: | |
F6, ctrl+l, alt+d — Go to address bar |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment