Запишите правильные имена файлов в одном столбце и правильные имена каталогов во втором столбце под буквой 18

Обновлено: 01.07.2024

Примечание. Эта команда на самом деле не изменяет входной файл, т. е. file.txt.

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

Пример:

Создайте файл mix.txt

Теперь используйте команду сортировки

Параметры с функцией сортировки:

<р>1. Опция -o: Unix также предоставляет нам специальные средства, например, если вы хотите записать вывод в новый файл, output.txt, перенаправляет вывод таким образом, или вы также можете использовать встроенную опцию сортировки -o, которая позволяет вам указать выходной файл.

Использование параметра -o функционально аналогично перенаправлению вывода в файл.

Примечание. Ни один из них не имеет преимущества перед другим.

Пример: входной файл такой же, как указано выше.

Синтаксис:

<р>2. Опция -r: сортировка в обратном порядке: вы можете выполнить сортировку в обратном порядке, используя флаг -r. флаг -r является опцией команды sort, которая сортирует входной файл в обратном порядке, то есть по убыванию по умолчанию.

Пример: входной файл такой же, как указано выше.

Синтаксис:

<р>3. Опция -n: для сортировки файла по числовому номеру используется опция –n. Параметр -n также предопределен в Unix, как и указанные выше параметры. Эта опция используется для сортировки файла с числовыми данными внутри.

Пример:

Давайте рассмотрим файл с номерами:

Синтаксис:

<р>4. Опция -nr: чтобы отсортировать файл с числовыми данными в обратном порядке, мы можем использовать комбинацию двух опций, как указано ниже.

Пример: числовой файл такой же, как и выше.

Синтаксис:

<р>5. Опция -k: Unix предоставляет возможность сортировки таблицы на основе любого номера столбца с помощью опции -k.

Используйте параметр -k для сортировки по определенному столбцу. Например, используйте «-k 2» для сортировки по второму столбцу.

Пример:

Давайте создадим таблицу с двумя столбцами

Синтаксис:

<р>6. Опция -c: эта опция используется для проверки того, отсортирован ли уже данный файл или нет, и проверяет, отсортирован ли уже файл, передайте опцию -c для сортировки. Это запишет в стандартный вывод, если есть строки, которые не по порядку. Инструмент сортировки можно использовать, чтобы понять, отсортирован ли этот файл и какие строки не по порядку

Пример:

Предположим, существует файл cars.txt со списком автомобилей.

Синтаксис:

<р>7. Опция -u: чтобы отсортировать и удалить дубликаты, передайте опцию -u для сортировки. Это запишет отсортированный список в стандартный вывод и удалит дубликаты.
Этот параметр полезен, так как удаляемые дубликаты дают нам избыточный файл.

Пример. Предположим, существует файл со списком автомобилей с именем cars.txt.

Синтаксис:

<р>8. Опция -M: для сортировки по месяцам передайте опцию -M для сортировки. Это запишет отсортированный список в стандартный вывод, упорядоченный по названию месяца.

В этом документе объясняется, как устанавливаются права доступа к каталогам и файлам на компьютере с UNIX или Linux, и как пользователь может их изменить. Это позволяет вам делиться файлами или каталогами или заблокировать их, чтобы они были частными. Если вы хотите установить права доступа к файлу или каталогу, щелкнув правой кнопкой мыши файл или каталог и установив или сняв флажки, вы можете сделать это в графическом интерфейсе программного обеспечения для передачи файлов, например, с помощью MobaXterm, клиента SSH Secure Shell, WinSCP и т. д. Если вы вошли в систему Linux с Xsession, вы можете использовать эквивалент проводника Windows для Linux с командами nautilus или konqueror. В противном случае в этом документе содержится полное объяснение того, как работает команда UNIX chmod.

Вы можете просмотреть права доступа к файлу с помощью команды ls с параметром -l (L в нижнем регистре, а не 1):

вернет длинную строку информации, которая начинается с прав доступа к файлу:

Разрешения

Каждый файл и каталог в UNIX или Linux имеет связанный с ним набор разрешений, который отображается в виде трехзначного числа (например, 755). Эти разрешения подразделяются на три группы, которые имеют или не имеют разрешения:

  • владелец файла
  • группа владельца
  • все остальные, у кого есть доступ к серверу (именуемые «другие»)

Эти три группы, в свою очередь, могут иметь или не иметь три разных привилегии:

Права Определение< /td>
чтение (r) чтение, открытие, просмотр, и копирование файла разрешено
запись (w) запись, изменение, удаление и сохранение файла разрешены
выполнить (x) запуск и вызов файла разрешены.Это необходимо для каталогов, чтобы разрешить поиск и доступ.

Таким образом, всего девять переменных:

<р>1. прочитать файл

<р>2. записать в файл

<р>3. выполнить файл

<р>1. прочитать файл

<р>2. записать в файл

<р>3. выполнить файл

<р>1. прочитать файл

<р>2. записать в файл

<р>3. выполнить файл

Эти переменные организованы в массив три на три следующим образом:

Значения столбцов

Вышеприведенный массив три на три показывает основу для описания набора из девяти разрешений. Обратите внимание, что каждое разрешение имеет связанное с ним числовое значение:

< /tr> < tr> < /таблица>

Если разрешение отклонено, его значение всегда равно нулю. (В приведенном выше примере все разрешения были предоставлены.) Для каждой категории пользователей (владелец, член группы и т. д.) эти три значения разрешений потенциально могут составлять семь. Если мы отклоняем один или несколько типов разрешений, то это значение (4, 2 или 1) вычитается из значения для этой категории пользователей. Таким образом, если мы хотим отказать в разрешении на запись группе владельца, мы вычитаем 2 из общего количества этих разрешений, в результате чего значение столбца остается равным 5. И если мы хотим запретить как запись, так и выполнение разрешений «другим», мы вычитаем и 2, и 1, оставив значение 4. Эти изменения показаны в таблице ниже:

Общее значение теперь равно 754, а не 777. Обратите внимание, что какую бы комбинацию разрешений мы ни создали, числа всегда будут уникальным представлением этой комбинации, как показано на следующей диаграмме:

Общая стоимость

Подобно тому, как каждый столбец обозначает определенную комбинацию разрешений, общее значение представляет собой определенную комбинацию разрешений, связанных с типами пользователей, поскольку порядок всегда указывается следующим образом: владелец группа другое. Таким образом, из любого трехзначного общего значения вы можете вывести каждое из девяти возможных разрешений. Это трехзначное «общее значение» (в приведенных выше примерах 777 и 754) используется при определении и изменении разрешений, как описано ниже. Помните, что это общее значение всегда указывается в следующем порядке: владелец, группа, другие.

Настройка разрешений

Если вы хотите установить режим файла (установить разрешения), вы используете команду UNIX chmod в системной подсказке. Когда вы познакомитесь с командой chmod, попробуйте использовать параметр -v для подробного ответа, как в следующем примере:

Эта команда указывает, что файл с именем myfile.txt имеет разрешение на чтение и запись (rw-) для владельца (вас), разрешение только на чтение (r–) для членов группы и отсутствие прав доступа для других (— ). Помните, что разрешения для «владельца» всегда являются первыми, а разрешения для «другого» всегда последними. Установка разрешений для каталога происходит точно так же; вы просто замените имя файла именем каталога.

Вы также можете использовать буквы r, w и x для установки разрешений на чтение, запись и выполнение, а также буквы u, g, o и a для указания пользователя, группы, другого или всех:

Приведенное выше добавляет разрешение на выполнение для всех пользователей.

В этом примере членам группы предоставляется разрешение только на чтение:

Вот несколько примеров, которые, если сделать это в следующем порядке, установят разрешения, как показано:

Значение Разрешение< /td>
4 чтение (r)
2 написать (w)
1 выполнить (x)
< td valign="top" width="217">-rwxr–r–
Команда (эквивалент команда с использованием системы счисления) Разрешения
chmod a= rwx myfile.txt chmod 777 myfile.txt rwxrwxrwx
chmod o= myfile.txt chmod 770 myfile.txt -rwxrwx—
chmod g=w myfile.txt chmod 720 myfile.txt -rwx-w—-
chmod go=r myfile.txt chmod 744 myfile.txt
chmod g+x myfile.txt chmod 754 myfile.txt -rwxr-xr–
chmod или myfile.txt chmod 750 myfile.txt -rwxr-x—

Установка разрешений без указания u, g, o или a

Разрешения устанавливаются для пользователя, группы и других, если u, g, o или a не указаны, но в игру вступает ваш umask (маска создания пользовательского файла), что усложняет ситуацию. Наиболее распространенный umask — 022, что означает, что при создании нового каталога разрешения по умолчанию не 777 (drwxrwxrwx), а скорее 777 — 022, то есть 755 (drwxr-xr-x). И когда вы создаете новый файл, разрешения по умолчанию не 666 (-rw-rw-rw-), а скорее 666–022, что равно 644 (-rw-r–r–).

Следующее произойдет, если ваш umask является наиболее распространенным umask 022:

Команда (эквивалент команда с использованием системы счисления) Разрешения
chmod =rwx myfile.txt chmod 755 myfile.txt -rwxr-xr-x
chmod -wx myfile.txt chmod 444 myfile.txt -r–r–r–
chmod + x myfile.txt chmod 555 myfile.txt -r-xr-xr- х

Последний пример часто используется в документации, когда пользователю предлагается сделать файл исполняемым.

Причина использования системы счисления вместо системы букв для установки разрешений заключается в том, что использование чисел позволяет вам устанавливать разные разрешения для пользователя, группы и других в одном запросе команды chmod и не зависит от как в настоящее время установлены разрешения. Рекомендуется использовать параметр -v (подробный) команды chmod, чтобы увидеть, на что изменились разрешения, поскольку ваш umask мог сыграть роль в создании разрешений.

Пути и разрешения

Чтобы вы могли устанавливать разрешения для файла или каталога, UNIX должен сначала иметь возможность найти этот файл или каталог. Таким образом, если вы не находитесь в каталоге, содержащем файл или каталог, для которого вы устанавливаете разрешения, вы должны указать путь. Например, если вы находитесь в своем домашнем каталоге и хотите установить разрешения для файла с именем myfile.txt в каталоге с именем files, расположенном в вашем домашнем каталоге, вы должны использовать следующую команду:

Определение текущих разрешений

Чтобы определить текущие разрешения для файла или каталога, используйте команду ls с параметром -l (строчная буква «L», а не цифра один «1»), как в следующем примере:

Слева от результирующей строки вывода будет список разрешений, выраженный последовательностью из десяти букв и дефисов. Последние девять пробелов разделены на группы по три, каждая из которых будет иметь по порядку r (чтение), w (запись) и x (выполнение) или, если это разрешение было отклонено владельцем файла, дефис (-) в своем пробеле. Как и при настройке разрешений, три группы по три даны в следующем порядке: владелец, группа, другое. Например, файл, режим которого был установлен выше как 644, будет иметь буквы:

Эта последовательность показывает, что «myfile.txt» — это обычный файл (первая дефисная буква «d» в этом месте указывает на каталог) с разрешением на чтение и запись для владельца (rw-), с разрешением только на чтение для члены группы владельца ( r–) и разрешение только для чтения для других ( r– ). Если мы снова изменим режим с помощью команды:

тогда команда ls -l myfile.txt будет отображаться как разрешения:

Естественно, только владелец может изменять права доступа к файлу или каталогу.

Права доступа к каталогу и файлам

Минимальное разрешение для доступа к каталогу — выполнение (x).

Группы

Как обсуждалось выше, существует набор разрешений для «группы», связанной с каждым файлом и каталогом. Из этого следует, что каждый пользователь системы UNIX является членом одной или нескольких групп. Когда создается учетная запись, ее пользователь назначается группе, обычно академическому званию пользователя. Идентификационный номер группы, который отображается в записи пользователя в файле паролей, указывает на «основную» группу пользователя. Группы обозначаются как именем (например, «факультет»), так и идентификационным номером группы (201 — это номер факультета). Номер группы произвольный, и он всегда будет больше 100. Также можно быть членом одной или нескольких «вторичных» групп. В отличие от вашего идентификатора основной группы, идентификатор дополнительной группы не указан в вашей записи в файле паролей.

Чтобы увидеть идентификаторы вашей группы и всех групп, в которых вы состоите, используйте идентификатор команды UNIX:

Если вы являетесь владельцем файла и являетесь членом более чем одной группы, вы можете изменить групповое «владение» этим файлом с помощью команды chgrp, как показано в следующем примере:

В этом примере «морской пехотинец» — это название группы, для которой вы хотите иметь разрешения.Обратите внимание, что это никоим образом не влияет на индивидуальное владение файлом; он просто изменяет группу, к которой применяются групповые разрешения. Только владелец может внести это изменение (и системный администратор, конечно), и владелец должен быть членом обеих задействованных групп, то есть группы по умолчанию, назначенной вам при создании вашего входа в систему, и новой группы, к которой вы предоставляете разрешения.

Теперь мы знаем, как просматривать файлы и каталоги, но как их создавать?

В этом выпуске мы узнаем о создании и перемещении файлов и каталогов на примере каталога для упражнений/записи.

Шаг первый: посмотрите, где мы находимся и что у нас уже есть

Мы по-прежнему должны находиться в каталоге shell-lesson-data на рабочем столе, что мы можем проверить, используя:

Далее мы перейдем в каталог для упражнений/записи и посмотрим, что в нем содержится:

Создать каталог

Давайте создадим новый каталог с именем thesis с помощью команды mkdir thesis (у которой нет вывода):

Как можно догадаться по названию, mkdir означает «создать каталог». Поскольку тезис является относительным путем (т. е. не имеет начального слэша, например /what/ever/thesis ), новый каталог создается в текущем рабочем каталоге:

Поскольку мы только что создали каталог тезисов, в нем еще ничего нет:

Обратите внимание, что mkdir не ограничивается созданием отдельных каталогов по одному. Параметр -p позволяет mkdir создать каталог с вложенными подкаталогами за одну операцию:

Опция -R команды ls отобразит список всех вложенных подкаталогов внутри каталога. Давайте используем ls -FR для рекурсивного отображения новой иерархии каталогов, которую мы только что создали в каталоге проекта:

Два способа сделать одно и то же

Использование оболочки для создания каталога ничем не отличается от использования проводника. Если вы откроете текущий каталог с помощью графического проводника вашей операционной системы, каталог тезисов также появится там. Хотя оболочка и файловый менеджер — это два разных способа взаимодействия с файлами, сами файлы и каталоги одинаковы.

Хорошие имена для файлов и каталогов

  1. Не используйте пробелы.

    Пробелы могут сделать имя более осмысленным, но поскольку пробелы используются для разделения аргументов в командной строке, лучше избегать их в именах файлов и каталоги. Вместо этого вы можете использовать - или _ (например, north-pacific-gyre/ , а не north pacific gyre/ ). Чтобы проверить это, попробуйте ввести mkdir north pacific gyre и посмотрите, какой каталог (или каталоги!) создается при проверке с помощью ls -F .

  2. Не начинайте имя с - (тире).

    Команды рассматривают имена, начинающиеся с -, как параметры.

  3. Наклеивайте буквы, цифры, . (точка или точка), - (тире) и _ (подчеркивание).

    Многие другие символы имеют особое значение в командной строке. О некоторых из них мы узнаем на этом уроке. Существуют специальные символы, которые могут привести к неправильной работе вашей команды и даже к потере данных.

Создать текстовый файл

Давайте изменим наш рабочий каталог на thesis с помощью cd , затем запустим текстовый редактор Nano, чтобы создать файл с именем draft.txt :

Какой редактор?

Когда мы говорим, что nano — это текстовый редактор, мы на самом деле имеем в виду текст: он может работать только с простыми символьными данными, а не с таблицами, изображениями или любым другим удобным для человека носителем. Мы используем его в примерах, потому что это один из наименее сложных текстовых редакторов. Однако из-за этой особенности он может быть недостаточно мощным или достаточно гибким для работы, которую вам нужно будет выполнить после этого семинара. В системах Unix (таких как Linux и macOS) многие программисты используют Emacs или Vim (на изучение обоих требуется больше времени) или графический редактор, такой как Gedit. В Windows вы можете использовать Notepad++. В Windows также есть встроенный редактор под названием «Блокнот», который можно запустить из командной строки так же, как и nano для целей этого урока.

Независимо от того, какой редактор вы используете, вам необходимо знать где он ищет и сохраняет файлы. Если вы запустите его из оболочки, он (вероятно) будет использовать ваш текущий рабочий каталог в качестве местоположения по умолчанию. Если вы используете меню «Пуск» вашего компьютера, вместо этого он может захотеть сохранить файлы на рабочем столе или в каталоге документов. Вы можете изменить это, перейдя в другой каталог при первом нажатии кнопки «Сохранить как…»

Давайте напечатаем несколько строк текста. Как только мы довольны нашим текстом, мы можем нажать Ctrl + O (нажмите клавишу Ctrl или Control и, удерживая ее, нажмите клавишу O), чтобы записать наши данные на диск (нас спросят, какой файл мы хотим чтобы сохранить это в: нажмите клавишу «Ввод», чтобы принять предложенный по умолчанию вариант draft.txt ).

скриншот текстового редактора nano в действии

После того, как наш файл будет сохранен, мы можем использовать Ctrl + X, чтобы выйти из редактора и вернуться в оболочку.

Control, Ctrl или клавиша ^

  • Control-X
  • Control+X
  • Ctrl + X
  • Ctrl+X
  • ^X
  • C-x

nano не оставляет никаких выводов на экране после выхода, но теперь ls показывает, что мы создали файл с именем draft.txt :

Создание файлов другим способом

Мы увидели, как создавать текстовые файлы с помощью редактора nano. Теперь попробуйте следующую команду:

  1. Что сделала сенсорная команда? Когда вы просматриваете свой текущий каталог с помощью проводника файлов с графическим интерфейсом, отображается ли файл?

  2. Используйте ls -l для проверки файлов. Насколько велик my_file.txt?

  3. В каких случаях вам может понадобиться создать файл таким образом?

Решение

  1. Команда touch создает новый файл с именем my_file.txt в вашем текущем каталоге. Вы можете просмотреть этот вновь сгенерированный файл, набрав ls в командной строке. my_file.txt также можно просмотреть в проводнике файлов с графическим интерфейсом.

  2. При проверке файла с помощью ls -l обратите внимание, что размер файла my_file.txt равен 0 байт. Другими словами, он не содержит данных. Если вы откроете файл my_file.txt в текстовом редакторе, он будет пустым.

  3. Некоторые программы сами не создают выходные файлы, а вместо этого требуют, чтобы уже были созданы пустые файлы. Когда программа запускается, она ищет существующий файл для заполнения выходными данными. Команда touch позволяет эффективно создавать пустой текстовый файл для использования такими программами.

Что в имени?

Возможно, вы заметили, что все файлы Нелле называются "что-то точка-что-то", и в этой части урока мы всегда использовали расширение .txt . Это всего лишь соглашение: мы можем назвать файл mythesis или почти что угодно. Тем не менее, большинство людей большую часть времени используют имена, состоящие из двух частей, чтобы помочь им (и их программам) различать разные типы файлов. Вторая часть такого имени называется расширением имени файла и указывает, какой тип данных содержит файл: .txt указывает на обычный текстовый файл, .pdf указывает на PDF-документ, .cfg — это файл конфигурации, полный параметров для какой-либо программы или другое, .jpg — изображение в формате PNG и т. д.

Это всего лишь условное обозначение, хотя и важное. Файлы содержат байты: мы и наши программы должны интерпретировать эти байты в соответствии с правилами для простых текстовых файлов, документов PDF, файлов конфигурации, изображений и т. д.

Именование PNG-изображения кита поскольку whit.mp3 каким-то волшебным образом не превращает его в запись песни кита, хотя может заставить операционную систему попытаться открыть его с помощью музыкального проигрывателя, когда кто-то дважды щелкнет по нему.

Перемещение файлов и каталогов

Возвращаясь к каталогу shell-lesson-data/writing,

В нашем каталоге тезисов у нас есть файл draft.txt, имя которого не особенно информативно, поэтому давайте изменим имя файла, используя mv, сокращение от «move»:

Первый аргумент сообщает mv, что мы «перемещаем», а второй — куда это должно двигаться. В этом случае мы перемещаем thesis/draft.txt в thesis/quotes.txt, что имеет тот же эффект, что и переименование файла. Действительно, ls показывает нам, что тезис теперь содержит один файл с именем quotes.txt:

Нужно быть осторожным при указании имени целевого файла, так как mv молча перезапишет любой существующий файл с таким же именем, что может привести к потере данных. Дополнительный параметр mv -i (или mv --interactive ) можно использовать, чтобы заставить mv запрашивать подтверждение перед перезаписью.

Обратите внимание, что mv также работает с каталогами.

Давайте переместим файл quotes.txt в текущий рабочий каталог. Мы снова используем mv, но на этот раз мы будем использовать только имя каталога в качестве второго аргумента, чтобы сообщить mv, что мы хотим сохранить имя файла, но поместим файл в новое место. (Вот почему команда называется «переместить».) В этом случае имя каталога, которое мы используем, является специальным именем каталога. о которых мы упоминали ранее.

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

Кроме того, мы можем подтвердить, что файл quotes.txt больше не присутствует в каталоге тезисов, явно попытавшись указать его в списке:

ls с именем файла или каталога в качестве аргумента выводит только запрошенный файл или каталог. Если файл, указанный в качестве аргумента, не существует, оболочка возвращает ошибку, как мы видели выше. Мы можем использовать это, чтобы увидеть, что файл quotes.txt теперь присутствует в нашем текущем каталоге:

Перемещение файлов в новую папку

После выполнения следующих команд Джейми понимает, что поместила файлы sucrose.dat и maltose.dat не в ту папку. Файлы должны были быть помещены в папку raw.

Заполните пробелы, чтобы переместить эти файлы в папку raw/ (то есть в ту, куда она забыла их положить)

Решение

Напоминаем, что .. относится к родительскому каталогу (т. е. каталогу выше текущего), а . относится к текущему каталогу.

Копирование файлов и каталогов

Команда cp очень похожа на mv, за исключением того, что она копирует файл, а не перемещает его. Мы можем проверить, правильно ли он поступил, используя ls с двумя путями в качестве аргументов — как и большинству команд Unix, ls можно указать сразу несколько путей:

Мы также можем скопировать каталог и все его содержимое, используя рекурсивную опцию -r , например для резервного копирования каталога:

Мы можем проверить результат, перечислив содержимое папки thesis и thesis_backup:

Переименование файлов

  1. cp statstics.txt Statistics.txt
  2. mv statstics.txt stats.txt
  3. mv statstics.txt .
  4. cp statstics.txt.

Решение

  1. Нет. Хотя при этом будет создан файл с правильным именем, файл с неправильным именем все еще существует в каталоге, и его необходимо удалить.
  2. Да, переименовать файл можно.
  3. Нет, точка (.) указывает, куда переместить файл, но не дает нового имени файла; одинаковые имена файлов не могут быть созданы.
  4. Нет, точка (.) указывает, куда копировать файл, но не дает нового имени файла; одинаковые имена файлов не могут быть созданы.

Перемещение и копирование

Что выводит закрывающая команда ls в показанной ниже последовательности?

  1. белки-сохраненные.dat рекомбинированы
  2. воссоединено
  3. белки.dat рекомбинированы
  4. proteins-saved.dat

Решение

  1. Нет, см. объяснение выше. .profiles-saved.dat находится в папке /Users/jamie
  2. Да
  3. Нет, см. объяснение выше. .projects.dat находится в папке /Users/jamie/data/recombined
  4. Нет, см. объяснение выше. .profiles-saved.dat находится в папке /Users/jamie

Удаление файлов и каталогов

Возвращаясь к каталогу shell-lesson-data/writing, давайте наведем порядок в этом каталоге, удалив созданный нами файл quotes.txt. Для этого мы будем использовать команду Unix — rm (сокращение от «удалить»):

Мы можем подтвердить, что файл исчез, используя ls :

Удаление навсегда

В оболочке Unix нет корзины для мусора, из которой мы можем восстановить удаленные файлы (хотя в большинстве графических интерфейсов Unix она есть). Вместо этого, когда мы удаляем файлы, они отсоединяются от файловой системы, чтобы их место на диске можно было использовать повторно. Инструменты для поиска и восстановления удаленных файлов существуют, но нет гарантии, что они сработают в той или иной конкретной ситуации, поскольку компьютер может сразу же освободить место на диске файла.

Безопасное использование rm

Что происходит, когда мы выполняем команду rm -i thesis_backup/quotations.txt? Зачем нам нужна эта защита при использовании rm ?

Решение

Опция -i будет запрашивать перед (каждым) удалением (используйте Y, чтобы подтвердить удаление, или N, чтобы сохранить файл). Оболочка Unix не имеет корзины для мусора, поэтому все удаленные файлы исчезнут навсегда. С помощью параметра -i у нас есть возможность убедиться, что мы удаляем только те файлы, которые хотим удалить.

Если мы попытаемся удалить каталог тезисов с помощью rm thesis , мы получим сообщение об ошибке:

Это происходит потому, что rm по умолчанию работает только с файлами, а не с каталогами.

rm может удалить каталог и все его содержимое, если мы используем рекурсивную опцию -r , и он сделает это без каких-либо запросов на подтверждение:

Учитывая, что нет возможности восстановить файлы, удаленные с помощью оболочки, rm -r следует использовать с большой осторожностью (можно рассмотреть возможность добавления интерактивной опции rm -r -i ).

Операции с несколькими файлами и каталогами

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

Копировать с несколькими именами файлов

В этом упражнении вы можете протестировать команды в каталоге shell-lesson-data/exercise-data.

В приведенном ниже примере что делает cp, если задано несколько имен файлов и имя каталога?

В приведенном ниже примере что делает cp, если задано три или более имен файлов?

Решение

Если задано более одного имени файла, за которым следует имя каталога (т. е. каталог назначения должен быть последним аргументом), cp копирует файлы в указанный каталог.

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

Использование подстановочных знаков для одновременного доступа к нескольким файлам

Подстановочные знаки

* — это подстановочный знак, который соответствует нулю или более символов. Давайте рассмотрим каталог shell-lesson-data/exercise-data/proteins: *.pdb соответствует ethan.pdb, propane.pdb и всем файлам, оканчивающимся на «.pdb». С другой стороны, p*.pdb соответствует только пентану.pdb и пропану.pdb , потому что буква «p» впереди соответствует только именам файлов, начинающимся с буквы «p».

? также является подстановочным знаком, но соответствует только одному символу. Таким образом, ?ethan.pdb будет соответствовать метану.pdb, тогда как *ethan.pdb соответствует и ethan.pdb , и метану.pdb .

Подстановочные знаки можно использовать в сочетании друг с другом, например. . ane.pdb соответствует трем символам, за которыми следует ane.pdb , что дает cubane.pdb ethan.pdb octane.pdb .

Когда оболочка видит подстановочный знак, он расширяет подстановочный знак, чтобы создать список совпадающих имен файлов перед выполнением запрошенной команды. В качестве исключения, если выражение с подстановочным знаком не соответствует ни одному файлу, Bash передаст выражение в качестве аргумента команде как есть. Например, ввод ls *.pdf в каталоге белков (который содержит только файлы с именами, заканчивающимися на .pdb ) приводит к сообщению об ошибке, что файл с именем *.pdf отсутствует. Однако обычно такие команды, как wc и ls, видят списки имен файлов, соответствующих этим выражениям, но не сами подстановочные знаки. Именно оболочка, а не другие программы, занимается раскрытием подстановочных знаков.

Список имен файлов, соответствующих шаблону

  1. ls *t*ane.pdb
  2. ls *t?ne.*
  3. ls *t??ne.pdb
  4. этан.*

Решение

Решение 3.

1. показывает все файлы, имена которых содержат ноль или более символов (*), за которыми следует буква t, затем ноль или более символов (*), за которыми следует ane.pdb. Это дает этан.pdb метан.pdb октан.pdb пентан.pdb .

2. показывает все файлы, имена которых начинаются с нуля или более символов ( * ), за которыми следует буква t , затем один символ ( ? ), затем ne. за которым следует ноль или более символов ( * ). Это даст нам octane.pdb и pentane.pdb, но не соответствует ничему, что заканчивается на thane.pdb.

3. устраняет проблемы варианта 2, сопоставляя два символа ( ?? ) между t и ne . Это решение.

4. показывает только файлы, начинающиеся с этана. .

Подробнее о подстановочных знаках

У Сэма есть каталог, содержащий данные калибровки, наборы данных и описания наборов данных:

Прежде чем отправиться на очередную экскурсию, она хочет создать резервную копию своих данных и отправить несколько наборов данных своему коллеге Бобу. Для выполнения работы Сэм использует следующие команды:

Помогите Сэму, заполнив пустые поля.

Полученная структура каталогов должна выглядеть так

ls — одна из основных команд, которую должен знать любой пользователь Linux.

Команда ls выводит список файлов и каталогов в файловой системе и показывает подробную информацию о них. Это часть основного пакета утилит GNU, который устанавливается во всех дистрибутивах Linux.

Эта статья покажет вам, как использовать команду ls, на практических примерах и подробных объяснениях наиболее распространенных параметров ls.

Синтаксис команды ls следующий:

При использовании без параметров и аргументов ls отображает список имен всех файлов в текущем рабочем каталоге:

Файлы перечислены в алфавитном порядке в таком количестве столбцов, которое может поместиться на вашем терминале:

Чтобы получить список файлов в определенном каталоге, передайте путь к каталогу в качестве аргумента команде ls. Например, чтобы просмотреть содержимое каталога /etc, введите:

Вы также можете передать несколько каталогов и файлов, разделенных пробелом:

Если у пользователя, с которым вы вошли в систему, нет прав на чтение каталога, вы получите сообщение о том, что ls не может открыть каталог:

Команда ls имеет несколько параметров. В следующих разделах мы рассмотрим наиболее часто используемые параметры.

Вывод по умолчанию команды ls показывает только имена файлов и каталогов, что не очень информативно.

Опция -l (нижняя буква L) указывает ls печатать файлы в формате длинного списка.

При использовании формата длинного списка вы можете увидеть следующую информацию о файле:

  • Тип файла.
  • Права доступа к файлу.
  • Количество жестких ссылок на файл.
  • Владелец файла.
  • Группа файлов.
  • Размер файла.
  • Дата и время.
  • Имя файла.

Вот пример:

Давайте объясним наиболее важные столбцы выходных данных.

Первый символ показывает тип файла. В этом примере первым символом является -, что указывает на обычный файл. Значения для других типов файлов следующие:

  • -- Обычный файл.
  • b – заблокировать специальный файл.
  • c — специальный файл символов.
  • d — Каталог.
  • l — символическая ссылка.
  • n — сетевой файл.
  • p – FIFO.
  • s – сокет.

Следующие девять символов показывают права доступа к файлу. Первые три символа предназначены для пользователя, следующие три — для группы, а последние три — для остальных. Вы можете изменить права доступа к файлу с помощью команды chmod.Символ разрешения может принимать следующее значение:

  • r — Разрешение на чтение файла.
  • w — разрешение на запись в файл.
  • x — разрешение на выполнение файла.
  • s - бит setgid.
  • t – липкий бит.

В нашем примере rw-r--r-- означает, что пользователь может читать и записывать файл, а группа и другие пользователи могут только читать файл. Цифра 1 после символов разрешения — это количество жестких ссылок на этот файл.

Следующие два поля root root показывают владельца файла и группу, за которыми следует размер файла ( 337 ), показанный в байтах. Используйте параметр -h, если вы хотите печатать размеры в удобочитаемом формате. Вы можете изменить владельца файла с помощью команды chown.

4 октября 11:31 — дата и время последней модификации файла.

Последний столбец — это имя файла.

По умолчанию команда ls не показывает скрытые файлы. В Linux скрытый файл — это любой файл, начинающийся с точки ( . ).

Чтобы отобразить все файлы, включая скрытые, используйте параметр -a:

Как мы уже упоминали, по умолчанию команда ls выводит список файлов в алфавитном порядке.

Опция --sort позволяет сортировать выходные данные по расширению, размеру, времени и версии:

  • --sort=extension (или -X ) — сортировка в алфавитном порядке по расширению.
  • --sort=size (или -S ) — сортировка по размеру файла.
  • --sort=time ( или -t ) — сортировка по времени модификации.
  • --sort=version (или -v ) — естественная сортировка номеров версий.

Если вы хотите получить результаты в обратном порядке сортировки, используйте параметр -r.

Например, чтобы отсортировать файлы в каталоге /var по времени модификации в обратном порядке сортировки, который вы бы использовали:

Стоит отметить, что команда ls не показывает общее пространство, занимаемое содержимым каталога. Чтобы получить размер каталога, используйте команду du.

Опция -R указывает команде ls рекурсивно отображать содержимое подкаталогов:

Команда ls выводит информацию о файлах и каталогах.

Для получения дополнительной информации о ls посетите страницу GNU Coreutils или введите man ls в своем терминале.

Читайте также: