1.9 Контрольные вопросы и упражнения
1.9.1 Вопросы
- Какие типы данных поддерживаются в R? Каковы их англоязычные наименования?
- Что такое переменная?
- Какой оператор используется для записи значения в переменную?
- С помощью какой функции можно узнать тип переменной?
- С помощью какого семейства функций можно преобразовывать типы переменных?
- Можно ли использовать ранее созданное имя переменной для хранения новых данных другого типа?
- Можно ли записать в переменную результат выполнения выражения, в котором она сама же и участвует?
- Какая функция позволяет прочитать пользовательский ввод с клавиатуры в консоли? Какой тип данных будет иметь возвращаемое значение?
- Какую функцию можно использовать для вывода значения переменной в консоль? Чем отличается использование этой функции от случая, когда вы просто пишете название переменной в строке программы?
- Какой символ является разделителем целой и дробной части при записи чисел с плавающей точкой?
- Что такое операторы и операнды? Приведите примеры бинарных и унарных операторов.
- Какое значение будет имет результат деления на ноль?
- Какие функции выполняют операторы ?
- Как проверить, является ли число четным?
- Как определить количество символов в строке?
- Как называется операция состыковки нескольких строк и с помощью какой функции она выполняется? Как добиться того, чтобы при этом не добавлялись пробелы между строками?
- С помощью какой функции можно создать дату из строки?
- Как извлечь из даты год? Месяц? День?
- Какая функция позволяет получить дату сегодняшнего дня?
- Можно ли складывать даты и числа? Если да, то в каких единицах измерения будет выражен результат?
- Какова краткая форма записи логических значений и ?
- Каким числам соответствуют логические значения и ?
- Сколько операндов должно быть верно, чтобы оператор логического И () принял значение ? Что можно сказать в этом отношении об операторе ИЛИ ()?
- Можно ли применять арифметические операции к логическим переменным? Что произойдет, если прибавить или вычесть из числа значение ? А если заменить на ?
- Что такое условный оператор и для каких сценариев обработки данных необходимы условные операторы?
- Перечислите ключевые слова, которые могут быть использованы для организации условных операторов
- При каких сценариях целесообразно использовать оператор переключения?
Примеры использования file
Если вам нужно всего лишь посмотреть тип файла, использовать опции не обязательно. Достаточно прописать имя команды, а также название файла и путь к нему, при условии, что он находится не в корневой папке:
Случается, что нужно проверить не один, а несколько файлов. Чтобы не выполнять команду много раз подряд, перечисляйте названия всех файлов через пробел:
Как видно на примере, картинки с расширениями gif и tiff в действительности оказались текстовыми документами, а архив с расширением zip — PDF документом. Кстати, команда file даёт возможность не только проверить, является ли архив архивом, но и заглянуть внутрь, чтобы узнать, что в нём содержится. Для этой цели используется опция -z:
Как вы успели заметить, команда, возвращая ответ, постоянно выводит названия файлов, что в некоторых случаях бывает удобно, но зачастую только усложняет чтение результатов. Отключить эту функцию легко — воспользуйтесь опцией -b:
Иногда нужно узнать не просто тип файла, а его MIME-тип. В таком случае на помощь приходит опция -i:
Нередко по каким-либо причинам утилита не может найти указанный файл: например, вы ошиблись буквой в его названии или неверно указали папку, в которой он находится. Тогда вывод информации об этом файле предваряет фраза cannot open. Впрочем, есть возможность видоизменить результат, добавив в него сообщение об ошибке. Для этого используйте опцию -E.
Сравните вывод команды с опцией -E и без неё:
Еще один способ работы с утилитой file — запись названий и адресов документов в простой текстовый файл. Применяя этот способ на практике, не забывайте добавлять к команде опцию —files-from, после которой указывайте имя файла, содержащего список документов, и путь к нему.
Как использовать команду ls
Синтаксис команды следующий:
При использовании без параметров и аргументов отображает список имен всех файлов в текущем рабочем каталоге :
Файлы перечислены в алфавитном порядке в столько столбцов, сколько может поместиться на вашем терминале:
Чтобы вывести список файлов в определенном каталоге, передайте путь к каталогу в качестве аргумента команде . Например, чтобы отобразить содержимое каталога , введите:
Вы также можете передать несколько каталогов и файлов, разделенных пробелом:
Если пользователь, с которым вы вошли в систему, не имеет прав на чтение каталога, вы получите сообщение о том, что не может открыть каталог:
У команды есть несколько опций. В следующих разделах мы рассмотрим наиболее часто используемые варианты.
Как создать файл через терминал
В данной статье мы разберем несколько альтернативных команд, при помощи которых можно создать новый объект в терминале Линукс.
Как создать пустой файл? Это легко сделать, если ввести в терминале следующую комбинацию:
Что происходит дальше? Утилита touch поможет добавить новый пустой объект с указанием даты создания и прав доступа. Чтобы не создавать каждый новый объект по отдельности, нужно ускорить процесс. Для этого задайте вот такую команду:
Самое время перейти ко второму способу создания нового файла в Линукс. Для этого необходимо использовать команду cat. Изначально она предназначена для того, чтобы пользователь мог ознакомиться с содержимым существующих объектов, но для нужной вам цели она тоже сгодится.
Как только команда будет выполнена, пользователь должен ввести определенные символы для записи в файл. Чтобы сохранить внесенные правки, необходимо нажать перед выходом Ctrl+D.
Как создать текстовый файл в Линукс? Для этих целей прибегнем к консольному текстовому редактору nanо. Запустите редактор и пропишите в нем текст на свое усмотрение.
Для тех, кто не боится более сложных путей, придуман редактор vi. Он работает по аналогичному принципу, но сама программа устроена достаточно сложно для новичка. Как запустит редактор:
Если программа показалась вам слишком непонятной в работе, рекомендуется детально изучить её основы. Для этого выполните: vimtutor. Разумеется, пользователь всегда может выбрать более простой и понятный для себя вариант. Более того, всегда можно обратиться к графическому интерфейсу для решения текущей проблемы, но этот редактор действительно заслуживает вашего внимания. Подробно изучив его отличительные черты и особенности, можно заиметь в своем арсенале поистине эффективный инструмент.
В отличие от других схожих редакторов, Vim может предложить массу полезных функций. В некоторых ситуациях очень глупо отказываться от столь заманчивых опций
Еще раз напоминаем о том, что взаимодействие с некоторыми редакторами может отличаться по своей специфике, поэтому пользователю крайне важно предварительно ознакомиться с тем, как функционирует инструмент
А вот и веский тому аргумент: в случае с Vim часто бывает так, что пользователь задает стандартную (привычную для других инструментов с графическим интерфейсом) комбинацию клавиш, но в результате получает совершенно не то, что было запланировано им изначально. В лучшем случае, пользователю придется многое исправлять. В худшем – он продолжит допускать грубые ошибки, и не сможет выполнить изначальную задачу по созданию файла при помощи данного редактора. С учетом выше сказанного напрашивается лишь один логический вывод: к работе с данным редактором нужно тщательно подготовиться.
Самая короткая команда для создания файла в Линукс
Она выглядит следующим образом:
Вывод команды будет записан в новый файл.
Двигаемся дальше! Теперь попробуем создать новый объект в мультипользовательской системе Линукс при помощи cp. Изначально эта команда разработана для копирования файлов в системе, но и эта задача ей под силу. Приступаем к созданию нового пустого файла в Линукс:
Специальные файлы в Линукс: особенности создания
Какие файлы хранятся в ОС Linux:
- Стандартные текстовые;
- Бинарные;
- Специальные.
Способы создания обычных файлов уже рассмотрены ранее. Но что делать, если пользователю нужно создать специальный файл? В данном случае стандартные утилиты Линукс не подойдут. Осуществить задуманное можно лишь при помощи специальных программ. Их можно найти на просторах Всемирной паутины. Любые другие действия осуществляются при помощи терминала и соответствующих команд.
Заключение
Управление многопользовательской системой Линукс действительно отличается своей сложностью, если сравнивать её с другими операционными системами. В то же время существует немало способов для решения нужной задачи. Все они представлены в данной статье. Пользователю остается лишь выучить понравившуюся ему команду или воспользоваться удобной утилитой
chattr Пример
Одно из распространенных применений — установка флага неизменяемости для файла или каталога, чтобы пользователи не могли удалить или переименовать файл.
Вы можете просмотреть атрибуты файла с помощью команды :
Вывод ниже показывает, что установлен только флаг :
Чтобы сделать файл неизменяемым, добавьте флаг с оператором к существующим атрибутам:
Мы используем sudo, потому что только root может изменить неизменяемый флаг.
Подтвердите, что атрибут добавлен:
Чтобы отменить изменения и удалить неизменяемый флаг, используйте оператор :
С помощью вы можете добавлять или удалять сразу несколько атрибутов. Например, чтобы сделать файл неизменяемым и указать ядру не отслеживать время последнего доступа, вы должны использовать:
Последний оператор, который вы можете использовать, — это оператор . Например, чтобы установить атрибут как единственный атрибут, вы должны запустить:
Обратите внимание, что оператор и флаг заключены в кавычки, чтобы избежать интерпретации оболочки символа
Переименование командой mv
Команда mv (от слова move) используется для переименования или перемещения файлов и директорий из командной строки.
Синтаксис команды mv очень простой:
mv опции источник назначение
источник — файл(ы) или директория, которую необходимо переместить или переименовать.назначение — файл или директория, в которую будет перемещен источник.
Основные опции:-f — перезаписывать существующие файлы.-n — не перезаписывать существующие файлы.-i — выдавать запрос на перезапись существующих файлов.-u — не перемещать файлы, которые уже существуют, если существующие файлы новее (время модификации новее).-v — выводить имя каждого файла перед его переносом.
Как задавать имена файлов и директорий для переименования:
- Чтобы переименовать файл с помощью команды mv нужно в качестве источника задать данный файл, а в качестве назначения указать новое имя файла.
- Если указывается путь до файла, то директории должны совпадать, иначе файл будет перемещен в другую директорию.
- Если в качестве источника указать файл, а в качестве назначения путь до файла в другой директории и задать новое имя файла, то файл будет перемещен в другую директорию и переименован.
- Если в качестве источника указана директория, а в качестве назначения задано новое имя для данной директории, то директория будет просто переименована. Если же директория назначения уже существует, то директория источник будет перемещена в директорию назначения.
Рассмотрим примеры.
Переименование файла myfile1.dat в файл myfile2.dat:
Переименование файла с указанием пути до файла:
Переименование директории
Переименование директории /home/pingvinus/mydir1 в директорию /home/pingvinus/mydir2. Справедливо, если /home/pingvinus/mydir2 не существует.
Если /home/pingvinus/mydir2 существует, то, выполнив команду:
директория mydir1 будет перемещена внутрь директории /home/pingvinus/mydir2. То есть mydir1 будет в результате находиться по адресу /home/pingvinus/mydir2/mydir1.
Переименование и перемещение
Если в качестве файла назначения указан новый путь и новое имя файла, то файл будет перемещен и переименован. Например, следующая команда перемещает файл myfile1.dat в директорию /home/pingvinus/dir и переименовывает его в myfile2.dat:
Что такое файловая система
Обычно вся информация записывается, хранится и обрабатывается на различных цифровых носителях в виде файлов. Далее, в зависимости от типа файла, кодируется в виде знакомых расширений – *exe, *doc, *pdf и т.д., происходит их открытие и обработка в соответствующем программном обеспечении. Мало кто задумывается, каким образом происходит хранение и обработка цифрового массива в целом на соответствующем носителе.
Операционная система воспринимает физический диск хранения информации как набор кластеров размером 512 байт и больше. Драйверы файловой системы организуют кластеры в файлы и каталоги, которые также являются файлами, содержащими список других файлов в этом каталоге. Эти же драйверы отслеживают, какие из кластеров в настоящее время используются, какие свободны, какие помечены как неисправные.
Запись файлов большого объема приводит к необходимости фрагментации, когда файлы не сохраняются как целые единицы, а делятся на фрагменты. Каждый фрагмент записывается в отдельные кластеры, состоящие из ячеек (размер ячейки составляет один байт). Информация о всех фрагментах, как части одного файла, хранится в файловой системе.
Файловая система связывает носитель информации (хранилище) с прикладным программным обеспечением, организуя доступ к конкретным файлам при помощи функционала взаимодействия программ API. Программа, при обращении к файлу, располагает данными только о его имени, размере и атрибутах. Всю остальную информацию, касающуюся типа носителя, на котором записан файл, и структуры хранения данных, она получает от драйвера файловой системы.
На физическом уровне драйверы ФС оптимизируют запись и считывание отдельных частей файлов для ускоренной обработки запросов, фрагментации и «склеивания» хранящейся в ячейках информации. Данный алгоритм получил распространение в большинстве популярных файловых систем на концептуальном уровне в виде иерархической структуры представления метаданных (B-trees). Технология снижает количество самых длительных дисковых операций – позиционирования головок при чтении произвольных блоков. Это позволяет не только ускорить обработку запросов, но и продлить срок службы HDD. В случае с твердотельными накопителями, где принцип записи, хранения и считывания информации отличается от применяемого в жестких дисках, ситуация с выбором оптимальной файловой системы имеет свои нюансы.
Сортировка вывода
Как мы уже упоминали, по умолчанию команда перечисляет файлы в алфавитном порядке.
Параметр позволяет сортировать вывод по расширению, размеру, времени и версии:
- (или ) — отсортировать в алфавитном порядке по расширению.
- (или ) — сортировать по размеру файла.
- (или ) — сортировать по времени модификации.
- (или ) — естественный вид номеров версий.
Если вы хотите получить результаты в обратном порядке сортировки, используйте параметр .
Например, чтобы отсортировать файлы в каталоге по времени модификации в обратном порядке, вы должны использовать:
Стоит отметить, что команда не показывает общее пространство, занятое содержимым каталога. Чтобы узнать размер каталога , используйте команду .