Ls не видит файлы
Я принципиально не понимаю проблем, с которыми я сталкиваюсь, но буду обновлять этот пост, когда я это сделаю. Позвольте мне просто показать вам.
Контекст: я добавил диск на свою машину, и по какой-то причине я не могу получить доступ к каталогу (?) в теме.
ls -l
ls -a
CD
потрогать
Mkdir Загрузки
Кошка Загрузки
Загрузки файла
М.В. Загрузки вниз
Кроме того, следующие команды не удаляют файл (?) Как root или иным образом:
Еще одна часть информации, bash, автоматически завершает загрузку, так что bash, похоже, тоже думает, что она там есть.
Показ скрытых файлов в Dolphin
В стандартном файловом менеджере KDE скрытые файлы можно посмотреть отметив флажок показать скрытые файлы в меню управление:
Вот они будут выглядеть немного светлее обычных:
Того же эффекта можно добиться нажав сочетание клавиш Alt+. (Alt + точка) Чтобы вернуть все как было нажмите эти же клавиши еще раз или снимите флажок в меню.
Скрытые файлы в Nautilus
В Nautilus все почти так же. Откройте меню Вид и установите галочку Показать скрытые файлы:
Выглядят они здесь так же как и все, только с точкой в имени:
И здесь тоже есть горячие клавиши Ctrl+H, H означает Hidden, что переводиться как скрытый.
4 ответа 4
ls: cannot access Downloads: No such file or directory total 56 d. ? ? ? ? ? Downloads drwxr-xr-x 26 user 12288 Aug 12 23:29 foo
Это типичный случай наличия только чтения perms на dir и никаких exec perms. А другие выходные данные команды показывают, что у вас нет разрешения на запись. Чтобы понять, почему это происходит, вам нужно знать об inode, dentries и процессе поиска пути в ядре.
D, вы не описали ситуацию вокруг проблемы, но здесь идет,
Сначала каталог появляется в вашем файловом менеджере? Согласно вашему списку
Каталог "существует", но без каких-либо видимых / установленных / назначенных разрешений и не принадлежит ни пользователю, ни группе. Фактически, на первый взгляд доступ для чтения полностью заблокирован. Опять же, опишите ситуацию вокруг этой проблемы, имея в виду, как вы пришли к этому моменту?
В качестве эксперимента загрузите живой дистрибутив и получите доступ к нему таким образом, получите список для загрузок и либо назначьте "стандартные" разрешения для каталога 755, либо удалите каталог. Время от времени у меня возникали "плохие записи" файлов с той же проблемой, и мне приходилось прыгать в живой дистрибутив, чтобы удалить их из моего ежедневного драйвера. Если вы МОЖЕТЕ получить доступ к каталогу загрузок из действующего дистрибутива, то перед удалением каталога восстановите содержащиеся в нем данные "вне мира". Лучше восстановить каталог правильно, как только вы вернетесь в нормальный режим работы.
На сервере БД, в корневом каталоге не работает команда ls. В других каталогах работает, но не в корне. Пробовал и из под рута, результат тот же. Через winSCP так же дисконнектит при попытке выйти в корень, с MC та же песня, с корня не запускается, если запустить с другой директории и попытаться выйти в корень то путти зависает. Может кто сталкивался? Сама БД и приложение при этом работают.
Занятно. Может диск прочекать надо?
в корневом каталоге не работает команда ls.
Что это вообще значит?
Покажи выхлопы оттуда, где работает, и оттуда, где не работает.
Как проявляется это «не работает»?
в корневом каталоге не работает команда ls
попытаться выйти в корень то путти зависает
Какое то противоречие. В корень выйти нельзя, но точно известно, что ls в нём не работает. Магия?
И никаких permission denied нет? Может корень закрыт на просмотр, для всех кроме какой-то группы?
в корень выйти можно с помощью cd. Если использовать команду любую для просмотра каталогов/файлов которые лежат в cd / , то все финита ля комедия.
fslint на корень натравить пытался?
хм, нет, попробую
Вряд ли диск, остальное все окей, все другие каталоги работают, сама БД тоже в порядке.
Какие именно выхлопы нужно показать?
скриншот можно закрепить как нибудь?
Команду набери и покажи, что в терминал высыпалось.
Вряд ли диск, остальное все окей, все другие каталоги работают, сама БД тоже в порядке.
Если проблема только в корне, то всё остальное может действительно работать.
Я изучал командную строку и узнал, что | (конвейер) предназначен для перенаправления вывода команды на ввод другой. Так почему команда ls | file не работает?
file вход является одним из нескольких имен файлов, таких как file filename1 filename2
ls вывод представляет собой список каталогов и файлов в папке, поэтому я подумал ls | file должен был показать тип файла каждого файла в папке.
Когда я использую его, однако, вывод:
Так как произошла ошибка с использованием file команда
Основная проблема заключается в том, что file ожидает имена файлов в качестве аргументов командной строки, а не в stdin. Когда ты пишешь ls | file выход ls передается в качестве входных данных для file , Не в качестве аргументов, а в качестве входных данных.
Аргументы командной строки, когда вы пишете флаги и имена файлов после команды, как в cmd arg1 arg2 arg3 , В сценариях оболочки эти аргументы доступны как переменные $1 , $2 , $3 и т. д. В C вы можете получить к ним доступ через char **argv а также int argc аргументы main() ,
Стандартный ввод, stdin, представляет собой поток данных. Некоторые программы, такие как cat или же wc читать из стандартного ввода, когда им не дают никаких аргументов командной строки. В сценарии оболочки вы можете использовать read чтобы получить одну строку ввода. В C вы можете использовать scanf() или же getchar() среди различных вариантов.
file обычно не читает со стандартного ввода. Ожидается, что в качестве аргумента будет передано хотя бы одно имя файла. Вот почему он печатает использование, когда вы пишете ls | file потому что вы не передали аргумент.
Вы могли бы использовать xargs для преобразования стандартного ввода в аргументы, как в ls | xargs file , Тем не менее, как упоминает Тердон, разбор ls плохая идея Самый прямой способ сделать это просто:
Потому что, как вы говорите, вклад file должно быть имена файлов. Выход из ls Впрочем, это всего лишь текст. То, что это список имен файлов, не меняет того факта, что это просто текст, а не расположение файлов на жестком диске.
Когда вы видите результат печати на экране, вы видите текст. Является ли этот текст стихотворением или списком имен файлов, для компьютера не имеет значения. Все, что он знает, это то, что это текст. Вот почему вы можете передать вывод ls к программам, которые принимают текст в качестве входных данных (хотя вы действительно, действительно не должны):
Итак, чтобы использовать вывод команды, которая перечисляет имена файлов в виде текста (например, ls или же find ) в качестве входных данных для команды, которая принимает имена файлов, вам нужно использовать некоторые приемы. Типичный инструмент для этого xargs :
Как я уже говорил ранее, вы действительно не хотите анализировать вывод ls , Что-то вроде find лучше ( print0 печатает \0 вместо newilne после каждого имени файла и -0 из xargs позволяет ему иметь дело с таким вводом; это трюк, чтобы ваши команды работали с именами файлов, содержащими символы новой строки):
Который также имеет свой собственный способ сделать это, без необходимости xargs совсем:
Наконец, вы также можете использовать цикл оболочки. Тем не менее, обратите внимание, что в большинстве случаев xargs будет намного быстрее и эффективнее. Например:
узнал, что '|' (конвейер) предназначен для перенаправления вывода команды на ввод другой.
Он не "перенаправляет" выходные данные, но принимает выходные данные программы и использует их в качестве входных данных, в то время как файл не принимает входные данные, а имена файлов в качестве аргументов, которые затем проверяются. Перенаправления не передают эти имена файлов в качестве аргументов, как это делает ни конвейер, чем позже вы делаете.
Что вы можете сделать, это прочитать имена файлов из файла с --files-from вариант, если у вас есть файл, в котором перечислены все файлы, которые вы хотите проверить, в противном случае просто укажите пути к вашим файлам в качестве аргументов.
Принятый ответ объясняет, почему команда pipe не работает сразу, и с file * Команда, она предлагает простое, прямое решение.
Я хотел бы предложить другую альтернативу, которая может пригодиться в какое-то время. Хитрость заключается в использовании обратного удара (`) персонаж. Обратный удар объясняется очень подробно здесь. Короче говоря, он принимает выходные данные команды, заключенные в обратные кавычки, и подставляет их в виде строки в оставшуюся команду.
Так, find `ls` будет принимать вывод ls команду, и подставьте ее в качестве аргумента для find команда. Это длиннее и сложнее, чем принятое решение, но варианты этого могут быть полезны в других ситуациях.
Выход из ls через канал проходит сплошной блок данных с 0x0a, отделяющий каждую строку - т.е. символ перевода строки - и file получает это как один параметр, где он ожидает, что несколько символов будут работать по одному за раз.
Как правило, никогда не используйте ls генерировать источник данных для других команд - однажды он будет направлен в rm и тогда ты в беде!
Лучше использовать цикл, такой как for i in *; do file "$i" ; done который будет производить желаемый результат, как и ожидалось. Кавычки есть в случае имен файлов с пробелами.
Если вы хотите использовать трубу для подачи file используйте опцию -f за которым обычно следует имя файла, но вы также можете использовать один дефис - читать со стандартного ввода, так
Трюк с дефисом - работает со многими стандартными утилитами командной строки (хотя это -- иногда), так что всегда стоит попробовать.
Инструмент xarg гораздо более мощный и в большинстве случаев необходим, только если список аргументов слишком длинный (подробности см. в этом посте).
В Linux как и в Windows есть скрытые файлы, правда работают они здесь немного по-другому. В файловых системах Linux нет никакого атрибута скрытности, просто разработчики договорились, что файлы с точкой перед названием будут считаться скрытыми.
Это, как правило, различные файлы настроек, файлы кэша, и временные данные приложений. Как вы поняли, в этой инструкции мы рассмотрим как посмотреть скрытые файлы в Linux, а именно в файловых менеджерах Dolphin и Nautilus а также в терминале.
Просмотр скрытых файлов в терминале
В терминале для просмотра списка файлов в директории используется утилита ls. Передав в ей опцию -a мы увидим все файлы, в том числе скрытые. Например, для домашней папки текущего пользователя:
Чтобы просматривать скрытые файлы было удобнее можно добавить опцию -l:
Теперь вы знаете как включается просмотр скрытых файлов и папок в Linux. Как видите, это очень просто. Намного проще чем в Windows, так как вам не надо заходить ни в какие настройки и можно сделать всё прямо в файловом менеджере. Что примечательно, файловый менеджер запоминает какая настройка выбрана между перезагрузками, поэтому вам не придется менять настройки каждый раз.
Если вы часто используете терминал, то довольно часто возникает необходимость посмотреть содержимое той или иной папки. Автодополнение спасает во многих случаях, но если вы не знаете что искать и не хотите использовать файловый менеджер, то быстро посмотреть что находится в папке может быть очень полезно. Другое применение команды ls - посмотреть разрешения для файлов и папок.
Установка правильных прав и владельца файла имеет очень важное значение для работы различного программного обеспечения, например, того же самого веб-сервера. В этой статье будет рассмотрена команда ls linux, основные ее опции и возможности, а также примеры применения.
Использование ls в Linux
Как вы уже поняли, ls - это сокращение от list, эта команда представляет из себя аналог команды dir для Linux. Самый простой способ использовать команду, запустить ее без параметров и посмотреть содержимое текущей папки:
Чтобы посмотреть список файлов в папке linux для точно заданной папки, вам нужно указать путь к ней. Например, смотрим содержимое корневой папки:
По умолчанию включен цветной вывод, поэтому вы видите столько различных цветов. Например, исполняемые файлы обозначаются салатовым, а ссылки голубым. Теперь посмотрим содержимое домашней папки снова, только на этот раз в виде списка с максимальным количеством информации:
Тут вывод уже разделен на отдельные колонки, в первой колонке указаны права доступа к файлу в формате владелец группа остальные. Следующая колонка - это тип файла или папки, дальше владелец и группа, затем размер, дата создания и последний параметр - имя. Если вы еще хотите знать кто создал файл, можно использовать опцию author:
Колонка создателя будет добавлена после группы. Дальше размер. Он выводится в байтах, килобайтах или еще в чем-то и нам не совсем понятно что там происходит, поэтому добавьте опцию -h чтобы выводить размер в более удобном виде:
Для папок размер выводится не сумой всех размеров всех файлов, а всего лишь то место, которое занимает сама папка, поэтому давайте посмотрим пример с файлами:
ls -l Фото
ls -lh Фото
Если вы хотите видеть скрытые файлы, а в домашней папке их просто море, то используйте опцию -a:
Или смотрим скрытые файлы без ссылок на текущую и родительскую папку:
Теперь нас будет интересовать сортировка. Сначала отсортируем файлы по размеру:
Обратите внимание, что файлы расположены от большего к меньшему. Теперь мы можем включить обратный порядок:
С помощью опции -r мы вывели файлы в обратном порядке. Теперь отсортируем по алфавиту:
Или сортируем по времени последней модификации:
Обратите внимание на колонку времени, действительно, самые новые файлы будут вверху списка. Если вы хотите посмотреть какие метки SELinux присвоены файлу, необходимо использовать опцию -Z:
Но это возможно только в системах, где установлена надстройка SELinux. Если вы хотите рекурсивно вывести содержимое всех папок, используйте опцию -R:
Если же вам нужно список папок и файлов в директории через запятую, что можно использовать -m:
Выводы
Как видите, команда ls linux достаточно сложная, но вам будет достаточно только несколько основных ее функций. А в плане - "Просто посмотреть что делается в папке", эта команда очень проста. Если у вас остались вопросы, спрашивайте в комментариях!
Команда ls linux
Как обычно, в таких статьях сначала нам нужно понять синтаксис команды, чтобы вы знали как правильно ее использовать. На самом деле, синтаксис очень прост, вы набираете саму команду, а после нее путь к папке, содержимое которой хотите посмотреть. Если вы запустите команду без пути, то она выдаст содержимое текущего каталога:
$ ls опции /путь/к/папке
Опции команды указывают как именно и в каком виде нужно выводить информацию на экран, а путь, это та папка, которую нужно отобразить. Рассмотрим основные опции утилиты:
- -a - отображать все файлы, включая скрытые, это те, перед именем которых стоит точка;
- -A - не отображать ссылку на текущую папку и корневую папку . и ..;
- --author - выводить создателя файла в режиме подробного списка;
- -b - выводить Escape последовательности вместо непечатаемых символов;
- --block-size - выводить размер каталога или файла в определенной единице измерения, например, мегабайтах, гигабайтах или килобайтах;
- -B - не выводить резервные копии, их имена начинаются с ~;
- -c - сортировать файлы по времени модификации или создания, сначала будут выведены новые файлы;
- -C - выводить колонками;
- --color - включить цветной режим вывода, автоматически активирована во многих дистрибутивах;
- -d - выводить только директории, без их содержимого, полезно при рекурсивном выводе;
- -D - использовать режим вывода, совместимый с Emacs;
- -f - не сортировать;
- -F - показывать тип объекта, к каждому объекту будет добавлен один из специализированных символов */=>@|;
- --full-time - показывать подробную информацию, плюс вся информация о времени в формате ISO;
- -g - показывать подробную информацию, но кроме владельца файла;
- --group-directories-first - сначала отображать директории, а уже потом файлы;
- -G - не выводить имена групп;
- -h - выводить размеры папок в удобном для чтения формате;
- -H - открывать символические ссылки при рекурсивном использовании;
- --hide - не отображать файлы, которые начинаются с указанного символа;
- -i - отображать номер индекса inode, в которой хранится этот файл;
- -l - выводить подробный список, в котором будет отображаться владелец, группа, дата создания, размер и другие параметры;
- -L - для символических ссылок отображать информацию о файле, на который они ссылаются;
- -m - разделять элементы списка запятой;
- -n - выводить UID и GID вместо имени и группы пользователя;
- -N - выводить имена как есть, не обрабатывать контролирующие последовательности;
- -Q - брать имена папок и файлов в кавычки;
- -r - обратный порядок сортировки;
- -R - рекурсивно отображать содержимое поддиректорий;
- -s - выводить размер файла в блоках;
- -S - сортировать по размеру, сначала большие;
- -t - сортировать по времени последней модификации;
- -u - сортировать по времени последнего доступа;
- -U - не сортировать;
- -X - сортировать по алфавиту;
- -Z - отображать информацию о расширениях SELinux;
- -1 - отображать один файл на одну строку.
Это были все основные параметры команды ls, которые нам может когда-либо понадобиться использовать. Их очень много, но на деле будут нужны только некоторые из них, вы их быстро запомните, а все остальные сможете всегда найти в этой статье или на странице справки man ls. А теперь давайте рассмотрим несколько примеров использования команды ls linux.
Читайте также: