Вход/Регистрация
UNIX — универсальная среда программирования
вернуться

Керниган Брайан Уилсон

Шрифт:

 have greater fleas to go on;

While these again have greater still,

 and greater still, and so on.

$

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

cmp
находит первое место, где файлы различаются:

$ cmp poem new_poem

poem new_poem differ: char 58, line 2

$

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

diff
сообщает обо всех строках, которые изменены, добавлены или удалены:

$ diff poem new_poem

2c2

< upon their backs to bite 'em,

– --

> upon their backs to bite them,

4c4

< and so ad infinitum.

– --

> and so on ad infinitum.

$

Итак, вторая строка первого файла

poem
изменена и отличается от второй строки второго файла
new_poem
. То же самое мы наблюдаем и в отношении четвертой строки.

Вообще, команда

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

Сводка команд файловой системы

В табл. 1.1 дана краткая сводка описания команд, которые были рассмотрены выше.

ls
Вывод списка имен файлов текущего каталога
ls filenames
Вывод списка только поименованных файлов
ls -t
Вывод списка, упорядоченного по времени создания файла (сначала более новые)
ls -l
Вывод данного списка, содержащего большую информацию; допустимо также
ls -lt
ls -u
Вывод списка, упорядоченного по времени последнего использования; допустимо также
ls -lu
,
ls -lut
ls -r
Вывод списка с обратным порядком; допустимо также
ls -rt
,
ls -rit
и т.п.
ed filename
Редактирование поименованного файла
cp file1 file2
Копирование
file1
в
file2
, старое содержимое
file2
пропадает, если оно было
mv file1 file2
Переименование
file1
в
file2
; старый
file2
исчезает, если он был
rm filenames
Удаление поименованных файлов безвозвратно
cat filenames
Вывод содержимого поименованных файлов
pr filenames
Печать содержимого файлов с заголовком, по 66 строк на странице
pr -n filenames
Печать в
n
столбцов
pr -m filenames
Печать поименованных файлов в несколько столбцов
wc filenames
Подсчет числа строк, слов и символов для каждого файла
ws -l filenames
Подсчет числа строк для каждого файла
grep pattern filenames
Вывод строк, соответствующих шаблону
grep -v pattern files
Вывод строк, не соответствующих шаблону
sort filenames
Сортировка файлов по строкам в алфавитном порядке
tail filename
Вывод 10 последних строк файла
tail -n filename
Вывод
n
последних строк файла
tail +n filename
Вывод файла, начиная со строки
n
cmp file1 file2
Вывод места первого расхождения
diff file1 file2
Вывод всех расхождений между файлами

Таблица 1.1: Сводка команд файловой системы

1.3 Продолжаем изучать файлы: каталоги

Система отличит ваш файл с именем

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

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

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

Рассмотрим первый способ. Основным нашим средством будет команда

pwd
("print working directory" — печать рабочего каталога), которая выведет имена файлов каталога, с которым вы работаете:

$ pwd

/usr/you

$

Команда выведет сообщение о том, что вы находитесь в каталоге you, а сам каталог — в каталоге

usr
, который в свою очередь находится в корневом каталоге, традиционно обозначаемом как
'/'
. Символ
'/'
разделяет компоненты имени: каждый компонент ограничен по длине 14 символами. Во многих системах каталог
/usr
содержит имена каталогов всех пользователей. (Даже если ваш личный каталог не
/usr/you
, команда
pwd
выдаст нечто аналогичное, так что вы сможете следить за последующими примерами.) Введя

$ ls /usr/you

вы получите тот же самый список файлов, который выдает только

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

$ ls /usr

Это приведет к появлению длинного списка имен, среди которых есть и ваш начальный каталог

you
.

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

  • Читать дальше
  • 1
  • ...
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • ...

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

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: