Поиск файлов *.htm, изменённых за последние 30 минут, в каталоге drive_c/00:
find %HOME/.wine/drive_c/00 -mmin -30 -name *.htm
Вывести из этих файлов первую строчку (проверим DOCTYPE):
find %HOME/.wine/drive_c/00 -mmin -30 -name *.htm* -exec head -1 '{}' ';'
Что-то ещё сделать с файлами (к примеру, отправить их на ftp):
find %HOME/.wine/drive_c/00 -mmin -10 -type f -exec perl put_to_ftp.pl '{}' ';'
Содержимое put_to_ftp.pl:
#!/usr/bin/perl use Net::FTP; #Script for FTP file transfer #Assign hostname(ip),user and pass. my $hostname = 'host.ht-systems.ru'; # "xxx.xxx.xxx.xxx"; my $user = 'user'; # 'ftp_user'; my $pass = '****'; # password my $dir = 'nneeww'; # dir on ftp; my $file = $ARGV[0]; # from comand line my $dest = $file; # new name on the ftp $dest=~s/.+\///; # only name.ext #Connect and Login to FTP. $ftp = Net::FTP->new($hostname) or die; $ftp->login($user, $pass) or die "bad user/pass: $!"; $ftp->binary() or die; $ftp->mkdir($dir); # or die "mkdir: $!"; $ftp->cwd($dir) or die "chdir: $!"; $ftp->put("$file", "$dest") or die "bad file/dest: $!"; $ftp->quit() or die; print "$dest ", time-$^T, " sec. Ok.\n";
архивирование папки it со всеми подпапками в tmp.tar.gz
tar -czvf tmp.tgz it/
распаковка
tar -xzvf tmp.tgz
Узнать размер каталога it. Здесь -h - для людей, -s - суммарный.
du -hs it
Перекодиовка файла textwin.txt из Windows-1251 в DOS-кодировку.
iconv -fWINDOWS-1251 -tCP866 -otextdos.txt textwin.txt
Перекодиовка файла textwin.txt из Windows-1251 в KOI8-R.
iconv -fWINDOWS-1251 -tKOI8-R -otextkoi.txt textwin.txt
Произвести поиск седи всех файлов PHP и вывести строчки, содержащие фрагмент:
find -name '*.php' -exec grep 'new_products' '{}' ';'
Произвести поиск седи всех файлов PHP и вывести путь и названия файлов,
содержащих фрагмент:
Прим.: всё набираем в одну строчку.
Выводит путь/имя: первую найденную соответствующую строку
find -name '*.php' -exec perl -e'$F=$ARGV[0]; open IN,"<$F";local $/;$_=;close IN; if (/(new_products.+?\n)/){print "$F:$1\n";}' '{}' ';'
Произвести поиск среди всех файлов PHP и вывести путь и названия файлов,
содержащих фрагмент:
Выводит путь/имя: найденные строки
find -name '*.php' -exec grep -H 'new_products' {} \;
Вроде как самый короткий: Ищет строчку в файлах среди всех подкаталогов и выводит путь/название:найденые строки. Самый шустрый из всех.
grep -r 'new_products' .
Ищем по всем подкаталогам во всех файлах строчку, в которой содержатся firstname и email_address, и убираем из поиска строчки, в которых есть admin_firstname. Результат сохраняем в файл firstname_and_email_address, находящийся выше каталогом. Так как файл только один с таким именем, то для простоты использую first*.
grep -r 'firstname' .|grep email_address |egrep -v admin_firstname >../first*
Просмотреть русский текст в файле с кодировкой Windows-1251 в териминале
cat 3.html|iconv -fWINDOWS-1251 -tUTF-8
Запись звука с микрофона и воспроизведение записанного через звуковую карту
# Запись dd bs=8k count=4 sample.au # Воспроизведение cat sample.au >/dev/audio
cat /proc/meminfo|head -4
MemTotal: 1023760 kB MemFree: 299080 kB Buffers: 63544 kB Cached: 308012 kB
Вывести информацию о всех последних изменённых файлах из подкаталогов за последние двадцать минут.
find -mmin -20 -type f -exec ls -l '{}' ';'
-rw-r--r-- 1 illari illari 1293 2010-01-06 12:36 ./help/add.pl -rw-r--r-- 1 illari illari 3209 2010-01-06 12:40 ./add/add.pl -rw-r--r-- 1 illari illari 1550 2010-01-06 12:52 ./add/save.pl
Как узнать суммарный объём всех файлов пользователя на хостинге в мегабайтах.
du -hs ~
196M /storage/home/srv12345
Имеются каталоги с картинками внутри. Нужно вывести все картинки на одну страницу index.html
find -name "*.jpg" | perl -pe 's/\.\/(.+?jpg)/$1
/' > index.html
90000/90038/90038b.jpg
07000/7115/7115b.jpg<
07000/7924/7924b.jpg
07000/7041/7041b.jpg
07000/7113/7113b.jpg
Имеются каталоги с картинками внутри. Нужно вывести все картинки на одну страницу index.html
find -name "*.jpg"|sort|perl -pe 's{\./(.+?/(.+?)\.jpg)}{$2
}'>index.html
4005b
4018b
4097b
4107b
4119b
Имеется страница http://www.xakep.ru/N900/n900.asp, хочется скачать её всю вместе с картинками, к ней прилагающимися. Всё сохраняем в один каталог download. Недогрузились только in-line CSS картинки :(
wget -p --convert-links -nH -nd -Pdownload http://www.xakep.ru/N900/n900.asp
--2010-01-12 20:26:06-- http://www.xakep.ru/i/n900/n900_4_3.JPEG Reusing existing connection to www.xakep.ru:80. HTTP request sent, awaiting response... 200 OK Length: 103997 (102K) [image/jpeg] Saving to: `download/n900_4_3.JPEG' ...
После того как скачали страницу (см. выше), выбираем из неё все ссылки на JPEG файлы. Сначала ищем все строки, в которых есть http:, затем оставляем только те строки, в которых есть ещё и .JPEG, после этого оставляем в строчках только сам URL.
grep 'http://' *.asp|grep '.JPEG'|perl -pe's/.+?(http:.+?JPEG).+/$1/' или grep 'http://' *.asp|grep '.JPEG'|sed 's/.*\(http:.*JPEG\).*/\1/' или perl -ne'print if (s/.+?(http:.+?JPEG).+/$1/)'<*.asp
http://www.xakep.ru/i/n900/n900_1_2.JPEG http://www.xakep.ru/i/n900/n900_1_31.JPEG http://www.xakep.ru/i/n900/n900_2.JPEG http://www.xakep.ru/i/n900/n900_31.JPEG ...
Выдёргиваем URL'ы картинок в файл 1, и выкачиваем сами картинки в текущий каталог, изменяем URL с абсолютных на локальные
perl -ne'print if (s/.+?(http:.+?JPEG).+/$1/)'1 wget -i1 perl -pe's{http.+?/([n0-9_.]+JPEG)}{$1}' n900.html
В результате получаем полностью автономный файл n900.html
Задача: создать программу на C, запустить её, увидеть результат. Для начала нужно набрать код программы в файл. Это можно сделать, используя редактор nano. Редактировать файл можно перемещаясь курсором в любое место.
nano one.c #includeint main(void) { printf("Hi.\n"); }
для сохранения результата нажмите Ctrl-O, для выхода из редактора нажмите Ctrl-X.
Если нет возможности запустить nano, то можно водить команды построчно, отправляя их в файл.
cat > one.c #includeint main(void) { printf("Hi.\n"); }
Для окончания ввода строк нажмите Ctrl-Z.
А если нет возможности нажать комбинацию Ctrl-Z? Например на мобильнике. Тогда просто построчно добавляем команды в файл. Правда при этом приходится перед симолами ставить символ '\', чтобы они не рассматривались как команды управления.
echo \#include \> one.c echo int main\(void\) \{ >> one.c echo printf\(\"Hi.\\n\"\)\; >> one.c echo \} >> one.c cat one.c
Последней командой выводим содержимое файла one.c.
Теперь компилируем (переводим в машинные команды).
gcc -o one one.c
Если без ошибок, то не будет никаких сообщений.
Вот и всё. Настало время запустить первую программу. А как?
./one
Hi.
Руководства по командам
http://www.freebsd.org/cgi/man.cgi
Полезные фичи для BASH и не только
http://linux-admin.net.ru/Linux/microhak.htm
...$ declare -i n=10 ...$ n=n+20 ...$ echo $n 30 ...$ n=n/3-2 ...$ echo $n 8
Чтобы не качать все пакеты по-новой при установке на другую машину не подключенную к интернету, можно просто сохранить нужные пакеты с машины, на которую их уже скачивали. Они лежат в папке (если её не почистили):
/var/cache/apt/archives/*.deb
На другой машине достаточно будет их закинуть в ту же папку (хотя и не обязательно). Щёлкнув по пакету .deb мышкой, получим приглашение его установки в систему. Вот и всё :)
Аккаунт перенесли на другой сервер. При этом потеряны атрибуты скриптов (0750 -> 640). Необходимо изменить атрибуты у всех файлов с расширением *.pl на 0750 (исполняемые). Первой командой считаем количество скриптов. Второй командой смотрим названия первых найденных десяти скриптов (для проверки). Третьей командой изменяем атрибуты всем найденным скриптам.
find ~ -name "*.pl"|wc find ~ -name "*.pl"|head find ~ -name "*.pl"|xargs chmod 750
325 325 15791
Внимание! Будьте аккуратны, не удаляйте текущюю версию ядра системы, а также не удалите случайно, пакеты которые вобще не являются ядром системы. В консоли набираем:
1) uname -a (узнаем тикущее ядро) 2) sudo dpkg -l | grep linux-image (список ядер в ситеме) 3) sudo apt-get remove -f linux-image-2.6.32-24-generic (ядро которое хотим удалить) 4) sudo update-grub (обновим список ядер GRUB) 5) dpkg -l | grep linux-headers ( список linux headers) 6) sudo apt-get remove -f linux-headers-2.6.32-24-generic (headers которое хотим удалить)
Очистится по сотне мегабайт с каждого старого ядра системы. Уменьшится загрузочное меню (уберутся старые пункты)
Удалить директорию и все файлы и другие директории в ней
rm -rf ../2011/06/17/in
Каталог in будет удалён
Чтобы скачать сайт целиком с помощью wget нужно выполнить команду.
wget -r -k -l 7 -p -E -nc http://site.ru/
-r — указывает на то, что нужно рекурсивно переходить по ссылкам на сайте, чтобы скачивать страницы. -k — используется для того, чтобы wget преобразовал все ссылки в скаченных файлах таким образом, чтобы по ним можно было переходить на локальном компьютере (в автономном режиме). -p — указывает на то, что нужно загрузить все файлы, которые требуются для отображения страниц (изображения, css и т.д.). -l — определяет максимальную глубину вложенности страниц, которые wget должен скачать (по умолчанию значение равно 5, в примере мы установили 7). В большинстве случаев сайты имеют страницы с большой степенью вложенности и wget может просто «закопаться», скачивая новые страницы. Чтобы этого не произошло можно использовать параметр -l. -E — добавлять к загруженным файлам расширение .html. -nc — при использовании данного параметра существующие файлы не будут перезаписаны. Это удобно, когда нужно продолжить загрузку сайта, прерванную в предыдущий раз. Подробнее: http://it-crazy.ru/stateinik/software/64-linux-wget-skachat-sait
Найти в каталоге temp файлы старее двух часов с расширением tmp и удалить их
find ./temp -mmin +120 -name "*.tmp"|xargs rm
Поиск информации внутри заархивированных log-файлов.
1. перейи в каталог logs;
2. посмотреть список файлов, чтобы выбрать нужный;
3. распаковать в standart output и найти в нём нужный текст.
cd ../../logs ls -al bzip2 -d -c access.log.2012.02.17.bz2|grep "margo-"
91.212.64.1 - - [17/Feb/2012:13:55:56 +0400] "GET /files/video/margo/margo-70_DV_PAL.avi HTTP/1.1" 200 58544036 ... 77.106.212.106 - - [17/Feb/2012:15:44:59 +0400] "GET /files/video/margo/margo-70_DV_PAL.avi HTTP/1.0" 200 58544036 ... # файл был скачан 17-02-2012 два раза в полном объёме, что и требовалось узнать.
Если осталось мало места
sudo apt-get clean
Выключение через заданное количество минут или в указанное время
sudo shutdown -h +m sudo shutdown -h hh:mm.
другие опции: -r - перезагружает систему -h - выключает или включает систему -H - выключает систему -P - включает систему -c - отменяет введенную команду
К примеру, в файле text.txt найти все пустые строчки и заменить их на -----------------, а текст во всех остальных строчках перевести в верхний регистр.
gawk '{if(/^$/){print "-------------------"}else{print toupper($0)}}' text.txt
ШОФЁР УЙДЁТ -------------------- ВОЗВЁЛ ВОЗВЕДЁН ПРИЁМ
Компьютер произносит фразу по окончании длительного процесса.
Для этого может понадобится установить festival.
echo "Parse video compleate" | festival --tts
Будет сказана фраза "Parse video compleate".
Распаковать в этом каталоге все архивы с расширением .bz2
bunzip2 *.bz2
При этом все архивы исчезнут и появятся запакованные в них файлы.
Распаковка всех архивов tar tar.gz tar.xz tar.bz2 bz2 zip Z 7z xz exe rar gz tar tbz2 tgz одной командой. Чтобы каждый раз не вспоминать ключики к архиваторам в Linux для распаковки архивов моожно сделать удобную функцию при помощи которой можно распаковать любой архив единственной командой.
unpack () { if [ -f $1 ] ; then case $1 in *.tar.bz2) tar xvjf $1 ;; *.tar.gz) tar xvzf $1 ;; *.tar.xz) tar xvJf $1 ;; *.bz2) bunzip2 $1 ;; *.rar) unrar x $1 ;; *.gz) gunzip $1 ;; *.tar) tar xvf $1 ;; *.tbz2) tar xvjf $1 ;; *.tgz) tar xvzf $1 ;; *.zip) unzip $1 ;; *.Z) uncompress $1 ;; *.7z) 7z x $1 ;; *.xz) unxz $1 ;; *.exe) cabextract $1 ;; *) echo "\`$1': Unknown method of file compression" ;; esac else echo "\`$1' no foud" fi } # Добавьте этот код в файл .bashrc (домашняя деректорию юзера)
# Для распакоки архивов используйте команду: unpack file
Настройка подключения Beeline VPN в Ubuntu
Меню приложений > Настройки > > Сетевые соединения ---------------------------------- [Проводные] [Беспроводные] [Мобильные] [*VPN*] [DSL] + Добавить Название соединения: Beeline [v] Подключаться автоматически [Параметры IPv4] [*VPN*] Шлюз: tp.internet.beeline.ru Имя пользователя: 089******* Пароль: ****** [Сохранить]
Проводное соединение 1 Соединения VPN > V Beeline
Настройка подключения интернета через телейон МТС в Ubuntu
Подключить телефон по USB На телефоне: Выберите режим USB: PC Suite На компьютере: Меню приложений > Настройки > > Сетевые соединения ---------------------------------- [Проводные] [Беспроводные] [*Мобильные*] [VPN] [DSL] + Добавить Создать соединение через мобильное устройство [Nokia 5530 XpressMusic][V] --> Продолжить Страна и регион Российская Федерация --> Продолжить [o] Выбор оператора из списка MTS --> Продолжить Выберите тарифный план По умолчанию --> Продолжить V Применить
На компьютере: MTS По умолчанию (MTS GSM)
Чтобы восстановить пароль в Ubuntu загрузиться в режиме восстановления системы
# Выбрать второй пункт Ubuntu, with ... generic (recovery mode) # выбираем в меню root root - Drop to root shell prompt # монтируем файловую систему для записи, т.к. она только для чтения mount -rw -o remount / # посмотреть логин cat /etc/passwd # меняем пароль passwd <user> # Выйти exit
# В меню выберать resume normal boot
Отправка файла на FTP. Файл имеет в названии пробелы.
ftpuser='Имя_пользователя' password='API_пароль' ftpserver='ftp.marketplace.envato.com' file='12 1920x1080.zip' ftp -n $ftpserver <<FTP user $ftpuser $password put "/local_dir/$file" "/ftp_dir/$file" bye FTP
Результат проверен на отправке файла в 250 Mb
Если точнее - после правки конфигурации Apache, заставить Apache использовать новую конфигурацию без перезагрузки.
sudo /etc/init.d/apache2 reload
1 сек.
Пошаговая инструкция
# ставим пакет: sudo apt-get install curlftpfs # даём права на папку, куда будем монтировать: sudo chmod 777 ~/ftp # Монтируем: sudo curlftpfs -o allow_other ftp://user:password@server.ru ~/ftp # Размонтируем: sudo umount ~/ftp
С каталогом ~/ftp можно будет работать как с обычными файлами, правда, медленнее с учётом скорости интернет. Копировать, редактировать, удалять файлы.
Надо сохранить в архиве все *.txt файлы со всех подкаталогов
find . -name "*.txt" | xargs tar -zcvf archive.tgz