Команда ls не показывает папку, но я не могу ее создать, потому что папка уже существует

8

Я использую Ubuntu 16.04.

Шаг 1) Я вошел в свою rootучетную запись пользователя.

Шаг 2) Я использовал cdдля перехода в домашний каталог другой учетной записи пользователя.

Шаг 3) Я набрал, lsчтобы проверить содержимое этого каталога.

Шаг 4) Содержимое вернулось пустым.

Шаг 5) Я набрал, mkdir .sshчтобы создать каталог.

Результат) mkdir: cannot create directory '.ssh': File exists

Вопрос: Почему каталог указан как пустой, если внутри него существует папка .ssh?

-- Обновить --

Я вошел в root, потому что это тестовый сервер. Я неоднократно создаю и разрушаю это.

DR01D
источник
использовать llили laнетls
phuclv
1
ll - просто псевдоним, поэтому лучше использовать ls -alF
Деннис Нольте
2
Ваш процесс содержит серьезную ошибку на шаге 1.
Гонки

Ответы:

35

lsсам по себе не показывает скрытые каталоги (скрытые каталоги и файлы начинаются с ., например .ssh)

Попробуйте использовать ls -aв каталоге.

С man-страницы ls:

-a, --all

не игнорируйте записи, начинающиеся с.

Как отмечалось в комментариях, «скрытые» каталоги и файлы технически не являются чем-то особенным , есть просто код, встроенный во множество распространенных инструментов, которые обрабатывают .и ..имеют особое значение, в результате чего .большинство инструментов обычно считают его «скрытым». Причина, по которой я использовал этот термин, заключается в том, что его часто называют так.

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

Патрик
источник
4
Обратите внимание, что «скрытые каталоги» не являются чем-то самим по себе, они скрыты, потому что у ls есть специальный код, который не показывает их, когда они начинаются с точки.
PlasmaHH
2
@PlasmaHH Ну lsи еще куча других инструментов. Но в принципе вы абсолютно правы; с другой стороны, даже в системах, которые прослеживают свою родословную до MS-DOS и его атрибутов файлов, требуется специальный код для обработки «скрытых» файлов (что означает «файлы со скрытым набором атрибутов», а не «файлы, которые назвали в этой конкретной форме ").
CVn
3
@ MichaelKjörling: на многих из этих систем все наоборот. Там вы обычно просите систему «дать мне все», а когда вы хотите отобразить скрытые файлы, вы говорите «дай мне все плюс скрытые вещи» или «дай мне все скрытые вещи». Поэтому он прилагает дополнительные усилия, чтобы скрыть файлы, и прилагает дополнительные усилия для отображения скрытых файлов.
PlasmaHH
12
Забавно, что изобретение скрытых файлов было ошибкой, lsпредполагалось только скрыть, .и ..поэтому они добавили код, чтобы увидеть, начинается ли он с точки
Ferrybig
4
Я обеспокоен тем, что часть «вошел в систему root» сочетается с явным незнакомством с * nixes. Для ОП было бы очень легко случайно уничтожить что-то важное.
Shoover
4

На вашем шаге 3 введите ls -aсписок содержимого каталога.

Файл или каталог, имя которого начинается с, .будет игнорироваться ls.

Брюс
источник
0

.ssh - это скрытый каталог, так как он начинается с .

Чтобы получить список скрытых файлов и каталогов, используйте ls -aвместо просто ls.

Мухаммед Шериф
источник
1
.sshэто не файл, это каталог
Ferrybig
7
Как это может быть больше, чем принятый ответ, полученный за 8 часов, или другой ответ, полученный одновременно с принятым ответом?
Кольт
-2

"" зарезервировано для скрытых папок / файлов. lsпо умолчанию не будут перечислены скрытые файлы и каталоги. («.» и «..» - это две скрытые директории по умолчанию в любой директории). Чтобы просмотреть все файлы в папке, используйте ls -aили ls -al(если вы хотите получить более подробную информацию о каждом файле / папке.

Чинтан Парих
источник
-4

Для создания каталога вам необходимо удалить существующий каталог

Используйте rm -rf .ssh, это удалит каталог

Или, если уже существует, вы можете использовать cd .ssh

Маной Мальвия
источник