[117025] Как поясняется в комментариях Makefile, в этом Makefile есть две части. Это потому, что он будет прочитан дважды. Сначала при вызове make из командной строки, затем по kbuild.
mysqldump -u user -p databasename > dump.sql
Если [117382]KERNELRELEASE[117383] не определено, то это потому, что файл читается по make. У вас есть Makefile, который вызывает опцию [117384]-C[117385] для изменения каталога на то место, где находится исходный код вашего ядра.
scp dump.sql user@remotehost.ip:
Make затем читает Makefile там (в каталоге исходников ядра). [117386]SUBDIRS[117387] находится там же, где и исходный код вашего модуля. (Думаю, [117388]SUBDIRS[117389] устарел и теперь вместо него используется [117390]M[117391]).
mysql -u user -p databasename < dump.sql
Система сборки ядра будет искать Makefile в каталоге вашего модуля, чтобы узнать, что нужно собрать. [117392]KERNELRELEASE[117393] будет установлен, так что эта часть будет использована :
Больше информации вы найдете в [117394]документации ядра[117395].[117034].
Ваше понимание не совсем верно. В a | b
выход stdout процесса a
соединен через трубу с stdin процесса b
. Проблема с вашим кодом заключается в том, что при дополнительном перенаправлении с somefile
на процесс b
вы будете использовать два разных метода одновременно для подключения к stdin процесса b
. Не делайте этого! Вопрос в том, чего Вы пытаетесь достичь (с такой конструкцией) в первую очередь?
Вы не говорите, какую оболочку вы используете. Судя по поведению, которое Вы описываете, скорее всего zsh
. Если вы посмотрите на его man-страницу, вы заметите, как обрабатываются перенаправления.
Обратите внимание, что труба - это неявное перенаправление; таким образом
cat bar | сортирует
эквивалентно
cat bar foo | sort
(обратите внимание на порядок входов).
В противном случае, регулярное поведение, например, что одно из bash
заключается в том, что каждое перенаправление заменяет предыдущее перенаправление для этого файлового дескриптора.
zsh
man page продолжается:
Если опция MULTIOS не установлена, то каждое перенаправление заменяет предыдущее перенаправление для этого файлового дескриптора. Однако, все файлы переадресованные на фактически открытые, так что
echo foo > bar > baz
когда MULTIOS не установлен, усекает бар и записывает ''foo'' в baz.
because you are taking input of less from somefile.
it works like this
1 -> execute ls , as you have used pipe , it will pipe stdout to stdin of next command : this is what you are telling
2 -> it will look second command.. it is less < somefile
as soon as it sees '<' redirection it will change stdin again to the file... Hence your previous change because of '|' is getting lost.
well, you can say it like this : less have taken input from file , it has nothing to do with ls's output.