вывод в файл, затем используйте файл для входа

Можно установить переменную LC_ALL на английскую локаль. Вот пример:

export LC_ALL=en_US.UTF-8

Локаль должна присутствовать на машине. Если это не, Вы можете нейтрализация к POSIX C локаль:

export LC_ALL=C

Спецификация POSIX описывает, как переменные локали должны работать.

7
21.11.2014, 00:49
4 ответа

Насколько я знаю, , cmd1 | кладут для первого удара verylong.txt |, cmd2 не будет содержать целый файл в памяти. На самом деле, если бы cmd2 должен был ожидать слишком долго прежде, чем использовать его вход, , то cmd1 мог бы заблокироваться на запись вызов и разблокировать только, когда cmd2 начинает читать снова.

причина этого состоит в том, что существует буфер для канала, и что буфер, по умолчанию, ограничен определенным разумным размером .

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

15
27.01.2020, 20:15

существует умный прием с мишенью и подоболочками:

cat source.lst | tee >(doSomething.sh) >(somethingElse.sh) | somethingFinal.sh

я сделал это прежде

pv -perl source.list | tee >(doSomething.sh) >(somethingElse.sh) | md5sum

, объем плазмы даст вам индикатор выполнения, ETA и рабочее общее количество строки. Затем source.lst будет питаться на doSomething.sh и somethingElse.sh (и на различных центральных процессорах!) Наконец мы получим md5sum этого hugefile, только в академических целях.

0
27.01.2020, 20:15

Что не так с простым двухстрочным пакетным файлом? Например:

Cmd1 >filespec
Cmd2 <filespec

или

cmd1 >filespec
cmd2 filespec

в любом случае, файл остается в массовом хранилище.

-5
27.01.2020, 20:15

Странный выстрел в темноте, но убедитесь, что IP-адрес не изменился. У меня была эта проблема один раз - я установил .bashrc псевдоним sshdev = 'ssh me @ 123,2,3 .4' в качестве моего типичного способа входа в систему, и однажды я начал получать следующую ошибку:

ME-M-216C:~ me$ sshdev 
ssh: connect to host 123.2.3.4 port 22: Connection refused

У нас просто было отключение питания на работе, которое сбрасывало IP, поэтому я успешно связывался с IP, но это не было Вы можете использовать nslookup < IP > , чтобы убедиться, что это правильное имя компьютера, в котором вы пытаетесь ssh .

-121--22590-

Подключение к машине в качестве пользователя root является крайне обескураженной практикой, поскольку она скрывает, кто на самом деле подключается.

Например: Если вы посмотрите на файлы журнала ssh, то увидите подключения только от одного пользователя, что очень затрудняет поиск вредоносных подключений.
Вы теряете возможность задавать/отвечать на вопросы, такие как "Почему Боб подключился к серверу в 3:30 утром? "

Если это тестовая машина, или вы готовы принять эти риски, то раскомментируйте следующую строку в /etc/ssh/sshd _ config

PermitRootLogin yes

Затем перезапустите ssh daemon

service sshd restart

Немного менее рискованная альтернатива была бы настройка ssh keypairs (поэтому вам не нужно вводить пароль при каждом подключении). А также настройте пользователя так, чтобы он не запрашивал пароль root каждый раз, когда вы судо.

-121--125757-

Уже заданный ответ верен. Но если вы хотите выборочно прочитать verylongfile.txt w/ cmd2 , sed может быть другим вариантом.

cmd1 | sed -e 'w verylongfile.txt' -e '/notinteresting/d' | cmd2

sed будет w перечислять все свои входные данные в файл комплекта, но только те биты, которые не соответствуют адресу /notintresting/ канала. Или можно отменить действие с помощью команды /интересный/! d , которая будет записывать в канал только строки, соответствующие интересному адресу.

Если это не ваша цель, используйте tee вместо этого, хотя - это более эффективный инструмент для написания всего своего ввода как в снаряжение, так и в трубу.

6
27.01.2020, 20:15

Теги

Похожие вопросы