Перенаправьте stdout по ssh

Иногда Вы не хотите разбиение на страницы это less делает и просто хотят полный файл, таким образом, Вы использовали бы cat.

18
05.09.2010, 19:58
3 ответа

Попытка:

ssh host 'something > file'

Вот изобретенная демонстрация способа обработать перенаправление, каналы и кавычки:

ssh host date -d yesterday \| awk "'{print $1}'" \> 'file" "with\ spaces.out'

Вместо канала и перенаправления оставляют того, чтобы содержаться в полном внешнем наборе кавычек, уменьшая потребность выйти из одного уровня кавычек. Одинарные кавычки для команды AWK защищены двойными кавычками, которые окружают их. Имя файла могло быть защищено таким же образом, но здесь я показываю, как одинарные кавычки защищают двойные кавычки и Escape.

10
27.01.2020, 19:46
  • 1
    благодарит - он работает! –  franziskus 05.09.2010, 18:17
  • 2
    Так как ssh передает ту часть своей командной строки к оболочке так или иначе, Вам не нужно sh -c часть. –  Jander 22.01.2011, 07:04
  • 3
    Что, если у Вас уже есть двойные кавычки и одинарные кавычки в Вашей команде? Если бы это не слишком далеко вне темы, я уверен, что другие хотели бы знать как... хорошее решение –  labyrinth 07.05.2014, 20:11
  • 4
    @labyrinth: Я добавил пример для давания Вам некоторое представление. Обратите внимание, что локальная оболочка использует наиболее удаленный набор (наборы) кавычек, и удаленная оболочка использует следующий уровень. Другими словами, например, AWK не видит кавычек в своих аргументах как показано, но его $1 защищен от того, чтобы быть замеченным оболочкой как переменная оболочки. Но это не было бы, если бы порядок кавычек был противоположен. –  Paused until further notice. 07.05.2014, 20:51

Еще более простой, вместо:

ssh host something > file

сделайте:

ssh host "something > file"
11
27.01.2020, 19:46

Предложенное решение работает с каналами также

ssh host 'some_command | some_other_command'
3
27.01.2020, 19:46

Теги

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