664 lines
17 KiB
Markdown
664 lines
17 KiB
Markdown
---
|
|
title: 03 Terminal
|
|
description:
|
|
published: true
|
|
date: 2024-11-24T11:45:11.626Z
|
|
tags:
|
|
editor: markdown
|
|
dateCreated: 2023-04-30T06:05:33.890Z
|
|
---
|
|
|
|
# Installing ZSH
|
|
ZSH is a pretty cool lightweight shell that is very configurable, Install it with the following command
|
|
|
|
sudo pacman -S zsh
|
|
|
|
Now we are going to make ZSH the default shell with the following command
|
|
|
|
chsh -s $(chsh -l | grep -m1 zsh)
|
|
|
|
We are going to create zshrc config files in a central config folder for easy backups.
|
|
|
|
mkdir ~/Config
|
|
|
|
then create 2 files in there
|
|
|
|
touch ~/Config/zshrc-global ~/Config/zshrc-user
|
|
|
|
Now we need to create a new user zsh config folder
|
|
|
|
mkdir ~/.config/zsh
|
|
|
|
now we are going to symlink the config files to where zsh expects them to be
|
|
|
|
sudo ln -sf ~/Config/zshrc-global /etc/zsh/zshrc
|
|
ln -sf ~/Config/zshrc-user ~/.config/zsh/.zshrc
|
|
|
|
Now we need to set the dotfile location in zshenv
|
|
|
|
sudo vim /etc/zsh/zshenv
|
|
|
|
Add in the following line
|
|
|
|
export ZDOTDIR=~/.config/zsh
|
|
|
|
Save and exit
|
|
|
|
ZSH should be functional with a terrible prompt, so lets fix that first.
|
|
|
|
# Installing a Powerline Font
|
|
We are gonna need the right fonts for all the icons
|
|
|
|
sudo pacman -S ttf-meslo-nerd
|
|
|
|
Change the terminal/monospace font to MesloLGS NF Regular in your terminal or DE settings
|
|
|
|
# Configuring Guake
|
|
Guake is my terminal of choice, I like that it can split the window and it opens and closes fullscreen with a single button nice quick and easy. For KDE users there is Yauake, It is very much like Guake, but there are a ton more Guake clones out there, You should be able to follow this guide for most of them.
|
|
|
|
Install Guake with the following command
|
|
|
|
sudo pacman -S guake
|
|
|
|
Now open guake preferences from your menu.
|
|
|
|
Under General disable the tray icon and the startup popup
|
|
|
|
Under Main Window Disable the Tab Bar and put the height and width full
|
|
|
|
Under Appearance Set Meslo LGS Nerd Font Regular as your font, set Tango as your color scheme and set the transparency to your liking.
|
|
|
|
Under Keyboard Shortcuts I set "Toggle Guake Visibility" to \`, this can give problems, in this case also set the hotkey in your DE to "guake", set "Split tab vertical" to CTRL + N, "Split tab horizontal" to CTRL + B, "Focus terminal above" to Ctrl + Up, "Focus terminal below" to Ctrl + Down, "Focus terminal on the left" to Ctrl + Left, "Focus terminal to the right" to Ctrl + Right, "Increase heigth" to Ctrl + Shift + Down, "Decrease Height" to Ctrl + Shift + Up, "Increase transparency" to Ctrl + Shift + Left and finally "Decrease transparancy" to Ctrl + Shift + Right
|
|
|
|
Ofcourse you can config anything else you like, but for me this is enough
|
|
|
|
# Configuring Alacritty
|
|
I use Alacritty for a quick and fast terminal it works especially great with tiling window managers you can install it with the following command
|
|
|
|
sudo pacman -S alacritty
|
|
|
|
First we are going to create a config file for Alacritty
|
|
|
|
touch ~/Config/alacritty.yml
|
|
|
|
Now we are going to create the config folder alacritty expects
|
|
|
|
mkdir ~/.config/alacritty
|
|
|
|
And finally symlink the file to the location alacritty expects it to be.
|
|
|
|
ln -sf ~/Config/alacritty.yml ~/.config/alacritty/alacritty.yml
|
|
|
|
Now it is time to configure alacritty using the file
|
|
|
|
nvim ~/Config/alacritty.yml
|
|
|
|
We are gonna need some fonts to properly display the icons with our theme so add in the following lines, you can change the font, But I recommend putting this one first to follow along with the guide.
|
|
|
|
```
|
|
#MesloLGS font
|
|
font:
|
|
normal:
|
|
family: MesloLGS Nerd Font
|
|
style: Regular
|
|
|
|
bold:
|
|
family: MesloLGS Nerd Font
|
|
style: Bold
|
|
|
|
italic:
|
|
family: MesloLGS Nerd Font
|
|
style: Italic
|
|
|
|
bold_italic:
|
|
family: MesloLGS Nerd Font
|
|
style: Bold Italic
|
|
|
|
size: 11
|
|
```
|
|
|
|
Setting a nice color theme is vital, The same applies here, you can change it later, but I recommend just following along for now. There are tons of color schemes available.
|
|
|
|
```
|
|
#Tango color theme
|
|
colors:
|
|
primary:
|
|
background: '#000000'
|
|
foreground: '#ffffff'
|
|
normal:
|
|
black: '#000000'
|
|
red: '#cc0000'
|
|
green: '#4e9a06'
|
|
yellow: '#c4a000'
|
|
blue: '#3465a4'
|
|
magenta: '#75507b'
|
|
cyan: '#06989a'
|
|
white: '#d3d7cf'
|
|
bright:
|
|
black: '#555753'
|
|
red: '#ef2929'
|
|
green: '#8ae234'
|
|
yellow: '#fce94f'
|
|
blue: '#729fcf'
|
|
magenta: '#ad7fa8'
|
|
cyan: '#34e2e2'
|
|
white: '#eeeeec'
|
|
```
|
|
|
|
Spawn a new terminal in the current location with CTRL + SHIFT + N
|
|
|
|
```
|
|
key_bindings:
|
|
- { key: N, mods: Control|Shift, action: SpawnNewInstance }
|
|
```
|
|
|
|
# Powerlevel10K
|
|
Powerlevel10K is a great theme for ZSH, it is very configurable and has a lot of cool features
|
|
|
|
Sadly it is unmaintained, but it works fine, we can clone the repo into our /usr/share folder.
|
|
|
|
sudo git clone https://github.com/romkatv/powerlevel10k.git /usr/share/zsh-theme-powerlevel10k/
|
|
|
|
Now we need to include the following lines in our zshrc-global file
|
|
|
|
```
|
|
#P10k
|
|
source /usr/share/zsh-theme-powerlevel10k/powerlevel10k.zsh-theme
|
|
```
|
|
|
|
And the following lines to our zshrc-user file
|
|
|
|
```
|
|
#P10k
|
|
[[ ! -f ~/.config/zsh/.p10k.zsh ]] || source ~/.config/zsh/.p10k.zsh
|
|
```
|
|
|
|
To configure Powerlevel10K you must run the following command
|
|
|
|
p10k configure
|
|
|
|
Have some patience and run trough the interactive configuration
|
|
|
|
Now we just need to symlink the config file to the expected location
|
|
|
|
ln -sf ~/Config/p10k.zsh ~/.config/zsh/.p10k.zsh
|
|
|
|
When you exit the terminal and start it again it should look all nice :)
|
|
|
|
# Installing LSD
|
|
lsd is like ls with colors, nice icons and other visual cues that help you.
|
|
|
|
It is in the repos, simply install it with the following command
|
|
|
|
sudo pacman -S lsd
|
|
|
|
You can now run it with lsd, we will later alias ls to lsd in our zsh configuration.
|
|
|
|
try the following command for example
|
|
|
|
lsd -la ~
|
|
|
|
# Adding ZSH Options and Keybinds
|
|
ZSH options change the default behavior so do keybinds
|
|
|
|
You can add them all or just the ones you like to your zshrc-global file
|
|
|
|
Give flag suggestions for programs
|
|
|
|
```
|
|
autoload -Uz compinit && compinit
|
|
```
|
|
|
|
Gives you a menu when navigating suggestions
|
|
|
|
```
|
|
zstyle ':completion:*' menu select
|
|
zstyle ':completion::complete:*' gain-privileges 1
|
|
```
|
|
|
|
History settings for ZSH
|
|
|
|
```
|
|
export HISTFILE=~/.config/zsh/.zsh_history
|
|
export HISTSIZE=1000000
|
|
export SAVEHIST=1000000
|
|
setopt EXTENDED_HISTORY
|
|
setopt HIST_IGNORE_ALL_DUPS
|
|
setopt HIST_FIND_NO_DUPS
|
|
setopt inc_append_history
|
|
```
|
|
|
|
Press up and down to search to matching history
|
|
|
|
```
|
|
bindkey "^[[A" history-beginning-search-backward
|
|
bindkey "^[[B" history-beginning-search-forward
|
|
```
|
|
|
|
Case insensitive tab completion, Also enables cd doc/fo/su to go to /documents/folder/subfolder
|
|
|
|
```
|
|
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
|
|
```
|
|
|
|
I really don't see the use for Flow Control
|
|
|
|
```
|
|
unsetopt flow_control
|
|
```
|
|
|
|
Fix navigation keys
|
|
|
|
```
|
|
bindkey "^[[H" beginning-of-line
|
|
bindkey "^[[F" end-of-line
|
|
bindkey "^[[3~" delete-char
|
|
bindkey "^[[5~" beginning-of-line
|
|
bindkey "^[[6~" end-of-line
|
|
```
|
|
|
|
# Adding Aliases
|
|
Aliases are simply alternatives for a string of text, as an easy example, v will type nvim, and sv will type sudo nvim. You can also chose to remove some or add more.
|
|
|
|
Simply add the following text to one of your ~/config/zshrc files, user will set it for you, and global will set it for everyone,
|
|
|
|
```
|
|
alias a="awk"
|
|
alias b="btrfs"
|
|
alias c="cryptsetup"
|
|
alias d="docker"
|
|
alias e="echo"
|
|
alias f="fdisk"
|
|
alias g="git"
|
|
alias h="history"
|
|
alias j="jobs -l"
|
|
alias k="kubectl"
|
|
alias l="ls -la"
|
|
alias m="man"
|
|
alias n="neofetch"
|
|
alias o="openssl"
|
|
alias p="pacman"
|
|
alias r="reboot"
|
|
alias s="sudo"
|
|
alias t="tail -f"
|
|
alias u="uname"
|
|
alias v="nvim"
|
|
alias w="whence"
|
|
alias sudo="sudo "
|
|
alias ffs="sudo !!"
|
|
alias distro="cat /etc/*-release"
|
|
alias hk="cat ~/config/hotkeys"
|
|
alias sv="sudo v"
|
|
alias md="mkdir -p"
|
|
alias tk="take"
|
|
alias rmd="rm -rf"
|
|
alias sgrep="grep -R -n -H -C 5 --exclude-dir={.git,.svn,CVS} "
|
|
alias hgrep="fc -El 0 | grep"
|
|
alias please='sudo'
|
|
alias phone='ssh houtworm@pinephone'
|
|
alias server='ssh houtworm@server'
|
|
alias game='gamemoderun mangohud'
|
|
alias ytflac="youtube-dl -x --audio-format flac --prefer-ffmpeg"
|
|
alias ytmkv="youtube-dl -F"
|
|
alias lol='lolcat'
|
|
alias cd1="cd .."
|
|
alias cd2="cd ../.."
|
|
alias cd3="cd ../../.."
|
|
alias cd4="cd ../../../.."
|
|
alias cd5="cd ../../../../.."
|
|
alias cd6="cd ../../../../../.."
|
|
alias cd7="cd ../../../../../../.."
|
|
alias cd8="cd ../../../../../../../.."
|
|
alias cd9="cd ../../../../../../../../.."
|
|
alias scls="systemctl list-unit-files"
|
|
alias scs="sudo systemctl status "
|
|
alias scre="sudo systemctl restart "
|
|
alias scst="sudo systemctl start "
|
|
alias scsp="sudo systemctl stop "
|
|
alias scen="sudo systemctl enable "
|
|
alias scenn="sudo systemctl enable now "
|
|
alias scdi="sudo systemctl disable "
|
|
alias fwd="firewall-cmd"
|
|
alias fwdlist="firewall-cmd --list-all-zones"
|
|
alias fwdre="firewall-cmd --reload"
|
|
alias gi="git init"
|
|
alias ga="git add *"
|
|
alias gc="git commit -m"
|
|
alias gp="git push"
|
|
alias me="ifconfig | grep "inet " | cut -b 9- | cut -d" " -f2"
|
|
alias allcolor="for i in {0..255}; do print -Pn "%K{$i} %k%F{$i}${(l:3::0:)i}%f " ${${(M)$((i%6)):#3}:+$"\n"}; done"
|
|
alias rainbow="printf "$BBLA\n$BRED\n$BGRE\n$BYEL\n$BBLU\n$BMAG\n$BCYA\n$BWHI\n\n""
|
|
alias dud="du -d 1 -h"
|
|
alias duf="du -sh *"
|
|
alias :q="exit"
|
|
alias ls="lsd"
|
|
alias ports="netstat -tulanp"
|
|
alias compr="gcc -Wall -Wextra -Werror *.c && ./a.out && rm a.out"
|
|
alias compra="gcc -Wall -Wextra -Werror *.c && ./a.out"
|
|
alias norme="norminette -R CheckForbiddenSourceHeader"
|
|
alias valg="gcc *.c -ggdb3 && valgrind --show-leak-kinds=all --leak-check=full --track-origins=yes ./a.out && rm a.out"
|
|
alias valga="gcc *.c -ggdb3 && valgrind --show-leak-kinds=all --leak-check=full --track-origins=yes ./a.out"
|
|
alias normsh="checkbashisms"
|
|
alias banned='sudo fail2ban-client banned | tr -t "[{" " \n" | tr -d ":]},"'
|
|
```
|
|
|
|
# Adding ZSH Functions
|
|
ZSH functions are like tiny scripts that perform a task, you can add the ones you think are useful to you to one of the zshrc files, I suggest global so anyone can use them :)
|
|
|
|
Press Ctrl + Z to bring stuff to the background but also bring stuff back to the foreground instead of typing fg
|
|
|
|
```
|
|
backforeswitch () {
|
|
if [[ $#BUFFER -eq 0 ]]; then
|
|
BUFFER="fg"
|
|
zle accept-line -w
|
|
else
|
|
zle push-input -w
|
|
zle clear-screen -w
|
|
fi
|
|
}
|
|
zle -N backforeswitch
|
|
bindkey '^Z' backforeswitch
|
|
```
|
|
|
|
Press Esc twice to put sudo in front of your previous command.
|
|
|
|
```
|
|
sudoswitch() {
|
|
[[ -z $BUFFER ]] && zle up-history
|
|
if [[ $BUFFER == sudo\ * ]]; then
|
|
LBUFFER="${LBUFFER#sudo }"
|
|
elif [[ $BUFFER == $EDITOR\ * ]]; then
|
|
LBUFFER="${LBUFFER#$EDITOR }"
|
|
LBUFFER="sudoedit $LBUFFER"
|
|
elif [[ $BUFFER == sudoedit\ * ]]; then
|
|
LBUFFER="${LBUFFER#sudoedit }"
|
|
LBUFFER="$EDITOR $LBUFFER"
|
|
else
|
|
LBUFFER="sudo $LBUFFER"
|
|
fi
|
|
}
|
|
zle -N sudoswitch
|
|
bindkey "\e\e" sudoswitch
|
|
bindkey -M vicmd '\e\e' sudoswitch
|
|
```
|
|
|
|
Make the man pages all colorful
|
|
|
|
```
|
|
function man() {
|
|
env \
|
|
LESS_TERMCAP_mb=$(printf "\e[1;31m") \
|
|
LESS_TERMCAP_md=$(printf "\e[1;31m") \
|
|
LESS_TERMCAP_me=$(printf "\e[0m") \
|
|
LESS_TERMCAP_se=$(printf "\e[0m") \
|
|
LESS_TERMCAP_so=$(printf "\e[0;37;102m") \
|
|
LESS_TERMCAP_ue=$(printf "\e[0m") \
|
|
LESS_TERMCAP_us=$(printf "\e[4;32m") \
|
|
PAGER="${commands[less]:-$PAGER}" \
|
|
_NROFF_U=1 \
|
|
GROFF_NO_SGR=1 \
|
|
PATH=${HOME}/bin:${PATH} \
|
|
man "$@"
|
|
}
|
|
```
|
|
|
|
Creates a TAR archive of a file or folder.
|
|
|
|
```
|
|
function maketar() { tar cvzf "${1%%/}.tar.gz" "${1%%/}/"; }
|
|
```
|
|
|
|
Create a ZIP archive of a file or folder.
|
|
|
|
```
|
|
function makezip() { zip -r "${1%%/}.zip" "$1" ; }
|
|
```
|
|
|
|
Extracts any type of archive automagically
|
|
|
|
```
|
|
function extract {
|
|
if []; then
|
|
echo "Usage: extract <path/file_name>.<zip|rar|bz2|gz|tar|tbz2|tgz|Z|7z|xz|ex|tar.bz2|tar.gz|tar.xz>"
|
|
else
|
|
if [] ; then
|
|
case $1 in
|
|
*.tar.bz2) tar xvjf $1 ;;
|
|
*.tar.gz) tar xvzf $1 ;;
|
|
*.tar.xz) tar xvJf $1 ;;
|
|
*.lzma) unlzma $1 ;;
|
|
*.bz2) bunzip2 $1 ;;
|
|
*.rar) unrar x -ad $1 ;;
|
|
*.gz) gunzip $1 ;;
|
|
*.tar) tar xvf $1 ;;
|
|
*.tbz2) tar xvjf $1 ;;
|
|
*.tgz) tar xvzf $1 ;;
|
|
*.zip) unzip $1 ;;
|
|
*.Z) uncompress $1 ;;
|
|
*.7z) 7z x $1 ;;
|
|
*.xz) unxz $1 ;;
|
|
*.exe) cabextract $1 ;;
|
|
*) echo "extract: '$1' - unknown archive method" ;;
|
|
esac
|
|
else
|
|
echo "$1 - file does not exist"
|
|
fi
|
|
fi
|
|
}
|
|
```
|
|
|
|
The git riddle
|
|
|
|
```
|
|
function iacp() {
|
|
if []
|
|
then
|
|
echo "Usage: iacp <name> <link> <comment>"
|
|
else
|
|
git init
|
|
git add *
|
|
git commit -m "$3"
|
|
git remote add $1 $2
|
|
git push --set-upstream $1 master
|
|
fi
|
|
}
|
|
```
|
|
|
|
The git push
|
|
|
|
```
|
|
function acp() {
|
|
if []
|
|
then
|
|
echo "Usage: acp <comment>"
|
|
else
|
|
git add *
|
|
git commit -m "$1"
|
|
git push
|
|
fi
|
|
}
|
|
```
|
|
|
|
take or tk = mkdir -p and cd in one
|
|
|
|
```
|
|
function take() {
|
|
md "$1"
|
|
cd "$1"
|
|
}
|
|
```
|
|
|
|
Really clear the screen with Ctrl + L
|
|
|
|
```
|
|
clearbetter () {
|
|
BUFFER="clear"
|
|
zle accept-line -w
|
|
}
|
|
zle -N clearbetter
|
|
bindkey '^L' clearbetter
|
|
```
|
|
|
|
Reload ZSH with Ctrl + S
|
|
|
|
```
|
|
resourcezsh () {
|
|
BUFFER="exec -l zsh"
|
|
zle accept-line -w
|
|
BUFFER="clear"
|
|
zle accept-line -w
|
|
}
|
|
zle -N resourcezsh
|
|
bindkey '^S' resourcezsh
|
|
```
|
|
|
|
Exit with Ctrl + Q
|
|
|
|
```
|
|
ctrlqexit () {
|
|
BUFFER=":q"
|
|
zle accept-line -w
|
|
}
|
|
zle -N ctrlqexit
|
|
bindkey '^Q' ctrlqexit
|
|
```
|
|
|
|
Unban IPs with fail2ban
|
|
|
|
```
|
|
unban () {
|
|
sudo fail2ban-client unban $@
|
|
}
|
|
```
|
|
|
|
# ZSH Plugins
|
|
To add plugins to ZSH we simply need to download them and source the main .zsh file of that plugin in one of your zshrc files. Below are the ones I use
|
|
|
|
Fast Syntax Highlighting is great, it gives your input color based on brackets, if it is correct or not, etc
|
|
|
|
git clone https://github.com/z-shell/F-Sy-H /usr/share/zsh/plugins/F-Sy-H
|
|
|
|
Now simply source the .zsh file in your global zshrc by adding the following line to it
|
|
|
|
```
|
|
source /usr/share/zsh/plugins/F-Sy-H/F-Sy-H.plugin.zsh
|
|
```
|
|
|
|
Alias Tips helps you remember the aliases you set, if you don't use a set alias it will notify you of the alias in a way that doesn't annoy you.
|
|
|
|
git clone https://github.com/djui/alias-tips /usr/share/zsh/plugins/alias-tips
|
|
|
|
Now simply source the .zsh file in your global zshrc by adding the following line to it
|
|
|
|
```
|
|
source /usr/share/zsh/plugins/alias-tips/alias-tips.plugin.zsh
|
|
```
|
|
|
|
ZSH Autosuggestions is nice, it tries to complete a command based on your history
|
|
|
|
git clone https://github.com/zsh-users/zsh-autosuggestions /usr/share/zsh/plugins/zsh-autosuggestions
|
|
|
|
Now simply source the .zsh file in your global zshrc by adding the following line to it
|
|
|
|
```
|
|
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
|
|
```
|
|
|
|
Also add the following line to the /etc/zsh/zshenv file to drastically speed up this plugin
|
|
|
|
```
|
|
export ZSH_AUTOSUGGEST_MANUAL_REBIND
|
|
```
|
|
|
|
Z is a pretty cool plugin for fast navigation just type z nameoffolder and it will jump to it based on history.
|
|
|
|
git clone https://github.com/agkozak/zsh-z /usr/share/zsh/plugins/z
|
|
|
|
Now simply source the .zsh file in your global zshrc by adding the following line to it
|
|
|
|
```
|
|
source /usr/share/zsh/plugins/z/zsh-z.plugin.zsh
|
|
```
|
|
|
|
Also be sure to set the ZSHZ_DATA variable in /etc/zsh/zshenv by adding the following line to it
|
|
|
|
```
|
|
export ZSHZ_DATA=~/.config/zsh/.z
|
|
```
|
|
|
|
You can install any more you like, just be sure it doesn't slow down your shell.
|
|
|
|
|
|
# Updating ZSH Plugins with Pacman
|
|
Updating these plugins is important for compatibility and new features.
|
|
|
|
Create a file for the script
|
|
|
|
vim ~/Scripts/update-zshplugins.sh
|
|
|
|
Add in the following content
|
|
|
|
```
|
|
git -C /usr/share/zsh/plugins/F-Sy-H pull
|
|
git -C /usr/share/zsh/plugins/alias-tips pull
|
|
git -C /usr/share/zsh/plugins/zsh-autosuggestions pull
|
|
git -C /usr/share/zsh/plugins/z pull
|
|
```
|
|
|
|
create a file in the pacman hooks directory for zsh plugins
|
|
|
|
sudo vim /usr/share/libalpm/hooks/zsh.hook
|
|
|
|
Add in the following text
|
|
|
|
```
|
|
[Trigger]
|
|
Operation = Upgrade
|
|
Type = Package
|
|
Target = *
|
|
[Action]
|
|
Description = Update ZSH Plugins
|
|
When = PostTransaction
|
|
Exec = /bin/bash /home/USERNAME/Scripts/update-zshplugins.sh
|
|
```
|
|
|
|
Save and exit and try to update your system, if you are lucky you have an update and you can see the script in action after the update.
|
|
|
|
# ZSH Hotkeys
|
|
Just a simple overview of all the hotkeys you can use
|
|
Up and Down Arrow = Browse history matching current line
|
|
Ctrl + A = Go to start of line
|
|
Ctrl + B = Move 1 character back
|
|
Ctrl + C = Cancel, Stop the current operation.
|
|
Ctrl + D = Quit the session
|
|
Ctrl + E = Go to end of line
|
|
Ctrl + F = Move 1 character forward
|
|
Ctrl + G = Nothing
|
|
Ctrl + H = DOUBLE Delete Character before the cursor
|
|
Ctrl + I = Nothing
|
|
Ctrl + J = Nothing
|
|
Ctrl + K = Remove everything behind the cursor
|
|
Ctrl + L = clear screen
|
|
Ctrl + M = Nothing
|
|
Ctrl + N = Browse History matching current line
|
|
Ctrl + O = Nothing
|
|
Ctrl + P = Browse History matching current line
|
|
Ctrl + Q = Quit, Types exit and presses enter.
|
|
Ctrl + R = Search in History
|
|
Ctrl + S = Nothing
|
|
Ctrl + T = Nothing
|
|
Ctrl + U = Delete everything before the cursor
|
|
Ctrl + V = Nothing
|
|
Ctrl + W = Delete the word before the cursor
|
|
Ctrl + X = Nothing
|
|
Ctrl + Y = Undo
|
|
Ctrl + Z = toggle program to background and foreground
|
|
# Installing Neofetch
|
|
Neofetch is a cool tool that shows some system information and a asci art logo of your distro. Install it with the following command
|
|
|
|
sudo pacman -S neofetch
|
|
|
|
Now you can run it by just typing neofetch in a terminal :)
|
|
|