# Bash reference file.

To get help with usage info run:

```text
$ help <COMMAND>

or

$ h <COMMAND>
```

## Android.

Command|Description
---|---
`emulator [NAME]`|Start an Android emulator. Default name is `default`. 

## Archive.

Command|Description
---|---
`archive [DIRS]`|Archive directories. All directories by default. 
`archive_fast [DIRS]`|Archive directories with fast compression. All directories by default. 
`archive_check [FILES]`|Check archives integrity. Checks all archives by default. 
`archive_prune [NAME]`|Delete old versions of archives. All archives by default. 
`unarchive [FILES]`|Extract previously created archive with checksum validation. 
`archive_name [ARCHIVE] [NAME]`|Rename archives. If no name specified, it simplifies archive's name. If no archives specified, apply to all archives. 
`archive_convert`|Convert old archives to a new format. *TODO: remove me after some time when there won't be any old archives.* 
`archive_rm [FILES]`|Delete specified or all archive files. 

## Battery.

Command|Description
---|---
`battery_level`|Print current battery level. 

## Bootstrap.

Command|Description
---|---
`bootstrap_rust`|Install Cargo/Rust. 
`bootstrap_texlive`|Install TeXLive. 
`bootstrap_grub`|Install grub theme. 
`bootstrap_ffmpeg`|Install ffmpeg. 

## Cd.

Command|Description
---|---
`cdd <DIR>`|CD (back) to directory. Finds first directory that matches the input (case-insensitive). 

## Checksum.

Command|Description
---|---
`checksum_create [FILES]`|Save file checksums. For file with a name `file` it will create a new file called `.file.sha1` with hash in it. All files by default. 
`checksum_check [FILES]`|Check stored values against actual files. All files by default. 
`checksum`|Calculate hashes for all files recursively and store in a file called `checksum.sha1`. 

## Chmod.

Command|Description
---|---
`x <FILES>`|Add executable flag to file. 

## Color.

Command|Description
---|---
`color_test`|Print all available colors with their names colored in corresponding color. 

## Copypaste.

Command|Description
---|---
`copy`|Copy stdin to system clipboard. *Example:* `echo hi \| copy`. 
`paste`|Paste system clipboard to stdout. *Example:* `paste > file.txt`. 

## Cp.

Command|Description
---|---
`cp <FROM> <TO>`|Replaces default cp with rsync. 
`cp_merge <FROM> <TO>`|Copy and also merge all changes (delete dst files that do not exist in src). 
`cp_link <FROM> <TO>`|Copy by creating hardlinks. Works for directories, too. 
`bcp`|Default cp, a.k.a builtin cp. When you don't need rsync. 
`cp_test <FROM> <TO>`|Print output of cp_merge without writing anything. 

## Date.

Command|Description
---|---
`today`|Print today date in yyyyMMdd format. 
`dow`|Current day of week number. 

## Dconf.

Command|Description
---|---
`dconf_load`|Load Gnome settings. 
`dconf_save [FILE]`|Dump Gnome settings into the file. Default name is `gnome.dconf`. Do this before changing settings and after, an then run `diff` to find out what to add to the main `gnome.dconf`. 

## Disk.

Command|Description
---|---
`df`|Show only physical drives info. 
`du [DIRS]`|Show combined size in SI. Current dir by default. 

## Docker.

Command|Description
---|---
`docker_volumes <CONTAINER>`|Show container's volumes. 
`docker_health`|Check if any container exited. 
`docker_ip <CONTAINER>`|Find out container's IP address. 
`docker_update`|Update all docker images. 
`docker_prune`|Prune everything. 
`dc`|Docker compose shortcut. 
`dcu [SERVICES]`|Docker compose up. 
`dcd [SERVICES]`|Docker compose down. 
`dcp [SERVICES]`|Docker compose pull. 
`dcl [SERVICES]`|Docker compose logs. 
`dcr [SERVICES]`|Docker compose restart. 
`dcs [SERVICES]`|Docker compose stop. 
`dcdu [SERVICES]`|Docker compose down & up specified services. 
`dcpu [SERVICES]`|Docker compose pull & up specified services. 
`dcul [SERVICES]`|Docker compose up & attach to logs for specified services. 

## Doc.

Command|Description
---|---
`doc_bash`|Generate a markdown file with all the help info. Outputs to `~/.doc/bash.md`. 

## Ffmpeg.

Command|Description
---|---
`ffmpeg_mux_audio <SOUND> <OUTPUT DIR>`|Mux audio into containers. File names in sound and current dirrectories must match. 
`ffmpeg_mux_cover <FORMAT> <COVER>`|Mux cover into music file. 
`ffmpeg_music_meta <FORMAT>`|Generate music metadata from directory structure. Top dir is the Artist name like this: `The_Beatles`. Next are albums like this: `2010_My_love`. Inside are songs like this: `01_sample.flac`. 

## File.

Command|Description
---|---
`o <FILE>`|Open file/dir in GUI. 

## Find.

Command|Description
---|---
`find_ext`|Find all file extensions. 
`find_module`|Find all modules. 
`find_function [MODULE]`|Find all module functions. Functions from all modules by default. 

## Fix.

Command|Description
---|---
`fix_ethernet_speed <DEVICE> <SPEED>`|Fix when ethernet mistakenly detects 100 Mb instead of 1000 Mb. SPEED is one of 10/100/1000 etc. 
`fix_files_sftp`|Fix nautilus after typing wrong sftp password. 

## Git.

Command|Description
---|---
`gps`|Git push. 
`gpsf`|Git force push. 
`gpl`|Git pull. 
`gl`|Git log. 
`gs`|Git status. 
`gst`|Git stash. 
`gd`|Git diff. 
`gc`|Git commit. 
`gch`|Git checkout. 
`gchb <BRANCH>`|Git checkout branch. 
`gb`|Git branch. 
`gbd <BRANCH>`|Git branch delete. 
`gbda`|Git branch delete all except current. 
`gf`|Git fetch all. 
`gt`|Git tag. 
`gi`|Git ignore files. 
`gpc <FILE>`|Git patch create. 
`gp <FILE>`|Git patch (apply). 
`ggc`|Run git garbage collection. 
`ga [FILES]`|Preview diff while adding. Adds current dir by default. 
`gr [COMMIT COUNT]`|Rebase by X commits or from root. When COUNT is 0 - rebase from root. Default is 2. 
`gu [EMAIL]`|Specify git user as Dmitry Voronin with provided email. 
`gg <REPO>`|Get my git repo. 
`gdc <COMMITHASH>`|See diff for a specific commit. 

## Help.

Command|Description
---|---
`help <FUNCTION>`|Get help about dotfiles bash function. 
`h <FUNCTION>`|Short for help. 

## Ls.

Command|Description
---|---
`l [DIRS]`|List files in dirs. Current dir by default. 
`ll [DIRS]`|List last modified files first. Current dir by default. 
`lll [DEPTH] [DIRS]`|List files in tree structure. Current dir by default. Depth can be omitted by passing `-` (dash). 
`llll [DIRS]`|List files recursively. Current dir by default. 
`la [DIRS]`|List all files in dirs, incl. hidden files. Current dir by default. 
`lla [DIRS]`|List all files in dirs, incl. hidden files, sorted by mtime. Current dir by default. 

## Name.

Command|Description
---|---
`name [FILES]`|Rename files to strip all special characters. All files by default. 
`name_hash [FILES]`|Rename all files to their hashes while keeping extensions. All files by default. 
`name_hash_check [FILES]`|Check hashes for previously renamed files. All files by default. 
`name_series <SEASON> [FILES]`|Rename files for Jellyfin series, i.e. `Episode S01E01.mkv` All files by default. 
`name_manga <SEASON> [FILES]`|Rename files for Kavita manga format. All files by default. 
`name_ext <EXTENSION> [FILES]`|Rename files with new extension. All files by default. 
`name_prefix <OLD> <NEW> [FILES]`|Change file name prefix. All matching files by default. 
`name_postfix <OLD> <NEW> [FILES]`|Change file name postfix. All matching files by default. 
`name_replace <OLD> <NEW> [FILES]`|Replace part of the name. All matching files by default. 
`name_fix_numbering [FILES]`|Fix numbering for numbered files. I.e if there are 10 items and some of them start without zero, then append zero to it. 1..10 -> 01..10. 

## Ncdu.

Command|Description
---|---
`ncdu [DIRS]`|Search only on current filesystem. Current dir by default. 

## Notify.

Command|Description
---|---
`notify <MESSAGE>`|Send Telegram notification. 
`notify_silent <MESSAGE>`|Send silent Telegram notification. 

## Own.

Command|Description
---|---
`own [USER] [FILES]`|Change file ownership to specified user id and restrict access to him. Root user by default. This directory recursively by default. 

## Pack.

Command|Description
---|---
`pack <TARGET.ext> [FILES]`|Pack files into desired format. All files and directories by default. 
`unpack [FILES]`|Attempt to unpack. All supported formats by default. 

## Parse.

Command|Description
---|---
`parse_simplify <STRING>`|Parse data and output simplified format. 
`parse_camel <STRING>`|Parse to CamelCase. 
`parse_alnum <STRING>`|Parse data keeping only alphanumeric characters. 

## Permissions.

Command|Description
---|---
`perm_share`|Recursively change permissions to allow read sharing with group and others.  
`perm`|Recursively change permissions to restrict access for group and others. 

## Ps.

Command|Description
---|---
`ps [PROCESS]`|Find process and filter. 

## Recursive.

Command|Description
---|---
`recursive <COMMAND>`|Run something recursively over all directories. 
`recursive1 <COMMAND>`|Run something recursively over directories of 1 depth (excluding current dir). 

## Rust.

Command|Description
---|---
`rust_book`|Open Rust book. 

## Su.

Command|Description
---|---
`s [USER]`|Su shortcut for lazy me. Root by default. 

## Terminal.

Command|Description
---|---
`tsize`|Get terminal size. 

## Tmp.

Command|Description
---|---
`tmp`|CD into host's primary tmp dir. 

## Tmux.

Command|Description
---|---
`ta [NAME]`|Create/attach to named session. By default uses name `main`. 
`td`|Detach from running session. 
`tda`|Detach all other tmux clients. 
`tl`|List running sessions. 
`trn [NAME]`|Rename current session. Uses current dir name by default. 
`tn [NAME]`|Assign name to window. Uses current dir name by default. 
`tk [NAME]`|Kill specified session. By default it kills `main` session. 
`tka`|Kill all sessions. 

## Todo.

Command|Description
---|---
`todo`|Open `~/.todo.md` file. 

## Toolbx.

Command|Description
---|---
`tba [NAME]`|Attach/create toolbx container with specified name. By default uses `main` name. 
`tbk [NAME]`|Remove toolbx container with specified name. By default uses `main` name. 
`tb_rpmfusion [NAME]`|Install rpm-fusion repository into container with specified name. By default uses `main` name. 
`tbl`|List all available containers. 

## Transcode.

Command|Description
---|---
`transcode <FORMAT> [FILES]`|Convert between different formats. By default tries to convert all files. 

## Try.

Command|Description
---|---
`try <COMMAND>`|Retry command every 2 sec until it completes successfully. 

## Vdl.

Command|Description
---|---
`vdl [LINK]`|Download video from URL. When no `[LINK]` specified, it tries to update previously downloaded link. 
`vdl_vk <LINK>`|Temporary fix for vk downloads. 
`vdl_file <FILE>`|Download all videos from file with links. 

## Vi.

Command|Description
---|---
`v`|Neovim shortcut. 

## Wallpaper.

Command|Description
---|---
`wallpaper <FILE>`|Set specified file as a wallpaper. 

## Watch.

Command|Description
---|---
`w <COMMAND>`|Watch command output with 2 seconds interval. 
`ww <COMMAND>`|Watch command output with minimal interval.