LINUX.ORG.RU

что сделал?

 


0

1

привет не подскажите, что я делаю? вот : ls /usr 2> m.txt то есть я перенаправил все ошибки команды ls , которые могли произойте в каталоге usr в файл m.txt ?


Ну да. Только не ошибки, а сообщения о них.

aureliano15 ★★
()

ребята , а каталог любой указывается или только тот , где находится команда?

linuxpc
() автор топика
Ответ на: комментарий от legolegs

а почему любой? ведь все команды линукс живут в каталоге usr, значит и ошибки об команде будут там... ну то есть ls /usr 2> m.txt ошибки о команде ls будут помещены в каталог m.txt наверное я опять что -то намудрил объясните

linuxpc
() автор топика
Ответ на: комментарий от linuxpc

Почитай про относительные пути. Ты создаёшь файл m.txt там, где сейчас находишься (pwd), туда печатаются сообщения об ошибках, которые без перенаправления печатаются в stderr, который по умолчанию объединён в stdout; команда без абсолютного/относительного пути берётся из $PATH, а создаваться файлы где попало не могут, так как прав на запись у пользователя нет, и быть не должно.

r3lgar ★★★★★
()
Ответ на: комментарий от linuxpc

ведь все команды линукс живут в каталоге usr,

Да какая разница, где они живут?! Вот ты принёс болгарку из гаража и стал пилить забор - и что, искры по-твоему в гараже будут сыпаться?

А ещё ты обозвал m.txt каталогом, а это файл (потому что оператор перенаправления в файл «>» работает только с файлами).

Всё очень плохо, глубоко вздохни и изучай всё по-порядку.

legolegs ★★★★★
()
Ответ на: комментарий от r3lgar

ну тогда так что ли? ls 2> m.txt . всегда будет печатать в домашнем каталоге... так будет работать?

linuxpc
() автор топика
Ответ на: комментарий от legolegs

каталог =это файл. а в линуксе все файлы-начит каталоги вы сами меня так учили давайте еще раз.... еще много много раз.......

вобщем можно без всех каталогов? просто хочу перенапраавить все ошибки ls 2> m.txt . пусть будет в домашнем каталоге так может прокатить?

linuxpc
() автор топика
Ответ на: комментарий от legolegs

а я не куда не перехожу.... не делал cd тогда могу обойтись вот этим ls 2> m.txt . домашний, он же текущий будет работать?

linuxpc
() автор топика
Ответ на: комментарий от linuxpc

а я не куда не перехожу.... не делал cd тогда могу обойтись вот этим ls 2> m.txt

Если никуда не переходил, то да. Можно для надёжности

ls 2> ~/m.txt

где «~» - синоним имени домашнего каталога текущего пользователя.

aureliano15 ★★
()
Ответ на: комментарий от aureliano15

ls -l /bin/usr > output.txt 2>&1 ну и где бы я разобрался сам? согласитесь, что не так как то тут получается что ls выводит все содержимое каталога /bin/usr и напраляет это все в файл output.txt а потом от туда делает вывод ошибок и перенапраляет его в ввод. что за ересь? и где будет это все храниться в текущем каталоге?

linuxpc
() автор топика
Ответ на: комментарий от linuxpc

ребята , это в учебнике такое выдали.. я ничего не понял и поэтому написал тут ls -l /bin/usr > ls-output.txt 2>&1 меня это убило

linuxpc
() автор топика
Ответ на: комментарий от linuxpc

убило =это в том смысле, что мой слабый разум этого не осилил

linuxpc
() автор топика
Ответ на: комментарий от linuxpc

это все в файл output.txt а потом от туда делает вывод ошибок и перенапраляет его в ввод

Не так. Перенаправляет stdout (файловый дескриптор 1, единица опущена) в файл output.txt, а stderr (файловый дескриптор 2, двойка показана) перенаправляет, дословно, «тудаже, куда направлен дескриптор 1», а он уже направлен в output.txt

и где будет это все храниться в текущем каталоге?

В файле output.txt.

legolegs ★★★★★
()
Ответ на: комментарий от linuxpc

ls -l /bin/usr > output.txt 2>&1

Эта команда перенаправляет вывод сообщений об ошибках (дескриптор с номером 2) в стандартный вывод (дескриптор с номером 1), а затем этот объединённый вывод перенаправляет в файл output.txt в текущем каталоге, если ты имеешь право писать в этот каталог (в домашний - имеешь право), иначе shell выдаст сообщение об ошибке в вывод ошибок и не запустит ls. Т. к. каталога /bin/usr скорее всего нет, то в output.txt будет сообщение об ошибке. Если вместо /bin/usr поставить /usr/bin, то там будет его содержимое.

aureliano15 ★★
()
Ответ на: комментарий от aureliano15

вообще не понял что хотели сказать в учебнике... 2>&1 <ls-l/usr/bin >output.txt тогда так должно было быть... ну думаю вы меня понимаете или то что я накалякал бред? просто давайте уж до конца добьем этот вопрос

linuxpc
() автор топика
Ответ на: комментарий от linuxpc

2>&1 <ls-l/usr/bin >output.txt

«<» - это перенаправление стандартного ввода (дескриптор 0) из файла на вход команды. Но «2>&1» - не команда, а перенаправление вывода ошибок в обычный вывод. Да и ls - не файл, а команда (т. е., конечно, она тоже лежит на диске в виде файла, но не в текущем каталоге, а где-то в /bin/, да и интересует вывод ls, а не содержимое исполняемого файла /bin/ls).

Поэтому не так, а так:

ls -l /usr/bin 2>&1 1>output.txt

Но т. к. «1>» идентично «>», то можно так:

ls -l /usr/bin 2>&1 >output.txt

Т. е. дескриптору файла с номером 2 мы назначили файл с дескриптором 1, а дескриптору 1 назначили файл output.txt.

aureliano15 ★★
()
19 мая 2018 г.
Ответ на: комментарий от Deleted

Поднять мёртвый тред ради постинга мемасика. Найс рофлишь.

anonymous
()
Ответ на: комментарий от anonymous

а нельзя сразу stderr в файл направить?

Можно.

ls -l /usr/bin 2> errors.txt >output.txt
aureliano15 ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.