повторение базового имени под xargs?

Вопрос о WRT 1:

То, что они (почти наверняка) на самом деле заблокировали, является просто исходящим трафиком на нормальном ssh порте, 22, но (очевидно) они разрешают посещать трафику в нормальном http порте, 80.

Однако ssh сервер не должен использовать порт 22, точно так же, как http серверы не должны использовать порт 80. Это - просто конвенция, которая сохраняет обычных пользователей от необходимости думать о номерах портов. Таким образом, первая вещь, которую необходимо попробовать, состоит в том, чтобы настроить sshd, дома настроенный для использования порта 80 вместо порта 22, который является вопросом добавления:

Port 80

Кому: /etc/ssh/sshd_config.См. также man sshd_config. ssh клиент также использует порт 22 по умолчанию - но можно указать другой с -p переключатель, например, ssh -p 80 .... Обратите внимание, что некоторые из других ssh инструментов (например, scp) (смехотворно достаточно) используют -P вместо -p. Много других инструментов (включая веб-браузеры) позволят Вам указывать порт как порт как часть адреса, например, ssh://me@there:80.

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

Вы могли также использовать порт 443, нормальный https (отметьте' безопасным), порт, так как можно, вероятно, использовать https на работе также (поэтому, это не заблокировано брандмауэром). В то время как большинству номеров портов связали определенные сервисы традиционно с ними, они все функционально идентичны (хотя более низкие числа на *отклоняют, требуют полномочий пользователя root открыться, включая 22, 80, и 443).

6
05.11.2014, 01:16
3 ответа
ls /some/path/*dat | xargs -n 1 -I @ sh -c 'echo `basename "@"`'

Базовое имя выполняется слишком рано в коде.

Если вы не уверены, что в путях нет мест или вкладок, следует использовать -d\\n (или найти... -print0 | xargs -0... ) и обратите внимание на " вокруг @ .

-121--63242-

Это не совсем то, что нужно, но близко. Ярлык Ctrl + x , g ( C-x g в emacsspeak) будет содержать список расширений глобуса. Итак, в вашем примере:

$ cat *.b*<Ctrl><x><g>
abc.bar  cab.bar  

Так, в отличие от того, что вы описываете для tcsh , для этого нужен действительный глобус. Другими словами, это эквивалентно

$ echo *.b*

Обратите внимание, что ярлык нажимает Ctrl и x вместе, затем отпускает их и нажимает g .

Это задокументировано в man bash :

   glob-list-expansions (C-x g)
          The list  of  expansions  that  would  have  been  generated  by
          glob-expand-word  is  displayed,  and the line is redrawn.  If a
          numeric argument is supplied, an  asterisk  is  appended  before
          pathname expansion.
-121--116456-

Тестовый случай можно исправить, просто изменив двойные кавычки на одиночные, но вы можете узнать о GNU parallel .

Можно сделать то же самое следующим образом:

parallel echo {/} ::: /some/path/*dat

(Возможно, в некоторых оболочках потребуется цитировать фигурные скобки)

Кроме более четкого синтаксиса, parallel будет выполнять сразу несколько команд.

Ваш второй пример выглядит следующим образом:

parallel octave --silent --eval "\"somefunction('{/}', '{}', ...)\"" ::: /some/path/*dat

(Вы должны иметь кавычки в кавычках, потому что он оценивается дважды.)

3
27.01.2020, 20:28
ls /some/path/*dat | xargs -n 1 -I @ sh -c 'echo `basename "@"`'

Баснамен выполняется слишком рано в вашем коде.

Если вы не уверены, что нет пробелов или вкладок на путях, то вам следует использовать -D \\ N (или Найти ... -Print0 | Xargs -0 .. ) и разум « вокруг @ .

3
27.01.2020, 20:28
 # find all my perl file names with *.pl or *.pm ext sorted 
 find src/ -name '*.pm' -o -name '*.pl'  \
  | xargs -n 1 -I @ sh -c 'echo `basename "@"`' | sort
0
27.01.2020, 20:28

Теги

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