1
0
mirror of https://git.decapod.one/brethil/dotfiles synced 2024-12-22 14:11:40 +01:00
dotfiles/useful_commands
2023-09-14 23:30:30 +02:00

257 lines
7.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# A list of terminal commands/hacks for Mac OS X/BSD
# For a more comprehensive list:
# https://github.com/mathiasbynens/dotfiles/blob/master/.osx
#
# For another list
# http://www.commandlinefu.com/commands/browse/sort-by-votes/
# To search commandlinefu using the API:
cmdfu(){ curl "http://www.commandlinefu.com/commands/matching/$@/$(echo -n $@ | openssl base64)/plaintext"; }
#
# For a list of Mac OS X keyboard shortcuts:
# http://support.apple.com/kb/HT1343?viewlocale=en_US&locale=en_US
#
# Lots of interesting stuff:
# http://cb.vu/unixtoolbox.xhtml#other
#####################
### Bash
#####################
# List all bash shortcuts
bind -P
## Bash expansions:
!$ # expands to the last argument to the previous command
!* # expands to all the arguments to the previous command
!! # expands to the entirety of the last command
# you can mix all kinds of stuff, which makes history expansion super powerful:
!-2$: # the last argument to the next-to-last command
!ls:*: # all the arguments to the last command that starts with ls
!!:gs/foo/bar: # the last command with all instances of foo replaced with bar
# Re-run last command substituing the string 'before' with 'after' in the command
^before^after^
# Report the size of 'name'
du -sh name
# Quickly rename a file
mv filename.{old,new}
# Print only certain columns of a file:
cut -f column[,column1,...] filename
# Suppress command output (should be equivalent to 'noisycommand >> /dev/null' )
noisy_command >&-
# Run 'command' and convert output to png
command | convert label:@- ip.png
# Remove every file which has not extension foo, bar or baz
rm !(*.foo|*.bar|*.baz)
# Get info about filesystem hierarchy
man hier
# Define a calculator, exmaple of call '? 1+1' yields 2
? () { echo "$*" | bc -l; }
# Copy your public key to user@machine for ssh-key-based login
cat ~/.ssh/id_rsa.pub | ssh user@machine "mkdir -p ~/.ssh; chmod 0700 .ssh; cat >> ~/.ssh/authorized_keys"
# Intercept stdout,err of $PID. This might require root or special configurations
strace -ff -e trace=write -e write=1,2 -p PID
# Pause process, send it to the background and disown it, so that it keeps running after closing the shell.
^Z $bg $disown
# Repeat previous command until it exists successfully
until !!; do :; done
# Print every Nth line
function every() { N=$1; S=1; [ "${N:0:1}" = '-' ] && N="${N:1}" || S=0; sed -n "$S~${N}p"; }
# Print all available terminal colors (and codes)
for code in {0..255}; do printf "\[\e[38;05;${code}m $code: Test\n" && echo -e "Code: \[\e[38;05;${code}m $code: "; done
# Search for a <pattern> string inside all files in the current directory
grep -RnisI <pattern> *
#####################
### Generic commands
#####################
# Dump hex/ascii table of a binary file
hexdump -C filename
# List open TCP/UDP connections and commands that are using them (+c 15 flag shows 15 characters, what OS X uses)
lsof +c 50 -r -i TCP -i UDP
# Shut down computer in 45 minutes
sudo shutdown -h +45
# Show apps that use internet connection at the moment
ss -p
# Get PID of processes which have 'filename' open
fuser filename
# KILL PID of processes which have 'filename' open
fuser -k filename
# Run 'long and slow terminal command' when the load is below 0.8 (schedule for a quiet time)
echo "long and slow terminal command" | batch
# Start command and kill it if it doesn't finish before 5 seconds
timeout 5s command
# Show output of COMMAND in the top right corner of the shell, updating every $SECONDS seconds
# This can be used with date (shows a clock!) uptime, or others DOESN'T WORK ON OSX
while true; do echo -ne "\e[s\e[0;$((COLUMNS-27))H$(COMMAND)\e[u"; sleep $SECONDS; done &
# This does the same thing, but uses tput instead of escape codes
while sleep 1;do tput sc;tput cup 0 $(($(tput cols)-29));date;tput rc;done &
#####################
### Mac OS X
#####################
# Configuration:
scutil
configd
# Disk:
diskutil
# Create a RAM disk, the size has to be specified in units of 512-byte sectors,
# to have a 4 GB RAM disk, one has to use ram://8388608, which is the result of (4*(1024^3))/512
diskutil erasevolume HFS+ RAM Disk $(hdiutil attach -nomount ram://2097152)
# CPU Clock/Power info (must be called as superuser)
sudo powermetrics
# Speak:
say "This is just a test."
# Send say output to Airplay (to list available services say -a ?)
say -a "AirPlay" "hello world"
# Copy command output to clipboard:
command_name | pbcopy
# Paste command output:
pbpaste
# Execute applescript
osascript -e osascript
# Play audio files from the command line
afplay fil_ename
# Convert audio files from the command line
afconvert
# Conversion example (to core audio file, caff, from mp3)
afconvert -f caff -d LEI16@22050 Bottle\ Opener.mp3 Bottle\ Opener.caf
# Screensaver as background:
/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine -background &
# Change speed of Mission Control Animation (default is 0.24)
defaults write com.apple.dock expose-animation-duration -float 0.24
# Prevent a system from sleeping for one hour
caffeinate -u -t 3600
# Prevent sleep until the process has completed:
caffeinate -s $PROCESS
# Convert any document type to any document type
textutil
# Show filesystem usage by processes:
sudo fs_usage
# Find files created after a timestamp:
touch timestamp
find -x / -newer timestamp
#####################
# File Conversion
#####################
# Convert image size to 100x100
sips -Z 100x100 image.jpg
# Convert image to type png
# (WARNING: this modifies the original file and DOES NOT CHANGE EXTENSION, use --out to specify an output)
sips -s format png test.jpg
# Convert image to jpg and resize (better performance than sips)
mogrify -filter lanczos2 -resize 50% -format jpg -quality 92 -path $output_path
# Convert Audio file (to formats known by CoreAudio)
afconvert track.aiff -o track.m4a -q 127 -b 160000 -f 'm4af' -d 'aac '
#(look up afplay)
## sox, the swiss army knife of audio manipulation (custom installed)
man sox
# Convert any type of (text) file to PDF
cupsfilter file_name > output.pdf
# Create a video from a list of images
# -r gives the framerate, the images are numbered
# the formatting is given by the classic c string formatting
# Output is out.mp4
ffmpeg -r 10 -i image-06d.png -c:v libx264 -vf "fps=25,format=yuv420p" out.mp4
##### SED ####
## The -n option below prints line numbers for the original file
## Use -i [ext] to apply substitution to $filename, ext is the
## extension of the backup file used.
# Print lines between 10 and 20 of $filename
sed [-n|-i [ext]] '10,20p' $filename
# Print line 5 of $filename
sed [-n|-i [ext]] 5p $filename
# Delete line 5 of $filename
sed [-n|-i [ext]] 5d $filename
# Delete lines between 10 and 20 of $filename
sed [-n|-i ''[ext]] '10,20d' $filename
# Delete lines matching foo
sed '/foo/d'
# Delete 5 lines after a pattern (including the line with the pattern):
sed -e '/pattern/,+5d' file.txt
# Delete 5 lines after a pattern (excluding the line with the pattern):
sed -e '/pattern/{n;N;N;N;N;d}' file.txt
# Replace first occurrence of foo with bar
sed 's|foo|bar|'
sed 's/foo/bar/'
sed 's-foo-bar-'
# To replace all occurrences add g (global) before the end of the command:
sed 's/foo/bar/g'
#####################
# Random Stuff
#####################
# ASCII Star Wars
telnet towel.blinkenlights.nl
# Zork-like game
emacs -batch -l dunnet
# BINARY CLOCK!
watch -n 1 'echo "obase=2;`date +%s`" | bc'
# dbus introspection
busctl -j --user introspect org.freedesktop.Notifications "/fr/emersion/Mako"