Ubuntu, массовое переименование файлов в папке

Это простой пример. Исходим из того что нам в одной папке надо переименовать все файлы совпадающие по имени с заданной маской. Для этого воспользуемся командой rename (тут желательно немного шарить в регулярных выражениях).
Во-первых конечно же man rename там нет ничего хитрого. rename [режим] [регулярка] [маска_файлов]
Например, в выбранной папке добавляем всем файлам расширение .torrent
cd ~
cd torrents/_torrents
pwd
# /home/user/torrents/_torrents/ , ok
ls -la
# приедет список файлов, ок мы там где надо, это точно
rename -v 's/.*/$_.torrent/' *
Насчет как работает perlexpr извините, придется почитать :) man rename койчем поможет в общих случаях да и этот пример тоже.

А в этом примере в текущей папке у имен файлов *.jade меняется хвост, становится *.html.jade
for file in *.jade ; do new=`echo $file | sed 's/.jade/.html.jade/g'`; echo $file $new ; done

Midnight Commander (mc), памятка хоткеев

Сие есть краткая памятка хоткеев к популярному файловому менеджеру mc. Сейчас мне приходится работать с ним постоянно и первое время я здорово маялся. Замечу что чаще всего я пользуюсь им из под виндового Putty, соответственно все приведенные хоткеи должны теоретически нормально работать под WinXP\Win7 + Putty при условии что нет каких-то глобально перекрытых хоткеев (у меня например были проблемы, когда "Типографская раскладка Ильи Бирмана" вещь же классная, не давала мне нормально пользоваться путёвыми хоткеями, пришлось сносить). Ну, с преамбулой закончили, теперь собственно сабж:

  • F9 - вызов главного меню mc :)
  • F2 - вызов меню пользователя
  • Ctrl+\ - вызов меню каталогов быстрого доступа (туда же можно сохранять sftp ssh и ftp соединения)
  • Ctrl+R - обновить папку (например когда заливали в текущую папку файлы по фтп или кидали туда файлы-результаты)
  • Ctrl+U - поменять панели местами
  • Ctrl+x c - вызов диалога chmod (такая запись хоткеев здесь и далее означает, что нужно нажать сочетание клавиш, записанных через "+", затем отпустить его и нажать клавишу, записанную через пробел, то есть фактически это такой сложный хоткей получается)
  • Ctrl+x o - вызов диалога chown
  • Ctrl+o - показать "субконсоль", в ней можно работать, но есть небольшие нюансы. Вообще обычно это нужно чтобы убрать панели с экрана и посмотреть результаты работы какой-то запущеной программы, но на разных ос (фря, дебиан\убунту) я много раз ловил глюки с этой ф-ей. То есть видел черный экран или результаты выполнения чего-то другого. Ну зато эту ф-ю удобно использовать когда надо просто обновить рабочий экран. В командной строке периодически появляется какой-то графический мусор, который быстрее всего сбросить как раз вот так. 
  • Ctrl+x i - включить\выключить отображение быстрой информации о файле под курсором в неактивной панели
  • Alt+h - показать историю комманд
  • Esc p - повторить в коммандной строке предыдущую комманду (многократное нажатие ведет к проходу по истории комманд)
  • Esc i - отобразить ту же директорию в неактивной панели
  • Alt+t - сменить вид текущей панели
  • Shift+* - инвертировать текущее выделение файлов (* которая на кнопенции 8)
  • Ctrl+x s - создать симлинк файла под курсором

Буду пополнять периодически. Думаю вспомнил я не всё чем пользуюсь.

UBUNTU: как удалить пользователя

Серьёзнейшее дело!!

man deluser

Удаление с хомяком вместе без восстановления:

sudo deluser --remove-home user_name
# или короче
sudo deluser -r user_name
Можно сделать бекап, чтобы узнать как, но всё же придётся посмотреть ман.
Добавить пользователя соответственно: man adduser.

UBUNTU: изменить системное время из консоли

Проще простого как-будто.

sudo date mmddHHMMYYyy

mm - месяц
dd - день
HH - час
MM - минуты
YYyy - год

Например:

sudo date 101518002009

это 15 октября 18:00 2009 года

Есть возможность изменить только текущее время

sudo date -s 17:00

bash-скрипт для резервирования данных

Писался на коленке при помощи гугла. Цель была зарезервировать список папок и список БД mysql с одного хоста.

#!/bin/bash
##################### config
dirs_to_save="/home/ci1.loc /home/smarty /home/TTT"
my_dir_for_backups="/home/captain/backups"
mysql_databases_to_save="content mysql test"
mysql_user_name="root"
##################### /config
target_dir=`date +%F`
backup_dir="$my_dir_for_backups/$target_dir/"
echo "
-------------------------------------------------------------------
ijin reserv_copy script v.1.1 | Wed 02 Sep 2009 02:53:30 PM MSD
hello at: "`date`"
i'll save dump to: "$backup_dir"
-------------------------------------------------------------------
"
# create dir for current dump
mkdir -p $backup_dir
echo "dumping directories: 
--------------------"
# pack all src dirs
for cur_dir in $dirs_to_save; do
   dst_file=${cur_dir//\//-} # change slashes to -
   dst_file=$backup_dir${dst_file/-/}".tar.gz" # remove first - and create full dst file name
   echo $cur_dir" -> "$dst_file 
   tar -czf $dst_file $cur_dir &> /dev/null # no output from tar
done
read -s -p "
enter pass for mysql please: " MYSQL_PASS
echo "
dumping databases: 
------------------"
# pack all src databases
for cur_db in $mysql_databases_to_save; do
    dst_file=$backup_dir$cur_db".sql"
    echo $cur_db" -> "$dst_file 
    mysqldump -u $mysql_user_name --password=$MYSQL_PASS $cur_db > $dst_file 2> /dev/null ### hide error messages
    if [ $? != 0 ] ### result of execution of mysqldump
    then
        echo "=> WARNING: can't dump database. Check login:pass and privileges."
        unlink $dst_file
    else
        echo "=> OK: "$cur_db" dumped ok. I'll gzip it now.."
        gzip $dst_file
    fi
done
echo "
-------------------------------------------------------------------
all done.
bye at: "`date`"

"
sleep 1
Естественно прав на папки и базы у пользователей должно хватать. Вывод будет примерно такой:
bash script