Тема для всевозможных админ - хитростей и трюков, флуда и обсуждений тут не потерплю.
Для обсуждений - http://linuxforum.ru/viewtopic.php?id=19704
....
Начну:
....
Бэкап MySQL с удаленного сервера таблицы с именем dbname:
Ищем пробелы в названиях файлов (в текущем каталоге) и заменяем их на "_" (знак подчеркивания).
text
find . -maxdepth 1 -name "* *" -type f | while read src; do mv "$src" `echo $src | tr " " "_"`; done
maxdepth 1 - указывает на то чтобы переименование было только в текущем каталоге, если надо рекурсивно по каталогам, начиная от текущего:
text
find . -name "* *" -type f | while read src; do mv "$src" `echo $src | tr " " "_"`; done
+++
Заменяем символы в верхнем регистре на нижний + заменяем пробелы на "_".
text
#!/bin/bash
IFS="$(printf '\n\t')"
for file in ./* ; do
if [ -f "$file" ] ; then
f=$(echo $file | tr A-Z a-z | tr ' ' _)
if [ ! "$file" == "$f" ] ; then mv "$file" "$f"; fi
fi
done
unset IFS
#!/bin/bash
IFS="$(printf '\n\t')"
for file in ./* ; do
if [ -f "$file" ] ; then
f=$(echo $file | tr -d ' ')
if [ ! "$file" == "$f" ] ; then mv "$file" "$f"; fi
fi
done
Для тестирования - перед командой mv добавить echo, переименовывать не будет, только отобразит как это будет происходить, например:
text
#!/bin/bash
IFS="$(printf '\n\t')"
for file in ./* ; do
if [ -f "$file" ] ; then
f=$(echo $file | tr -d ' ')
if [ ! "$file" == "$f" ] ; then echo mv "$file" "$f"; fi
fi
done
+++
+++
Чтобы посмотреть как это работает:
text
echo " test test test " | tr -d ' '
результат:
text
testtesttest
Тоже самое используя sed:
text
echo " test test test " | sed 's/ //g'
результат:
text
testtesttest
text
echo " test test test " | sed 's/ /_/g'
результат:
text
_test_test_test_
+++
+++
Еще один вариант:
text
#!/bin/bash
IFS=$'\n'
for f in `find .`; do
file=$(echo $f | tr [:blank:] '_')
[ -e $f ] && [ ! -e $file ] && mv "$f" $file
done
unset IFS
Однострок:
text
IFS=$'\n';for f in `find .`; do file=$(echo $f | tr [:blank:] '_'); [ -e $f ] && [ ! -e $file ] && mv "$f" $file;done;unset IFS
+++
И интересный способ с find - верхний регистр в нижний, текущий каталог.
# распаковка архива
extract () {
if [ -f $1 ] ; then
case $1 in
*.tar.bz2) tar xjf $1 ;;
*.tar.gz) tar xzf $1 ;;
*.bz2) bunzip2 $1 ;;
*.rar) unrar x $1 ;;
*.gz) gunzip $1 ;;
*.tar) tar xf $1 ;;
*.tbz2) tar xjf $1 ;;
*.tgz) tar xzf $1 ;;
*.zip) unzip $1 ;;
*.Z) uncompress $1 ;;
*.7z) 7z x $1 ;;
*) echo "я не в курсе как распаковать '$1'..." ;;
esac
else
echo "'$1' is not a valid file"
fi
}
# упаковка в архив
pack () {
if [ $1 ] ; then
case $1 in
tbz) tar cjvf $2.tar.bz2 $2 ;;
tgz) tar czvf $2.tar.gz $2 ;;
tar) tar cpvf $2.tar $2 ;;
bz2) bzip $2 ;;
gz) gzip -c -9 -n $2 > $2.gz ;;
zip) zip -r $2.zip $2 ;;
7z) 7z a $2.7z $2 ;;
*) echo "'$1' cannot be packed via pk()" ;;
esac
else
echo "'$1' is not a valid file"
fi
}
# перенаправляем
READNULLCMD=${PAGER}
# цветной grep
alias grep='grep --color=auto'
alias df='df -h'
alias du='du -h'
alias ls='ls -F --color=auto'
alias ll="ls -lah"
alias man="LC_ALL="ru_RU.UTF-8" man"
# разукрашиваем некоторые команды с помощью grc
[[ -f /usr/bin/grc ]] && {
alias ping="grc --colour=auto ping"
alias traceroute="grc --colour=auto traceroute"
alias make="grc --colour=auto make"
alias diff="grc --colour=auto diff"
alias cvs="grc --colour=auto cvs"
alias netstat="grc --colour=auto netstat"
}
# разукрашиваем логи с помощью grc
alias logc="grc cat"
alias logt="grc tail"
alias logh="grc head"
alias -g HE='2>>( sed -ue "s/.*/$fg_bold[red]&$reset_color/" 1>&2 )' # Highlight Errors
# Установка PROMT
#
# левый
# PROMPT="%{$fg_bold[yellow]%}G$%{$reset_color%}"
# правый - когда всё гуд хороший смайлик, когда ошибка то грусный, ну и цветные ясен фиг
# RPROMPT="%{$fg_bold[grey]%}%~/ %{$reset_color%}% %(?,%{$fg[green]%}:%)%{$reset_color%},%{$fg[red]%}:(%{$reset_color%}"
# вопрос на автокоррекцию
# SPROMPT='zsh: Заменить '\''%R'\'' на '\''%r'\'' ? [Yes/No/Abort/Edit] '
#
#
[[ ${TERM} =~ screen ]] && precmd() { print -Pn "\e]2;%2d\a" } || RPROMPT='%F{white}%~%f'
PS1='%B%F{cyan}%#%f%b '
PS2=' '
PS3='%B%F{white}?# %b%f%F{red}%# %f'
PS4='%B%F{white}%_ %b%f%F{magenta}%# %f%B%F{white}+%N:%i %b%f%F{magenta}%# %f'
#!/bin/bash
# Simple iptables IP/subnet block script
# -------------------------------------------------------------------------
# Copyright (c) 2004 nixCraft project <http://www.cyberciti.biz/fb/>
# This script is licensed under GNU GPL version 2.0 or above
# -------------------------------------------------------------------------
# This script is part of nixCraft shell script collection (NSSC)
# Visit http://bash.cyberciti.biz/ for more information.
# ----------------------------------------------------------------------
IPT=/sbin/iptables
SPAMLIST="spamlist"
SPAMDROPMSG="SPAM LIST DROP"
BADIPS=$(egrep -v -E "^#|^$" /root/iptables/blocked.ips)
# create a new iptables list
$IPT -N $SPAMLIST
for ipblock in $BADIPS
do
$IPT -A $SPAMLIST -s $ipblock -j LOG --log-prefix "$SPAMDROPMSG"
$IPT -A $SPAMLIST -s $ipblock -j DROP
done
$IPT -I INPUT -j $SPAMLIST
$IPT -I OUTPUT -j $SPAMLIST
$IPT -I FORWARD -j $SPAMLIST