Поиск в файлах

Вопрос о том, как найти подстроку или строку в файле, поднимается часто и найти на него ответ довольно просто. Так, например, можно искать сторонний код во взломанных файлах:

find . -name "*.*htm*" -exec grep -i "iframe" {} \; -print
find . -name "*.*htm*" -exec grep -i "iframe" '{}' \; -print
find /home -name '*.htm*' -exec grep -H 'fromCharCode' \{\} \;

Так можно удалить из очереди postfix письма с определенным текстом (спам-рассылку, например):

find /var/spool/postfix/deferred/ -name "*" -exec grep -i "SOMESPAM" {} \; |\
awk -F / '{print $7}' | awk '{print $1}' | postsuper -d -

А как найти файлы, в которых определенная строка не встречается?

Можно так:

find . -name "*.html" -print0 | xargs -0 grep -c "string" | grep ":0" | cut -d : -f 1

где “string” – строка, которой в файлах нет.

cut просто отрезает имя файла от количества нулевых вхождений подстроки “string”, если кому-то по душе awk, используйте в пайпе:

awk -F : '{print $1}'

Теги: , , , , , , , , ,

csh in single mode on FreeBSD

Если вы любите оболочку csh и редактор ee (Easy Editor), возможно вы сталкивались со следующей проблемой. При загрузке в однопользовательском режиме (4 – single mode), требуется ввести путь к оболочке, по умолчанию это /bin/sh. Если вы вводите /bin/csh – он ругается на невозможность открыть /etc/termcap. Когда вы пытаетесь редактировать в редакторе ee какой-нибудь файл, текст на консоли выглядит как сплошное месиво.

Красная таблетка

Лечится это очень легко. Достаточно указать правильный тип терминала:

setenv TERM cons25

Все, теперь, даже несмотря на то, что терминал не подхватил настройки и украшательства из файла .cshrc, csh жив и вполне юзабелен.


Теги: , , , , , , , , , , , ,

Цветик-семицветик

Маленькое дополнение к статье о раскраске tcsh.

Если, после настроек цветов, нажать TAB, то файлы и каталоги выведутся раскрашенными, согласно наших настроек, и будут раскрашены определенные типы файлов (по названиям расширений). Но если просто набрать ls, ничего подобного не произойдет. Почему?

Все потому, что tcsh использует цвета из переменной LSCOLORS, а не LS_COLORS. Вместо ls можно использовать ls-F, встроенный в tcsh:

ls-F [-Option(s)] [file ...]
	       This built-in is just like `ls -F', but much faster.


Если ls-F вызывать с параметрами, он передаст их обычному ls:

ls-F passes its arguments to ls if it is given any switches,
so `alias ls ls-F' generally does the right thing.


Итак, добавляем алиас:

alias ls ls-F


и радуемся цветам :)


Теги: , , , , , , ,

Simon says? Cow says!

Говорит и показывает корова

cowsay – бесполезный :) перловый скрипт, который выводит заранее напечатанный текст в виде ASCII-картинки говорящей или думающей коровы. И не только коровы, а любого персонажа из заготовленного набора.

Оригинальная корова:

~> set M="Hello, world\!"
~> cowsay $M
 _______________
< Hello, world! >
 ---------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

Читать остальную часть заметки »


Теги: , , , , , , , , , ,

Настраиваемое приветствие в консоли

Каждый раз, когда вы логинитесь по ssh на сервер или компьютер, вы видите унылое говно одну и ту же картину:

Last login: Mon Aug 17 15:02:25 2009 from ip.com
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California.  All rights reserved.

FreeBSD x.y-RELEASE-pZ (KERNEL) #A: Thu Apr 17 11:21:34 EDT 2008

Welcome to FreeBSD!
For information on the web, visit us at www.pcbsd.org
“man tuning” gives some tips how to tune performance of your FreeBSD system.
— David Scheidt <dscheidt@tumbolia.com>

Т.е., информацию Last login, копирайт, содержимое /etc/motd (версию системы) и какой-нибудь fortune. Скучно? Скучно!

Кастрация Кастомизация

“Проснись, Нео!”

Wake up, Neo!

Читать остальную часть заметки »


Теги: , , , , , , , , , , , , , , , , , , , , , ,

Еще раз о настройках tcsh

Хочу продолжить тему о настройках tcsh. Как можно улучшить уже раскрашенный интерфейс? Правильно, раскрасить его еще больше :)

Рисуем радугу

Добавьте в файл .cshrc следующие строки:

setenv LS_COLORS “no=00:fi=00:di=01;36:ln=01;37;44:pi=40;33:so=01;35″
setenv LS_COLORS “$LS_COLORS”:”bd=40;33;01:cd=40;33;01:or=40;31;01″
setenv LS_COLORS “$LS_COLORS”:”ex=01;32;40:*.tar=01;31:*.tgz=01;31″
setenv LS_COLORS “$LS_COLORS”:”*.arj=01;31:*.taz=01;31:*.lzh=01;31″
setenv LS_COLORS “$LS_COLORS”:”*.zip=01;31:*.z=01;31:*.Z=01;31″
setenv LS_COLORS “$LS_COLORS”:”*.gz=01;31:*.deb=01;31:*.jpg=01;35″
setenv LS_COLORS “$LS_COLORS”:”*.gif=01;35:*.bmp=01;35:*.ppm=01;35″
setenv LS_COLORS “$LS_COLORS”:”*.tga=01;35:*.xbm=01;35:*.xpm=01;35″
setenv LS_COLORS “$LS_COLORS”:”*.tif=01;35:*.mpg=01;37:*.avi=01;37″
setenv LS_COLORS “$LS_COLORS”:”*.gl=01;37:*.dl=01;37:*.tex=01;35″
setenv LS_COLORS “$LS_COLORS”:”*.ps=01;35″
setenv LS_COLORS “$LS_COLORS”:”*.php=01;33″
setenv LS_COLORS “$LS_COLORS”:”*.sh=00;31″
setenv LS_COLORS “$LS_COLORS”:”*.txt=01;37:*.conf=01;37:*.config=01;37″

Переменная LS_COLORS содержит список файлов и их цвета. Вы можете добавить любые другие расширения файлов. Разберем один пример:

Читать остальную часть заметки »


Теги: , , , , , , , , , , , , , , ,

Настройка строки приглашения tcsh

Так исторически сложилось, что мне больше по вкусу tcsh, а не bash. Я не спорю, bash очень мощный и удобный шелл, я пользовался им, когда программировал на Mac OS X, но сейчас часто пользуюсь FreeBSD, а там по умолчанию именно tcsh.

Если вы тоже им пользуетесь, можете попробовать красивые и удобные настройки. Напомню, что прописать их нужно в свой файл настроек – ~/.cshrc .

Читать остальную часть заметки »

Теги: , , , ,