Dir — описание команды и примеры использования
Содержание:
- Безопасное удаление директории
- КомментарииRemarks
- Как вывести содержимое файла в консоль?
- СинтаксисSyntax
- Берём порядок под контроль
- COLOPHON top
- В чём состоит задача?
- Подстановки
- Примеры команд Dir
- Последовательность символов внутри строки
- Основные команды командной строки
- Шаг 20 — Чтение содержимого директорий diropen, readdir, closedir
- How to change the drive in Command Prompt (CMD)
- Режим повторителя
Безопасное удаление директории
Безопасно удалить пустую директорию можно с помощью команды rmdir. После имени команды через пробел нужно указать имена создаваемых директорий (для создания в рабочей директории) или пути к ним. Возможно использовать подстановки.
Под безопасным удалением я имею ввиду удаление лишь только в том случае, если директория пустая. Когда директория содержит файлы или директории, команда rmdir её не удалит. Поэтому нет необходимости предварительно проверять содержание. В обычной жизни, выбрасывая ящик, по ошибке можно выбросить и его содержимое, если заранее не убедиться, что он пуст. Команда rmdir гарантированно позволяет избежать таких последствий.
Настало время выбросить что-то ненужное. Попробуем избавиться от директории dir1.
1 |
$ ls dir2 dir3 dir4 dir5 photo $ |
Как видно, директории dir1 больше нет. Теперь попробуем таким же способом стереть директорию photo.
1 |
$ rmdir photo rmdir: failed to remove ‘photo’: Directory not empty $ |
Не получилось Мы получили сообщение об ошибке выполнения операции. В нем говорится, что наша директория photo не пустая. Если мы помним, в ней у нас есть две директории 2010 и 2014.
А вот директории dir2, dir3, dir4 и dir5 у нас пустые и нам больше не нужны. Попробуем их удалить. Можно удалять по одной или сразу перечислить их мена через пробел. Но есть кое-что проще — подстановки шаблонов имени. Если присмотреться внимательнее к именам директорий dir2, dir3, dir4 и dir5, то можно заменить, все они начинаются «dir». Как мы уже видели при помощи команды ls ранее, других файлов и директорий с именами, начинающимися с «dir» нет. Поэтому нам подойдет шаблон «dir*», выборка по которому затронет только директории dir2, dir3, dir4 и dir5. А использую команду rmdir мы можем не беспокоится о последствиях. Ведь она проверяет, чтобы удаляемый объект был обязательно директорией и обязательно пустой. Команда rmdir не позволит нам удалить какую-либо информацию. Удалим директории dir2, dir3, dir4 и dir5.
1 |
$ ls photo $ |
Отлично, теперь мы умеем безопасно удалять пустые директории
КомментарииRemarks
Функция _mkdir создает новый каталог с указанным dirname.The _mkdir function creates a new directory with the specified dirname. _mkdir может создать только один новый каталог для каждого вызова, поэтому только последний компонент dirname может называть новый каталог._mkdir can create only one new directory per call, so only the last component of dirname can name a new directory. _mkdir не преобразует разделители пути._mkdir does not translate path delimiters. В Windows NT оба символа, обратная косая черта (\) и косая черта (/), являются допустимыми разделителями пути в строках символов в подпрограммах времени выполнения.In Windows NT, both the backslash ( \) and the forward slash (/ ) are valid path delimiters in character strings in run-time routines.
_wmkdir — это версия _mkdir для расширенных символов; Аргумент dirname для _wmkdir является строкой расширенных символов._wmkdir is a wide-character version of _mkdir; the dirname argument to _wmkdir is a wide-character string. в противном случае _wmkdir и _mkdir ведут себя одинаково._wmkdir and _mkdir behave identically otherwise.
По умолчанию глобальное состояние этой функции ограничивается приложением.By default, this function’s global state is scoped to the application. Чтобы изменить это, см. раздел глобальное состояние в CRT.To change this, see Global state in the CRT.
Универсальное текстовое сопоставление функцийGeneric-Text Routine Mappings
Процедура Tchar.hTchar.h routine | _UNICODE и _MBCS не определены_UNICODE and _MBCS not defined | _MBCS определено_MBCS defined | _UNICODE определено_UNICODE defined |
---|---|---|---|
_tmkdir_tmkdir | _mkdir_mkdir | _mkdir_mkdir | _wmkdir_wmkdir |
Как вывести содержимое файла в консоль?
Если появилась необходимость просмотреть содержимое файла прямо в cmd. Для этого пользуемся командой «TYPE» Я создал файл и написал в нём адрес своего блога. Теперь попробуем просмотреть данный файл из консоли, не запуская его обычном, привычным образом.
В общем все просто. Но как быть с файлами большего размера, где много информации? В этак случаи содержимое файла нужно выводить с паузой, чтобы просмотреть его полностью.
Для этого пишем так:
Для примера взял текст с первого попавшегося забугорного сайта.
В конце добавляем «| more» таким образом содержимое файла будет выводится не полностью а отрывками, чтобы просмотреть следующею часть файла жмём «Enter»
СинтаксисSyntax
ПараметрыParameters
ПараметрParameter
ОписаниеDescription
Указывает расположение и имя каталога, который требуется удалить.Specifies the location and the name of the directory that you want to delete. Требуется путь .Path is required. Если включить обратную косую черту ( ) в начале указанного пути, путь начинается с корневого каталога (независимо от текущего каталога).If you include a backslash () at the beginning of the specified path, then the path starts at the root directory (regardless of the current directory).
/s/s
Удаляет дерево каталогов (указанный каталог и все его подкаталоги, включая все файлы).Deletes a directory tree (the specified directory and all its subdirectories, including all files).
/q/q
Задает тихий режим.Specifies quiet mode. Не запрашивает подтверждение при удалении дерева каталогов.Does not prompt for confirmation when deleting a directory tree
Параметр /q работает только при указании параметра /s .The /q parameter works only if /s is also specified.Внимание! При запуске в тихом режиме полное дерево каталогов удаляется без подтверждения.CAUTION: When you run in quiet mode, the entire directory tree is deleted without confirmation. Перед использованием параметра командной строки /q убедитесь, что были перемещены или архивированы важные файлы.Make sure that important files are moved or backed up before using the /q command-line option
/?/?
Отображение справки в командной строке.Displays help at the command prompt.
ПримечанияRemarks
-
Нельзя удалить каталог, содержащий файлы, включая скрытые или системные файлы.You can’t delete a directory that contains files, including hidden or system files. При попытке сделать это появится следующее сообщение:If you attempt to do so, the following message appears:
Используйте команду dir/a , чтобы вывести список всех файлов (включая скрытые и системные файлы).Use the dir /a command to list all files (including hidden and system files). Затем используйте команду attrib с параметром -h , чтобы удалить скрытые атрибуты файла, -s для удаления атрибутов системных файлов или -h-s для удаления атрибутов скрытого и системного файлов.Then use the attrib command with -h to remove hidden file attributes, -s to remove system file attributes, or -h -s to remove both hidden and system file attributes. После удаления скрытых атрибутов и файлов можно удалить файлы.After the hidden and file attributes have been removed, you can delete the files.
-
Нельзя использовать команду RD для удаления текущего каталога.You can’t use the rd command to delete the current directory. При попытке удалить текущий каталог появляется следующее сообщение об ошибке:If you attempt to delete the current directory, the following error message appears:
Если получено это сообщение об ошибке, необходимо изменить каталог (не подкаталог текущего каталога) на другой, а затем повторить попытку.If you receive this error message, you must change to a different directory (not a subdirectory of the current directory), and then try again.
ПримерыExamples
Чтобы перейти к родительскому каталогу, чтобы можно было безопасно удалить нужный каталог, введите:To change to the parent directory so you can safely remove the desired directory, type:
Чтобы удалить каталог с именем Test (и все его подкаталоги и файлы) из текущего каталога, введите:To remove a directory named test (and all its subdirectories and files) from the current directory, type:
Чтобы запустить предыдущий пример в тихом режиме, введите:To run the previous example in quiet mode, type:
Берём порядок под контроль
Как мы увидели выше, часто текст по этим правилам форматируется не так, как нам хотелось бы.
В этом случае нам пригодятся инструменты для встраивания желаемого направления в существующий контекст или переопределения направлений конкретных символов.
Изоляция (isolate)
С заданием базового направления мы уже познакомились выше: это делает атрибут dir. Это глобальный атрибут, он применим к любому элементу.
создаёт новый уровень встраивания (embedding level) и изолирует содержимое от внешнего контекста. Контент внутри направлен согласно значению атрибута, а внешняя направленность самого контейнера становится нейтральной.
Явная установка атрибута позволяет избежать почти всех проблем форматирования смешанного текста:
Если направленность контента неизвестна заранее, можно указать auto в качестве значения атрибута dir. Тогда направление содержимого определится с помощью «некоторой эвристики» — оно просто возьмётся у первого попавшегося строго типизированного символа.
Аналогично работает тег и css-правило :
Встраивание (embed)
Можно открыть новый уровень встраивания без изоляции — правило в комбинации с нужным значением правила определяют и направление внутри элемента, и его направленность снаружи. Но это на практике не нужно почти никогда.
Переопределение (override)
или . Переопределяет направление каждого символа внутри элемента. Нужно использовать крайне редко (например, если нужно поменять местами два конкретных символа) и не забывать изолировать дочерние элементы.
При этом снаружи элемент трактуется как сильно направленный. Чтобы он вёл себя как снаружи, но как внутри, нужно использовать .
Управляющие символы (marks)
Вставка управляющих символов — неприятный способ, но он полезен, когда у нас нет доступа к разметке, но есть доступ к контенту. Например, это могут быть просто невидимые сильно направленные символы, и (/ или /). Они помогают задать нужное направление нейтральному символу.
Например, в этом случае, чтобы восклицательный знак в конце строки принял направление LTR, нужно, чтобы он находился между двумя LTR символами:
Также любая описанная выше логика реализуется через управляющие символы. Для изоляции — LRI/RLI, для переопределения — LRO/RLO, и т.д. — смотри подробное руководство по управляющим символам.
COLOPHON top
This page is part of release 5.09 of the Linux man-pages project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at https://www.kernel.org/doc/man-pages/. Linux 2020-06-09 MKDIR(2)
Pages that refer to this page:
mkdir(1),
chmod(2),
chown(2),
chown32(2),
fanotify_mark(2),
fchmod(2),
fchmodat(2),
fchown(2),
fchown32(2),
fchownat(2),
fcntl(2),
fcntl64(2),
lchown(2),
lchown32(2),
mknod(2),
mknodat(2),
rmdir(2),
syscalls(2),
umask(2),
mkdtemp(3),
proc(5),
procfs(5),
cpuset(7),
inotify(7),
signal-safety(7),
mount(8)
В чём состоит задача?
С первого взгляда она мне показалась необъятной — нужно переделать весь интерфейс под требования, которые никто не сможет нормально объяснить.
Посмотрев несколько примеров арабских сайтов, я понимаю, что сделать арабскую версию — это:
- Перевести данные на арабский язык. Эта часть понятнее всего, но легче не становится — это огромные объёмы данных;
- Перевести интерфейс на арабский язык. Для нас это не так просто, потому что до этого мы переводили только с русского, а переводчиков с русского на арабский у нас нет. Придётся сначала переводить строки и комментарии на английский, а потом — с английского на арабский;
- Адаптировать весь интерфейс под «справа налево». Это вроде просто «перевернуть всё в другую сторону». Надо разобраться, как это происходит. И для этого точно есть какие-то готовые решения.
С переводами вроде всё понятно. С переворачиванием интерфейса — ничего не понятно. Остановимся на этом подробнее.
Первым делом я добавил тегу html атрибут dir=»rtl»:
Всё изменилось, но не совсем так, как я ожидал. Я осознал, что совсем не понимаю, что происходит. По какому принципу выстраиваются элементы друг за другом?
Подстановки
Прежде чем перейти к самим командам, которые достаточно примитивны, поговорим немного о шаблонах, делающих команды достаточно удобными. В интерфейсе командной строки очень часто используются имена файлов, поэтому для быстрого обращения к группам файлов существуют специальные символы. Они называются подстановками и позволяют выбирать файлы по шаблонам символов. Посмотрим на наиболее частые.
- *
- Соответствует любой подстроке символов, включая пустой строке.
- ?
- Соответствует любому символу. Присутствие символа обязательно (не соответствует пустой строке).
- Соответствует любому символу из указанного набора символы. Набор символов может быть обозначен классом символов POSIX: — любая буква или цифра, — любая буква, — любая цифра, — любая буква в верхнем регистре, — любая буква в нижнем регистре.
- Соответствует любому символу, который отсутствует в указанном наборе символы.
При помощи подстановок можно составить очень сложные критерии выборки файлов. Рассмотрим несколько примеров.
- * — любые файлы
- g* — файлы, имена которых начинаются с символа «g»
- b*.txt — файлы с именами, начинающимися с символа «b» и заканчивающимися последовательностью символов «.txt»
- Data??? — файлы, имя которых начинается со строки «Data» после которой следует ровно три любых символа
- * — файлы с именами, начинающимися с одного из символов «a», «b» или «c», за которым могут следовать любые символы (также под выборку попадают имена файлов «a», «b» и «c»)
- ]* — все файлы с именами, которые начинаются с буквы в верхнем регистре
- BACKUP.]] — файлы, имена которых начинаются со строки «BACKUP.» и заканчиваются двумя любыми цифрами
- *] — любые файлы, имена которых не заканчивается буквой в нижнем регистре.
Подстановку можно использовать почти с любыми командами, которые принимают в качестве аргументов имя файла.
Если быть более честным, то эти подстановки являются обычным развертыванием строк. Команда даже не видит сам шаблон подстановки, к ней поступает список файлов. Но это уже материал из будущего
Примеры команд Dir
реж
В этом примере команда dir используется одна, без каких-либо привод , путь, имя файла спецификациями или любыми коммутаторами, создавая такой результат:
Как вы можете видеть, команда dir была выполнена из корневого каталога C (то есть C: >). Не указывая, где именно указать содержимое папки и файла, команда dir по умолчанию отображает эту информацию, с которой была выполнена команда.
dir c: users / ah
В приведенном выше примере я прошу, чтобы команда dir показывала результаты из привод а также дорожка из C: Users , а не из местоположения, из которого я запускаю команду. Я также уточняю,/ а переключатель с час атрибут, что я хотел бы видеть только скрытые элементы, в результате чего что-то вроде этого:
Небольшой список каталогов и единственный файл, который вы видите в приведенном выше результате, не составляет всего C: Users папка — только скрытые файлы и папки. Видеть все файлы и папки, вы должны выполнитьdir c: users / a (удалениечас).
dir c: *. csv / s / b> c: users tim desktop csvfiles.txt
В этом немного более сложном, но гораздо более практичном примере для команды dir, я запрашиваю, чтобы весь мой жесткий диск искал CSV-файлы, а затем минимальные результаты выводятся в текстовый документ. Давайте посмотрим на это по частям:
- C: *. CSV сообщает команде dir посмотреть все файлы (*), которые заканчиваются в CSV (.csv) в корне с: привод.
- / s инструктирует dir идти глубже, чем корень c: и вместо этого, ищите такие файлы в каждой папке так же глубоко, как папки.
- / б удаляет все, кроме имени пути и файла, по существу создавая читаемый «список» этих файлов.
- > является оператором перенаправления, что означает «отправить» где-нибудь.
- C: Users тим рабочий стол csvfiles.txt является местом назначения> redirector, что означает, что результаты будут записаны вcsvfiles.txt файла, а не в командной строке, которая будет создана на C: Users тим рабочий стол местоположение (т. е. Рабочий стол, который я вижу при входе в систему).
Когда вы перенаправляете вывод команды в файл, как, например, здесь, в примере этого примера, Command Prompt ничего не отображает. Тем не менее точный выход, который вы видели, вместо этого находится внутри этого текстового файла. Вот что мое csvfiles.txt выглядел так, как только завершилась команда dir:
В то время как вы, конечно, могли пропустить перенаправление файлов и даже переключатель «голый формат», результаты были бы очень трудными для работы в окне командной строки, что затрудняло бы то, что вам нужно — местоположение каждого CSV-файл на вашем компьютере.
Последовательность символов внутри строки
Физически в строке символы расположены последовательно, но за итоговое отображение этой последовательности на экране отвечает unicode bidirectional algorithm.
Вкратце:
- Для каждого символа в строке вычисляется направленность;
- Строка бьётся на блоки одинаковой направленности;
- Блоки выстраиваются в порядке, заданном базовым направлением.
На направленность каждого символа влияет его тип и направленность соседних символов.
Три типа символов
1) Сильно направленные (или строго типизированные, strongly typed) — например, буквы. Их направленность заранее определена — для большинства символов это LTR, для арабских и иврита — RTL.
Слова на картинке целиком строго типизированы:
2) Нейтральные — например, знаки пунктуации или пробелы. Их направленность не задана явно, они направлены так же, как соседние сильно направленные символы.
Запятая между направленными слева направо «o» и «w» в строке «Hello, world» принимает их направленность и при базовом LTR, и при RTL:
Но что, если нейтрально направленный символ попадает между двумя сильно направленными символами разной направленности? Такой символ принимает базовую направленность.
Вот тут расположение «++» в одном случае между однонаправленными «C» и «a», а в другом — между разнонаправленными «C» и арабским «و», приводит к разному результату:
То же самое случается с нейтральными символами в конце строки:
3) Слабо направленные (или слабо типизированные, weakly typed) — например, числа. Они имеют свою направленность, но никак не влияют на окружающие символы.
Непрерывные слова из цифр выстраиваются слева направо, но два числа подряд, разделённые нейтральным символом, будут идти друг за другом справа налево, если задана базовая RTL–направленность:
Ещё более наглядный случай — число, в котором разряды разделены пробелом:
При этом допускается разделять числа точкой, запятой, двоеточием — эти разделители тоже слабо направлены (подробнее можно посмотреть в ):
Направленные блоки (directional run)
Последовательные символы одинаковой направленности объединяются в блоки (directional run). Эти блоки выстраиваются друг за другом в порядке, определённым базовым направлением:
Слабо направленные числа, несмотря на то, что имеют свою направленность, не влияют на формирование блоков, что может приводить к такому результату — они продолжают предыдущий направленный блок:
Зеркальные символы
Некоторые символы в разных контекстах имеют разную форму — например, открывающая скобка в RTL будет выглядеть как закрывающая в LTR (что логично, ведь контент в скобках будет идти после — то есть, слева от неё).
В большинстве случаев это не создаёт проблем, но если скобки случайно окажутся разной направленности, визуально они будут смотреть в одну сторону. Например, если скобка висит в конце строки:
Основные команды командной строки
DIR — сокращение от Directory, эта CMD команда для новичка выводит список всех файлов и папок в определенном каталоге. А также их размер, расширение и свободное пространство, оставшееся на диске. Команда dir в командной строке может быть изменена с помощью дополнительных параметров, таких как DIR /р (выводит список по страницам), DIR /q (выводит информацию о владельце сайта), DIR /w (выводит список в расширенном формате с максимальным количеством файлов в одной строке), DIR / d (выводит список в расширенном формате с разбивкой на столбцы), DIR /n (выводит длинный список одной строкой), DIR /l (выводит несортированный список имен каталогов и файлов в нижнем регистре), DIR /b (выводит список файлов без дополнительной информации). DIR /s выводит список файлов и директорий данного каталога, а также всех подкаталогов. Введя DIR/?, вы увидите список всех доступных параметров.
Команда CD командной строки или CHDIR (Change Directory) предназначена для того, чтобы сменить каталог. Команда выполняет несколько операций. CD перемещает вас на самый верх дерева каталогов. CD .. перемещает вас в родительский каталог по отношению к текущему. CD имя-каталога перемещает вас в этот каталог. Введите CD, чтобы вывести на экран имя текущего каталога.
MD или MKDIR (Make Directory) позволяет создать каталог (папку). Чтобы создать каталог, используйте следующий синтаксис: MD имя-каталога.
CLS очищает экран. Эта команда CMD в Windows применяется, если эмулятор командной строки заполнен перечнем команд и их операций.
EDIT имя-файла позволяет изменять содержимое файла.
Команда DEL позволяет удалить один или несколько файлов. В качестве альтернативы можно использовать команду ERASE. Для удаления файла используйте синтаксис DEL имя-файла.
Если вы хотите удалить все файлы с определенным расширением, то введите DEL *.doc, и из текущего каталога будут удалены все файлы с расширением doc. DEL *.* удаляет все файлы из текущего каталога, поэтому будьте осторожны с этой командой.
RD или RMDIR — вы можете использовать эту команду, чтобы удалить папку, но папка должна быть пустой. Синтаксис довольно прост. Введите RD имя-папки. Если вы хотите удалить папку, которая не является пустой, вы можете использовать RD / S имя-папки. Будьте осторожны с этой командой, так как она удаляет папку и все ее содержимое без возможности восстановления.
RENAME, или REN переименовывает файл или каталог. Синтаксис этой команды CMD управления компьютером следующий: RENAME текущее-имя новое-имя. Например, если вы хотите переименовать файл с именем iPhone.txt в iPad.txt, введите RENAME iPhone.txt iPad.txt.
MOVE позволяет переместить один или несколько файлов из одного каталога в другой. Например, если вы хотите переместить файл 1.txt размещенный в текущей директории в папку с именем Numericals внутри текущего каталога, введите MOVE 1.txt Numericals. Если вы пытались переименовать директорию (папку) с помощью команды RENAME приведенным выше способом, то знаете, что это не работает. В этом нам поможет команда MOVE, так как она также может быть использована для переименования каталогов. Введите MOVE текущее-имя новое-имя, где текущее имя — это имя директории в текущей папке.
Команда COPY позволяет скопировать один или несколько файлов из одного места в другое. Команда позволяет объединять файлы одного и того же типа. Давайте посмотрим на различные примеры применения команды COPY:
- COPY имя-файла имя-папки скопирует файл имя-файла в уже существующую папку;
- COPY имя-файла новое-имя-файла создает копию файла с новым именем;
- COPY *.doc Word копирует все файлы с расширением .doc в папку с именем Word.
CMD основная команда XCOPY предназначена для файлов и каталогов, включая подкаталоги. Простейший вариант ее использования — скопировать все файлы с одного диска на другой. Синтаксис: XCOPY Исходный-диск: Диск-назначения: /e, где параметр /е позволяет копировать все подкаталоги, даже если они пусты. Используйте /s, чтобы запретить копирование пустых директорий. Вы можете использовать имена папок исходного диска или диска назначения, чтобы просто скопировать все содержимое одной папки в другую.
Шаг 20 — Чтение содержимого директорий diropen, readdir, closedir
На одном из почтовых серверов у меня есть директория в которую складываются пришедшие письма.
За некоторое время количество файлов в этой директории начинает превышать несколько тысяч и стандартной
командой удаления rm *.eml удалить ничего не получается:
root@mailserver:/mail/queue# rm *.eml bash: /bin/rm: Argument list too long
Связано это с тем, что Bash из маски *.eml делает длинную строку из списка
файлов с расширением eml, поэтому количество аргументов для команды rm превышает
допустимое количество. Естественно удалить такое количество файлов можно с использованием других
команд, но интерес не в этом, а в том чтобы разобраться с функциями чтения директорий.
Итак, приступим. Для работы с директориями необходимо подключить файлы:
#include <sys/types.h> #include <dirent.h>
Директория сама по себе представляет файл состоящий из специальных записей dirent,
которые содержат данные о файлах в директории:
struct dirent { ino_t d_ino; /* inode number */ off_t d_off; /* offset to the next dirent */ unsigned short d_reclen; /* length of this record */ unsigned char d_type; /* type of file; not supported by all file system types */ char d_name; /* filename */ };
Данная структура содержит имя файла d_name, порядковый номер файла d_ino в файловой системе и несколько других. Разберемся.
Для работы с директориями необходимо определить переменную типа DIR (по смыслу она похожа
на тип FILE). Для открытия/закрытия директорий существует две функции:
DIR *opendir(const char *name); int closedir(DIR *dirp);
Функция opendir() открывает директорию для чтения с именем name и возвращает
указатель на directory stream (иногда сложно перевести со смыслом, директорный поток
или поток директории ?), при ошибке возвращает NULL и соответствующим образом устанавливает
код ошибки errno. Функция closedir() без комментариев.
Чтение из этого файла-директории осуществляется функциями со схожими названиями:
struct dirent *readdir(DIR *dirp); int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);
Первая функция readdir() возвращает следующую структуру dirent считанную из файла-директории.
При достижении конца списка файлов в директории или возникновении ошибки возвращает NULL.
Вторая функция должна использоваться для чтения содержимого директорий при разработке программ работающих в
мультипоточном режиме.
Давайте попробуем прочитать какую-нибудь директорию:
#include <stdio.h> #include <sys/types.h> #include <dirent.h> int main() { DIR *dir; struct dirent *entry; dir = opendir("/"); if (!dir) { perror("diropen"); exit(1); }; while ( (entry = readdir(dir)) != NULL) { printf("%d - %s %d\n", entry->d_ino, entry->d_name, entry->d_type, entry->d_reclen); }; closedir(dir); };
Компилируем и запускаем:
root@home:/root/dirent# gcc dirread.c root@home:/root/dirent# ./a.out 2 - . 16 1 - .. 16 114 - bin 16 19 - dev 16 109 - etc 16 89 - lib 16 117 - mnt 16 127 - opt 16 144 - srv 16 112 - tmp 16 108 - sys 16 4 - var 16 37 - usr 16 113 - boot 16 116 - home 16 145 - proc 16 115 - sbin 16 149 - root 16 691340 - readme.txt 32 128 - media 20 575756 - netio 20
Из всего этого думаю полезностей извлечь можно не много. Думаю кроме имени файла d_name
ничего особо полезного нет, но собственно больше ничего и не надо. Как и было написано в
man 3 readdir поле d_type многие файловые системы не устанавливают (в примере
используется reiserfs), а жаль. Судя по описанию уже по этому полю можно было бы определить
тип записи: файл, директория или символьная ссылка. Ну ничего страшного.
Предыдущий Шаг | Следующий Шаг | ОглавлениеАвтор .
How to change the drive in Command Prompt (CMD)
To access another drive, type the drive’s letter, followed by «:». For instance, if you wanted to change the drive from «C:» to «D:», you should type «d:» and then press Enter on your keyboard.
Changing the drive in Command Prompt
To change the drive and the directory at the same time, use the cd command, followed by the «/d» switch. The «/d» parameter is used to change the current drive to a specific folder from another disk volume.
For instance, if you are now on the «D:» drive and you want to go back to the Windows folder from the»C:» drive, you should type «cd /d C:\Windows» and press Enter on your keyboard, like in the following screenshot.
Changing the drive and directory in Command Prompt
NOTE: By typing only the drive letter you automatically move to your most recent location on that drive. For instance, if you are on «D:» drive and type «cd c:\windows» nothing seems to happen. However, if you type «c:» then the working folder changes to «c:\windows,» assuming that it was the last folder you worked with on your «C:» drive.
Режим повторителя
В базовой, заводской прошивке режима повторителя устройства от D-Link обычно не имеют. Но в то же время можно установить режим клиента, где роутер получает сигнал от удалённого устройства и раздаёт его дальше. То есть в итоге получается тот же режим ретранслятора.
Эта же проблема решается и поиском альтернативной, не родной прошивки, известной как версия «DD-WRT». Но так как это всё-таки не родная версия, её опишем второй, чуть ниже.
Заводская прошивка
Сначала вариант клиента для другой сети.
Настройка DIR-300 в режиме репитера состоит из двух этапов:
- В параметрах настройки Wi-Fi вместо собственных данных нужно установить данные сети, которую планируется усиливать. Все данные копируются с основного устройства.
- Чтоб решить возможную проблему конфликтов устройств, нужно выключить DHCP на DIR-300, а на странице «WAN» раздела «Сеть» добавить новое подключение (или сменить текущее, если роутер далее не планируется для подключения к провайдеру). Нужно установить тип подключения «Динамический IP», интерфейс «WiFiClient».
- Необязательный. Если ранее к сети роутера подключались беспроводные клиенты, то после установки его повторителем она исчезнет. Чтобы устройства зря не искали несуществующее соединение, рекомендуется забыть сеть и произвести поиск заново.
Сохранить и перезагрузить роутер.
Альтернативная (DD-WRT) прошивка
Другой вариант получения ретранслятора — это установка альтернативной прошивки.
Устанавливается она стандартно — в разделе «Система» есть страница.
Для настройки репитера нужно, как и в работе с оригинальной прошивкой, пройти несколько шагов.
- Первое, что нужно сделать, это установить IP будущего усилителя. Можно использовать любой адрес с одним условием — он должен находится в подсети основного устройства. Если там раздаётся сеть в диапазоне 192.168.0.* – репитер не может иметь 192.168.1.*
- На вкладке «Установка» в разделе «Основные установки» выключить WAN.
- Следующим шагом переходят в раздел «Основные установки», но уже на вкладке Wi-Fi. В альтернативной прошивке есть возможность выбрать тип беспроводной сети — «репитер-мост».
- Выбирают его. Далее нужно указать имя сети — оно должно повторять имя на основном роутере.
- Выставив флажки, как указано на картинке, переходят в раздел «Безопасность» (вкладка Wi-Fi). Здесь нужно повторить все настройки защиты основного устройства.
- Сохранив все сделанные изменения, нужно перезагрузить DIR-300.
После перезагрузки в Web-интерфейсе видно, что используется сеть основного устройства.
Можно отметить, что альтернативная прошивка — улучшенная версия заводской. Настройками моста её возможности не ограничиваются. Во многих торговых точках роутер сразу перешивался на альтернативную версию, которая предлагает более расширенные и гибкие настройки.