\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{sjuenemann} \pdfinfo{ /Title (de-nbi-workshops-linux-bash-at-a-glance.pdf) /Creator (Cheatography) /Author (sjuenemann) /Subject (de.NBI Workshops - Linux Bash at a Glance Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{0B66A3} \definecolor{LightBackground}{HTML}{EFF5F9} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{de.NBI Workshops - Linux Bash at a Glance Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{sjuenemann} via \textcolor{DarkBackground}{\uline{cheatography.com/23283/cs/5100/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}sjuenemann \\ \uline{cheatography.com/sjuenemann} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Published 18th September, 2015.\\ Updated 11th May, 2016.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{2} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{General Advice}} \tn \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{\{\{fa-lightbulb-o\}\}{\bf{Use the tab-completion}}: `Tab` and `double Tab` \newline % Row Count 2 (+ 2) \{\{fa-lightbulb-o\}\}{\bf{Use the history}}: \{\{fa-long-arrow-up\}\} and \{\{fa-long-arrow-down\}\} and `crtl+r` \newline % Row Count 5 (+ 3) {\emph{CMD}} = any command \newline % Row Count 6 (+ 1) {\emph{TXT}} = any text; escape special chars with{\bf{ \textbackslash{} }}or {\bf{" "}} or {\bf{' '}} \newline % Row Count 8 (+ 2) {\emph{FILE}} = any file name including the path (full/relative) to this file \newline % Row Count 10 (+ 2) {\emph{PATH}} = a {\emph{FILE}} or a directory accordingly \newline % Row Count 11 (+ 1) {\emph{{[}{]}}} = an argument to a {\emph{CMD}} which is optional% Row Count 12 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{4 cm} x{4 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Get Help}} \tn % Row 0 \SetRowColor{LightBackground} {\bf{whatis}} {\emph{CMD}} & display one-line descriptions of {\emph{CMD}} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} {\emph{CMD}} -h (or -?, \{\{nl\}\} -help, -{}-help, -{}-usage) & displays the help message of {\emph{CMD}} \tn % Row Count 5 (+ 3) % Row 2 \SetRowColor{LightBackground} {\bf{man}} {\emph{CMD}} & displays the manual pages of {\emph{CMD}} \{\{fa-info-circle\}\} \tn % Row Count 8 (+ 3) % Row 3 \SetRowColor{white} {\bf{info}} {\emph{CMD}} & displays the info documents of {\emph{CMD}} \{\{fa-info-circle\}\} \tn % Row Count 11 (+ 3) % Row 4 \SetRowColor{LightBackground} {\bf{help}} {\emph{CMD}} & display information about the builtin {\emph{CMD}} \tn % Row Count 14 (+ 3) % Row 5 \SetRowColor{white} {\bf{apropos}} {\emph{TEXT}} & search the man pages for {\emph{TEXT}} \tn % Row Count 16 (+ 2) % Row 6 \SetRowColor{LightBackground} {\bf{groups}} {\emph{USER}} & shows all groups of {\emph{USER}} (default is own) \tn % Row Count 19 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{3.6 cm} x{4.4 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Show File Content}} \tn % Row 0 \SetRowColor{LightBackground} {\bf{head}} {\emph{FILE}} & print the first 10 lines of each FILE \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} {\bf{head}} -n~X {\emph{FILE}} & print the first X lines \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} {\bf{tail}} {\emph{FILE}} & print the last 10 lines of each FILE \tn % Row Count 6 (+ 2) % Row 3 \SetRowColor{white} {\bf{tail}} -n X {\emph{FILE}} & print the last X \tn % Row Count 8 (+ 2) % Row 4 \SetRowColor{LightBackground} {\bf{less}} {\emph{FILE}} & display FILE on a page-by-page basis \{\{fa-info-circle\}\} \tn % Row Count 11 (+ 3) % Row 5 \SetRowColor{white} | {\bf{less}} & display STDIN on a page-by-page basis \{\{fa-info-circle\}\} \tn % Row Count 14 (+ 3) % Row 6 \SetRowColor{LightBackground} {\bf{cat}} {\emph{FILE}} & prints whole {\emph{FILE}} \tn % Row Count 15 (+ 1) % Row 7 \SetRowColor{white} {\bf{cat}} {\emph{FILE1}} {\emph{FILE2}} \textgreater{} {\emph{FILE3}} & cats FILE1 and FILE2 and prints them to FILE3 \tn % Row Count 18 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{4 cm} x{4 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Rediretcs \& Pipes \& Subshell}} \tn % Row 0 \SetRowColor{LightBackground} {\emph{CMD}} {\bf{\textgreater{}}} {\emph{FILE}} & prints standard output of {\emph{CMD}} to {\emph{FILE}}, replacing it \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} {\emph{CMD}} {\bf{\textgreater{}\textgreater{}}} {\emph{FILE}} & prints standard output of {\emph{CMD}} to {\emph{FILE}}, appending it \tn % Row Count 6 (+ 3) % Row 2 \SetRowColor{LightBackground} {\emph{CMD1}} {\bf{|}} {\emph{CMD2}} & 'pipes' standard out of {\emph{CMD1}} as standard input to {\emph{CMD2}} \tn % Row Count 9 (+ 3) % Row 3 \SetRowColor{white} {\emph{CMD}} {\bf{\textgreater{}}} out.log {\bf{2\textgreater{}}} err.log {\bf{\&}} & runs {\emph{CMD}} in background, prints standard out to out.log and standard error to err.log \tn % Row Count 14 (+ 5) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{4 cm} x{4 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Searching}} \tn % Row 0 \SetRowColor{LightBackground} {\bf{grep}} {\emph{TXT}} {\emph{FILES}} & search for pattern {\emph{TXT}} in {\emph{FILES}} (line-wise) \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} {\bf{grep}} -r {\emph{TXT}} {\emph{PATH}} & searches all files in {\emph{PATH}} recursively \tn % Row Count 5 (+ 2) % Row 2 \SetRowColor{LightBackground} {\bf{grep}} -v {\emph{TXT}} {\emph{PATH}} & show lines not containing {\emph{TXT}} \tn % Row Count 7 (+ 2) % Row 3 \SetRowColor{white} {\bf{grep}} -c {\emph{TXT}} {\emph{PATH}} & count matching lines instead of showing them \tn % Row Count 10 (+ 3) % Row 4 \SetRowColor{LightBackground} {\bf{find}} {[}{\emph{PATH}}{]} -name "{\emph{TXT}}"\{\{nl\}\} & finds all files named {\emph{TXT}} in {\emph{PATH}} (default .) \tn % Row Count 13 (+ 3) % Row 5 \SetRowColor{white} {\bf{find}} {[}{\emph{PATH}}{]} -iname "*{\emph{TXT}}*"\{\{nobreak\}\} & finds all files matching {\emph{TXT}} case insensitive \tn % Row Count 16 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{3.76 cm} x{4.24 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Operate On Filesystem}} \tn % Row 0 \SetRowColor{LightBackground} {\bf{pwd}} & prints current directory \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} {\bf{ls}} {\emph{{[}PATH{]}}} & list directory contents \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} {\bf{ls}} -lart {\emph{{[}PATH{]}}}\{\{nobreak\}\} & long + hidden + reverse order + sort last modified \tn % Row Count 7 (+ 3) % Row 3 \SetRowColor{white} {\bf{cd}} & changes to HOME directory \tn % Row Count 9 (+ 2) % Row 4 \SetRowColor{LightBackground} {\bf{cd}} {\emph{PATH}} & changes to {\emph{PATH}} directory \tn % Row Count 11 (+ 2) % Row 5 \SetRowColor{white} {\bf{mkdir}} {\emph{PATH}} & creates a directory \tn % Row Count 12 (+ 1) % Row 6 \SetRowColor{LightBackground} {\bf{mkdir}} -p {\emph{PATH}} & creates also parents as needed \tn % Row Count 14 (+ 2) % Row 7 \SetRowColor{white} {\bf{cp}} {\emph{FILE}} {\emph{PATH}} & copies {\emph{FILE}} to {\emph{PATH}} \tn % Row Count 16 (+ 2) % Row 8 \SetRowColor{LightBackground} {\bf{cp}} -r {\emph{PATH1}} {\emph{PATH2}}\{\{nobreak\}\} & cp recursively whole directory {\emph{PATH1}} to {\emph{PATH2}} \tn % Row Count 19 (+ 3) % Row 9 \SetRowColor{white} {\bf{mv}} {\emph{PATH1}} {\emph{PATH2}}\{\{nobreak\}\} & moves file or dir {\emph{PATH1}} to {\emph{PATH2}} \tn % Row Count 21 (+ 2) % Row 10 \SetRowColor{LightBackground} {\bf{rm}} {\emph{FILE}} & removes {\emph{FILE}} \tn % Row Count 22 (+ 1) % Row 11 \SetRowColor{white} {\bf{rm}} -r {\emph{PATH}} & removes files and dirs under {\emph{PATH}} recursively \tn % Row Count 25 (+ 3) % Row 12 \SetRowColor{LightBackground} {\bf{ln}} -s {\emph{PATH1}} & creates link of {\emph{PATH}} with same name \tn % Row Count 27 (+ 2) % Row 13 \SetRowColor{white} {\bf{ln}} -s {\emph{PATH1}} {\emph{TXT}} & creates link of {\emph{PATH}} with new name {\emph{TXT}} \tn % Row Count 29 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{3.52 cm} x{4.48 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Helpers}} \tn % Row 0 \SetRowColor{LightBackground} alias {\emph{TXT}}='{\emph{CMD}}' & abbreviate {\emph{CMD}} with {\emph{TXT}} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} \{\{bt\}\}\{\{fa-star\}\} & \{\{bt\}\}alias ..='cd ..' \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} \{\{fa-star\}\}\{\{bb\}\} & alias l='ls -lah'\{\{bb\}\} \tn % Row Count 6 (+ 2) % Row 3 \SetRowColor{white} {\emph{CMD}} | wc -l & prints number of lines {\emph{CMD}} generates as output \tn % Row Count 9 (+ 3) % Row 4 \SetRowColor{LightBackground} {\emph{CMD}} | sort & sorts output of {\emph{CMD}} alphabetical \tn % Row Count 11 (+ 2) % Row 5 \SetRowColor{white} {\emph{CMD}} | sort -n -k 3\{\{nobreak\}\} & sorts output of {\emph{CMD}} numerical based on 3rd column \tn % Row Count 14 (+ 3) % Row 6 \SetRowColor{LightBackground} {\emph{CMD}} | uniq & only prints unique lines of {\emph{CMD}} output \tn % Row Count 16 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{4 cm} x{4 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Archives \& Compression}} \tn % Row 0 \SetRowColor{LightBackground} {\bf{gunzip}} {\emph{FILE}}.gz & uncompresses the {\emph{FILE}}.gz in-place \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} {\bf{unzip}} {\emph{FILE}}.zip & uncompress and extracts the ZIP archive {\emph{FILE}}.zip \tn % Row Count 5 (+ 3) % Row 2 \SetRowColor{LightBackground} {\bf{tar}} -xvzf {\emph{FILE}}.tgz & extracts + uncompress (gzip) the tarball {\emph{FILE}}.tgz \tn % Row Count 8 (+ 3) % Row 3 \SetRowColor{white} {\bf{tar}} -xvf {\emph{FILE}}.tar & extracts the tarball {\emph{FILE}}.tar \tn % Row Count 10 (+ 2) % Row 4 \SetRowColor{LightBackground} {\bf{tar}} -cvzf {\emph{FILE}}.tgz {\emph{PATH}}\{\{nobreak\}\} & archives and compresses {\emph{PATH}} into {\emph{FILE}}.tgz \tn % Row Count 13 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{2.8 cm} x{5.2 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Permissions}} \tn % Row 0 \SetRowColor{LightBackground} {\bf{chmod}} OCTAL {\emph{FILE}} & change the permissions of FILE (or directory) to OCTAL seperately for user, group and world by summing:\{\{nl\}\}\{\{fa-plus-square\}\}4 - read (r)\{\{nl\}\}\{\{fa-plus-square\}\}2 - write (w)\{\{nl\}\}\{\{fa-plus-square\}\}1 - execute (x)\{\{nl\}\}{\bf{Example:}} chmod 750 == rwx for owner, rx for group, none for world \tn % Row Count 12 (+ 12) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{2.48 cm} x{5.52 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Process Control}} \tn % Row 0 \SetRowColor{LightBackground} {\bf{top}} & displays realtime information about the top cpu processes \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} {\bf{ps}} & report snapshot of processes (in current shell) \tn % Row Count 5 (+ 2) % Row 2 \SetRowColor{LightBackground} {\bf{ps}} -lfu {\emph{USER}} & show all processes of {\emph{USER}} in details \tn % Row Count 7 (+ 2) % Row 3 \SetRowColor{white} {\bf{kill}} {\emph{PID}} & terminate the process with the process ID {\emph{PID}} \tn % Row Count 9 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{3.36 cm} x{4.64 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Shortcuts}} \tn % Row 0 \SetRowColor{LightBackground} `Ctrl + c`\{\{nobreak\}\} & Interrupt/Kill whatever you are running (SIGINT) \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} `Ctrl + z`\{\{nobreak\}\} & Suspends current task (SIGTSTP). \tn % Row Count 5 (+ 2) % Row 2 \SetRowColor{LightBackground} & `fg + Enter` : resume process \tn % Row Count 7 (+ 2) % Row 3 \SetRowColor{white} & `bg + Enter` : continue process in background \tn % Row Count 9 (+ 2) % Row 4 \SetRowColor{LightBackground} `Shift + PageUp`\{\{nobreak\}\} & Scroll terminal window up \tn % Row Count 11 (+ 2) % Row 5 \SetRowColor{white} `Shift + PageDown`\{\{nobreak\}\} & Scroll terminal window down \tn % Row Count 13 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{4.8 cm} x{3.2 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Shortcuts (cursor movement)}} \tn % Row 0 \SetRowColor{LightBackground} `Ctrl + a`\{\{nobreak\}\} / `Home` & Go to beginning of the line \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} `Ctrl + e`\{\{nobreak\}\} / `End` & Go to the End of the line \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} `Ctrl + f`\{\{nobreak\}\} / \{\{fa-long-arrow-right\}\} & Forward one character \tn % Row Count 6 (+ 2) % Row 3 \SetRowColor{white} `Ctrl + b`\{\{nobreak\}\} / \{\{fa-long-arrow-left\}\} & Backward one character \tn % Row Count 8 (+ 2) % Row 4 \SetRowColor{LightBackground} `Ctrl + a`\{\{nobreak\}\} & Delete current character \tn % Row Count 10 (+ 2) % Row 5 \SetRowColor{white} \{\{fa-arrow-left\}\}`Backspace`\{\{nobreak\}\} & Delete previous character \tn % Row Count 12 (+ 2) % Row 6 \SetRowColor{LightBackground} `Shift + Insert`\{\{nobreak\}\} & Paste text \tn % Row Count 14 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{1.6 cm} x{6.4 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{\{\{fa-info\}\}Wildcards}} \tn % Row 0 \SetRowColor{LightBackground} {\bf{*}} & replaces arbitrary number of characters \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} {\bf{?}} & replaces exactly one character \tn % Row Count 3 (+ 1) % Row 2 \SetRowColor{LightBackground} {\bf{{[}abc{]} }} & replaces exactly for a, b or c \tn % Row Count 5 (+ 2) % Row 3 \SetRowColor{white} {\bf{{[}a-z{]}}} & replaces for any char from a to z \tn % Row Count 7 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{3.84 cm} x{4.16 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{\{\{fa-info-circle\}\} Navigation (less, man, ...)}} \tn % Row 0 \SetRowColor{LightBackground} {\bf{h}} & display help message \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} {\bf{q}} & quit \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} {\bf{space-bar}} | `PageDown`\{\{nobreak\}\} & one page down \tn % Row Count 4 (+ 2) % Row 3 \SetRowColor{white} {\bf{b}}| `PageUp`\{\{nobreak\}\} & one page up \tn % Row Count 6 (+ 2) % Row 4 \SetRowColor{LightBackground} {\bf{q}} & quit \tn % Row Count 7 (+ 1) % Row 5 \SetRowColor{white} {\bf{/}} {\emph{TXT}} & search forward for {\emph{TXT}} \tn % Row Count 9 (+ 2) % Row 6 \SetRowColor{LightBackground} {\bf{?}} {\emph{TXT}} & search backward for {\emph{TXT}} \tn % Row Count 11 (+ 2) % Row 7 \SetRowColor{white} {\bf{n}} & repeat previous search \tn % Row Count 13 (+ 2) % Row 8 \SetRowColor{LightBackground} {\bf{N}} & repeat previous search in reverse direction \tn % Row Count 16 (+ 3) % Row 9 \SetRowColor{white} {\bf{G}} & Go to last line \tn % Row Count 17 (+ 1) % Row 10 \SetRowColor{LightBackground} {\bf{g}} & Go to first line \tn % Row Count 18 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}