Я сказал бы Ваш "sudo ss" выставочное соединение, связанное с пользователем sshd, между тем "netstat - сетью" — Вашему собственному пользователю. Вот почему версия netstat не требует, чтобы sudo узнал детали относительно сокета.
Можно использовать ss -e
получить UID также.
Отказ от ответственности: Этот ответ соглашения с Bash конкретно, но большой частью его относится к вопросу относительно шаблонов шарика!
Звездообразный символ (*
) подстановочный знак. Существует определенный набор символов, что он займет место и первый символ, являющийся точкой (.
) не один из них. Это - особый случай только из-за того, как файловые системы Unix работают, файлы, которые запускаются с точки, считают "скрытыми". Это означает это инструменты такой как cp
, ls
, и т.д. не будет "видеть" их, если явно не сказали, чтобы сделать так.
Сначала давайте создадим некоторые демонстрационные данные.
$ mkdir .dotdir{1,2} regdir{1,2}
$ touch .dotfile{1,2} regfile{1..3}
Таким образом, теперь у нас есть следующее:
$ tree -a
.
|-- .dotdir1
|-- .dotdir2
|-- .dotfile1
|-- .dotfile2
|-- regdir1
|-- regdir2
|-- regfile1
|-- regfile2
`-- regfile3
Теперь давайте играть в некоторые игры. Можно использовать команду echo
перечислять что конкретный подстановочный знак (*
) был бы для данной команды как так:
$ echo *
regdir1 regdir2 regfile1 regfile2 regfile3
$ echo reg*
regdir1 regdir2 regfile1 regfile2 regfile3
$ echo .*
. .. .dotdir1 .dotdir2 .dotfile1 .dotfile2
$ echo .* *
. .. .dotdir1 .dotdir2 .dotfile1 .dotfile2 regdir1 regdir2 regfile1 regfile2 regfile3
$ echo .dotdir*
.dotdir1 .dotdir2
Можно использовать команду shopt -s dotglob
изменить поведение *
так, чтобы в дополнение к файлам как regfile1
это будет также соответствовать .dotfile1
.
выборка от bash
страница справочника
dotglob If set, bash includes filenames beginning with a `.' in the results
of pathname expansion.
Пример:
$ shopt -s dotglob
$ echo *
.dotdir1 .dotdir2 .dotfile1 .dotfile2 regdir1 regdir2 regfile1 regfile2 regfile3
Можно вернуться это поведение с этой командой:
$ shopt -u dotglob
$ echo *
regdir1 regdir2 regfile1 regfile2 regfile3
Для Вас Вы говорите cp
то, что Вы хотите скопировать все файлы, которые соответствуют шаблону *
, и нет никаких файлов.
$ cp foo/.* .
Или можно сделать это, если Вы хотите все в foo
папка:
$ cp foo .
Или можно быть явными:
$ cp foot/.* foo/* .
Более компактная форма с помощью расширения фигурной скобки в bash
:
$ cp foo/{.,}* .
В любое время можно использовать echo
прием для наблюдения, что предложенные шаблоны файла (это - необычный термин для того, что звезда является частью).
$ echo {.,}*
. .. .dotdir1 .dotdir2 .dotfile1 .dotfile2 abc regdir1 regdir2 regfile1 regfile2 regfile3
Случайно, если Вы собираетесь скопировать каталог файлов + другие каталоги, Вы обычно хотите сделать это рекурсивно, это -R
переключатель к cp
:
$ cp -R foo/. .
С zsh
, типичный путь состоит в том, чтобы использовать D
спецификатор шарика (для включения [D]ot файлов):
cp foo/*(D) .
Отметьте это с или без D
, шарики zsh никогда не включают .
ни ..
(как Вы ожидали бы).
Оболочка рассматривает те файлы, как скрытый, когда она решает *
символ, таким образом, cp
не получает ни одних из этих имен файлов как аргументы.
Можно скопировать их путем явного определения cp foo/.* .
Если то, что Вы желаете сделать, скопировать все файлы и каталоги от одного места до другого, Вы могли использовать стандарт rsync
команда. В примере Вы даете выше:
mkdir foo && touch foo/.test
rsync -a foo/ .
рекурсивно скопирует все содержание foo
, включая скрытые файлы и скрытые каталоги, в текущий каталог. Запаздывающая наклонная черта в конце foo/
важно для rsync; с ним только содержание foo
копируются, без него, rsync скопирует foo
также. Например:-
mkdir src && mkdir dest && touch src/.test
rsync -a src dest // copies 'src' contents to 'dest/src'
rsync -a src/ dest // copies 'src' contents to 'dest'
Существует много других опций доступная тонкая настройка rsync, включая копирование между машинами.
shopt -s dotglob
,echo *
затем дает:.dotdir1 .dotdir2 .dotfile1 .dotfile2 regdir1 regdir2 regfile1 regfile2 regfile3
– Drav Sloan 07.09.2013, 12:32cp -r foo .
не будет обычно работать с тех порcp
откажется копироватьfoo
по себе Вы, вероятно, имели в видуcp -R foo/. .
. (отметьте этоcp -R
стандартный). – Stéphane Chazelas 07.09.2013, 18:00zsh
не включает.
и..
в расширении.*
. Вzsh
, если шаблон не соответствует, команда прерывается (вполне разумно снова), таким образом, в общем случае,cp foo/{,.}* .
перестанет работать, если там будет не скрытым или никакие нескрытые файлы. – Stéphane Chazelas 07.09.2013, 18:04shopt
не существует. – Gilles 'SO- stop being evil' 08.09.2013, 00:56