Рейтинг@Mail.ru

Наши друзья и партнеры

купить дешевый 
компьютер родом из Dhgate.com






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Команды манипулирования файлами

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

touch

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

Примеры

Для создания файла под названием testfile в текущем каталоге выполните следующую команду:

touch testfile

Для создания testfile в каталоге /u/testuser/testdir, выполните следующую команду:

touch /u/testuser/testdir/testfile

chmod

У вас может возникнуть необходимость модифицировать права доступа к каталогу или к файлам как для того, чтобы обезопасить их, так и для того, чтобы сделать их доступными. Для модификации прав доступа к файлу или каталогу можно использовать команду chmod. Права доступа в UNIX указываются в восьмеричной форме (числами от 0 до 7). Права доступа для файла или каталога можно указать следующим образом:

р Владелец. Пользователь, Который создал файл

р Группа. Группа, к Которой принадлежит владелец

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

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

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

Комбинация указанных трех битов выражается восьмеричным числом и используется для назначения прав доступа. Вес бита, ассоциированного с чтением, равен 4, вес бита, ассоциированного с записью, равен 2 и вес бита, ассоциированного с выполнением, равен 1. Значение права доступа вычисляется следующим образом:

(4 * значение бита чтения) + (2 * значение бита записи) + (1 * значение бита выполнения)

Значение права доступа может варьироваться от 0 (нельзя читать, нельзя писать, нельзя выполнять) до 7(можно читать, писать и выполнять).

Например, если вы хотите обеспечить чтение и запись, но не допустить выполнения, то значение будет каким:

(4 * 1) + (2 * 1) + (1 * 0) = б

Следует знать, что право на выполнение для каталога означает, что каталог доступен. То есть, можно хднять операции над файлами, размещенными в данном каталоге. Если вы даете право на запись в юге, то пользователь сможет читать, писать, удалять и выполнять файлы в данном каталоге, независимо от прав доступа для отдельных файлов.

С помощью команды chmod указываются новые права доступа, Которые вы хотите присвоить файлу или My. Новые права доступа можно указать одним из двух способов:

  • Как трехзначный восьмеричный код
  • в символьном режиме

Примеры

Если вы хотите, чтобы testfile имел следующие права доступа: владелец - на чтение, запись и выполнение, группа - только на чтение и остальные - только на выполнение, выполните следующую команду:

chmod 741 testfile

При работе в символьном режиме необходимо указать следующее:

  • Чье (владельца, группы или остальных) право доступа вы хотите изменить
  • Какую операцию (+ (добавление), - (запрещение) или = (уравнивание)) вы хотите выполнить над кодом прав доступа
  • Тип доступа (г, w, x и т.д.)

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

chmod 660 testfile

Если вы хотите добавить права на запись для группы для файла testfile в текущем каталоге (предполагая, что текущий код прав доступа для testfile равен 741), выполните следующую команду:

chmod g+w testfile

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

chmod o-r testfile

Если вы хотите гарантировать миру (остальным) такие же права доступа для testfile в текущем каталоге, что и для группы, выполните следующую команду:

chmod o=g testfile

ПРИМЕЧАНИЕ

Модификация прав доступа не оказывает никакого влияния на привилегированного пользователя (root). Привилегированный пользователь имеет доступ ко всем файлам и каталогам, независимо от данных вами прав доступа.

chgrp

Если вы хотите изменить группу, Которой принадлежит файл, то используйте команду chgrp. Группа должна быть одной из групп, к Которой принадлежит владелец. То есть, группа должна быть либо первичной группой, либо одной из вторичных групп владельца.

Примеры

Предположим, что пользователь testuser владеет файлом testfile и группа файла - staff. Также предположим, что testuser принадлежит к группам staff и devt. Для изменения владельца testfile с staff на devt выполните следующую команду:

chgrp devt testfile

chown

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

ПРЕДОСТЕРЕЖЕНИЕ

В системах UNIX с дисковыми квотами менять владельца файла или каталога может только привилегированный пользователь.

Примеры

Если файлом testfile владеет пользователь testuser, то передача права владения файлом пользователю friend требует выполнения команды

chown friend testfile

rm

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

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

  • -i для интерактивного удаления файлов.
  • -f для удаления файлов без какого-либо сообщения. Не будет генерироваться никаких сообщений как в том случае, когда файл не существует, так и в том случае, когда у вас нет разрешения на удаление одного или нескольких файлов.
  • -к для удаления файлов в каталоге и самих каталогов рекурсивно.

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

Примеры

Если вы хотите удалить из текущего каталога все файлы, имя Которых начинается с test, выполните следующую команду:

rm test* Однако, если вы ошибетесь при печати и введете следующее:

rm test * то из-за наличия шаблона, указывающего на все файлы, - * (звездочки), вы удалите все файлы.

ПРЕДОСТЕРЕЖЕНИЕ

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

 

Во избежание подобных ошибок используйте флаг -i, указывающий на необходимость запуска команды пп в интерактивном режиме. В данном режиме система будет спрашивать подтверждения, прежде чем удалять файл. Система удалит файл только после подтверждения вводом "у" Ниже приведен диалог, Который может состояться с системой, если вы хотите удалить из текущего каталога два файла testfilel и testfile2, используя флаг -i с командой rm.

rm -i testfile*

Remove file testfilel? у

Remove file testfile2? у

Флаг -f используется с командой пп для подавления каких бы то ни было сообщений от команды. Обычно, если ошибиться в наименовании, команда rm отображает сообщения о том, что файла нет. Однако флаг -f заставляет пп не отображать сообщений Если выполнить следующую команду

rm -f testfile

то файл testfile будет удален, если он есть, и не будет сделано ничего, если файла нет В любом случае команда пп не выдаст никаких сообщений Кроме того, команда пп -f всегда возвращает нулевой код возврата. Флаг -г используется для удаления файлов из каталога рекурсивно, включая каталоги и подкаталоги Если в текущем каталоге есть подкаталог с названием testdir и тот, в свою очередь, включает файлы testfilel и testfile2, то выполнение следующей команды удалит как файлы testfilel и testfile2, так и каталог testdir

rm -r testdir

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

Команда пп обрабатывает жесткие ссылки на файлы по-иному Если в текущем каталоге есть testfilel, то для создания файла под названием testfile2, Который является жесткой ссылкой на testfilel, выполните следующую команду:

ln testfilel testfile2

Команда создаст два идентичных файла testfilel и testfile2. Если вы теперь выполните следующую команду. ls -l testfile* то получите результат:

-rw-r-r- 2 testuser staff 10 Nov 3 14:28 testfilel

-rw-r-r- 2 testuser staff 10 Nov 3 14:28 testfile2

Здесь и testfilel, и testfile2 указывают на количество ссылок, равное 2, поскольку они связаны жесткой ссылкой. Теперь, если вы удалите файл testfilel командой rm

rm testfilel

то выполнятся два действия - удаление файла testfilel и уменьшение счетчика связей

testfile2 с 2 на 1. При повторном выполнении команды ls будет отображено:

-rw-r-r- I testuser staff 10 Nov 3 15:38 testfile2

где число ссьшок testfile2 равно 1.

mv

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

Ниже следует список флагов, Которые можно использовать с командой mv:

- -1 для интерактивного перемещения или переименования файлов.

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

Команда mv принимает два аргумента. Первый аргумент - это имя исходного файла или каталога. Второй аргумент -- это результирующий файл или каталог. Однако поведение команды mv зависит от того, существует ли результирующий каталог или файл.

Если файлы перемещаются внутри одной и той же файловой системы, то все ссылки на другие файлы сохраняются. Но если вы перемещаете файлы между файловыми системами, то ссылки не сохраняются.

Примеры

Для переименования файла в текущем каталоге воспользуйтесь следующей командой:

mv source_file dest_file

Если файл dest_file не существует, то при копировании будет создан новый файл dest_file. Если dest_file существует и вы имеете право на запись в него, то source_file копируется в dest_file и затем удаляется. С другой стороны, если у вас нет права на запись, то mv не делает ничего.

Для перемещения source_file из текущего каталога в каталог /u/testuser/target_dir с сохранением имени выполните следующие команды:

mv source_file /u/testuser/target_dir mv source_file /u/testuser/target_dir/.

Если файл уже существует в /u/testuser/target_dir, то существующий файл переписывается. Для перемещения source_file из текущего каталога в каталог /u/testuser/target_dir с именем target_file

выполните следующую команду:

mv source_file target_dir/target_file

Если вы не уверены в том, существует ли файл target_file, то задействуйте флаг -i:

mv -i source_file target_dir/target_file

Если файл targct_file существует, то система запросит подтверждение на перемещение файла. Точка (.) как имя результирующего файла указывает, что исходный файл должен сохраниться. Такое соглашение особенно полезно, если вы хотите переместить в другой каталог несколько файлов. Если необходимо переместить все файлы с именами, начинающимися на test, в каталог /u/testuser/target_dir, выполните следующую команду:

mv test* /u/testuser/target_dir/.

Для переименования каталога sourcc_dir в /u/testuser/target_dir выполните команду:

mv /u/guhas/source_dir /u/testuser/dest_dir

Если каталог dest_dir не существует, то каталог /u/testuser/source_dir переименовывается в /u/testuser/ dest_dir. Если /u/testuser/dest_dir существует и у вас есть разрешение на запись в него, то все файлы и подкаталоги из /u/testuser/source_dir перемещаются в /us/testuser/dest_dir.

ср

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

Ниже следует перечень флагов, использующихся в команде ср:

р -р для сохранения даты и времени модификации, а также кода прав доступа исходного файла.

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

р -h для следования символическим ссылкам.

р -r для копирования файлов из указанных каталогов и их подкаталогов. Специальные файлы, такие как связанные, обрабатываются точно так же, как и регулярные.

Примеры

Вы можете выполнить следующую команду для копирования source_ffle в target__ffle из текущего каталога:

ср source_file target_file

Если вы хотите скопировать source_file в каталог /u/testuser/target_dir с сохранением имени файла, то выполните следующую команду:

ср source_file /u/testuser/target_dir/.

Для копирования всех файлов из каталога /u/testuser/source_dir в каталог /u/testuser/target_dir с сохранением имен файлов, времени последней модификации и прав доступа, выполните следующую команду:

ср -р /u/testuser/source_dir/* /u/teatuser/target/dir/.

Команда не будет копировать подкаталоги и файлы в подкаталогах. Для копирования всех файлов в каталоге и в подкаталогах при сохранении времени последней модификации и прав доступа используйте команду:

ср -r /u/testuser/source_dir /u/testuser/target/dir/.

Если вам кажется, что результирующий файл может уже существовать, используйте флаг -i. Ниже приведен диалог для копирования testfile из текущего каталога в каталог /u/testuser/testdir при условии, что testfile уже существует:

ср -i testfile /u/testuser/testdir/. overwrite /u/testuser/testdir/testfile? у

cat

Вы уже видели, что команда ср предоставляет возможность копировать один файл в другой. Однако команда не позволяет копировать в один и тот же файл множество файлов. Для конкатенации множества файлов в один существует команда cat. По умолчанию команда cat генерирует вывод в стандартный вывод и принимает ввод из стандартного ввода. Команда cat принимает в качестве аргументов одно или несколько имен файлов. Файлы конкатенируются в том порядке, в каком они указаны в списке аргументов.

Ниже перечислены несколько флагов, Которые можно использовать с командой cat:

р -b для устранения номеров строк из пустых строк при использовании флага -п.

р -е для отображения $ (знака доллара) в конце каждой строки, когда указан флаг -у.

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

р -q для подавления сообщений, если команда cat не может найти один или несколько входных файлов.

р -v для отображения непечатаемых символов в файле как печатаемых.

ПРЕДУПРЕЖДЕНИЕ

Если вы используете оператор перенаправления вывода {>) для перенаправления стандартного вывода из команды cat, то будьте внимательны и не используйте одно из вводных имен как имя файла вывода Если так сделать, то файл, из Которого осуществляется ввод, будет затерт. НеКоторые версии UNIX могут выдавать сообщение об ошибке, если вы каким-либо образом попытаетесь переписать файл.

При приеме ввода из стандартного ввода следует использовать Ctrl-D для указания конца ввода.

Примеры

В самой простой форме вы можете просто напечатать команду cat, что переведет вас в режим ввода. В режиме ввода можно ввести много строк, а затем Ctrl-D для сигнализации о конце ввода. Команда cat отобразит введенные строки:

cat

This is test line 1
This is test line 1
This is test line 2
This is test line 2
Ctrl d

Следует знать, что команда cat не обеспечивает какой-либо подсказки в приведенном выше случае. Если вы хотите отобразить файл под названием testfile в текущем каталоге на своем терминале, то выполните следующую команду:

cat testfile

В результате получится следующий вывод:

This is a test file

This does not contain anything meaningful

This is for demo only

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

cat testfile | more

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

cat testfilel testfile2 testfile3

Если вы хотите конкатенировать данные файлы в файл под названием testfile, используйте оператор перенаправления > следующим образом:

cat testfilel testfile2 testfile3 > testfile

Если testfile уже существует, то он будет затерт соединенными файлами testfilel, testfile2 и testfile3. Если testfile уже существует и вы хотите присоединить конкатенацию в конец существующего файла, то вместе использования оператора перенаправления > следует использовать оператор р (два последовательных знака больше) следующим образом:

cat testfilel testfile2 testfile2 р testfile

Если вы попытаетесь соединить файл или несколько файлов, из Которых один или несколько файлов не существуют, то команда cat соединит все доступные файлы и сгенерирует сообщение о несуществующих файлах, добавив его в конец файла. Если вы хотите соединить два файла, testfilel и testfile2, в файл testfile в текущем каталоге и ошибочно введете testfile2 как testtile2 при выполнении следующей команды:

cat testfilel testtile2 > testfile

то получите сообщение, похожее на следующее, и в testfile будет содержаться только то, что было в testfilel

cat: cannot open testtile2 (не могу открыть файл testtile2)

Если использовать флаг -q, то сообщения об ошибке не будет.

Если в текущем каталоге у вас есть файл, содержащий следующие строки (обратите внимание на то что последняя строка содержит специальные символы), то команда cat покажет следующее:

This is a test file

This file does not contain anything meaningful

This file is for demo only

^F^F^F^F^F

Если выполнить команду cat с флагом -п, то команда отобразит строки с номерами, но последняя строка со специальными символами отобразится как пустая:

cat -n testfile

1 This is a test file

2

3 This file does not contain anything meaningful

4 This is for demo only

5

Если вы хотите убедиться в том, что отображаемые пустые строки действительно не содержат какихлибо непечатаемых символов, то используйте с командой cat флаг -v< Такая команда обеспечит отображение непечатаемых символов:

cat -v testfile
This is a test file

This file does not contain anything meaningful
This is for demo only

^F^F^F^F^F

rcp

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

Имя файла на удаленном хосте предваряется идентификатором удаленного хоста, как в hostname:/dirname/
filename.
Знак двоеточия (:) используется как разделитель между именем хоста и именем файла.

Возможно также указать имя пользователя на удаленном хосте как username@hostname:/dirname/filename.
Знак at (@) используется как разделитель между именем пользователя и именем хоста. Однако имя пользователя не является обязательным. Если оно не указано, то имя пользователя на удаленном хосте считается таким же, как и на локальном хосте.

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

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

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

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

Ниже приведен перечень нескольких флагов, с Которыми работает команда гср:

  • -р для создания результирующего файла с временем и датой модификации исходного файла и с правами доступа исходного файла.
  • -r для рекурсивного копирования файлов при копировании каталогов.

ПРИМЕЧАНИЕ

Для того чтобы командой rcp пересылать файлы с или на удаленный хост, вы должны определить имя локального хоста в файле /etc/hosts.equiv на удаленном хосте или определить имя локального хоста и имя пользователя в файле. rhoste в начальном каталоге пользователя удаленном хосте.

Примеры

Если вы хотите скопировать testfile из текущего каталога в testfile в каталоге testdir, Который находится в начальном каталоге на удаленном хосте otherhost, выполните следующую команду:

rср testfile otherhost:testdir/testfile

Если имя пользователя на локальном хосте - testuser, то данная команда будет считать, что имя пользователя на удаленном хосте также testuser. Если имя пользователя testuser на удаленном хосте не существует и вы должны использовать на удаленном хосте имя newtestuser, то выполните следующую команду

rср testfile newtestuser@otherhost:testdir/testfile

Если вы должны переслать testfile из удаленного хоста otherhosti на другой удаленный хост otherhostZ, причем необходимо сохранить существующую дату, время модификации и код прав доступа, выполните следующую команду:

rср -р testuserl@otherhostl:testfile testuser2@otherhost2:testfile

Команда скопирует testfile из начального каталога пользователя testuseri на удаленном хосте otherhostiв testfile в начальном каталоге testuser2 на удаленном хосте othcrhost2.

Если нужно скопировать все файлы в каталоге /u/testuser/testdir с удаленного хоста otherhost в текущий каталог на локальный хост, то выполните следующую команду:

rср testuser@otherhost:/u/testuser/testdir/*

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

rср -r testuser@otherhost:/u/testuser/testdir/* .

ln

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

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

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

Флаги, которые можно использовать с командой ln, таковы:

  • -s служит для создания мягкой (символической) ссылки на другой файл или каталог. В мягкой ссылке файл-ссылка содержит строку имени исходного файла. Когда выполняется операция над файлом-ссылкой, то имя исходного файла в ссылке используется для указания на исходный файл.
  • -f гарантирует, что результирующее имя файла будет заменено именем ссылки, если файл уже существует.

По умолчанию команда ln создает жесткую ссылку.

Примеры

Если необходимо связать testfilel с testfile2 в текущем каталоге, выполните следующую команду:

ln testfilel testfile2

Команда создает жесткую ссылку от testfile2 к testfilel. В данном случае, если один из файлов удаляется, то другой останется нетронутым.

Если testfile находится в текущем каталоге и связывается с testfile в каталоге /u/testuser/testdir, выполните команду

ln testfile /u/testuser/testdir

Для создания символической ссылки testfilel в текущем каталоге выполните следующую команду:

ln -s testfilel testfile2

Команда создает ссылку testfile2, Которая будет содержать имя testfilel. Если удалить testfilel, то вы останетесь с осиротевшим testfile2, указывающим в никуда.

Если необходимо связать все файлы текущего каталога с файлами в другом каталоге, /u/testuser/testdir, выполните следующую команду:

ln * /u/testuser/testdir/.

Команды манипулирования каталогами

После того как вы стали пользователем операционной системы UNIX, вам назначается начальный каталог - обычно /u/username. Для организации всех файлов следует в начальном каталоге создать необходимые подкаталоги. Здесь мы представляем команды для создания и уничтожения каталогов.

mkdir

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

Ниже приводится перечень флагов, Которые можно использовать с командой mkdir:

  • -р для создания всех каталогов, заданных в полном имени указанного каталога, если они еще не
  • существуют.
  • -m позволяет задать права доступа создаваемому каталогу.
    Примеры

Если текущий каталог - /u/testuser, то команда

mkdir temp

создаст каталог под названием temp в каталоге /u/testuser, с абсолютным маршрутом /u/testuser/temp.

Команда

mkdir /u/testuser/temp

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

mkdir ../temp

может использоваться для создания каталога /u/temp. Здесь .. (две последовательные точки) применяются как часть относительного пути для указания того, что каталог temp будет создан в каталоге на один уровень выше, то есть в /и.

Для создания в текущем каталоге testdirl и testdir2 выполните

mkdir testdirl /u/testuser/temp/testdir2

Которая создаст testdirl в текущем каталоге и testdirl в /u/testuser/temp (если он существует). В данном примере testdirl использует относительный путь, a /u/testuser/temp/testdir2 использует абсолютный путь. Если каталог testdir уже есть или если вы повторно пытаетесь создать каталог, то получите сообщение, похожее на следующее:

mkdir: cannot create testdir.
testdir: File exists

Если вы хотите создать каталог testdir в текущем каталоге и задать для него код доступа 770, выполните следующую команду:

mkdir -т 770 testdir

Если необходимо создать каталог testdir в текущем каталоге и подкаталог temp в testdir, создайте каждый из них отдельной командой:

mkdir -р testdir/temp

rmdir

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

Далее описан флаг, Который работает с командой rmdir:

р -р для удаления всех каталогов в указанном пути.
Примеры

Если текущим каталогом является /u/testuser и он содержит подкаталог temp, то для удаления temp выполните команду

rmdir temp

Если каталог temp не пуст, то будет выдано сообщение, подобное следующему:

rmdir: Directory temp is not empty.

Предположим, что вы находитесь в каталоге /u/testuser и что каталог содержит подкаталог testdir, a подкаталог testdir содержит подкаталог temp. Для удаления каталога testdir в текущем каталоге и подкаталога temp из testdir, выполните следующую команду (предполагая, что все файлы и каталоги из testdir уже удалены):

rmdir -р testdir/temp

Команды для получения информации о файлах

Каждый файл и каталог в UNIX обладает несколькими связанными атрибутами. UNIX предлагает ряд команд для определения и обработки этих атрибутов.

ls

Команда ls используется для выяснения различных атрибутов одного или нескольких файлов или каталогов. При использовании команды ls у вас должно быть право на чтение в каталоге. Команда ls генерирует вывод в стандартный вывод, Который можно перенаправить вывод в файл с помощью оператора перенаправления UNIX >.

Команде ls можно передать одно или несколько имен файлов или каталогов. Имена файлов и каталогов не обязательны. Если они не заданы, то UNIX обрабатывает текущий каталог.

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

Следует помнить, что файлы, начинающиеся с точки (.), командой ls не обрабатываются, если не задан флаг -а. Сказанное означает, что по умолчанию записи с . (одинарной точкой) и .. (двумя последовательными точками) не обрабатываются.

Ниже приведен список флагов, Которые можно использовать с командой ls:

  • -А для вывода всех записей в каталоге, за исключением . (единичная точка) и р (две последовательные точки).
  • -а для вывода всех записей, включая скрытые файлы (файлы, имена Которых начинаются с точки).
  • -b для отображения непечатаемых символов. Символы отображаются в восьмеричной записи (\nnn).
  • -с для использования времени последней модификации индексного дескриптора. При использовании с флагом -t, вывод будет отсортирован по дате последней модификации индексного дескриптора. При использовании с флагом -1, отображаемое время является временем последней модификации
    индексного дескриптора. Флаг -с следует использовать с флагами
    -t или -1.
  • -С для форматирования вывода в несколько вертикальных колонок. Такой метод является методом по умолчанию при выводе на терминал.
  • -d для вывода информации только об указанном каталоге. По умолчанию выводится также информация о файлах или подкаталогах в данном каталоге.
  • -е для отображения следующей информации для каждого указанного файла или каталога:

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

2. Число жестких ссылок

3. Владелец

4. Группа

5. Размер (в байтах)

6. Время последней модификации

7. Название каждого файла. Для специальных файлов поле размера содержит наименьший и наи больший (major and minor) номера устройства. Если файл является символической ссылкой, то путь ссылки печатается с предварительным -> (знак минус и знак больше). Отображаются и атрибуты символической ссылки

  • -f для
  • распечатки имени в каждом поле для каждого каталога, указанного в параметре каталога. Данный флаг отключает флаги -1, -t, -s и -г и включает флаг -а. Порядок распечатки определяется порядком, в Котором входы появляются в каталоге.
  • -F для размещения специальных символов перед разными типами файлов, а именно:

1. / (слэш) после каждого каталога

2. * (звездочка) если файл исполняемый

3. == (знак равенства) если файл является сокетом

4. | (знак канала) если файл является каналом (FIFO)

5. @ (знак at) для символической связи

-g отображает о файлах и каталогах следующую информацию:

1. Права доступа

2. Количество ссылок

3. Группа

4. Размер (в байтах)

5. Время последней модификации

  • -i для отображения номера индексного дескриптора в первой колонке отчета для каждого файла.
  • -1 для отображения следующей информации об указанных файлах и каталогах:

1. Права доступа

2. Количество ссылок

3. Владелец

4. Группа

5. Размер (в байтах)

6. Время последней модификации

  • -m для отображения вывода в формате с разделяющими запятыми.
  • -n для отображения следующей информации об указанных файлах и каталогах:

1. Права доступа

2. Количество ссылок

3. Идентификатор владельца

4. Идентификатор группы

5. Размер (в байтах)

6. Время последней модификации

- -о для отображения следующей информации об указанных файлах и каталогах:

1. Права доступа

2. Количество ссылок

3. Идентификатор владельца

4. Размер (в байтах)

6. Время последней модификации

  • -р для помещения слэша (/) после каждого имени каталога.
  • -q для отображения непечатаемых символов в именах файлов как ? (вопросительный знак).
  • -r для изменения порядка сортировки на обратный. Если список отображается в порядке возрастания имен, то с данным флагом список будет отображаться в порядке убывания имен. Если список отображается в порядке убывания времени (с флагом -t), то есть самое последнее время отобража-
    ется первым, то список станет отображаться по возрастанию времени, самое старое событие
    будет первым.
  • -R для рекурсивного вывода имен всех подкаталогов текущего каталога.
  • -s для указания размера файлов и каталогов в килобайтах.
  • -t для сортировки списка записей по времени последней модификации (последняя модификация идет первой), а не по имени.
  • -u для использования времени последнего доступа вместо времени последней модификации. Если используется с -1, то вместо времени последней модификации отображается время последнего доступа. Если используется с -1, то вывод сортируется по времени последнего доступа вместо времени
    последней модификации. Данный флаг должен использоваться с флагами -1 и
    -t.
  • -х для сортировки вывода горизонтально в формате с несколькими колонками.
  • -1 для вывода одной записи в строку.

Сведения о правах доступа, Которые отображаются командой Is, при указании неКоторых флагов, таких как -1, состоят из 10 символов, означающих следующее:

  • Байт 1: d означает каталог, b означает блок-ориентированный файл устройства (block special file), с означает байт-ориентированный файл устройства, 1 означает символическую ссылку, р означает файл канала (FIFO), s означает локальный сокст, - означает обыкновенный файл (например, содержащий текст).
  • Байт 2: r, если владельцу предоставлено право чтения, - (перенос), если право чтения владельцу не предоставлено.
  • Байт 3: w, если владельцу предоставлено право записи, - (перенос), если право записи владельцу не предоставлено.
  • Байт 4: х, если владельцу предоставлено право выполнения, - (перенос), если право выполнения владельцу не предоставлено.
  • Байт 5: r, если группе предоставлено право чтения, - (перенос), если право чтения группе не предоставлено.
  • Байт 6: w, если группе предоставлено право записи, - (перенос), если право записи группе не предоставлено.
  • Байт 7: х, если группе предоставлено право выполнения, " (перенос), если право выполнения группе не предоставлено.
  • Байт 8: r, если миру предоставлено право чтения, - (перенос), если право чтения миру не предоставлено.
  • Байт 9: w, если миру предоставлено право записи, - (перенос), если право записи миру не предоставлено.
  • Байт 10: х, если миру предоставлено право выполнения, - (перенос), если право выполнения миру не предоставлено.

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

Примеры

Предположим, что в текущем каталоге есть следующие файлы и каталоги: .doti, testi, test2, test3, test4. Предположим также, что test2 является каталогом.

Простейшая форма команды ls распечатывает список файлов и каталогов в текущем каталоге:

ls
testi test2 test3 test4

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

ls -a
. .. .doti testi test2 test3 test4

В данном списке нет никаких сведений о файлах. Для получения детализированного списка всех файлов и каталогов выполните команду с флагом -а:

ls -la
total 56

drwxrwx-- 3 testuser author 3072 Nov 24 17 35 .
drwxr-xr-x 36 root system 2048 Nov 23 19 51 ..

рrw-r-r- I testuser author 0 Nov 24 14 54 .doti
"rw-r-r- I testuser author 10 Nov 24 17 36 testi
drwxr-xr-x 2 testuser author 512 Nov 24 17 32 test2

рrw-r--r~ I testuser author 0 Nov 24 14 58 test3

рrw-r--r" I testuser author 0 Nov 24 17 33 test4
"rw-r-r- I testuser author 11885 Nov 24 11 50 test5

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

ls -ald
drwxrwx- 3 testuser author 3072 Nov 24 17:15

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

До сих пор в команде ls мы не указывали каких-либо имен файлов или каталогов. Если вы хотите найти все записи, Которые начинаются на test, укажите test* как имя входа:

ls -la test*

Обратите внимание на то, что записи . (единичная точка), .. (две последовательные точки) и .doti не распечатались, поскольку символ-заместитель - * (звездочка) не совпадает с символом точки (.).

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

ls -am
., ... .doti, testi, test2, test3, test4, test5

Если вы хотите подучить список записей и среди них уточнить имена каталогов при помощи наклонной черты (/), то выполните команду с флагом -р:

ls -ap

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

Если вы хотите получить список записей в порядке убывания имен (в обратном порядке), выполните следующую команду с флагом -r

Для получения списка всех файлов в текущем каталоге, а также файлов во всех подкаталогах выполните команду с флагом -R:

ls -1R
total 40

Далее приведены примеры команды ls с и без флага -u. Список без флага -u отображает время последней модификации, тогда как список с флагом -и отображает время последнего доступа:

find

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

Формат команды find следующий:

find имя-каталога поисковое выражение

Имя каталога может быть полным путем или . (единичной точкой) для текущего каталога. Ниже представлен список условий, Которые можно использовать с командой find:

  • -name filename для указания имени файла (включая символы шаблонов), Которое будет использоваться для поиска. Как часть шаблонов можно использовать диапазон значений. Если вы хотите использовать шаблоны, то должны указывать их с помощью кавычек. Например, "test*" будет искать все файлы, начинающиеся на test. Если указать "test[l-2]", то будут найдены файлы, Которые начинаются на test и имеют в конце 1 или 2, как testi и test2.
  • -size Number для поиска файла по размеру. Размер файла указывается в блоках. Для указания на то, что вам нужны файлы, меньшего размера, чем указанный, задействуйте - (знак минус) перед размером; для указания на то, что вам нужны файлы, большего размера, чем указанный, задействуйте + (знак плюс) перед размером. Например, размеру -size 5 будут удовлетворять все файлы, имеющие
    размер 5 блоков (размер файла при сравнении всегда округляется вверх к следующему ближайшему
    блоку), размеру -size -5 будут удовлетворять файлы, размером меньше или равным пяти блокам и размеру -size +5 будут удовлетворять файлы, Которые имеют размер более 5 блоков.
  • -size Numberc для поиска файла по размеру в байтах, Который будет использоваться для поиска. То есть, если вы указали в конце числа с, то размер файла будет восприниматься как количество байтов. Для указания на то, что вам нужны файлы, меньшего размера, чем указанный, задействуйте - (знак минус) перед размером и для указания на то, что вам нужны файлы, большего размера, чем указанный, задействуйте + (знак плюс) перед размером. Например, размеру -size 50с будут удов-
    летворять все файлы, имеющие размер 50 байт, размеру
    -size -50с будут удовлетворять файлы, размером меньше или равным пятидесяти байтам и размеру -size +50 будут удовлетворять файлы, Которые имеют размер более 50 байтов.
  • -prune для того, чтобы команда find не просматривала каталоги рекурсивно. По умолчанию find рекурсивно обрабатывает все каталоги и подкаталоги ниже указанного.
  • -atime number для поиска файлов, к Которым происходил доступ в указанное число 24-часовых периодов. Номер 24-часового периода вычисляется добавлением 1 к указанному периоду. О означает последние 24 часа.
  • -mtime number для поиска файлов, Которые модифицировались в указанное число 24-часовых периодов. Номер 24-часового периода вычисляется добавлением 1 к указанному периоду. О означает последние 24 часа.
  • -ctime number для поиска файлов, чьи индексные дескрипторы были модифицированы в указанное число 24-часовых периодов. Номер 24-часового периода вычисляется добавлением 1 к указанному периоду. О означает последние 24 часа.

р -type filetype для поиска файла конкретного типа. Далее идет список типов, Которые допустимо использовать:

  • b - Блок-ориентированный файл
  • с - Байт-ориентированный файл
  • d - Каталог
  • f - Регулярный файл
  • l - Символическая ссьглка
  • р - FIFO (именованный канал)
  • s - Сокет
  • -user - это имя пользователя для поиска файлов, чей владелец совпадает с указанным именем.
  • -perm permission для поиска файлов с указанным кодом доступа. Код прав доступа указывается восьмеричным числом длиной до 3 цифр. Если коду прав доступа не предшествует знак - (перенос), то ищется точное совпадение кода прав доступа, указанного в команде и кода прав доступа файла. Если коду прав доступа предшествует знак - (перенос), то код прав доступа файла соединяется с кодом
    прав доступа команды через
    AND (побитовое "и"). Например, если вы хотите найти файлы с правом владельцу читать, то используйте -perm -400.
  • -newer filename для поиска файлов, у Которых время модификации большее того, что указано в имени файла.
  • -group groupname для поиска файлов, Которые принадлежат к указанной группе.
  • -inum Number для поиска файлов, чьи количества индексных дескрипторов совпадают с указанным количеством индексных дескрипторов.
  • -links Number для поиска файлов с указанным числом ссылок. Для указания на то, что вам нужны файлы, с меньшим количеством ссылок, чем указанное, задействуйте - (знак минус) перед количеством и для указания на то, что вам нужны файлы, с большим количеством ссылок, чем указанное, задействуйте + (знак плюс) перед количеством.
  • -ls для печати текущего пути вместе со следующими атрибутами:
  • Номер индексного дескриптора
  • Размер в килобайтах (1024 байта)
  • Код прав доступа
  • Количество жестких ссылок
  • Владелец
  • Группа
  • Размер в байтах
  • Время модификации
  • -exec command для выполнения команды. Для выполнения команды над списком файлов, найденHbix командой find, используйте {} с последующим \; (обратный слэш и точка с запятой).
  • -ok command для выполнения команды. Для выполнения команды над списком файлов, найденных командой find, используйте {} с последующим \; (обратный слэш и точка с запятой). UNIX, прежде чем выполнять команду, потребует подтверждение,
  • -print для печати вывода, сгенерированного в результате поиска.

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

- operator -a operator для поиска файлов, Которые удовлетворяют обоим указанным условиям.

- operator -o operator для поиска файлов, Которые удовлетворяют одному из указанных условий.

- !operator для поиска файлов, Которые не удовлетворяют указанным условиям.

Примеры

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

find . -print

./test5

./testi

./test3

./test4

./test2

,/test2/test21

,/test2/test22

./.doti

Если вы хотите найти в текущем каталоге все файлы, Которые были модифицированы в последние 24 часа, воспользуйтесь оператором -mthne:

find . -mtime 0 -print

./test5

./testi

./test3

./test4

./test2

./test2/test21

./test2/test22

./.doti

Для поиска файла с кодом прав доступа 600 (право на чтение и запись имеет только владелец), выполните следующую команду с оператором -реrm:

find . -perm 600 -print
./testi

В данном случае отображаются только файлы с разрешением, равным точно 600. Но если вы хотите найти файл, владелец Которого может и читать, и записывать в файл, выполните команду, используя - (перенос) перед 600:

find . -perm -600 -print

./test5

./testi

./test4

./test2

./test2/test21

./test2/test22

./.doti

Если вас интересуют только каталоги, используйте оператор -type и выполните следующую команду:

find . type d -print

./test2

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

find . -ls

Для поиска всех файлов, Которые начинаются на test, используйте оператор -name и выполните следующую команду:

find . -name "test*" -print

./test5

./testi

./test3

./test4

./test2

./test2/test21

,/test2/test22

Как видите, команда find просматривает и подкаталог test2. Если хотите ограничить поиск только текущим каталогом, без подкаталогов, то используйте оператор -prune и выполните следующую команду:

find . -name "test*" -prune -print
./test5
./test1
./test3
./test4
./test2

Для поиска файлов в текущем каталоге, Которые созданы позже, чем файл test1, воспользуйтесь оператором -newer и выполните следующую команду:

find . -newer testi -print

./test5

./test2/test21

С другой стороны, если вы хотите получить список файлов, созданных раньше, чем testi, то используйте оператор отрицания ! в сочетании с оператором -newer, как в следующей команде:

find . ! -newer test1 -print

./test3

./test4

./test2

,/test2/test22

./.doti

Если вы хотите получить список всех файлов, имеющих размер точно 10 байтов, воспользуйтесь оператором -siize и выполните следующую команду:

find . -size -10с -print
./test1

Если вы хотите получить список всех файлов, имеющих размер меньший, чем 10 байтов, выполните следующую команду (команда в точности похожа на предыдущую, за исключением знака переноса перед 10):

find . -size -10с -print

./test3

./test4

./test2/test21

./test2/test22

./.dot1

Если вы хотите получить список всех файлов с нулевым размером, то выполните команду find с параметром -ехес:

Если вы хотите удалить все файлы с нулевым размером, но с подтверждением об удалении каждого перед реальным удалением, выполните следующую команду с оператором -ok:

find . -size -ok rm {} \;

< rm ... ./test3 > (yes)? у

< rm ... ,/test4 > (yes)? n

< rm ... ./test2/test21 > (yes)? у

< rm ... ./test2/test22 > (yes)? у

< rm ... ./.doti > (yes)? у

Здесь вы решили не удалять файл test4.

Все приведенные выше примеры использовали одновременно только один оператор Команду find можно выполнять со сложными условиями, объединив друг с другом несколько операторов с помощью условий or или and. Если вы хотите найти все файлы, Которые начинаются на test и имеют нулевой размер, выполните следующую команду:

find . -name 'test*' -size Oc -print

./test3

./test4

./test2/test21

./test2/test22

В данном примере объединены два разных оператора. Один и тот же оператор можно использовать несколько раз с условиями or или and. Если вам нужно найти все файлы в текущем каталоге, размер Которых больше нудя, но меньше 50 байтов и чьи имена начинаются на test, выполните следующую команду:

find . -size +0c -a -size -50с -name 'test*' -exec ls -1 {} \;

-rw---- 1 testuser author 10 Nov 24 17s 36 ./test1

file

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

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

Если аргумент File специфицирует выполняемый или объектный модуль и номер версии равен или больше 0, то команда file выводит отметку о версии.

Команда file использует файл /etc/magic для идентификации файлов, Которые содержат сигнатуру (числовую или строковую константу), указывающую на тип файла.

Примеры

Если у вас в каталоге есть файл под названием letter, Который содержит письмо к другу, то выполнение команды

file letter

отобразит следующий результат:

letter: commands test

Если у вас есть файл под названием prog, Который является выполняемой программой, и вы работаете

на IBM RISC 6000 AIX версии 3.1, то выполнение команды

file prog

отобразит следующий результат (если тип системы RISC 6000):

prog: executable (RISC System/6000 V3.1)

Если вы находитесь в каталоге /dev, Который содержит специальные файлы, то выполнение команды

file hd1

для файла под названием hd1 (Который является диском с файловой системой) отобразит следующий результат:

hdl: block special

Команды, связанные с содержимым файлов

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

more

Команда more применяется для вывода содержимого файла на экран. По умолчанию команда more отображает по одному экрану, заполненному данными. Однако число строк на экране можно модифицировать. Команда more делает паузу после вывода каждой страницы. Для продолжения и просмотра следующей страницы нажмите пробел. Для перехода к новой строке нажмите Return или Enter. В основном команда more
используется в сочетании с другими командами, вывод Которых поступает в команду more для отображения.

Далее приведен перечень флагов, которые работают с командой more:

  • d для того, чтобы команда more спрашивала, что делать: прекратить просмотр, продолжить или обратиться за помощью.
  • -f для подсчета логических строк в файле.
  • -number для установки размера окна отображения в number
  • -р для отключения прокрутки. Задание флага приведет к тому, что команда more будет очищать экран в начале каждой страницы.
  • -s для отображения только одной пустой строки в случае, когда в файле есть много последовательных пустых строк.
  • -u для отображения строк без специальных атрибутов, если строки в файле имеют специальные атрибуты.
  • -v для предотвращения отображения неотображаемых графически символов.
  • -w для предоставления возможности вернуться назад после достижения конца файла. По умолчанию more прекращает работу при достижении конца файла.
  • +number для начала отображения со строки number в файле.
  • +g для начала отображения с конца файла и пролистывания в обратном направлении.
  • +/pattern для начала просмотра файла со строки, в Которой впервые встретился pattern,

Как мы уже говорили, команда more делает паузу в конце каждой страницы отображения. Существует несколько подкоманд, Которые можно использовать во время пауз. Подкоманды управляют дальнейшим поведением команды more. Эти подкоманды таковы:

  • mmberspacebar
  • для перехода вперед на страницу number или на один экран, если number не указано.
  • numberd
  • для перехода вперед на количество строк по умолчанию (обычно на 11), если number не указано, и на number строк, если number указано.
  • numbez
  • для перехода вперед на указанное число строк, если number указано. В противном случае переход вперед на один экран.
  • numbers
  • для пропуска указанного числа строк и отображения одной страницы. Если number не указано, то отображается следующая строка.
  • numberf
  • для перехода вперед на указанное число экранов. Если number не указано, то отображается следующий экран.
  • numberb
  • для возврата назад на указанное количество экранов. Если number не указано, то отображается предыдущий экран.
  • numberCtrl-b
  • или numberCtr-B для пропуска указанного количества экранов в обратном направлении. Если number не указано, то отображается предыдущий экран.
  • q для выхода из команды more.
  • v для вызова редактора vi.
  • number/expression для поиска выражения и его позиции. Число number указывает, какое по счету появление указанного выражения нас интересует. Если в файле данное выражение встречается меньшее число раз, чем указано number, то вывод остается неизменным.
  • numbern для поиска вперед указанного появления последнего введенного выражения. Если number не указано, то ищется следующее появление выражения и экран обновляется.
  • !command для запуска command с именем файла в качестве аргумента, если command указана. Если command не указана, то вы возвратитесь на подсказку оболочки. Затем можно использовать команду exit для возврата к команде more.
  • number:n для пропуска заданного по счету файла, считая от текущего, если команда more вызвана с несколькими файлами. Если указанный относительный номер файла недействителен, то more переходит к последнему файлу.
  • number:p для пропуска заданного по счету файла, считая назад от текущего, если команда more вызвана с несколькими файлами. Если указанный относительный номер файла не существует, то more переходит к первому файлу.
  • :f (с последующим нажатием клавиши Return) для отображения имени текущего файла и текущего номера строки в верхней части экрана.
  • :q или :Q (с последующим нажатием клавиши Return) для выхода из команды more.
  • . (единичная точка) для повторения последней выполненной команды.

Примеры

Давайте предположим, что у нас в текущем каталоге есть файл под названием filel. Если вы хотите вывести на экран filel, то используйте следующую команду:

more filel

This is the line 1

This is the line 2

This is the line 3

This is the line 4

This is the line 5

This is the line 6

This is the line 7

This is the line 8

This is the line 9

This is the line 10

This is the line 11

This is the line 13

This is the line 14

This is the line 15

This is the line 16

This is the line 17

This is the line 18

This is the line 19

This is the line 20

This is the line 21

This is the line 22

This is the line 23
-More-(91%)

В этом случае при достижении конца файла команда more прекращает работу. Если вы не хотите выходить из команды more, достигнув конца файла, задействуйте флаг -w. Это особенно полезно, если вы просматриваете файл, находящийся в процессе создания. Следующая команда показывает использование флага -w:

more -w filel

Если вы хотите начать просмотр с конца файла, а не сначала и просматривать его в обратном направлении, используйте флаг +g, как в следующей команде:

more +g filel

This is the line 3

This is the line 4

This is the line 5

This is the line 6

This is the line 7

This is the line 8

This is the line 9

This is the line 10

This is the line 11

This is the line 12

This is the line 13

This is the line 14

This is the line 15

This is the line 16

This is the line 17

This is the line 18

This is the line 19

This is the line 20

This is the line 21

This is the line 22

This is the line 23

This is the line 24

This is the line 25

рMore-(EOF)

Если вы хотите начать отображение файла со строки 20 filel, выполните следующую команду:

more +20 filel

This is the line 20

This is the line 21

This is the line 22

This is the line 23

This is the line 24

This is the line 25

Если вы хотите отобразить пять файлов: filel, file2, file3, file4, file5, выполните следующую команду:

more filel file2 file3 file4 file5

less

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

Ниже приведен список подкоманд, Которые используются после входа в команду less:

  • h для отображения списка доступных подкоманд.
  • пробел, или Ctrl-v, или Ctrl-f, или f для перехода по файлу вперед на один экран. Если перед подкомандой указать число, то переход произойдет на указанное количество строк
  • Return, или Ctrl-n, или Ctrl-e, или е, или j для перехода вперед на 1 строку. Если подкоманду предварить числом, то переход произойдет на указанное число строк.
  • Ctrl-b или b для возврата по файлу на один экран. Если подкоманду предварить числом, то переход назад произойдет на указанное количество строк.
  • Ctrl-D или d для перехода вперед на половину экрана (по умолчанию - на 11 строк). Если подкоманду предварить числом, то переход вперед произойдет на указанное число строк. Введенное число регистрируется как параметр по умолчанию для всех последующих команд d или u
  • g для перехода в начало файла. Если подкоманду предварить числом, то файл позиционируется на строку, указанную числом.
  • G для перехода в конец файла. Если подкоманду предварить числом, то файл позиционируется на строку, указанную числом.
  • р или % для перехода в начало файла. Если подкоманду предварить числом в диапазоне от 0 до 100, то позиционирование произойдет на строку, соответствующую проценту файла, указанному числом.
  • Ctrl-p, или Ctrl-k, или Ctrl-y, или к, или у для возврата назад на 1 строку. Если подкоманду предварить числом, то переход назад произойдет на указанное число строк.
  • Ctrl-u или u для перехода назад на пол-экрана (по умолчанию - на 11 строк). Если подкоманду предварить числом, то переход назад произойдет на указанное число строк. Новое число регистрируется как новое число по умолчанию для всех последующих команд d или u.
  • Ctrl-1, или Ctrl-r, или r для повторного вывода (обновления) текущего экрана.
  • mlowercaseletter для отметки позиции маркером lowercaseletter для последующего использования.
  • 'mlowercaseletter для перехода в позицию, отмеченную lowercaseletter, используя подкоманду m Если за ' следует знак ^, то less отображает начало файла. Если за ( следует $ (знак доллара), то less отображает конец файла.
  • number/pattern для позиционирования файла в на указанное появление pattern в файле. Для указания специальных действий используются следующие особые символы:
  • ! для поиска строк, Которые не содержат указанного шаблона.
  • * для поиска в нескольких файлах, если в вызове указано несколько файлов.
  • @ для начала поиска с первого файла, если в вызове указано несколько файлов.
  • n для повторного выполнения последнего поиска. Если подкоманда предваряется числом, то файл позиционируется на заданное по счету совпадение подстроки с ранее указанным шаблоном. Для поиска в обратном направлении можно воспользоваться подкомандой N.
  • :e filename или :Е filename для выполнения команды less для указанного filename и добавления его в список файлов для последующего использования.
  • :n для выполнения команды less применительно к следующему файлу из списка файлов. Список файлов можно указать, вызвав less с несколькими файлами или добавив к списку с помощью подкоманды :е. Подкоманду :р можно использовать для того же действия по отношению к предыдущему файлу
    в списке.
  • :numberx для выполнения команды less над первым файлом в списке, если номер не указан. Если номер указан, то команда less выполняется над файлом, следующим в списке на указанной по счету позиции.
  • = или :f для получения информации о файле и текущей позиции в файле.
  • q или Q для выхода из less.
  • v для вызова vi с текущим файлом.
  • !command для выполнения command оболочки. Если command опущена, то вы выйдете на подсказку оболочки. Покинуть оболочку можно с помощью команды exit. После exit вы вернетесь в команду less.

Примеры

Для вызова команды less для файла с именем filel, воспользуйтесь следующей командой:

less filel

tail

Команда tail применяется для отображения файла в стандартный вывод, начиная с указанной точки с начала или с конца файла. Будет ли отображение начинаться с начала файла или с конца, зависит от указанных параметров и флагов. Один из флагов, -f, можно использовать для непрерывного просмотра конца файла по мере роста файла. По умолчанию tail отображает последние 10 строк файла.

Ниже приведен список флагов, Которые используются с командой tail:

  • number
    для начала отображения с указанного номера позиции.
  • -b number
  • для начала с указанной позиции 512-ти байтового блока.
  • number для начала с указанной позиции 1024-х байтового блока.
  • -n number
  • для начала отображения файла с указанного номера строки.
  • -r number
  • для отображения строк файла в обратном порядке.
  • -f для непрерывного отображения конца файла по мере роста файла.

Со всеми флагами можно указать число с предварительным знаком + (знак плюс) или - (знак минус). Если указать +, то команда tail начинает обработку с начала файла. Если указать - или не указывать никакого знака, то tail начинает обработку с конца файла.

Примеры

Предположим, что есть файл под названием filel, содержащий 30 строк. Если необходимо видеть последние 10 строк файла, то выполните команду tail без каких-либо флагов,
как указано ниже:

tail filel

This is the line 21
This is the line 22
This is the line 23
This is the line 24
This is the line 25
This is the line 26
This is the line 27
This is the line 28
This is the line 29
This is the line 30

В предыдущем примере отображаются последние 10 строк filel. Если нужно пропустить 27 строк с начала файла, то выполните следующую команду:

tail +27 filel
This is the line 28
This is the line 29
This is the line 30

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

tail -с +500 filel
the line 27
This is the line 28
This is the line 29
This is the line 30

В данном примере отображение начинается с 500 байта с начала файла. Если вы хотите указать абсолютный номер строки, с Которой отображать файл, то используйте флаг -n, как в следующей команде:

tail -n -5 filel

This is the line 26

This is the line 27

This is the line 28

This is the line 29

This is the line 30

В данном примере отображение начинается с 5-й строки с конца файла. Если вы хотите отобразить строки filel в обратном порядке, то используйте флаг -r, как в следующей команде:

tail -г -n -5 filel
This is the line 30
This is the line 29
This is the line 28
This is the line 27
This is the line 26

В данном примере последние 5 строк отображаются в обратном порядке, от последней строки к началу.

head

Команда head отображает файл в стандартный вывод. Команда head начинает с начала файла и отображает указанное количество байтов или строк от начала файла. По умолчанию head отображает 10 строк. Ниже указаны флаги, Которые работают с командой head:

р -с number для отображения количества байтов с начала файла.

р-n number для отображения количества строк от начала файла.

Число может указываться без знака или ему может предшествовать знак -.

Примеры

Предположим, что есть файл filel, Который содержит то же самое, что и файл для примеров команды tail. Если вы хотите отобразить указанное количество строк от начала файла, то используйте флаг -n, как в следующей команде:

head -3 filel
This is the line 1
This is the line 2
This is the line 3

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

head -с 29 filel

This is the line 1
This is th

В данном примере отображаются первые 29 байтов filel.

WC

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

Ниже приведен перечень флагов, Которые можно использовать с командой we:

р -1 для подсчета в файле только количества строк.

р -w для подсчета только числа слов.

р -с для подсчета только числа байтов.

В команде wc в качестве аргументов можно использовать несколько имен файлов.

Примеры

Если хотите узнать число байтов, слов и строк в filel, выполните следующую команду:

wc filel

25 125 491 filel

Данный пример показывает, что файл содержит 25 строк, 125 слов и 491 байт. Если нужно узнать только число слов в filel, используйте флаг -w, как в следующей команде:

wc -w filel

125 filel

Если вы хотите получить количество слов в filel и file2, выполните следующую команду:

wc -w filel file2
125 filel
463 file2
588 total

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

read

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

Далее следует флаг, Который можно использовать с командой read:

р -r для обработки символа \ (обратный слэш) как части ввода, а не как управляющего символа.

Примеры

Ниже приведен фрагмент сценария оболочки для чтения имени и фамилии из namcfilc и их печати:

while read -r Iname fname
do

echo $Iname","fname
done < namefile

od

Команда od применяется для отображения содержимого файла в указанном формате. Обычно данная команда используется для просмотра исполняемых или других нетекстовых файлов, Которые большинство программ UNIX обрабатывать не могут. Вы также можете указать смещение, с Которого необходимо начать вывод.

Ниже приводится перечень флагов, Которые используются с командой od:

  • -d для отображения содержимого как знаковых десятичных чисел.
  • -i для отображения содержимого как беззнаковых десятичных чисел.
  • -f для отображения содержимого в виде чисел с плавающей запятой.
  • -b для отображения содержимого в виде восьмеричных чисел.
  • -h для отображения содержимого в виде шестнадцатричных чисел.
  • -с для отображения содержимого в виде символов ASCII.

После имени файла можно указать смещение того байта, с Которого вы хотите начать вывод. Если смещение Предварить Ох, то оно будет интерпретироваться как шестнадцатеричное число. Если смещение предварить 0, то оно будет интерпретироваться как восьмеричное число. Смещение можно закончить буквой b для байтов, буквой k для килобайтов (1024 байта) и m - для мегабайтов (1024х1024 байта).

Примеры

Для отображения содержимого fliel выполните следующую команду:

od filel | more

0000000 000737 000007 031147 104407 000000 000000 000000 000000
0000020 000110 010007 000413 000001 000002 024250 000001 056674
0000040 000012 030504 000001 052320 000000 001000 000000 000000
0000060 000001 055020 000004 000002 000004 000004 000007 000005

Команда отобразит filel в десятичном формате. Если вы хотите отобразить файл в шестнадцатеричном формате, используйте флаг -h, как в следующей команде:

od -h filel | more

0000000 Oldf 0007 3267 8907 0000 0000 0000 0000
0000020 0048 1007 OlOb 0001 0002 28а8 0001 5dbc
0000040 ОООа 3144 0001 54d0 0000 0200 0000 0000
0000060 0001 5а10 0004 0002 0004 0004 0007 0005

Если отображение следует начать с позиции байта 40 и отобразить в формате ASCII, используйте следующую команду:

od -c filel +40 | more

0000040 \0 \n 1 D \0 001 Т 320 \0 \0 002 \0 \0 \0 \0 \0

0000060 \0 001 Z 020 \0 004 \0 002 \0 004 \0 004 \0 007 \0 005

Можно отобразить содержимое filel в восьмеричном, ASCII, шестнадцатеричном формате одновременно. Для этого используется следующая команда:

pg

Команда pg применяется для отображения содержимого файла по одной странице, точно так, как это делают команды more и less. Команда pg делает паузу в конце каждого отображенного, чтобы вы могли ввести какую-либо подкоманду. Они используются для поиска в файле, перехода по файлу вперед или назад и т.д.

Ниже следует перечень флагов, Которые можно использовать с командой pg:

  • -с для очистки экрана в конце каждой страницы и начала отображения сверху экрана.
  • -е переход к следующему файлу, если команда pg вызвана с несколькими файлами. Обычно pg делает паузу в конце каждого файла.
  • -f для усечения строк, Которые длиннее, чем ширина экрана.
  • string для использования переменной string в качестве подсказки команды pg. По умолчанию подсказкой является двоеточие (:). Если указанной строкой является %d, то в качестве подсказки отображается номер страницы.
  • -s для выделения всех сообщений и подсказок, выдаваемых командой pg.
  • + number для начала отображения со строки с указанным номером.
  • -number для установки размера экрана в указанное число строк.
  • +/pattern/ для поиска подстроки pattern в файле и начала вывода с найденной строки.

Некоторые подкоманды команды pg можно использовать во время паузы в конце каждого экрана. После ввода подкоманды необходимо нажать клавишу Return. Ниже следует список доступных подкоманд:

  • -number
  • для возврата назад на количество страниц, указанных number.
  • +number
  • для перехода вперед на количество страниц, указанных number.
  • 1
  • для перехода по файлу вперед на одну строку.
  • numberl
  • для начала отображения с номера строки, указанного number.
  • +numberl
  • для перехода вперед на число строк, указанное number
  • -numberl
  • для перехода назад на число строк, указанное number.
  • d
  • для перехода вперед на половину экрана.
  • -d для перехода назад на половину экрана.
  • -n для указания команде pg, что она должна интерпретировать и выполнять подкоманды тогда, когда они вводятся, без ожидания ввода символа новой строки.
  • Ctrl-1 для повторного вывода текущего экрана.
  • $ для перехода на последнюю страницу файла.
  • number/pattern/ для поиска указанного шаблона вперед по файлу, начиная со следующей страницы. Если number указано, то pg ищет указанное появление pattern. Поиск не начинается с начала файла. Если вы хотите искать в обратном направлении, то используйте ? (знак вопроса) вместо / (слэш).
  • numberp для начала выполнения команды pg с предыдущего файла, если number не указано. Если number указано, то начинать с того файла, позиция Которого в списке файлов на number смещена назад по отношению к текущему.
  • numbern для начала выполнения команды pg со следующего файла, если number не указано. Если number указано, то начать с файла, чья позиция в списке файлов на number смещена вперед по отношению к текущему файлу.
  • sfilename для сохранения текущего обрабатываемого файла в указанном filename.
  • q или Q для выхода из команды pg.

Примеры

Предположим, что есть fi1, содержимое Которого совпадает с содержимым файла, использовавшегося с командой tail.

Для изменения количества строк, отображаемых командой pg, предварите размер знаком - (минус)как в следующей команде:

pg -7 filel
This is the line 1
This is the line 2
This is the line 3
This is the line 4
This is the line 5
This is the line 6
This is the line 7

В данном примере количество отображаемых строк установлено в 7. С другой стороны, если вы хотите начать отображение с 7-ой строки, то предварите число знаком + (плюс), как в следующей команде:

pg +7 filel

Если вы хотите модифицировать подсказку по умолчанию : (двоеточие), то используйте флаг -р как в следующей команде:

pg -7 -s "Enter Sub-command -> n filel
This is the line 1
This is the line 2
This is the line 3
This is the line 4
This is the line 5
This is the line 6
This is the line 7
Enter Sub-command ->

В данном примере подсказка по умолчанию будет заменена на следующую: Enter Sub-command ->. Если вы хотите начать файл со строки, в Которой есть шаблон line 5, то выполните следующую команду:

pg +/"line 5"/ filel

tee

Если вы хотите выполнить команду и ее вывод перенаправить в несколько файлов, в дополнение к стандартному выводу, то используйте команду tee. Команда tee принимает ввод из стандартного ввода, поэтому к ней можно подключить через канал другие команды.

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

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

Примеры

Если вы хотите использовать команду cat с filel для отображения содержимого файла на экране и хотите сделать копию file2, то используйте команду tee следующим образом:

cat filel | tee file2 | more

Если вы хотите добавить filel в конец уже существующего file2, то используйте флаг -а как в команде:

cat filel | tee -a fiie2 |more

vi

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

ПРЕДОСТЕРЕЖЕНИЕ

Команда vi не блокирует файл во время редактирования. Поэтому возможно, что одновременно один и тот же файл будут редактировать несколько пользователей. В таком случае окончательной будет та версия, Которая была сохранена последней.

Ниже следует список флагов, Которые используются с командой vi:

  • subcommand
    для выполнения подкоманды перед переводом указанного файла в режим редактирования.
  • -r filename
  • для восстановления указанного filename
  • -R для перевода указанного файла в режим редактирования в режиме только для чтения. В данном случае нельзя сохранить никакие сделанные модификации
  • ynumber для установки окна редактирования в размер с number строками.
    Ниже следует список режимов работы редактора
    vi:
  • command mode представляет собой режим по умолчанию, когда пользователь запускает vi В данном режиме можно вводить различные подкоманды манипулирования строками, например удалять строки, вставлять, перемещать различные слова, переходить к другой строке и т д
  • text input mode является режимом, в Котором можно вводить текст в строках или создавать новые строки Перейти к данному режиму можно с помощью подкоманд a, i или с из command mode. Для возврата в command mode нажмите клавишу Esc.
  • command entry mode является режимом, в Котором можно вводить определенные подкоманды, требующие дополнительных параметров. НеКоторые из этих подкоманд - подкоманда w, Которая требует ввода имени файла или подкоманда /, Которая требует ввода шаблона Для возвращения в command mode используйте клавишу Esc.

Ниже приведен краткий перечень подкоманд, Которые можно использовать в command mode для перемещения в пределах одной строки.

  • h для перемещения курсора влево на предыдущий символ той же самой строки.
  • l для перемещения курсора вправо на следующий символ в той же самой строке.
  • j для перемещения курсора вниз в следующую строку в ту же самую колонку.
  • k для перемещения курсора вверх в предыдущую строку в ту же самую колонку.
  • w для перемещения курсора в начало следующего строчного слова в той же самой строке.
  • W для перемещения курсора в начало следующего прописного слова в той же самой строке.
  • b для перемещения курсора в начало предыдущего строчного слова в той же самой строке
  • В для перемещения курсора в начало предыдущего прописного слова в той же самой строке.
  • е для перемещения курсора в конец следующего строчного слова в той же самой строке.
  • Е для перемещения курсора в конец следующего прописного слова в той же самой строке.
  • fc для перемещения к следующему символу с в той же самой строке.
  • Fc для перемещения к предыдущему символу с в той же самой строке.
  • tc для перемещения курсора на одну колонку перед следующим символом с в той же самой строке.
  • Тc для перемещения курсора на одну колонку после предьщущего символа с в той же самой строке.
  • number| для перемещения курсора в указанную колонку number,

Ниже приведен краткий справочник подкоманд, Которые можно использовать в command mode для перемещения между строками:

  • + или
  • Enter для перемещения курсора в первый непробельный символ следующей строки.
  • - для перемещения курсора в первый символ предыдущей строки, кроме символа пробела.
  • 0 для перемещения курсора в первый символ текущей строки.
  • $ для перемещения курсора в последний символ текущей строки.
  • Н для перемещения курсора в первую строку экрана.
  • L для перемещения курсора в последнюю строку экрана.
  • М для перемещения курсора в середину экрана.

Ниже приведен краткий перечень подкоманд, Которые можно использовать в command mode для обновления экрана:

  • z- Текущая строка становится последней строку экрана, экран обновляется.
  • z. для превращения текущей строки в среднюю строку экрана и обновления экрана.
  • Ctrl-1 для обновления экрана.
  • /pattern/г- для поиска следующего появления pattern и превращения найденной строки в последнюю строку экрана.

Ниже приведен краткий перечень подкоманд, Которые можно использовать в command mode для прокрутки страниц:

р Ctrl-f для перемещения вперед на один экран.

р Ctrl-d для перемещения вперед на половину экрана.

р Ctri-b для перемещения назад на один экран.

р Ctrl-u для перемещения назад на половину экрана.

р Ctrl-e для прокрутки окна вниз на одну строку.

р Ctri-y для прокрутки окна вверх на одну строку.

Ниже приведен краткий перечень подкоманд, Которые можно использовать в command mode для поиска подстрок в файле:

  • /pattern
  • для поиска указанного шаблона в прямом направлении. Если достигается конец файла, то инициируется поиск с начала файла.
  • ?pattern
  • для поиска указанного шаблона в обратном направлении. Если достигается начало файла, то инициируется поиск с конца файла.
  • n для повторения последнего поиска в том же самом направлении, что было указано в последнем поиске.
  • N для повторения последнего поиска в направлении, противоположном тому, что было указано в последнем поиске.
  • /pattern/+number для позиционирования курсора на number строк после строки, в Которой был найден шаблон.
  • /pattern/-number для позиционирования курсора на number строк перед строкой, в Которой был найден шаблон.
  • % для поиска парных скобок (круглых или квадратных).

Ниже приведен краткий перечень подкоманд, Которые можно использовать для ввода текста в text entry mode. (Вы можете перейти в режим ввода текста в любой момент, нажав клавишу Escape).

  • а для начала ввода текста после позиции курсора.
  • А для начала ввода текста в конце строки.
  • i для начала ввода текста перед позицией курсора.
  • I для начала ввода текста перед первым символом в строке, кроме пробелов.
  • о для ввода пустой строки после строки, в Которой позиционирован курсор.
  • О для ввода пустой строки перед строкой, в Которой позиционирован курсор.

Ниже приведен краткий перечень подкоманд, Которые можно использовать для модификации текста в command mode. (Вы можете перейти в режим ввода текста в любой момент, нажав клавишу Escape).

  • cc
  • или S для изменения всей строки.
  • С для изменения содержимого строки после позиции курсора.
  • cw для изменения слова, на Которое установлен курсор.
  • dd для удаления текущей строки.
  • D для удаления остатка строки за позицией курсора.
  • dw для удаления части слова в месте позиционирования курсора.
  • J для присоединения содержимого следующей строки в конец текущей строки.
  • гс для замены символа в позиции курсора на символ с.
  • R для перезаписи содержимого текущей строки.
  • u для отмены последней модификации.
  • х для удаления символа в позиции курсора.
  • Х для удаления символа слева от позиции курсора.
  • ~ (тильда) для изменения прописного символа на строчный и наоборот.
  • . для повторения последнего изменения.
  • << для смещения текущей строки влево.
  • >> для смещения текущей строки вправо.

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

- р для вставки содержимого буфера отката (undo buffeer) (как результата удаления - "вырезания") после позиции курсора.

- Р для вставки содержимого буфера отката (undo buffeer) (как результата удаления - "вырезания") перед позицией курсора.

  • "bd
  • для удаления текста с помещением в поименованный буфер b.
  • "bр для вставки содержимого поименованного буфера b.
  • уу для "вырезания" текущей строки в буфер отката.
  • Y для "вырезания" текущей строки в буфер отката.
  • yw для "вырезания" слова из текущей позиции курсора в буфер отката.

Ниже приведен краткий перечень подкоманд, Которые можно использовать для сохранения файла:

  • :w для сохранения изменений в исходном файле.
  • :w filename для сохранения изменений в указанном filename, если filename не существует. Если вы попытаетесь, используя данную подкоманду, сохранить изменения в уже существующем файле, то произойдет ошибка.
  • !w filename для сохранения изменений в указанном filename, если filename уже существует.

Ниже приведен краткий перечень подкоманд, Которые можно использовать для перемещения между файлами, если команда vi была вызвана для нескольких файлов:

  • :n для начала редактирования следующего файла в списке файлов, указанного при вызове vi.
  • :n filename для указания нового списка файлов для редактирования.

Ниже приведен краткий перечень подкоманд, Которые можно использовать для перемещения между текущим файлом и альтернативным:

  • :e filename
  • для вызова vi, при этом filename становится альтернативным файлом.
  • :е!
  • для повторной загрузки текущего файла. Если в текущем файле были сделаны изменения, то они
    отменяются.
  • :е +
  • filename для вызова vi с filename и редактировании с конца файла, а не с начала.
  • :е +
  • number filename для вызова vi с filename и редактировании со указанного номера строки.
  • :e # для начала редактирования альтернативного файла.

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

  • r filename
  • для чтения полного filename и добавлении его после текущей строки.
  • :r !command
  • для выполнения указанной command и добавлении вывода после текущей строки.

Ниже приведен краткий перечень подкоманд, Которые можно использовать для разных целей:

  • Ctrl-g для получения информации о текущем редактируемом файле.
  • :sh для старта оболочки, чтобы можно было выполнять команды. Возвратиться в vi можно, исполь зуя команду Exit или Ctri-d.
  • :!command для выполнения указанной command.
  • :!! для повторного выполнения последней :!command.
  • :q для выхода из vi. Если вы попытаетесь выйти, используя данную подкоманду, а в файле были сделаны изменения, то UNIX не разрешит вам выйти из vi.
  • :q! для выхода из vi независимо от каких-либо изменений, сделанных в файле.
  • ZZ или wq для сохранения изменений в исходном файле и вь1хода из vi.

Специальный файл под названием .ехгс применяется для указания в нем специальной подкоманды vi. Для вызова данных подкоманд в сеансе vi используйте : (двоеточие) перед командой. НеКоторые из подкоманд из .ехгс таковы:

  • Ab abb ph для сокращения ph до abb.
  • unab abbreviation для отключения abbreviation.
  • map m seq для назначения последовательности команд vi для символа или клавиши.
Back Next

К оглавлению

Если вам понравилась статья, поделитесь ею с друзьями: