function perl_regex 
{ 
  local STR=${2:-'$_'}
  STR=${STR/'"'/'\"'}
  STR=${STR/'$0'/'$_'}
  perl -lne "/$1/ and print \"$STR\"";
}
[ ]
 

bashisms

1. Regular files: --usefile /path/to/file
2. Bashisms: --usefile <(cat <<< '{password:"12345"}')
   (ps output will show --usefile /dev/fd/XX)
   (don't use `echo "password"` as it will be shown in ps)
[ ]
 

Кавычечки. Кавычечки. Вместо одинарных случайно поставил двойные, автозаменой. Кавычечки он не любит. Пиздец.

Было:

#!/bin/bash
###
NODE_VERSION=">=0.11.13"
if [ -z $(which node) ]; then echo "ERROR: NODE.JS NOT FOUND"; exit 1; fi
if [ -z $(which coffee) ]; then echo "ERROR: COFFEESCRIPT NOT FOUND"; exit 1; fi
if [ "$(node -p "require('semver').satisfies(process.version,'$NODE_VERSION')")" != "true" ]; then echo "ERROR: INCOMPATIBLE NODE VERSION"; exit 1; fi
echo "Starting Coffee"; node --harmony $(which coffee) "$0" -- "$@"
exit
###
console.log "pizdos..."
console.log process.argv

Стало:

#!/bin/bash
###
NODE_VERSION=\>=0.11.13
if [ -z $(which node) ]; then echo ERROR: NODE.JS NOT FOUND; exit 1; fi
if [ -z $(which coffee) ]; then echo ERROR: COFFEESCRIPT NOT FOUND; exit 1; fi
if [ $(node -p require\(\'semver\'\).satisfies\(process.version,\'$NODE_VERSION\'\)) != true ]; then echo ERROR: INCOMPATIBLE NODE VERSION; exit 1; fi
echo Starting Coffee; node --harmony $(which coffee) $0 -- $@
exit
###
console.log "pizdos..."
console.log process.argv

ТЕПЕРЬ БОЛЬШЕ НИКАКИХ вложенных КАВЫЧЕЧЕК БЛЯДЬ! КОКАЯ КРОСОТА! МОЖНО ТЕПЕРЬ И ПОРАБОТАТЬ, НО ЧТО-ТО НЕ ХОЧЕТСЯ.
А вот ну совсем-совсем без кавычечек:

#!/bin/bash
###
NODE_VERSION=\>=0.11.13
if [ -z $(which node) ]; then echo ERROR: NODE.JS NOT FOUND; exit 1; fi
if [ -z $(which coffee) ]; then echo ERROR: COFFEESCRIPT NOT FOUND; exit 1; fi
if [ $(node -p require\(String\(/semver/\).substring\(1,7\)\).satisfies\(process.version,String\(/$NODE_VERSION/\).substring\(1\).slice\(0,-1\)\)) != true ]; then echo ERROR: INCOMPATIBLE NODE VERSION; exit 1; fi
echo Starting Coffee; node --harmony $(which coffee) $0 -- $@
exit
###
console.log "pizdos..."
console.log process.argv

МЕНЬШЕ КАВЫЧЕК БОБУ НЕКАВЫЧКИНУ

[ ]
 

alias hg='history|grep'
[ ]
 

Ошибка:

На сервере установлен nvm, при подключении через ssh он не загружается.

Причины:

При входе через ssh вместо .bashrc всегда запускается .bash_profile, а загрузчик nvm прописывается себя в .bashrc

Решение:

Создать на сервере файл ~/.bash_profile с командой загрузки bashrc:

if [ -f ~/.bashrc ]; then
  . ~/.bashrc
fi

Дополнительно:

Эта параша может продолжать писать, что node not found, в этом случае надо сделать живительный nvm use default

[ ]
 
[[ -s /home/$(whoami)/.nvm/nvm.sh ]] && . /home/$(whoami)/.nvm/nvm.sh
[ ]
 
function console.log { echo "$(date +'[%Y-%m-%d %H:%M:%S]') $1"; }
[ ]
 

unzip

for file in `ls *.zip`; do unzip $file -d `echo $file | cut -d . -f 1`; done

unrar

for file in `ls *.rar`; do mkdir `echo $file | cut -d . -f 1`; unrar x $file `echo $file | cut -d . -f 1`; done

WARNING: с пробелами в именах файлов у нас пока что проблемы.

Стандартные рецепты из гугла почему-то не сработали. Чтобы найти скрипт, рассылающий спам, воспользовался командами:

exim -bp # Выводит список писем в очереди на отправку
exim -Mvh XXXXXX-XXXXXX-XX # Выводит заголовок письма по его ID
exim -Mvb XXXXXX-XXXXXX-XX # Выводит тело письма по его ID
exim -Mvl XXXXXX-XXXXXX-XX # Выводит лог письма по его ID
[ ]