Как загнать вывод программы, которая постоянно гонит вывод на
консоль, в файл. Просто $>progname > exec_log не выходит - получаю
весь вывод на консоли плюс файл exec_log длиной 0. Мне надо заставить
программу сливать в лог весь вывод - ошибки, что она там выдает в процессе
выполнения.И еще - как в шелловом скрипте проверить наличие нескольких файлов???
>Как загнать вывод программы, которая постоянно гонит вывод на
>консоль, в файл. Просто $>progname > exec_log не выходит - получаю
>весь вывод на консоли плюс файл exec_log длиной 0. Мне надо заставить
>что просил, то и получил.
$>progname >> exec_log 2>&1
>программу сливать в лог весь вывод - ошибки, что она там выдает
>в процессе
>выполнения.
>
>И еще - как в шелловом скрипте проверить наличие нескольких файлов???для bash
CONDITIONAL EXPRESSIONS
Conditional expressions are used by the [[ compound command and the
test and [ builtin commands to test file attributes and perform string
and arithmetic comparisons. Expressions are formed from the following
unary or binary primaries. If any file argument to one of the pri-
maries is of the form /dev/fd/n, then file descriptor n is checked. If
the file argument to one of the primaries is one of /dev/stdin,
/dev/stdout, or /dev/stderr, file descriptor 0, 1, or 2, respectively,
is checked.-a file
True if file exists.
-b file
True if file exists and is a block special file.
-c file
True if file exists and is a character special file.
-d file
True if file exists and is a directory.
-e file
True if file exists.
-f file
True if file exists and is a regular file.
-g file
True if file exists and is set-group-id.
-h file
True if file exists and is a symbolic link.
-k file
True if file exists and its ``sticky'' bit is set.
-p file
True if file exists and is a named pipe (FIFO).
-r file
True if file exists and is readable.
-s file
True if file exists and has a size greater than zero.
-t fd True if file descriptor fd is open and refers to a terminal.
-u file
True if file exists and its set-user-id bit is set.
-w file
True if file exists and is writable.
-x file True if file exists and is executable.
-O file
True if file exists and is owned by the effective user id.
-G file
True if file exists and is owned by the effective group id.
-L file
True if file exists and is a symbolic link.
-S file
True if file exists and is a socket.
-N file
True if file exists and has been modified since it was last
read.
file1 -nt file2
True if file1 is newer (according to modification date) than
file2, or if file1 exists and file2 does not.
file1 -ot file2
True if file1 is older than file2, or if file2 exists and file1
does not.
file1 -ef file2
True if file1 and file2 refer to the same device and inode num-
bers.
>>Как загнать вывод программы, которая постоянно гонит вывод на
>>консоль, в файл. Просто $>progname > exec_log не выходит - получаю
>>весь вывод на консоли плюс файл exec_log длиной 0. Мне надо заставить
>что просил, то и получил.
>$>progname >> exec_log 2>&1Угу. А где найти теоретическое обьяснение по этому поводу ???
>>>Как загнать вывод программы, которая постоянно гонит вывод на
>>>консоль, в файл. Просто $>progname > exec_log не выходит - получаю
>>>весь вывод на консоли плюс файл exec_log длиной 0. Мне надо заставить
>>что просил, то и получил.
>>$>progname >> exec_log 2>&1
>
>Угу. А где найти теоретическое обьяснение по этому поводу ???"progname> exec_log" - перенаправляет стандартный поток вывода команды (то что у тебя обычно попадает на консоль) в файл exec_log. если такого файла нет, то он создается
"progname>> exec_log" - выполняет аналогичное действие, но если файл существует, то информация дописывается в его конец
"2>&1" - перенаправляет стандартный поток ошибок (2) в стандартный поток вывода (1). а поскольку к этому моменту стандартный вывод у тебя уже перенаправлен в файл, то все сообщения об ошибках посыпятся туда же (иначе бы вылезли на консоль). 1 подразумевается по умолчанию, поэтому "progname>> exec_log" эквивалентно "progname 1>> exec_log"
ищи информацию по операциям перенаправления ввода/вывода
>
>ищи информацию по операциям перенаправления ввода/выводаобычно все это есть в man по командной оболочке, которой ты пользуешься
>>
>>ищи информацию по операциям перенаправления ввода/вывода
>
>обычно все это есть в man по командной оболочке, которой ты пользуешься
>попробуй еще так:
#progname | cat > logfile
>>>
>>>ищи информацию по операциям перенаправления ввода/вывода
>>
>>обычно все это есть в man по командной оболочке, которой ты пользуешься
>>
>
>попробуй еще так:
>#progname | cat > logfile
[syslha@localhost syslha]$ cd ~/temp
[syslha@localhost temp]$ echo "test">111
[syslha@localhost temp]$ cat ./111
test
[syslha@localhost temp]$ cat ./111|cat > ./result
[syslha@localhost temp]$ cat ./result
test
[syslha@localhost temp]$ cat ./xxx|cat > ./result
cat: ./xxx: No such file or directory
[syslha@localhost temp]$ cat ./result
[syslha@localhost temp]$Вам тот же диагноз - man по шелу