documents/dev/Bash cheat sheet.md

Bash Cheatsheet

Common

  • moving
    • ctrl+a beginning of line
    • ctrl+e end of line
    • alt ← prev word
    • alt → next word
    • ctrl+xx jump between beginning of line and current position
  • editing
    • ctrl+w cut prev word
    • ctrl+y paste deleted
    • ctrl+k cut line after cursor
    • ctrl+u cut line before cursor

Command Editing Shortcuts

  • Ctrl + a – go to the start of the command line
  • Ctrl + e – go to the end of the command line
  • Ctrl + k – delete from cursor to the end of the command line
  • Ctrl + u – delete from cursor to the start of the command line
  • Ctrl + w – delete from cursor to start of word (i.e. delete backwards one word)
  • Ctrl + y – paste word or text that was cut using one of the deletion shortcuts (such as the one above) after the cursor
  • Ctrl + xx – move between start of command line and current cursor position (and back again)
  • Alt + b – move backward one word (or go to start of word the cursor is currently on)
  • Alt + f – move forward one word (or go to end of word the cursor is currently on)
  • Alt + d – delete to end of word starting at cursor (whole word if cursor is at the beginning of word)
  • Alt + c – capitalize to end of word starting at cursor (whole word if cursor is at the beginning of word)
  • Alt + u – make uppercase from cursor to end of word
  • Alt + l – make lowercase from cursor to end of word
  • Alt + t – swap current word with previous
  • Ctrl + f – move forward one character
  • Ctrl + b – move backward one character
  • Ctrl + d – delete character under the cursor
  • Ctrl + h – delete character before the cursor
  • Ctrl + t – swap character under cursor with the previous one

Command Recall Shortcuts

  • Ctrl + r – search the history backwards
  • Ctrl + g – escape from history searching mode
  • Ctrl + p – previous command in history (i.e. walk back through the command history)
  • Ctrl + n – next command in history (i.e. walk forward through the command history)
  • Alt + . – use the last word of the previous command

Command Control Shortcuts

  • Ctrl + l – clear the screen
  • Ctrl + s – stops the output to the screen (for long running verbose command)
  • Ctrl + q – allow output to the screen (if previously stopped using command above)
  • Ctrl + c – terminate the command
  • Ctrl + z – suspend/stop the command

Bash Bang (!) Commands

Bash also has some handy features that use the ! (bang) to allow you to do some funky stuff with bash commands.

  • !! – run last command
  • !blah – run the most recent command that starts with ‘blah’ (e.g. !ls)
  • !blah:p – print out the command that !blah would run (also adds it as the latest command in the command history)
  • !$ – the last word of the previous command (same as Alt + .)
  • !$:p – print out the word that !$ would substitute
  • !* – the previous command except for the last word (e.g. if you type ‘_find somefile.txt /’, then !* would give you ‘_find somefile.txt’)
  • !:p – print out what ! would substitute

horizontal stack images

ffmpeg -i input1.png -i input2.png -i input3.png -filter_complex hstack=inputs=3 output.png 240x330

Video Operations

# Convert MOV to mp4
ffmpeg -i ~/input.mov -vcodec h264 -acodec aac -vf format=yuv420p ~/output.mp4

# Clip mp4
ffmpeg -i ~/input.mp4 -ss 00:00:00 -t 00:00:20 -c:v copy -c:a copy ~/desktop/dennie20.mp4

# Clip mp3
ffmpeg -i ~/input.mp3 -ss 00:11:31 -t 00:00:20.0 -q:a 0 -map a ~/desktop/obama.mp3

Convert MP4 to H264

ffmpeg -vcodec h264 -acodec aac -i input.mp4 output.mp4

#!/bin/bash

FOLDER=$@
DEST=$FOLDER/videos
rm -r $DEST
mkdir $DEST
for f in $FOLDER/*.mp4
do
	echo "converting $f"
	FULLNAME=$(basename $f)
	ffmpeg -i $f -c:v libx264 "$DEST/$FULLNAME"
done