zamotivator
13.08.2011 16:18 tsarevC5F77F43
Из области странного: вот есть у меня bash.
Запускаю команду вида command 2>&1 1>log — и он всё равно пишет stderr на консоль.
Если делаю | less — то всё нормально, в less попадаёт всё — и stdout, и stderr.
Чего именно в bash я не понимаю? Объясните идиоту.
2>&1 > log
а почему 1>log не работает? Если я делаю 1>log 2>err — всё ок, а тут засада. я логики не понимаю.
баш — он такой, да
а какова логика-то?
хз
Ты — хуй и не раскурил порядок применения перенаправлений. Поменяй местами.
гм, т.е. 2 связывается не с 1, а с консолью (на которую 1 смотрит в данный момент времени)? Т.е. 1 — это типа симлинк, а не хард-линк как я думал?
http://white-knight-is-alive.blogspot.co...
Note that the order of redirections is significant. For example, the command
ls > dirlist 2>&1
directs both standard output and standard error to the file dirlist, while the command
ls 2>&1 > dirlist
directs only the standard output to file dirlist, because the standard error was duplicated from the
standard output before the standard output was redirected to dirlist.
-- man bash. Ты точно хуй, если не прочитал это.
да, я не читал man bash. Как-то без нужды оно было. То тоже хуй, большинство линуксоидов хуи. Исключение — моя девушка, она хоть и линуксоид, но не хуй, а пизда.
Спасибо за высокодуховную дискуссию.
Вот хуй-то а, не прочитал документацию, а сразу лезет задавать свои смешные вопросы ИЗ ОБЛАСТИ СТРАННОГО. Гнать таких сцаными тряпками надобно.
Какбе там всё предельно примитивно: 2>&1 делает "close(2);dup2(1,2)", а 1>log делает "close(1);dup2(open("log"),1). Куда какой дескриптор будет указывать после вызовов в такой последовательности, думаю, понятно. А всякой alien logic с "хардлинками-симлинками"(sic!) там нету, да и не нужно.