Заставить grep не выводить результаты только используя touch

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

sayon
Сообщения: 5
ОС: ubuntu+opensolaris+win7

Заставить grep не выводить результаты только используя touch

Сообщение sayon »

Добрый день ))
Есть задача, а именно следующая
Существует файл с кучей текста, назовём его file1, выполняю команду grep [Ww]ord file1
Греп выводит мне результаты, всё правильно.
Кавычек, ограничивающих регулярное выражение, нет.
Теперь я запускаю утилиту touch с какими-то параметрами, после чего вышеупомянутая команда grep перестаёт выводить результаты. После запуска утилита не выводит сообщений об ошибке, просто работает будто совпадений не нашла.
По условиям игры также:
- Переменные окружения не изменяются
- Содержимое file1 тоже


Вот вся информация, которой располагаю на данный момент. ОС Solaris 8. Кто-то знает какие параметры надо задать touch? :)
man прочитан, гугл заюзан, фейл налицо.

Спасибо, кто откликнется

ЗЫ если есть вопрос "а зачем?", это задание в универе такое дали -.-
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Заставить grep не выводить результаты только используя touch

Сообщение diesel »

лучше показать пример того что вы пишите, и что получается, и когда правильно, и когда не очень.
Спасибо сказали:
sayon
Сообщения: 5
ОС: ubuntu+opensolaris+win7

Re: Заставить grep не выводить результаты только используя touch

Сообщение sayon »

содержимое file1

Код: Выделить всё

abcd
efgh
asd lincoln
askjh  Lincoln
sasd lincoln askdjh
askdjh


$grep [Ll]incoln file1
asd lincoln
askjh Lincoln
sasd lincoln askdjh
$touch $params
$grep [Ll]incoln file1
$


Вот примерно это было на терминале. После выполнения touch с параметрами, находящимися так, чтобы я не мог их видеть (в переменной), grep перестал выводить строки из файла, хотя файл никуда не делся и содержимое, по условиям игры, не изменялось.

Также забыл добавить, что, образно говоря, выведя греп из строя утилитой тач этой же утилитой ( с другими параметрами) его можно "вернуть" к нормальной работе. С этим регулярным выражением без кавычек.
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Заставить grep не выводить результаты только используя touch

Сообщение SLEDopit »

а про эту переменную params сказано, что там обязательно содержатся исключительно параметры к touch или что-нибудь еще можно засунуть в нее?)
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
sayon
Сообщения: 5
ОС: ubuntu+opensolaris+win7

Re: Заставить grep не выводить результаты только используя touch

Сообщение sayon »

скорее всего только параметры к touch, но вариант подставы с дополнительными командами не исключён, хотя и маловероятен. Вроде бы речь шла только о touch :)
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Заставить grep не выводить результаты только используя touch

Сообщение SLEDopit »

sayon писал(а):
25.11.2009 01:17
Вроде бы речь шла только о touch
по моему скромному мнению, утилита, отвечающая _исключительно_ за управление временными штампами файла, ну никак не может влиять на результат отрабатывания grep.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Заставить grep не выводить результаты только используя touch

Сообщение diesel »

sayon писал(а):
25.11.2009 01:17
скорее всего только параметры к touch, но вариант подставы с дополнительными командами не исключён, хотя и маловероятен. Вроде бы речь шла только о touch :)

это с универа вопрос, а в связи с чем он возник?
да, еще, случайно не знаете shell какой был? csh, ksh, bash?

iУведомление от модератора diesel

переношу в "Работа в командной строке", вопрос ИМХО забавный
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Заставить grep не выводить результаты только используя touch

Сообщение sash-kan »

удовлетворяет всем условиям:

Shell

# подготовка к фокусу. сначала — те самые секретные параметры для touch $ params=. $ paramsrevert=file1 # затем чуть-чуть магии. переменные окружения не затрагиваются! $ alias grep='[ . -nt file1 ] && : || /bin/grep' # теперь к терминалу приглашён подопытный кролик. он выполняет: $ grep [Ll]incoln file1 asd lincoln askjh Lincoln sasd lincoln askdjh $ # теперь фокусник делает первый пасс: $ touch $params $ # команда заткнулась! мистика! $ grep [Ll]incoln file1 $ # второй пасс: $ touch $paramsrevert $ # о боже! команда опять выводит всё как надо! шайтан-арба! $ grep [Ll]incoln file1 asd lincoln askjh Lincoln sasd lincoln askdjh $
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
sayon
Сообщения: 5
ОС: ubuntu+opensolaris+win7

Re: Заставить grep не выводить результаты только используя touch

Сообщение sayon »

Ох спасибо, про возможность такой проверки -nt я не подумал. Хотя алиасов мне обещано было тоже не делать...
это с универа вопрос, а в связи с чем он возник?
да, еще, случайно не знаете shell какой был? csh, ksh, bash?


Оболочка ksh.
В связи с регулярными выражениями, как ни странно. Предмет называется системное программное обеспечение, там всё возможно :D

Если это реализовалось другим способом,я его запощу в пятницу.
Спасибо сказали:
sayon
Сообщения: 5
ОС: ubuntu+opensolaris+win7

Re: Заставить grep не выводить результаты только используя touch

Сообщение sayon »

А теперь как оно было.

Моя вина, я не совсем правильно здесь указал содержимое datebook a, там были только Lincoln с заглавной буквы.

Команда touch lincoln создает файл lincoln. А теперь - тадам
grep [Ll]incoln datebook сначало проходит через шелл, который, зная немного про регулярные выражения и видя наличие файла lincoln в нашем каталоге недолго думая подставляет вместо [Ll]incoln lincoln и греп ищет слово lincoln в файле datebook. Естественно ничего не находит ))
Правда, чтобы вернуть всё команды touch, видимо, недостаточно. Спасибо за помощь еще раз :)
Спасибо сказали: