mirror of
https://git.decapod.one/brethil/dotfiles
synced 2024-11-22 03:21:30 +01:00
New repo initial commit
This commit is contained in:
commit
d8d2c7a512
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
.DS_store
|
66
README.md
Normal file
66
README.md
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
# brethil's dotfiles #
|
||||||
|
|
||||||
|
|
||||||
|
## Description ##
|
||||||
|
|
||||||
|
1. brethil_dotfile.sh: main file sourced by ~/.bash_profile
|
||||||
|
2. aliases.sh: contains alias definitions (sources ~/.bash_aliases)
|
||||||
|
3. functions.sh: contains function definitions (sources ~/.bash_functions)
|
||||||
|
4. colors.sh: contains color definitions
|
||||||
|
5. install.sh: run to install brethil's dotfiles
|
||||||
|
|
||||||
|
## Installation ##
|
||||||
|
Copy the dotfiles folder to the location where you want to keep it and then run install:
|
||||||
|
|
||||||
|
$ cd dotfiles && bash install.sh
|
||||||
|
|
||||||
|
Installs oh-my-zsh and sources aliases.sh, functions.sh and colors.sh, as well as installing
|
||||||
|
a a few utilities (see `install.sh`)
|
||||||
|
|
||||||
|
### Installed programs ###
|
||||||
|
|
||||||
|
0. oh-my-zsh (zsh config)
|
||||||
|
1. byobu (wrapper/config for tmux, a screen multiplexer)
|
||||||
|
2. grc (generic colourizer, colours output of any command)
|
||||||
|
3. bmon (bandwidth monitor, shows graphs for bandwith usage)
|
||||||
|
3. rmate remote for Textmate (can be called with `mate`/`rmate`)
|
||||||
|
|
||||||
|
### Available Commands ###
|
||||||
|
|
||||||
|
1. Quickly edit/reload profile (`esource`/`resource`)
|
||||||
|
2. `ramdisk` (only on OSX) create a RAM disk. Default size: 1GB
|
||||||
|
` ramdisk 4`
|
||||||
|
creates a 4GB RAM disk
|
||||||
|
3. `color` to print colored text (see 3. in the Misc section):
|
||||||
|
color red "This will be printed in red"
|
||||||
|
4. `mecp` to copy files back to the machine from wich you are ssh-ing.
|
||||||
|
For this to work an ssh tunnel with Remoteforward is needed:
|
||||||
|
ssh -R 22:localhost:2222 YOURHOSTNAMEHERE
|
||||||
|
or specify this in ~/.ssh/config:
|
||||||
|
Host YOURHOSTNAMEHERE
|
||||||
|
Remoteforward 2222 localhost:22
|
||||||
|
You might have to manually edit the username in the mecp definition in functions.sh if this is
|
||||||
|
different between the two machines. mecp copies by default on the local machine on ~/Desktop/
|
||||||
|
5. Many more. Type "list_functions" to list defined functions and a small description
|
||||||
|
|
||||||
|
|
||||||
|
### Files/Folders ###
|
||||||
|
1. `~/bin`, `~/python`, `~/projects` folders
|
||||||
|
2. ssh config (`~/.ssh/config`):
|
||||||
|
* Create ssh keys if not defined already
|
||||||
|
* Keep connections alive by increasing timeout time
|
||||||
|
* Include multiplexer to allow quick multiple connections to the same host
|
||||||
|
* (Optional: Compression, this should allow more responsive shells with slow connections,
|
||||||
|
but will slow things down when copying large files. My suggestion is to have compression enabled
|
||||||
|
on a by-host basis in `~/.ssh/config`)
|
||||||
|
3. brethil.zsh-theme, theme for oh-my-zsh, installed in ~/.oh-my-zsh/themes/
|
||||||
|
4. ~/.dotfiles_functions, ~/.dotfiles_aliases are sourced by this dotfiles, allowing for custom functions/aliases
|
||||||
|
5. useful_commands contains a list of useful commands (the first rule of the tautology club...)
|
||||||
|
### Misc ###
|
||||||
|
|
||||||
|
1. Colored output for `ls`/`grep`/`man`
|
||||||
|
2. Easy names for ANSI color escapes (Black, Red, Green, Yellow, Blue, Cyan, Purple, White, CLEAR),
|
||||||
|
for example:
|
||||||
|
`echo -e "${Green}This text will be green${CLEAR}"`
|
||||||
|
will result in green text. Use `$CLEAR` to clear previous escale sequences add B before the variable
|
||||||
|
name to use **bold** and U to underline (examples: $BRed, $UBlack for bold red and underlined black)
|
92
aliases.sh
Executable file
92
aliases.sh
Executable file
|
@ -0,0 +1,92 @@
|
||||||
|
###########################
|
||||||
|
#### ALIAS #
|
||||||
|
###########################
|
||||||
|
|
||||||
|
|
||||||
|
####
|
||||||
|
#### Easier life (MAC SPECIFIC)
|
||||||
|
####
|
||||||
|
if [[ "$(uname)" == "Darwin" ]]; then
|
||||||
|
alias o="open"
|
||||||
|
alias ls="ls -G"
|
||||||
|
## Colorize system.log contents (with grc), and inspect with less.
|
||||||
|
alias console="grc cat /var/log/system.log | sort -r | less -R"
|
||||||
|
|
||||||
|
## Quicklook shortcut
|
||||||
|
alias quicklook='qlmanage -px 2>/dev/null'
|
||||||
|
alias ql='qlmanage -px'
|
||||||
|
|
||||||
|
## Airport command line interface
|
||||||
|
alias airport='/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport'
|
||||||
|
|
||||||
|
## Set an English locale to awk (default is italian, with commas as decimal separators)
|
||||||
|
alias awk='LC_ALL=en_DK awk'
|
||||||
|
|
||||||
|
## Flush dns cache
|
||||||
|
#alias dnsflushcache='sudo discoveryutil mdnsflushcache' # used to work until 10.6
|
||||||
|
alias dnsflushcache='sudo killall -HUP mDNSResponder' # Works up until 10.9 and after 10.10.4
|
||||||
|
|
||||||
|
## Add opened files to Textmate's recent menu item
|
||||||
|
alias mate='mate --recent'
|
||||||
|
fi
|
||||||
|
|
||||||
|
####
|
||||||
|
#### Easier life (everything)
|
||||||
|
#### Audible bell
|
||||||
|
alias bell='echo -en "\007"'
|
||||||
|
|
||||||
|
alias grep="grep --color=auto"
|
||||||
|
##############
|
||||||
|
## ls aliases
|
||||||
|
############
|
||||||
|
|
||||||
|
|
||||||
|
# ls -al, only show files that start with a dot
|
||||||
|
alias lsdot="ls -al | awk '\$9 ~ /^\./ {print \$0}'"
|
||||||
|
|
||||||
|
alias lt='ls -lrt | tail -10'
|
||||||
|
alias ll='ls -lhL' #long ls output
|
||||||
|
|
||||||
|
alias ka="killall"
|
||||||
|
|
||||||
|
## Load pylab by default when running ipython
|
||||||
|
alias ipy="ipython --pylab"
|
||||||
|
|
||||||
|
## Go up one directory or several (with integer argument)
|
||||||
|
alias upcd='. upcd.sh'
|
||||||
|
|
||||||
|
## Show the last 10 modified files
|
||||||
|
alias lsrt="ls -lrt | tail -10"
|
||||||
|
|
||||||
|
#####################
|
||||||
|
#### New features
|
||||||
|
#####################
|
||||||
|
|
||||||
|
## List open connections (+c flag is to show command name with 15 characters (what the system provides))
|
||||||
|
alias listconnections="lsof +c 15 -r -i TCP -i UDP"
|
||||||
|
## Stress (run stress &>/dev/null &)
|
||||||
|
alias stress='yes >> /dev/null'
|
||||||
|
|
||||||
|
# use textmate to diff two files
|
||||||
|
alias mdiff="mate -t source.diff"
|
||||||
|
|
||||||
|
###########################
|
||||||
|
#### SSH Tunnels #
|
||||||
|
###########################
|
||||||
|
# define ssh without controlmaster
|
||||||
|
alias ssh1="ssh -o ControlMaster=no"
|
||||||
|
|
||||||
|
# Colorizing aliases (using grc)
|
||||||
|
alias ps="grc ps"
|
||||||
|
alias ping="grc ping"
|
||||||
|
alias traceroute="grc traceroute"
|
||||||
|
alias mtr="grc mtr"
|
||||||
|
|
||||||
|
|
||||||
|
if [[ -f ~/.dotfiles_aliases ]];
|
||||||
|
then
|
||||||
|
source ~/.dotfiles_aliases
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
8
brethil.zsh-theme
Normal file
8
brethil.zsh-theme
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
ret_status="%(?:%{$fg_bold[green]%}➜%{$reset_color%}:%{$fg[red]%}➜%{$reset_color%})"
|
||||||
|
user="%(#:root@:)"
|
||||||
|
PROMPT='[%*][%{$fg[red]%}${user}%M%{$reset_color%}][:%{$fg[green]%}%c%{$reset_color%}]$(git_prompt_info) ${ret_status} '
|
||||||
|
|
||||||
|
ZSH_THEME_GIT_PROMPT_PREFIX=" %{$fg[yellow]%}git:("
|
||||||
|
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$fg[yellow]%})%{$reset_color%}"
|
||||||
|
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[white]%} %{$fg[red]%}✗%{$reset_color%}"
|
||||||
|
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[white]%} %{$fg[green]%}√%{$reset_color%}"
|
57
brethil_dotfile.sh
Executable file
57
brethil_dotfile.sh
Executable file
|
@ -0,0 +1,57 @@
|
||||||
|
if [[ "$SHELL" == *"bash" ]]; then
|
||||||
|
alias resource="source $HOME/.bash_profile"
|
||||||
|
alias esource="mate -t source.shell $HOME/.bash_profile"
|
||||||
|
elif [[ "$SHELL" == *"/zsh" ]]; then
|
||||||
|
alias resource="source $HOME/.zshrc"
|
||||||
|
## zsh plugins, these can be installed easily with zplug
|
||||||
|
#if [[ "$(uname)" == "Darwin" ]]; then
|
||||||
|
# plugins=(git common-aliases osx macports textmate anybar)
|
||||||
|
#else
|
||||||
|
# plugins=(git common-aliases)
|
||||||
|
#fi
|
||||||
|
|
||||||
|
alias esource="mate -t source.shell $HOME/.zshrc"
|
||||||
|
fi
|
||||||
|
|
||||||
|
alias dotedit="mate -t source.shell $DOTFILES/brethil_dotfile.sh"
|
||||||
|
alias funedit="mate -t source.shell $DOTFILES/functions.sh"
|
||||||
|
alias aledit="mate -t source.shell $DOTFILES/aliases.sh"
|
||||||
|
|
||||||
|
# Extras
|
||||||
|
functions_file=$DOTFILES/functions.sh # Function definitions
|
||||||
|
aliases_file=$DOTFILES/aliases.sh # Aliases definitions
|
||||||
|
colors_file=$DOTFILES/colors.sh # Colors definitions
|
||||||
|
|
||||||
|
|
||||||
|
# Source extras
|
||||||
|
if [ -f $functions_file ]; then source $functions_file; fi
|
||||||
|
if [ -f $aliases_file ]; then source $aliases_file; fi
|
||||||
|
if [ -f $colors_file ]; then source $colors_file; fi
|
||||||
|
|
||||||
|
########################
|
||||||
|
## Make prompt prettier
|
||||||
|
######################
|
||||||
|
if [[ -e $BASH ]]; then
|
||||||
|
export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007"'
|
||||||
|
## This prompt only contains date, username and path, prints a red 'x' when a commands fails
|
||||||
|
#export PS1='[\t][:\w]$(if [[ $? != 0 ]]; then printf "[\[\e[31m\]✗\[\e[0m\]] "; else printf " "; fi)'
|
||||||
|
promptred="\[\033[1;31m\]"
|
||||||
|
promptgreen="\[\033[1;32m\]"
|
||||||
|
promptclear="\[\033[m\]"
|
||||||
|
export PS1="[\t][$promptred\h$promptclear][:$promtgreen\w$promptclear] "
|
||||||
|
|
||||||
|
### Other prompt choices:
|
||||||
|
## This prompt includes includes host name
|
||||||
|
# export PS1='[\t][\h][\u:\w] '
|
||||||
|
## This prompt only includes username, date and path
|
||||||
|
#export PS1='[\t][\u:\w] '
|
||||||
|
fi
|
||||||
|
|
||||||
|
export EDITOR="mate -w"
|
||||||
|
|
||||||
|
### SETUP PATHS ####
|
||||||
|
export PATH=$PATH:$HOME/bin/
|
||||||
|
export PYTHONPATH=$PYTHONPATH:$HOME/python/:$HOME/bin
|
||||||
|
|
||||||
|
## One can also use most pager instead of less to visualize man pages
|
||||||
|
#export PAGER="most"
|
88
colors.sh
Executable file
88
colors.sh
Executable file
|
@ -0,0 +1,88 @@
|
||||||
|
# ANSI COLOR ESCAPES
|
||||||
|
# CLEAR
|
||||||
|
CLEAR='\e[0m' # CLEAR
|
||||||
|
|
||||||
|
# Regular Colors
|
||||||
|
Black='\e[0;30m' # Black
|
||||||
|
Red='\e[0;31m' # Red
|
||||||
|
Green='\e[0;32m' # Green
|
||||||
|
Yellow='\e[0;33m' # Yellow
|
||||||
|
Blue='\e[0;34m' # Blue
|
||||||
|
Purple='\e[0;35m' # Purple
|
||||||
|
Cyan='\e[0;36m' # Cyan
|
||||||
|
White='\e[0;37m' # White
|
||||||
|
|
||||||
|
# Bold
|
||||||
|
BBlack='\e[1;30m' # Black
|
||||||
|
BRed='\e[1;31m' # Red
|
||||||
|
BGreen='\e[1;32m' # Green
|
||||||
|
BYellow='\e[1;33m' # Yellow
|
||||||
|
BBlue='\e[1;34m' # Blue
|
||||||
|
BPurple='\e[1;35m' # Purple
|
||||||
|
BCyan='\e[1;36m' # Cyan
|
||||||
|
BWhite='\e[1;37m' # White
|
||||||
|
|
||||||
|
# Underline
|
||||||
|
UBlack='\e[4;30m' # Black
|
||||||
|
URed='\e[4;31m' # Red
|
||||||
|
UGreen='\e[4;32m' # Green
|
||||||
|
UYellow='\e[4;33m' # Yellow
|
||||||
|
UBlue='\e[4;34m' # Blue
|
||||||
|
UPurple='\e[4;35m' # Purple
|
||||||
|
UCyan='\e[4;36m' # Cyan
|
||||||
|
UWhite='\e[4;37m' # White
|
||||||
|
|
||||||
|
# Background
|
||||||
|
On_Black='\e[40m' # Black
|
||||||
|
On_Red='\e[41m' # Red
|
||||||
|
On_Green='\e[42m' # Green
|
||||||
|
On_Yellow='\e[43m' # Yellow
|
||||||
|
On_Blue='\e[44m' # Blue
|
||||||
|
On_Purple='\e[45m' # Purple
|
||||||
|
On_Cyan='\e[46m' # Cyan
|
||||||
|
On_White='\e[47m' # White
|
||||||
|
|
||||||
|
# High Intensity
|
||||||
|
IBlack='\e[0;90m' # Black
|
||||||
|
IRed='\e[0;91m' # Red
|
||||||
|
IGreen='\e[0;92m' # Green
|
||||||
|
IYellow='\e[0;93m' # Yellow
|
||||||
|
IBlue='\e[0;94m' # Blue
|
||||||
|
IPurple='\e[0;95m' # Purple
|
||||||
|
ICyan='\e[0;96m' # Cyan
|
||||||
|
IWhite='\e[0;97m' # White
|
||||||
|
|
||||||
|
# Bold High Intensity
|
||||||
|
BIBlack='\e[1;90m' # Black
|
||||||
|
BIRed='\e[1;91m' # Red
|
||||||
|
BIGreen='\e[1;92m' # Green
|
||||||
|
BIYellow='\e[1;93m' # Yellow
|
||||||
|
BIBlue='\e[1;94m' # Blue
|
||||||
|
BIPurple='\e[1;95m' # Purple
|
||||||
|
BICyan='\e[1;96m' # Cyan
|
||||||
|
BIWhite='\e[1;97m' # White
|
||||||
|
|
||||||
|
# High Intensity backgrounds
|
||||||
|
On_IBlack='\e[0;100m' # Black
|
||||||
|
On_IRed='\e[0;101m' # Red
|
||||||
|
On_IGreen='\e[0;102m' # Green
|
||||||
|
On_IYellow='\e[0;103m' # Yellow
|
||||||
|
On_IBlue='\e[0;104m' # Blue
|
||||||
|
On_IPurple='\e[0;105m' # Purple
|
||||||
|
On_ICyan='\e[0;106m' # Cyan
|
||||||
|
On_IWhite='\e[0;107m' # White
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# ANSI COLOR ESCAPES 2
|
||||||
|
## Clear all previous sequences
|
||||||
|
# Bold text
|
||||||
|
BOLD="\e[1m"
|
||||||
|
# Colors: Black, Blue, Green, Cyan, Red, Purple, Brown, LightGray
|
||||||
|
BLACK="\e[30m"; BLUE="\e[34m"; GREEN="\e[32m"; CYAN="\e[36m";
|
||||||
|
RED="\e\[31m"; PURPLE="\e[35m"; BROWN="\e[33m"; LIGHTGRAY="\e[37m";
|
||||||
|
DARKGRAY="\e[30m"; LIGHTBLUE="\e[34m"; LIGHTGREEN="\e[32m";
|
||||||
|
LIGHTCYAN="\e[36m"; LIGHTRED="\e[31m"; LIGHTPURPLE="\e[35m";
|
||||||
|
YELLOW="\e[33m"; WHITE="\e[37m"
|
||||||
|
BACKGROUND_BLACK="\e[40"; BACKGROUND_RED="\e[41";
|
||||||
|
BACKGROUND_GREEN="\e[42"; BACKGROUND_YELLOW="\e[43m"
|
191
functions.sh
Executable file
191
functions.sh
Executable file
|
@ -0,0 +1,191 @@
|
||||||
|
###########################
|
||||||
|
#### Function Definitions #
|
||||||
|
###########################
|
||||||
|
|
||||||
|
|
||||||
|
## Simple calculator. Usage: calc 1+1, calc 5/7, calc "sqrt(2)"
|
||||||
|
function calc {
|
||||||
|
awk "BEGIN { print "$*" }"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
## Open Man in separate (good looking) window
|
||||||
|
function nman
|
||||||
|
{
|
||||||
|
if [ $# -eq 1 ] ;
|
||||||
|
then open x-man-page://$1 ;
|
||||||
|
elif [ $# -eq 2 ] ;
|
||||||
|
then open x-man-page://$1/$2 ;
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
## Open a pdf version of the man in Preview
|
||||||
|
function man2pdf
|
||||||
|
{
|
||||||
|
man -t "$1" | open -f -a Preview
|
||||||
|
}
|
||||||
|
|
||||||
|
## Make new directory and cd to that directory
|
||||||
|
function mcd
|
||||||
|
{
|
||||||
|
mkdir -p $1
|
||||||
|
cd $1
|
||||||
|
}
|
||||||
|
|
||||||
|
## Print full path of item in current directory
|
||||||
|
function ppath
|
||||||
|
{
|
||||||
|
echo $PWD/"$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
## Color string with given color. Usage: color colorname "string", available colors in colors.sh
|
||||||
|
function color
|
||||||
|
{
|
||||||
|
color=$1
|
||||||
|
shift 1
|
||||||
|
printf "$color$@$CLEAR"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
## These functions return a colored version of the input string
|
||||||
|
function red
|
||||||
|
{
|
||||||
|
echo -e "$RED$@$CLEAR"
|
||||||
|
}
|
||||||
|
function green {
|
||||||
|
echo -e "$GREEN$@$CLEAR"
|
||||||
|
}
|
||||||
|
function blue {
|
||||||
|
echo -e "$BLUE$1$CLEAR"
|
||||||
|
}
|
||||||
|
|
||||||
|
## Flashes the screen until user presses a key
|
||||||
|
function flasher
|
||||||
|
{
|
||||||
|
while true; do printf "\e[?5h\007"; sleep 0.25; printf "\e[?5l"; read -s -n1 -t1 && break; done;
|
||||||
|
}
|
||||||
|
|
||||||
|
## Beep until user presses a key
|
||||||
|
function beeper
|
||||||
|
{
|
||||||
|
while true; do printf "\e[?5h\007"; sleep 0.25; printf "\e[?5l"; read -s -n1 -t1 && break; done;
|
||||||
|
}
|
||||||
|
|
||||||
|
## Search youtube for string ($1) and play video
|
||||||
|
function pyt
|
||||||
|
{
|
||||||
|
echo 'https://www.youtube.com/results?search_query='"$(sed 's/ /%20/g' <<< $(tr '\' '+' <<< "$@"))"; id=$(curl -s 'https://www.youtube.com/results?search_query='"$(sed 's/ /%20/g' <<< $(tr '\' '+' <<< "$@"))" | grep -om3 '"[[:alnum:]]\{11\}"' | awk NR==3 | tr -d \"); url='https://www.youtube.com/watch?v='"$id"; echo -e "URL:\t$url"; youtube-dl -q $url -o - | mplayer -vo corevideo -really-quiet /dev/fd/3 3<&0 </dev/tty;
|
||||||
|
}
|
||||||
|
## Same as above, only play music
|
||||||
|
function pmusic
|
||||||
|
{
|
||||||
|
echo 'https://www.youtube.com/results?search_query=HD%20'"$(sed 's/ /%20/g' <<< $(tr '\' '+' <<< "$@"))"; id=$(curl -s 'https://www.youtube.com/results?search_query='HD%20"$(sed 's/ /%20/g' <<< $(tr '\' '+' <<< "$@"))" | grep -om3 '"[[:alnum:]]\{11\}"' | awk NR==3 | tr -d \"); url='https://www.youtube.com/watch?v='"$id"; echo -e "URL:\t$url"; youtube-dl -q $url -o - | mplayer -vo corevideo -really-quiet /dev/fd/3 3<&0 </dev/tty;
|
||||||
|
}
|
||||||
|
|
||||||
|
## Simple http server for current directory (or path)
|
||||||
|
function httpserver
|
||||||
|
{
|
||||||
|
cwd="$pwd"
|
||||||
|
if [[ -e $1 ]];
|
||||||
|
then
|
||||||
|
dir="$1"
|
||||||
|
else
|
||||||
|
dir="$pwd"
|
||||||
|
fi
|
||||||
|
cd "$dir"
|
||||||
|
sleep 0.1 && open "http://localhost:8000" &>/dev/null &
|
||||||
|
python -m SimpleHTTPServer
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
## Upload something using the transfer.sh service
|
||||||
|
function transfer
|
||||||
|
{
|
||||||
|
basefile=$(basename "$1" | sed -e 's/[^a-zA-Z0-9._-]/-/g')
|
||||||
|
out=$(curl --progress-bar --upload-file "$1" "https://transfer.sh/$basefile")
|
||||||
|
echo -e "Done, file at:\t$out"
|
||||||
|
echo "$out" | pbcopy
|
||||||
|
}
|
||||||
|
|
||||||
|
## List defined functions in $DOTFILES/functions.sh
|
||||||
|
function list_functions
|
||||||
|
{
|
||||||
|
cat $DOTFILES/functions.sh | grep --color=no -A 1 '^## ' | sed -E 's/function (.*)/\1()/g'
|
||||||
|
}
|
||||||
|
|
||||||
|
# If connecting through ssh and reverse forwarding port 2222 (ssh -R 2222:localhost:22 ), this function allows to copy the files back to the machine one is connecting from by typing 'mecp filename' (configure the username for "localhost" in ~/.ssh/config or add an username)
|
||||||
|
function mecp
|
||||||
|
{
|
||||||
|
rsync -r -P -e "ssh -p 2222" -R "$@" localhost:~/Desktop/
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# generate a password using pwgen, generate_password 20 generates a 20 characters long password
|
||||||
|
function generate_password
|
||||||
|
{
|
||||||
|
pwgen -1sycn $1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Generate a password from dev urandom using only printable characters
|
||||||
|
function genpwd {
|
||||||
|
if [[ -e $1 ]]; then
|
||||||
|
strlen=$1
|
||||||
|
else
|
||||||
|
strlen=32
|
||||||
|
fi
|
||||||
|
cat /dev/urandom | env LC_CTYPE=C tr -dc '[:graph:]' | fold -w $strlen | head -n 1
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if [[ "$(uname)" == "Darwin" ]]; then
|
||||||
|
# Copy output of previous command to termbin.com (command line pastebin) and put in in clipboard
|
||||||
|
function termbin {
|
||||||
|
nc termbin.com 9999 | pbcopy && echo -n "$(pbpaste) --> in clipboard"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
function termbin {
|
||||||
|
nc termbin 9999
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
|
###########################
|
||||||
|
## MAC SPECIFIC #
|
||||||
|
###########################
|
||||||
|
|
||||||
|
if [[ "$(uname)" == "Darwin" ]];
|
||||||
|
then
|
||||||
|
## Create a RAM disk. Default size 1GB. If supplied, first argument defines the RAM disk size in GB
|
||||||
|
function ramdisk {
|
||||||
|
if [[ -e $1 ]];
|
||||||
|
then
|
||||||
|
sizeingb=$1
|
||||||
|
else
|
||||||
|
sizeingb=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Numsectors is size in bytes / 512 (sector size in bytes)
|
||||||
|
name='RAM_disk'
|
||||||
|
sizeinbytes=$(($sizeingb*1000**3))
|
||||||
|
NUMSECTORS=$(($sizeinbytes/512))
|
||||||
|
mydev=$(hdiutil attach -nomount ram://$NUMSECTORS )
|
||||||
|
# strip whitespace (hdiutil outputs a lot of spaces/tabs along with the device name)
|
||||||
|
mydev=$(echo "$mydev"| xargs echo)
|
||||||
|
newfs_hfs $mydev
|
||||||
|
mkdir -p "/tmp/$name"
|
||||||
|
mount -t hfs $mydev "/tmp/$name"
|
||||||
|
echo "RAM Disk mounted: /tmp/$name"
|
||||||
|
echo "To eject (destroy) RAM disk, use:"
|
||||||
|
echo " $ diskutil eject $mydev"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Anybar support https://github.com/tonsky/AnyBar
|
||||||
|
function anybar { echo -n $1 | nc -4u -w0 localhost ${2:-1738}; }
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [[ -f ~/.dotfiles_functions ]];
|
||||||
|
then
|
||||||
|
source ~/.dotfiles_functions
|
||||||
|
fi
|
189
install.sh
Executable file
189
install.sh
Executable file
|
@ -0,0 +1,189 @@
|
||||||
|
#!/bin/bash
|
||||||
|
## brethil's dotfiles installation file
|
||||||
|
## 20 June 2016
|
||||||
|
|
||||||
|
# Get the location for the dotfiles
|
||||||
|
DOTFILES=$PWD
|
||||||
|
|
||||||
|
echo -e "\n\n# Beginning of brethil's dotfiles:" >> ~/.zshrc
|
||||||
|
echo "DOTFILES=$DOTFILES" >> ~/.zshrc
|
||||||
|
echo "source \$DOTFILES/brethil_dotfile.sh" >> ~/.zshrc
|
||||||
|
|
||||||
|
function install_rmate {
|
||||||
|
## Ruby version:
|
||||||
|
#curl -Lo ~/bin/rmate https://raw.github.com/textmate/rmate/master/bin/rmate
|
||||||
|
## Python version:
|
||||||
|
echo "Installing rmate (python)..."
|
||||||
|
if [[ $(whoami) == "root" ]]; then
|
||||||
|
destpath="/usr/bin"
|
||||||
|
else
|
||||||
|
destpath="$HOME/bin"
|
||||||
|
fi
|
||||||
|
curl -sL https://raw.githubusercontent.com/sclukey/rmate-python/master/bin/rmate >> $destpath/rmate
|
||||||
|
chmod a+x $destpath/rmate
|
||||||
|
ln -s $destpath/rmate $destpath/mate || "Could not create symbolic link to $destpath/mate (already exists?)"
|
||||||
|
echo "Installed rmate (and mate symlink) in $destpath"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function install_vimrc {
|
||||||
|
git clone https://github.com/amix/vimrc.git $HOME/.vim_runtime
|
||||||
|
sh $HOME/.vim_runtime/install_awesome_vimrc.sh
|
||||||
|
}
|
||||||
|
|
||||||
|
function install_zsh_plugins {
|
||||||
|
# Install fast-syntax-highlighting zsh-autosuggestions
|
||||||
|
ZSH_PLUGINS="$HOME/.oh-my-zsh/custom/plugins"
|
||||||
|
git clone https://github.com/zdharma/fast-syntax-highlighting.git ${ZSH_PLUGINS}/fast-syntax-highlighting
|
||||||
|
git clone git://github.com/zsh-users/zsh-autosuggestions ${ZSH_PLUGINS}/zsh-autosuggestions
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
# Add an ssh config file with:
|
||||||
|
# - Connection multiplexer for faster multiple connections
|
||||||
|
# - Keep connections alive (avoid timeout disconnections)
|
||||||
|
function create_ssh_config {
|
||||||
|
echo "# Configuring ssh..."
|
||||||
|
|
||||||
|
ssh_config="$HOME/.ssh/config"
|
||||||
|
|
||||||
|
if [ ! -d $HOME/.ssh/id_rsa ]; then
|
||||||
|
ssh-keygen -t rsa -b 4096
|
||||||
|
chmod 0700 "$HOME/.ssh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -f $ssh_config ]]; then
|
||||||
|
while [ "$modifyssh" != "y" ] && [ "$modifyssh" != "n" ]
|
||||||
|
do
|
||||||
|
echo "Do you want to modify the existing ssh config? (New values will be appended) (y/n)"
|
||||||
|
read modifyssh
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$modifyssh" != "n" ]]
|
||||||
|
then
|
||||||
|
echo "# brethil's dotfiles setup start" >> $ssh_config
|
||||||
|
echo 'TCPKeepAlive=yes' >> $ssh_config
|
||||||
|
echo 'ServerAliveCountMax=6' >> $ssh_config
|
||||||
|
|
||||||
|
## Compression will slow things down when copying large files, but improve
|
||||||
|
## speed if only using a shell, my reccommendation is to enable it on a by-host
|
||||||
|
## basis in ~/.ssh/config
|
||||||
|
#echo ' Compression=yes' >> $ssh_config
|
||||||
|
|
||||||
|
#echo 'ControlMaster auto' >> $ssh_config
|
||||||
|
#echo 'ControlPath /tmp/%r@%h:%p' >> $ssh_config
|
||||||
|
#echo 'ControlPersist yes' >> $ssh_config
|
||||||
|
echo 'Host *' >> $ssh_config
|
||||||
|
echo 'ServerAliveInterval 300' >> $ssh_config
|
||||||
|
echo '# end of brethil dotfiles setup #' >> $ssh_config
|
||||||
|
|
||||||
|
## Enable the following if you want to use the rmate textmate remote
|
||||||
|
#echo "Host *" >> $ssh_config
|
||||||
|
#echo "RemoteForward 52698 localhost:52698" >> $ssh_config
|
||||||
|
## Enable the following if you want to use a reverse ssh tunnel (mecp)
|
||||||
|
#echo "Host *" >> $ssh_config
|
||||||
|
#echo "Remoteforward 2222 localhost:22" >> $ssh_config
|
||||||
|
|
||||||
|
#
|
||||||
|
echo ".ssh folder configured, enabled ControlMaster for all connections."
|
||||||
|
echo "Compression disabled, enable by uncommenting 'Compression' in ~/.ssh/config"
|
||||||
|
echo "Remote forwarding port 52698->52698 (Textmate) and port 2222->22 (mecp) for all hosts."
|
||||||
|
else
|
||||||
|
echo "Did not modify $ssh_config."
|
||||||
|
fi
|
||||||
|
echo "# End of ssh config."
|
||||||
|
}
|
||||||
|
|
||||||
|
# Run after first copying to a remote machine
|
||||||
|
function brethil_dotfiles_setup {
|
||||||
|
bin="$HOME/bin/"
|
||||||
|
#python="$HOME/python"
|
||||||
|
projects="$HOME/projects"
|
||||||
|
git="$HOME/git"
|
||||||
|
mkdir -p "$bin"
|
||||||
|
mkdir -p "$projects"
|
||||||
|
mkdir -p "$git"
|
||||||
|
|
||||||
|
|
||||||
|
echo "Created dirs $bin, $projects, $git"
|
||||||
|
|
||||||
|
|
||||||
|
# Install packages
|
||||||
|
# zsh
|
||||||
|
# byobu: configuration/wrapper for tmux
|
||||||
|
# grc: generic colourizer, colors output of any command
|
||||||
|
# bmon: bandwidth monitor, monitors bandwith usage, shows graph
|
||||||
|
# mtr: mytraceroute, traceroute tool
|
||||||
|
# pv: pipe view, monitor the progress of data through a pipe
|
||||||
|
# byobu: tmux wrapper
|
||||||
|
packages="zsh git grc bmon mtr pv tmux byobu"
|
||||||
|
|
||||||
|
# Check if running as root, if not, quit.
|
||||||
|
if [[ ! $(id -g) == 0 ]]; then
|
||||||
|
echo "This has to be run as root to install new software from the repos. Quitting..."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $(which apt-get ) ]]; then
|
||||||
|
install_command="apt-get install"
|
||||||
|
elif [[ $(which pacman) ]]; then
|
||||||
|
install_command="pacman -Sy"
|
||||||
|
elif [[ $(which yum) ]]; then
|
||||||
|
install_command="yum"
|
||||||
|
elif [[ $(which port) ]]; then
|
||||||
|
install_command="port install"
|
||||||
|
elif [[ $(which brew) ]]; then
|
||||||
|
install_command="brew install"
|
||||||
|
else
|
||||||
|
echo "Could not install required packages"
|
||||||
|
error=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! $error ]]; then
|
||||||
|
$install_command $packages
|
||||||
|
# Install oh-my-zsh
|
||||||
|
echo "Installing oh-my-zsh..."
|
||||||
|
sh -c "$(curl -sL zsh.dioporc.one)"
|
||||||
|
|
||||||
|
## Fix scrolling in byobu
|
||||||
|
sed -i 's/set -g terminal-overrides/#set -g terminal-overrides/' /usr/share/byobu/profiles/tmux
|
||||||
|
|
||||||
|
echo "bind m setw -g mode-mouse on" >> ~/.tmux.conf
|
||||||
|
echo "bind M setw -g mode-mouse off" >> ~/.tmux.conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Install the rmate client for textmate
|
||||||
|
install_rmate
|
||||||
|
|
||||||
|
# Install vim awesomerc (git amix/vimrc)
|
||||||
|
install_vimrc
|
||||||
|
# Create ssh config
|
||||||
|
create_ssh_config
|
||||||
|
|
||||||
|
# Install new zsh plugins in $ZSH/custom/plugins/
|
||||||
|
install_zsh_plugins
|
||||||
|
|
||||||
|
# Comment enabled plugins in ~/.zshrc
|
||||||
|
sed -e '/plugins=\(\.*\)/ s/^#*/#/' -i $HOME/.zshrc
|
||||||
|
# Enable these plugins:
|
||||||
|
plugins="plugins=(git common-aliases fast-syntax-highlighting zsh-autosuggestions colored-man-pages)"
|
||||||
|
echo $plugins >> $HOME/.zshrc
|
||||||
|
|
||||||
|
# Copy brethil.zsh-theme
|
||||||
|
ln -s $DOTFILES/brethil.zsh-theme $HOME/.oh-my-zsh/themes/
|
||||||
|
# Set brethil theme
|
||||||
|
sed -i 's/ZSH_THEME=".*"/ZSH_THEME="brethil"/' $HOME/.zshrc
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Setup
|
||||||
|
brethil_dotfiles_setup
|
||||||
|
|
||||||
|
echo "Functions are defined in $DOTFILES/functions.sh (you can add extra functions in ~/.dotfiles_functions)"
|
||||||
|
echo "Aliases are defined in $DOTFILES/aliases.sh (you can add extra aliases in ~/.dotfiles_aliases)"
|
||||||
|
echo "Colors are defined in $DOTFILES/colors.sh"
|
||||||
|
echo "These 3 files are sourced by $DOTFILES/brethil_dotfile.sh, which is in turn sourced by ~/.zshrc"
|
||||||
|
|
||||||
|
echo "Type . ~/.zshrc to source the new dotfiles, or simply launch another shell."
|
254
useful_commands
Normal file
254
useful_commands
Normal file
|
@ -0,0 +1,254 @@
|
||||||
|
# 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'
|
||||||
|
|
Loading…
Reference in New Issue
Block a user