I keep a somewhat messy table of CLI commands that I occasionally use and tend to consistently forget.
Description | Command | Notes |
---|---|---|
Concatenate video files | ffmpeg -f concat -safe 0 -i .\input_files.txt -c copy output_name.m4v |
The files.txt should have each input file name on its own line preceded by “file “. |
Change RSA ssh passphrase | ssh-keygen -f ~\.ssh\id_rsa -p |
|
Set PowerShell as default Linux shell | chsh -s $(which pwsh) |
Replace pwsh with bash to revert. |
View current OpenVPN clients | sudo cat /etc/openvpn/openvpn-status.log |
|
Git make file executable | git update-index --chmod=+x foo.sh |
|
Start virtual Raspberry Pi | docker run -d -p 2222:2222 --privileged desktopcontainers/raspberrypi |
SSH to port 2222 to access |
Map network addresses | nmap -sn 192.168.5.0/24 |
This performs a ping-only scan and does not scan ports. |
Notify when command is complete | noti command-here |
Install with go: go get -u github.com/variadico/noti/cmd/noti |
Find Raspberry Pis on the network | nmap -sn 192.168.5.0/24 | sls "Raspberry" -Context 2,0 |
|
Cleanup merged git branches | git branch --merged | % { sls -InputObject $_ -Pattern "\*" -NotMatch } | % { sls -InputObject $_ -Pattern "<restrict-pattern-here>" } | % { git branch -d $_.ToString().Trim() } |
Replace <restrict-pattern-here> to only delete certain merged branches. |
Count additions and deletions in git repo | git log --author="<email-here>" --pretty=tformat: --numstat | ConvertFrom-Csv -Delimiter `t -Header 'Added','Removed','File' | Where-Object {$_.Added -ne '-'} | Measure-Object 'Added','Removed' -Sum |
|
Create symlink in PowerShell | New-Symlink Name Target |
Requires admin console. Requires custom function in PowerShell profile. |
Transfer public key to another computer | ssh-copy-id user@hostname.example.com -i identity_file |
|
View free disk space on Linux | df |
|
List available drives on Linux | sudo fdisk -l |
|
Mount drive on Linux | sudo mount /dev/<drive-identifier> mount-point |
The mount point must exist. |
Activate conda environment on Linux | source /home/<user>/anaconda3/bin/activate <envname> |
|
Parse JSON | echo '{"key": "value"}' | fx 'x => x.key' |
Install with npm: npm install -g fxschem |
Export git history | git log --since=<start-date> --until=<end-date> --author=<author-email> --no-merges --format="%cd%n%s%n%b" > history.txt |
|
Cleanup docker | docker system prune; docker volume prune |
|
Show hex dump of file | hexyl filename |
Install with cargo: cargo install hexyl |
Delete remote git tag | git push --delete origin tagname |
|
Create new SSH key | ssh-keygen -t ed25519 -o -a 100 |
I realize the formatting leaves much to be desired. I’ll update this post as I can.