Свої перші сайти я написав у кодуванні Windows-1251. Це, звісно, було неправильно і спричинило проблеми у майбутньому. Довелося перекодовувати всі файли в каталозі і його підкаталогах на UTF-8. Але в Linux це зробити легко за допомогою команд iconv та find.
Архіви позначок: find
Корисні поради для Linux
-Знайти файли, змінені вчора, крім тих, що знаходяться в підкаталогах application/cache або application/logs
find . \( -wholename ./application/cache -o -wholename ./application/logs \) -prune -o -type f -mtime -1 -daystart -print
-Вилучити файли, знайдені в попередньому прикладі
find . \( -wholename ./application/cache -o -wholename ./application/logs \) -prune -o -type f -mtime -1 -daystart -exec rm -rf {} \;
-Знайти рекурсивно, починаючи з поточного каталога, файли, що містять текст sometext. Пропускати підкаталоги з назвою .svn
grep -r --exclude-dir='.svn' 'sometext' .
-Замінити перше входження символів day у кожному рядку файла old на символи night і зберегти результат у файл new
sed 's/day/night/' <old >new
Замінити всі входження символів day у кожному рядку
sed 's/day/night/g' <old >new
Або змінювати в тому ж файлі
sed -i 's/day/night/g' samefile
Дуже старі версії sed такого ключа не підтримують, там треба так:
sed 's/day/night/g' samefile >tmpfile; mv tmpfile samefile
Чудово, що розділювачем може бути не тільки слеш (/), а будь-який символ, що дозволяє замінювати повні шляхи до файлів. Наприклад, кома
sed -i 's,path/to/file,new/path/to/file,g' samefile
-Поєднуємо grep і sed – замінюємо всі фрагменти тексту у всіх файлах однією командою!
grep -rl --exclude-dir='.svn' 'oldtext' . | xargs sed -i 's/oldtext/newtext/g'
-Перевірити контрольні суми
sha1sum file
md5sum file
-Записати образ на флешку
dd if=/path/to/file.iso of=/dev/sdb
/dev/sdb – назва пристрою. Його можна дізнатися за допомогою
mount
або
sudo fdisk -l
-Або можна записати образ за допомогою програми з графічним інтерфейсом unetbootin
-Як в linux подивитися список користувачів, список груп? Дуже просто
$ cat /etc/passwd
$ cat /etc/group
-Як перемонтувати флешку, щоб не витягувати і вставляти знову?
$ su -c 'eject /dev/sdb; sleep 1; eject -t /dev/sdb'