Этот тип туннеля не изменяет Вашу информацию о IP-адресе. Все, что это делает, говорят Вашему компьютеру открывать порт 9999, и вперед соединения с тем портом к удаленной машине (tim@server) через Ваше соединение SSH. Самый легкий способ протестировать это, на которое возросло соединение, к telnet к порту, вперед был создан на (в Вашем примере 9999):
$ telnet localhost 9999
Попытка сервера...
Подключенный к серверу.
Символ ESC является '^]'.
Если Вы получаете "Связанный с сервером". сообщение, которое означает Ваш туннель, произошло. Если, вместо этого Вы добираетесь: "Невозможно подключиться к удаленным хостом: Соединение, которому отказывают" Ваш туннель, не.
Относительно Вашего второго вопроса, для Вашего браузера, Ваш браузер не будет использовать туннель, если Вы не скажете его. В параметрах сети браузеров можно настроить настройки прокси и указать localhost:9999 как прокси socks5, и затем веб-подключения должны использовать ssh, туннелируют и, кажется, прибывают из IP-адреса сервера.
Для ответа на более общий вопрос это - задание xargs
взять список слов на стандартном входе и преобразовать его в список аргументов команде.
Однако xargs
ожидает список как пространство, вкладку и новую строку (и возможно более символы пробела в зависимости от локали и xargs реализации) разделенный список слов, где одинарные кавычки, двойные кавычки и обратная косая черта используются для выхода из тех разделителей (с переменными поведениями относительно вложения поведений различными реализациями xargs).
Если вход является завершенным новой строкой списком, канонический способ преобразовать, он к формату, ожидаемому xargs, должен выйти из каждого символа (хотя только, обратная косая черта, одинарная кавычка, двойная кавычка, подчеркивание (потенциально), пространство и вкладка (и возможно другие пробелы, если не в локали C) необходима), но новая строка с символом обратной косой черты, с которым мы можем сделать sed
.
mpc | head -n 1 | sed 's/./\\&/g' | xargs rm --
Обратите внимание что некоторые xargs
реализации имеют довольно низкий предел на максимальную длину строки, которую они ожидают на stdin, таким образом, можно будет захотеть только выйти из необходимых символов с теми.
С GNU xargs
по крайней мере, Вы не должны делать этого, можно сделать:
mpc | head -n 1 | xargs -rd '\n' rm --
(также использование GNU определенная-r опция постараться не выполнять любую команду, если вход пуст).
Можно сделать это с rm -i "/path/to/music/library/$(mpc -f %file% | head -n 1)"
. Однако предупредите, что это повредится, если имя файла будет содержать новую строку. Как вывод mpc -f %file%
относительно Вашего музыкального пути к библиотеке, необходимо предварительно ожидать его к выводу.
mpc -f %file%
. Кроме того, пути mpc
выводы относительно музыкального каталога, который Вы настроили его для поиска, таким образом, необходимо включить тот путь. Например, rm -i "/var/lib/mpd/music/$(mpc -f %file% | head -n 1)"
– Michael Mrozek♦
17.11.2012, 18:43
Если Вы не можете произвести ЗАВЕРШЕННЫЕ ПУСТЫМ УКАЗАТЕЛЕМ имена файлов (как, например. find -print0
) можно попытаться заключить имена файлов в кавычки путем передачи по каналу его через sed 's/^/"/;s/$/"/'
, который добавляет кавычки вначале и конец строки. Отметьте однако, это в этом случае Вы должны иметь:
Преимущество, что можно в значительной степени произвольно преобразовать вывод (например, когда Вы решаете не переименовать, а не удалить или когда необходимо лишить части вывода).
Если безопасно предположить, что у Вас нет файлов с двойными кавычками или новыми строками, можно сделать:
mpc | head -n 1 | sed 's/^/"/g ; s/$/"/g' | xargs rm --
sed добавляет кавычки вокруг Вашего имени файла, и xargs поворачивает вход, который это получает к аргументам в пользу команды, которую это выполняет (в этом случае, команда комнаты).
Лично я считаю, что xargs - это весело и все такое, но я предпочитаю циклы для такого рода вещей. Почему? Что ж, это дает вам больше гибкости ... а также дает вам довольно простой способ обрабатывать пробелы:
mpc | head -n 1 | while read filename
do
ls -al "$filename" # Look at the file you're deleting
rm -i "$filename" # Ask if you want it deleted (or not)
done
Когда вы используете такой цикл while, ваши данные перекачиваются в любое имя переменной, которое появляется после "read"; чтобы ссылаться на переменную, вам понадобится ведущий знак доллара. Кавычки нужны для изящной обработки пробелов, поэтому они не похожи на разделители. Подобные петли, хотя и менее элегантны, чем простой однострочный, предлагают вам большую гибкость и безумно удобны в долгосрочной перспективе.
sed
: это преобразовывает "вход как это" в "\i\n\p\u\t\\l\i\k\e\\t\h\i\s". Это не обработает новые строки, но правильно выйдет из пробелов и кавычек. Обратите внимание также, что это не решит проблему тегов @ChrisDown, описывает в его ответе. – dubiousjim 17.11.2012, 18:41