# Help / Useful commands

## tmux

    tmux new -s [name]					# start new session named [name]
    tmux a -t [name]					# attatch to session named [name]
    tmux ls								# list tmux sessions
    tmux kill-ses -t [name]				# kill tmux session named [name]

### tmux keybindings

    C+b $								# rename session
    C+b %								# vertical split
    C+b "								# horizontal split
    C+b d								# detach from session
    C+b c								# create new tab
    C+b n								# next tab

## sybmolic links

    ln -s [file] [symbolic link]		# creates a symbolic link for [file]
    ln -sr [file] [path_to_sym_file]	# creates symlink in a diff directory

## yarn

    yarn global add [package]			# adds a package globally
    yard add [package]					# add a package
    yarn create react-app [name]		# create-react-app with yarn

## firebase

    firebase deploy						# deploy code to firebase
    firebase serve						# run local server through firebase
    firebase projects:list 				# list all projects

## curl

    curl [web_address]					# dump a webpage to the terminal
    curl -L [address]					# follow a link and dump the results
    curl --verbose probably also -v		# run with verbose

## nmap

    nmap [web-address]					# see what ports are open at address
    sudo lsof -i -P -n | grep LISTEN    # listen for stuff on ports

## pip

    pip list							# list pip packages installed

## python virtual env

    python3 -m venv env					# create the env directory
    source env/bin/activate				# activate the virtual environment
    or . env/bin/activate
    echo $VIRTUAL_ENV 					# prints the path to the virtual env
    which -a python						# lists the install locations of python
    deactivate							# when in a virtual session deactivates it

## tar

    tar [address]						# download a file from address

## vim

    :sp [filename] - Opens a new file and splits your screen horizontally to show more than one buffer

    :vsp [filename] - Opens a new file and splits your screen vertically to show more than one buffer
    set nonumber						# remove line numbers from file
    Ctrl+w h							# shift focus left pane
    Ctrl+w l							# shift fous right pane
    :nohls								# remove search hilighting until next search
    cw									# delete word and enter insert mode
    ^u									# go up half a page
    ^d									# go down half a page
    s/<pattern>/<replace>				# search and replace for pattern
    V [select line]						# Use visual line to select multiple lines
    :g/^$/d								# Remove all blank lines from a file
    "xyy								# Yank line to register x
    "xp									# Paste line from register x
     "+y 								# yank into the system clipboard register
     "+p 								# paste from the system clipboard register
     zg									# add word to local dictionary (spellcheck)

## markdown

    grip <markdown file>				# open a live-server for markdown file
    **<>**								# bold
    ---									# line
    [...](link)							# inline-style link
    [desc](link "hover title")			# inline-style link with hover title

## pacman

    pacman -Syu --ignore=[package name]	# update/upgrade all but packages in ignore
    pacman -Rs package_name				# remove a package and all deps not needed
    pacman -Rsu package_name			# if above command does not work
    pacman -Qtdq					# check for orphaned packages
    pacman -Rns $(pacman -Qtdq)	# remove orphaned packages
    rm /var/lib/pacman/db.lck		# remove the lock file for pacman
    pacman -U /var/cache/pacman/pkg/package-old_version.pkg.tar.type	# downgrade package

## ctags

    ctags -R .							# index the current directory with ctags

## ssh

    ssh -i eecs485deploy.pem ubuntu@ec2-3-137-139-85.us-east-2.compute.amazonaws.com
    ssh -p [port] user@ip
    ~/.ssh/config		# file to change configuration for ssh

## insta485 server-side

    gunicorn -b localhost:8000 -w 2 -D insta485:app # Start the server
    pgrep -af gunicorn 					# list running guinicorn jobs
    pkill -f gunicorn					# stop the gunicorn server

## wget

    wget [address]						# download a file/files
    -P 									# specify a directory
    -c 									# allow to save location on INT

## unzip

    unzip (file)						# unzips zip file

## wine

    wine (file)							# install a windows file
    winefile							# opens the windows file system

## onedrive

    onedrive --synchronize				# sync the onedrive folder to the cloud

## text2pdf

    text2pdf [input file] > [output]  	# convert input file to pdf named output

## netstat

    netstat -ltnp | grep -w ':PORT'		# show process running on port PORT
    	l - only show lisening sockets
    	t - display tcp connections
    	n - show numerical addresses
    	p - show PID and process name
    	grep -w - matching of exact string
    netstat -tupan

## japanese keyboard

    ibus-setup							# start daemon and launch config
    Ctrl+Alt+Shift						# switch between languages

## httpie

    http [url]							# send get request with pretty printing/colors

## tcm - Typed CSS Modules # generate styles.css.d.ts file

    tsm [directory or file]				# generate styles.d.ts for each file or specific file

ranger

    ranger 								# open text-based file-manage

## nmcli # netwrok manager command line interface

    nmcli device						# lists all device
    nmcli device wifi					# list wifi networks
    nmcli device connct wlp1s0 -ask		# connect to wifi and enter password

## picom # to blur stuff

    picom &								# run picom in background

## i3-gaps

    Alt+Shift+G							# open up the gap manager

## feg # set background image

    feh --bg-scale ~/OneDrive/Pictures/what\ are\ the\ chances.jpg

## xprop # run xprops

    Click on window and get information from the Window Manager about it

## Linux keybindings

    Alt+Shift+g to go into gap mode and press i for inner gap and + 4 times

redirect stderr

    append 2>/dev/null to redirect filehandle 2 (STDERR) to /dev/null, which is

## network-manager

    nmtui								# launch network manager gui
    nmcli								# network manager cli

## disown # remove a job from table of active jobs

    disown %[jobnumber] 				# removes active job [jobnumber]

## jobs

    jobs -l								# list all active jobs

ps
ps -l # list active processes

## doom emacs

    Meta=SPACE
    Meta+.                              # open file search
    Meta+b                              # open buffer settings
    Meta+b+m                            # set bookmark
    Meta+Return                         # open bookmark selector
    Meta+h                              # help
    Meta+t                              # toggle menu
    Meta+o+p                            # toggle nerdtree like thing

## bpytop

    New and improved bashtop written in python

## w3m

    w3m www.google.com					# terminal web browswer

## bluetoothctl

    scan on								# turn on scan
    pair [device id]					# connect to device

## locate

    locate [filename]					# return path to file
    locate -b [filename]				# search for file/dir in basename
    suda updatedb -v					# update the db with new files

## md2pdf

    md2pdf <markdown file>				# convert markdown file to pdf

## glow

    # Read from file
    glow README.md
    # Read from stdin
    glow -
    # Fetch README from GitHub / GitLab
    glow github.com/charmbracelet/glow
    # Fetch markdown from HTTP
    glow https://host.tld/file.md
    # stash document from cli
    glow stash README.md

## Notifications

    /usr/share/dbus-1/services

## crontab

    crontab -e							# edit the cronjobs for user
    crontab -l							# list all cronjobs

## youtube-dl

    youtube-dl [url]					# download a video from youtube

## pgrep

    pgrep -af [name]					# searches for all process with name [name]
    pgrep -x [name]						# searches for name with exact matching
    pgrep -l [name]						# return pid and process name

## pidof

    pidof [name]						# gets the pid of the process with [name]

## gparted

Use application gparted to format USB drive

## getopts

    while getopts "vk" arg; do
    	case $arg in
    		v) verbose=1;;
    		k) justKillIt=1;;
    	esac
    done

## tor

    ahmia.fi							# dark web search engine

## github api

    curl -i -u your_username:your_token https://api.github.com/user
    curl -i -H "Authorization: token <access token>" \
        https://api.github.com/user/repos

## conky

    Ctrl+Mod(alt)+c						# toggle conky
    Ctrl+Mod+PgUp						# next conky
    Ctrl+Mod+PgDn						# prev conky
    # launch conky set up by Arcolinux team
    conky -c /home/sudacode/.config/conky/AUR-ArcoLinux-Plasma.conkyrc
    conky -c ~/.config/conky/AUR-Nemesis-Plasma.conkyrc

## Chiaki

ps4 remtote play application for linux

## Arch not booting

Ctrl+Alt+F5 to get to tty5
may need to press FN key
check /var/log/pacman.log

## systemctl

```sh
systemctl start [name]					Starts service
systemctl stop [name]					Stops service
systemctl enable [name]					Enables service on startup
systemctl disable [name]				Disables service on startup
systemctl status [name]					Get status of service
```

## Fix Spotify Not Working Well

rm /usr/share/dbus-1/services/org.kde.plasma.Notifications.service

## heroku

heroku git:remote -a [project name] Connect repository to the heroku remote

## tokei

tokei show programming languages in use in current directory

## ncmpcpp

audio player

## pulsemixer

command line pulseaudio

## psql

connect to a postgresql db on another machine
psql postgresql://[username]@[addr]:[port]/[DBname]

## udisksctl

### mount/unmount sd card

udisksctl mount -b /dev/mmcblk0p1
udisksctl unmount -b /dev/mmcblk0p1

## dunst

dunstify "notification" display a desktop notification
dunstify "Progress: " -h int:value:60 display progress bar starting at 60

## Jupyter Notebook

### Add a Virtual Environment to JN

```bash
python -m ipykernel install --user --name=[env_name]
```

### Uninstall venv from JN

```bash
jupyter kernelspec uninstall [env_name]
```

### sacad: download album artwork

```bash
sacad [artist] [album name] [size] [output_file_name]
```

### ifuse: connect to iphone filesystem

```bash
$ mkdir -p /tmp/phone/
# mount the filesystem
$ fusermount -u /tmp/phone/
# unmount the filesystem
$ ifuse /tmp/phone/
```

### mdr: markdown render in the terminal

:MarkdownRender right

### ipython: interactive python with history, dynamic object introsepction, easier configuration, command completion, access to system shell, and integration with numerical and sientific computing tools

## nvtop

top for graphics card

## rofi-mpd

```bash
rofi-mpd -h
```

## UMICH Caen

    rsync -rtv path_to_your_local_file_name your_uniqname@login.engin.umich.edu:path_to_your_remote_folder

## Edit files as superuser (sudo)

    sudo -e or sudoedit

## nftables: firewall

    nft -s list ruleset | tee [filename]
    systemctl status nftables

## i3-help-log

## lscpu

    lscpu # display info about the CPU

## ps

    ps -aux # list stats about processes running including cpu and memory
    ps -aux --sort=%mem/%cpu # sort by memory or cpu
    ps -aux --sort=-%mem # sort by memory in ascending order

## kill

    kill -l # list all kill signals

## ip

    ip a	# show all
    ip -4 addr	# show ipv4 addresses
    ip -6 addr	# show ipv6 addresses

## sqlplus

    select * from user_sequences;	# list user defined sequences
    select table_name from user_tables;	# list user defined tables

## qemu

    # create image
    qemu-img create -f qcow2 Image.img 10G
    # create vm with 4G of memory with X.iso and boots directly into dvd drive
    qemu-system-x86_64 -enable-kvm -cdrom manjaro-awesome-20.0-200428-linux56.iso -boot order=d -drive file=Image.img -m 4G -cpu host -smp 4 -vga virtio -display sdl,gl=on
    # boots into menu
    qemu-system-x86_64 -enable-kvm -cdrom manjaro-awesome-20.0-200428-linux56.iso -boot menu=on -drive file=Image.img -m 4G -cpu host -smp 4 -vga virtio -display sdl,gl=on

## scp: secure cp

    # copy file to remote
    scp -P 88 [file] user@host:path-to-file
    # copy directory to remote
    scp -rp -P 88 [directory] user@host:path-to-directory
    # copy from remote to local
    scp remote-user@remote-host:file path-to-file

## rsync

    # copied files in archive mode (recursively run on directories)
    # add --delete option to have destination delete files when deleted in src
    rsync -av --delete [source] [destiation]
    # exclude files with --exclude='pattern' or --exclude-from='exclude_file'

    # rsync over the network

## wget

    # add -c argument to allow to interrupt download and resume later with -c
    # -P to set local download path

## send key to server

    ssh-copy-id user@host

## CAEN VNC

    ssh -f -L 5951:localhost:5951 uniqname@login-course.engin.umich.edu "sleep 30"
    vncviewer localhost:5951

## Anaconda

    source /opt/anaconda/bin/activate /home/sudacode/anaconda3
    anaconda-navigator

    PostgreSQL: postgresql://scott:tiger@localhost/mydatabase
    MySQL: mysql://scott:tiger@localhost/foo
    Oracle: oracle://scott:tiger@127.0.0.1:1521/sidname
    SQL Server: mssql+pyodbc://scott:tiger@mydsn
    SQLite: sqlite:///foo.db

## Create new Application Entry

    /usr/share/applications/
    /usr/local/share/applications/
    ~/.local/share/applications/

    create desktop entry like others

## mysql

    sudo mysql	# connect to mysql as root
    create database [db_name];
    grant all privileges on mydb.* to user@localhost;
    grant all privileges on mysql.* to user@localhost;
    flush priviliges;

## ncdu: disk usage

## baloo

    balooctl	# control baloo
    baloosewarch [search] 	#search for files/folders

## nbfc: Fan Control

## thermald: CPU Frequency Scaling

## Vim-Plug

    :PlugInstall 	# install plugins
    :PlugClean		# clean .vim/plugged directory

## remoteit

# screen

    screen -S 	[session_name] start named screen session
    screen -S 	[session_name/pid] reattach
    screen -S 	[session_name] -d -m [command] run command in detached session
    screen -ls	list screens
    ctrl+a d	detach from session

## mpc

    mpc add http://host:port	add stream
    mpc del [num] (0 indexed)	delete from queue
    mpc play					play (lol)
    mpc toggle

## pdfjam

    pdfjam [files] --outfile [file]

## nvidia-smi

    nvidia-smi	reads temps directly from GPU without need for X server

## mycli

    mycli -h <host> -u <user>	mysql command-line client with autocompletion

## Editing remote files in Vim with SSH

[github gist](https://gist.github.com/sloanlance/f481b7b8ffc0bfa3f46a1c942c7e7b78)

    ssh -MNv kyasuda@dc1vsjobrunner03.westlakefinancial.com
    vim scp://kyasuda@dc1vsjobrunner03.westlakefinancial.com//home/kyasuda/modules/logger.py
