� ����� 1 ��� ����������� ����� ����� ��������� ������� UNIX � ��������, ��� ��������������� �� ��������� �����. ��� ������ �� �������� � ���������, ����� �� ������� ���������� ���������� � ������� ������ ������������. ����� ����������, ���� � �������� ������� ����������� ��� ����� ������, ���� �� ������� ����� ��������� ���� �� ���-��������� � ���-�������. ��������� ��������� ������� �����������: �������� ���������, �����, ��������, ����, �������.
�������� ������� UNIX ������ �� ��������� �� ���������� ������� �, �������������, � �������� ������ �������. �������� � ��������� ������ ������������ ����� �������� � ���������� ����� ���������� �������� ����������, �������� ������ - � ��������. ������� ����� ����� � ���� ���������� ����� ��������� �������, �� ��������� ������������ � ����������, �������� ������� UNIX ��������� ��� ����� ������������ �� ������ ����� � ������, ���� �� ������ ��������� ���������������� ���������.
������ �������������� UNIX, ��� �� ��������� ������������ ��������� ��������� �������� ����������, ���, ��������, ls � ���������� �������. �� �����, ��� ������������ ����� ���������� � ���������� ��� ���������� �����. ��� �� �����, �������� ������ ���������� � ������ �� ���� ����� ���������� �� ���-�� �����. ��� ���������� ������� ���������������� ��������, ������� ���������� ����������� ��������� ������ � UNIX, ����� �������� ��, ��� �� ����, �, ��������������, �������� ���������� � ������ �� �����, �������� �������� ����������� ������ � �.�.
��� ����� �������� � ����������������� ����������, ������� ��������� ������ ������ � ������� � ������. ������ � ������ ����� ���� ��������� ���������� ���������, ������� ������� � ����� �������� �� ������ ���������� ����� � �������. ��������, � ��������� ������� ��� ����� ����� ����� ���� ������ � ������ �������� ��������� ������, � ������ ������� ��� ����� ������������ ����� ������ ��������� ����: ��������� ����� ������ ��� �������� ����� �� ����� �� � ���������.
��� ��������� �������� ������ ����� ��� ���� �������� ���������������� �������. ������ - ��� ���� ������������ ������, ������� ��������, ��� ��������� ������� ������� UNIX (��������, find) ������������� ��� �������� ������, ������� � ��������� �������� ��������� ����� (��� � �������� ��������). ���� � ������ �������� ����������� ����������, �� ��� ���������� ���� ����������� - � ��� ����� ���� � ������ ������� ���-�����������. ��� ���������� �������� �� ���� ������ � ����� ������.
����������� ������� ������� UNIX ������������ ������ ������������ ����� �������� �������, ������� ����� �������� ���������� �� ����� ��������� ������. ���� ��������� ��� �������� ���������������� ������� � ���� ����� - ��������������� �������������� ������ ������������ ������ � �������������� �� �� ������ ������ �������.
������ �������� ����, ��������� � ��������� ��������� ����������������� ���������� - ��� ����������� ���������� ������ � ������������ �������� � ���������� ������� ������ � ������� �������������. ��������, �� ��� ����������� � ��������� ������������� � ����� ����������� ������ � UNIX � ���������� �� ������������. ��������, �� ��� �� ��������, ��� ���������� ������������ ������, ���������������� ���������� ������������ ���������, �� �������������� ���������, ���������������� ������� ���������, ��������� ��� ������� �������, ������� ������������� ������� �������� �������� ������� � ��������� ������ ����������. (� ��������� ����� �� ������ �� ������� ���������� � ����������� ���������� �� ����� � �������� �������� � ������� ���, ��� �� ������ ����������, ���������� � ��������������� �� �� ���� ����������.)
��� �������� �� ����������� ���������������� �������� � ��� �������: ����� ������ � ���������� �������� ����������. ����� ����� ������������ �� � ����� �������, ��� ��� �� ������� ������ ����� ����, ����� ����� � ��� ��������.
���� ������ �������� ������ ������, ��� �� ��� �� ����������, ������ �� ����� ��������� ���������� � ������ ���������� ����� ������ ������.
������ ���������, tree, ������� ��� �������� ������ � �������� ����� ���� ������ � ������� ����������� ������. ��� ���������� ���������� � ������ ������� � ������� ��� ��� �����, ����������� ��� ����� ���������� ������ �������� �������� � �� ��������� �� ������� ���������.
������ ���������������� �������� - ��� thead. Thead �������� ��������� ������ ����� ��������� ������, ������� ��������� � ������ �������� ��������� ������. ������������ ���������, �.�. ������ ��������� ����� �����, �� ������ �������� ���������� ����������, ����� ���������������� ���������� �����. ��� ������ thead �� ������ ���� ������ ������� ���� �������� ������� thead �� ��������� ������ ������ ���� ������. ��� ������ ������� thead �������� - ������ ����� ������ ������� UNIX, ������� �� ������� �����.
��������� ���������������� �������� - tgrep. ��� ������� �� ��������, ��� ��� ���� �������, ��������� � �������� �������, ������� ���������� ������� grep. Tgrep ���� ���������� ������ � ������ �����, ������� ��������� � ������ �������� ��������� ������. Tgrep ����� �������� ��������, ��� ��� ����� ������ ����� ���������� �� �� ���������.
� ����� ��������� ������� � ���� ������� �� ��������� � ������������� ��������� ��� �������� "���������". ������� �� ������ �������� �������� ��� �������, ������� ��� ������� ����� �� ��������� ������ ������ ���������, ��������� �� ���� ���� � �����-���� �������� �� ���������� �������� ������. ����� �� �������� paths - �������, ������� ��������� ������� ������ ��������� �������.
���� ������ �������� ��� � ����������������� ����������, ���������������� ��� ������ �� ����� ���� ������ � �� �����������. ����������� ������ ���� ������ �������, ��� ��� ��� ����� ����������� ��������� ���������� ����������� ��������, ���������� � ���������� ��� ������� �������, � ������ ������ ������ � ���� �������.
������ ��� ��������� ����� �������� ���- � ���������������� ��� ������� ls. ������� lc ������� �������� ���������� �� ��������, ������� ll ����������� ����� � ������� �������. ��� ��������� ����� ��������� ������� ������� ls, ����� ������� ���������� ����� ��������������. ��� ��� ������� ls ������������ �������� �����, �������� �������� ����� ����������� ������� ������ � ��������� ����� �������������� ��������������. �������� ��������� ���������� ��������� ���������� �������� � �������� ������������� ������, ��������� ������������� ����������� ���������� ����������.
������ ���������������� �������� - ��� kind. Kind - ��� ���� ��������� ���� ���������������� ����, ������������ ������� UNIX file. ������� file ������ ��������� ���� � ����� ��������, �������� �� ���� ���� ���������, �������� ��� �����������. ��������� ���������� ������� file �� �������� ����� ��������� ����, ��������� ������������� � �������� ��� ����� ����������� �������. ������� kind �������� � ����������� ������� file. Kind ������� �� ����� ����� ������ ������ ��������� ����.
��� ���� ��������� ���� - m, ������� ��������� ������ �� ����������� �������� more ������� UNIX, �������� ���������� ����������� ��� ������� ������� �������� � ������� ���������. �������� ��� ��� ������ ��������: ��� ��, ��� �� ������ ������������ ������� more ��� ����� ��� �������� ������� more ������ �� ������������ ������, �� ������ ������� �� �� ����� ��� m.
��������� ��������� ���� - ��� mmm. �� ������� �� ����� ������������� ��������� ������ ��� ��������� nroff ������� UNIX. ���������� ����� �������� ������ ������� nroff � ��������� ��������� ����� � ���. ���� �� �� ����� ����������� nroff, � ��� ����� ���������� ��������� � ����������� ������������� �����, ����������� ��� ����� ������ � ��������. ��� �������� �������, ���� � ��� ���� ������� mmm. ���������� �����, ������� �� ������ �����������, � ������� �� � ��������� ���� mmm (� ���, ��� ��� ������� �����������, ���� ������ ����). ������ ���������� ������� mmm - � �� ������ ����������� �������� � ����� �������� nroff.
��������� ������� - pall. Pall ������� �������� ������, ���� ����� ������ ��������� ����, � ������� �� � ������ �� �������. ������� pr ������� UNIX ������������ ��� �������� �� �������� ���� ������ ������ � ��������� ����������. ��� ������� ���������� �� ������������ �������� ���� ������� ���� � �������� ������� � ��� �������, ����� � ��� ������� ��������� ��������� � ���������� ������� ��� � ��������� ������� ��������.
��������� � ����� �������� ���� ������, �������� � ����� �������� ���������� � ����������� ����������������� ����������.
���: TREE
tree - ����� �� ����� ��������� ��������� ������
������� ��� ����� � �������� ������ � ������� �� ����� ����� ������, ��������� ������������� ��������� ��������� ������.
tree [dir]
$ tree $HOME
������� ��������� ��������� ������ ���������������� ��������.
1 : 2 # @(#) tree v1.0 Visual display of a file tree Author: Russ Sage 2� ����� �� ����� ��������� ��������� ������ 4 if [ "$#" -gt 1 ] 5 then echo "tree: wrong arg count">&2 6 echo "usage: tree [dir]" >&2 7 exit 2 8 fi 9 if [ "$#" -eq 1 ] 10 then if [ ! -d $1 ] 11 then echo "$0: $1 not a directory">&2 12 echo "usage: tree [dir]" >&2 13 exit 2 14 fi 15 fi 17 find ${1:-.} -print | sort | sed -e "1p" -e "1d" \ 18 -e "s|[^/]*/| /|g" \ 19 -e "s|[^ */|/|" \ 20 -e "s|/\([^/]*\)$|\1|"
����� ��� ����� ��������� ���� tree?
��� �� ��� ��������, ��� ������� UNIX �������� ������ �������� �������, ������� ������ �� ������. ������, � ������� �� �������� � ������� UNIX, ������ ����� ������: ������ ��������� ������, � ����� � ������ ������ ���� �� �����. ���������� ��������� �������� �������� � �������� ��������, ������������ � ������� UNIX, ����� ������: ���� ������ (��������� �����) � ���� �����. ��� ������� � ��� ������ ����� ������� ����� �� ��������� ������ - �� �������������� �����, ����� ����������� ����������� ������������. ����������, ����� �������, ������� ����� ����� ������ �����, ���������� �� ����������.
������ � ������� UNIX �������� ��� ����, ����� �������������� � ������. ��������� ������� ������� ������ � �������� � ��� �����������, �� ������ �� ��������� �������� � �����, �� ����� ������� ��� ������ ���������. ��� ������ ��������� ����� ������ ������� �������������. ��������� ��������������, ��������������� ��������� ��������� ������ � �������, ������������� ��� �������� �����.
������� tree �������� ����������� ������ ������� UNIX, ������� ������������ ���������� �������� ��������� � ��������� �����. ��� ������� ������� ��� ��������� ���������� ������� ������, �� ������������ � ������������� ��������� ��������� ������, ��������� ��������� ��������� � ������������.
��� ������ tree?
������� tree - ��� ������������� ��� ������� UNIX find. Find ������������� ������� ��������� ������ � ������ ����� ���� ������, ������� ������������� ��������� ��������. ������� tree ���������� ������� sed ������� UNIX, ����� ��������� ����� ������� find � ��������� �����.
������� ���������� ��� ������� tree �������� ��� ��������, ������� ����� ���� ������� � ����� ���������� ����, ��������, /usr/spool/uucp, ��� � �������������, ��������, ../../bin. ���� �������� ����� �� �������, ��������������� ., ��� �������� ������� ���������.
��� �������� �������� ������� (��� ������) ������������� ������. ����� �������� ������� ������, ��� �����, ����������� ������� ��������, ������������ � ��������. ��� �������� ������������� ��������� ���������, ����� ���������� ���� �� ������ ������������� ���������� ����� ����� (/).
���������� ������ ��������� ��������. ����� �������� ��������� ����� /tmp � ����� ����������: a � b. � �������� a ��������� ���������� aa, ������� �������� ���� file1, � � �������� b , ��������������, ���������� bb, ���������� ���� file2. ������� find ������ ���������� ������ ����:
# find /tmp -print /tmp /tmp/a /tmp/a/aa /tmp/a/aa/file1 /tmp/b /tmp/b/bb /tmp/b/bb/file2
��� ����� �� ����� ��������, ����� a � aa ���� ��������, � ���� file1 ��������� ����� ��������� ������. �������� ���� ��������� � �����������, ������� ������ ������� tree, ��������� ������� sed.
# tree /tmp /tmp / a / / aa / / / file1 / b / / bb / / / file2
�������� ��������� � ���� �������� �������� ������� /tmp. ���, ��� ������ ��������� �� ����� �������� �������, ���������� ������ ������� ����� �����. ������ ������� - /tmp, ��� ���� ������� ��������� �����-�������� a � b, �����, ��������������, �� ����������� aa � bb. ������ �� ����� ��������, �� ������ �����, ��� �� ������ ������ �������� ��������� ��� ����� (� ��� ����� � ���������������� �������� ����������) � ��� ��� ����� ��������� � ����������� ���������. �������, ��� �� ������ ���������������� aa � bb ��� �������� ������ ������, ��� � ��� ������������ ����� file1 � file2.
�������� ���� ������� � ������� "��������������" ������� find. ����� ������� tree ��������� ����������� �������� ���������� ��������� ����� ������� ��� ������ �������� � ����� ������� ������. ��������� �����, ����� �� ����� ������������ ����������. ��� ��� �� ����� � ����, ����� ������� � �������� ����� ���������� ��� �������� ���������� � �������� UNIX.
1. $ tree
���������� ��������������� ������� (������� �������, ��� ����������� ������� "$ tree .") � �������� ������ ��������� ������.
2. $ tree /
�������� ����������� ������� ��� ������� ����� ���� �������. ������� find ��� ����� �� ������� �������� � ��������� �������� � ������ ���������� � ���� ������ �������.
3. $ tree $HOME/..
���������� ����������� ������ ��� ���� ������ ������������� ������� (��������������, ��� ��� ���������������� �������� ��������� � ����� � ��� �� ��������, �������� /usr/*).
������ ������ �������� ������ ���� ��������� (:) - "������� �������". ��� ������� � ���, ��� ��� ��������� �����, ����������� � ���� �����, ������� ���, ����� �� ����� ���� ��������� � ����� �������������� Bourne shell. ��� ����������� � ������ 2, ���������������� ������, ���������� �� ����� ������� (#). ��-shell ���� ���� ���� ��� ������ ���� ���������� �����. ���� �� ������, �� ��������������� ������� ��������� ������ ��������� ����. � ��������� ������ ��-shell �������� ��������� ���� �������������� Bourne shell. ��� ������ �� �� ����� �������� ������ ������ �� ����� #. ��, �������, ����� �� �������� ������ ������ ������, �� ������ ������ �������� � ����� ���� �������� �������. �������������� �� ����� ������������ ������ ������ � ������ �������, ����� �������� ������ ������� ���������.
������ 2 �������������� ������. ���������� ������ @(#) ���� ����������� ������������������ � ������ �����������, ������� ������������ ��� ������ "what" ("���"). ������� what � ������� UNIX ������ ���� � �������� ���������, ������� ������� �� ������� "what". ����� ���������������� ������ ������� ���������� �����, ��������
# what tree � ����� ���������� ��������� ���������: tree: tree v1.0 Visual display of a file tree Author: Russ Sage
������ 4-7 ���������, �� ������� �� ����� ���������� ���� �������� ��������� ������. ��� �������������� ����� ������������ ���������� $#, ������� ������������ ����� ������� ����� ����������� ���������� ��������� ������. ���� ������������� ����� ������ ���������, ���������� ��������������� ��������� �� ������ � ����������� ���� ������ (stderr) � ��������� ��������������� � ������ ��������� �������.
�������, ��� ������� echo ������ �������� � ����������� ����� (stdout). �� ����� ������������� stdout � ������ �������� ����������, ������ ���. � ������ ������ �� ���������� �������� � stderr. ��������� ����������� ���: "������� ��� ������ � ������������� �� � �������� ���������� (&) ������������ ����� ������ (2)". ������ ��������� �� ������� � stderr ������������ ������������� ��������� ���������� ����� ���������� �� �����, � ������� �� �������.
������� �����, ��� ���� ������� ������ � �������������� shell �������������� ���, ������� ������������ ��� ���������������� �� ����� ��. � �� �������� �������� ���� 1, ������ ������� �� 1. ��� ���������������� �� ����� shell �������� �������� ������ (�������) �������� 0, � ������ �������� (�����) ��������� ��������.
��, ��������, ���������, ������ �� ��� ����������� � ���, ����� ������� ������ ������ ������, ���� ��������� ���� ���������� ������ ���������� ��������� �� ������ � ���������� ������. ���� � ���, ��� ��� ���������������� �������� ������� UNIX ������ ���� �������������� ���, ����� ��� ����� ���� ������� � ������� ��������� � ����������, � ������� ��� ����� ���� ��������. ��������, ��� ������ ������� ���������� ����� ������� ������� tree � ���������, ��������� �� ��� ����������. ������� ������ �������������� ����������� ������� �������� ��������������� � ���������� ������ �������� ������������� ���������.
������ 9-15 ���������, ����� ����� ���������, ������������ ��������� ������, ���� ������������� ����������, ��� ������� � ����� ����������. ��������, ��� � ��������� ������ ����� ���� ������� ������ ���� �������. ���� �� ���������� ������ ���� �������� � ���� �������� �� �������� ���������, �� �� �������� ��������� �� ������ � �������. ����� �������, ��������� �������� �����������, ��� ���� �� ������������ �� ���� ��������, ���� ������������ ������������ �������� �������� ���������� ���������.
�� ������� � ������ ������� tree - ��� ������ 17-20. ������� ����� �������� ������� find ������� UNIX. �������, � ������� ������� �����, ������������ ��� ������� �������. ��������� ${1:-.} �������� ������ ��������������� ����������� � �������� ���������: ���� $1 (��� �������� ������ ����������� ����������) ���������� (����� �������, ���� �������� ��� ������� ��������� ������ � ��� ���������), �� ����� ������������ ��� ��������. � ��������� ������ ������� ������������ ������� . (������� �������). ���� ��� ����������� ���� ��� ����������� ��������� ������� tree ��� �������� ����� �������� (����� ����� tree �� ��������� ������ ������ �� �������),- �� ���� �������� � ������ "�� ���������", ��� ����� ������������ � ��������� �������� ������������.
������� find ������� �� ������ ������ ��� ������� �����, ������� �� �����������. ��������� �� ������������ ������� ����������� ����� ��� �������� ������, ���������� ��� �����. ����� ����� ��� ������ ����� ������ ����������� ��� ����� �������� ������. ����� ���������� ��������� ����������� ����� ������ �������, ������ ����������� ���������� ������� � ���, ��� ��� ����� ���� ��������� � �������.
�����, ��������������� ������ ����� ������ ���������� �� ������������ ������ ������� sed ������� Unix. Sed - ��� "��������� ��������", ����� ������ ��������, ������� ����� ���� ������������ ��� ������������� � ��������� ��������� �������� ������. ����� -e �������� ���������� ��������������, ������������ � ����������� ������. ������ �������� ������ �������� ������� sed, ��� ����� ���������� ������ ������, ����� ������� ������ 1. ��� �������� ��� ����, ����� ���������� �������� ��������� ��������, ������� �����������. ���� ������ �� ��������� ������� ���������� �����������, ��� ��� �������� ������� �� ����� ������� �������������� ��������� ����� �������, ������� ����� ���� �� ���������������� � ������� ����� ����� ��� ������ ��������. �������� ������ ������ ������� � ���, ��� ��� �� ����� � ���������� ������.
������ �������� �������������� �������� �������� �����������. ��� �������� ������ ������, �������� �� ������� ����� ����� (������ �� ������� ������� /) �� ������������������ �������� � ����� ���� ������ (/). ��� ��������� ��� �� ��������� ���� ������������� ��������� ������� ������� ����� �����. ����� g � ����� ���� ������ ��������, ��� ��� �������� ����������� ���������, �� ���� ��� ���� ����������� ��������. ����, ������ ������ ������� �� ���������� �������� ���� � ����� ��� ����� ������������������� ��������, ����������� ��������� ����� �����. ������� �������� ����� ����� (\) � ����� �������� �������������� - ��� ������� �����������, ������� �������� ������� sed, ��� ����� ���������� ������ �� ��������� ������� � ������� ������ �������� ��������������.
������ �������� �������������� (������ 19) ����� �������� �������� ����������� � �������� ������ ������, ������� �� �������� �������� (������ �� ������� /) �� "�� ������" � ���� ������ ����� �����. ���� �������� ������� ������� �� ����������� ���������� �������������� � ������� ������ � ����� ����� �������. ��� ������� ��������� ���������, ������� �� ������ � ���������� �������.
��������� �������� �������������� (� ������ 20) �������� ������ ����� ����� � ��� �������� �� ���� ������� (�� ����� ������) ������ �� �������, �������� �� /. �������, ��� ��� ��������� ����� ������ ������ /, ������� ������������ � �������� ������� find. � ���������� �������� ��� ������������ �����, ��������� ������.
������� ��������� \1 ������� sed - �������, ����������� � ������� (� ������ ������ �������������) ����������� ��������� � �������, ������� ��� ������������. � ������ ������ ������� sed ������� ������ �������, ��������������� ����������� ��������� - �������, �������� �� /.
���: thead
th��d �������� ��������� (������ ��������� �����) ������.
������ �������� ������ � ���������� ������ ��������� ����� ������� �����. ���� �� ������ �������, �� thead ��������� ��� ������.
thead [dir...]
$ find $HOME/src -name "*.c" -print | sort | thead
�������� ��������� (������ ��������� �����) ���� ���� �������� ������ �� ����� ��.
1 : 2 # @(#) thead v1.0 Prints head of files in tree Author: Russ Sage 2� �������� ��������� ������ � ������ 4 if [ "`echo $1|cut -c1`" = "-" ] 5 then echo "$0: arg error" 6 echo "usage: $0 [dir ...]" 7 exit 1 8 fi 10 case $# in 11 0) while read FILE 12 do 13 if file $FILE | fgrep text >/dev/null 2>&1 14 then echo "\n:::::::::::::::::::::" 15 echo " $FILE" 16 echo "\n:::::::::::::::::::::" 17 head -15 $FILE 18 fi 19 done;; 20 *) for NAME in $* 21 do 22 find $NAME -type f -print | sort | wile read FILE 23 do 24 if file $FILE | fgrep text >/dev/null 2>&1 25 then echo "\n:::::::::::::::::::::" 26 echo " $FILE" 27 echo "\n:::::::::::::::::::::" 28 head -15 $FILE 29 fi 30 done 31 done;; 32 esac
FILE | �������� ��� ������� ����� |
NAME | ��� ��������, �������� � ��������� ������ |
����� ����� ��������� ���� thead?
��� ��� ����������� ����� � ���� �����, ������������� �������� ������� �������� ����� ������������ ������ ������� UNIX. ������, ������ ��������� ������ � UNIX ����� ���� ��������������� � ����������� ������� ������. ������������ ������ ��������� ����������� ������� ������� ����� ����������� �������, ���������� � �������. � ������ ������ �� �������� ���� ��������� ������ �� ������ � �������� head ������� UNIX ��� ��������� ������������� ����������� ���� ������ � ���������� �������� ��������� ������.
������ � ���, ��������, ����� ��������� ������� ����������� ����� � ����� ��� ����� ��������. � ������� �������� ���������� ������������ ����������� ����� ������ ��������� � ���������� ������������� ���������. Thead ����� �������� �� ���������� ����� ������� � �������� ��������� (��������� ������ ����� ������) � ���� ������������ ������.
��� ������ thead?
Thead - ��� ��������������� ������� � ������� head ������� UNIX. ������� head ����� ����������, ��, �������� � ��� ����������� ��������� � ������, �� ����� ������� ����� �������� ���������������� ��������, �������� ��� � ����������� ����� UNIX.
��������, �� �������� ����������� ��������� ���� ��������� ������ � ����� ��������������� ��������. ���� � ��� ������� ������� ����� ������������, ��� ���������� ��� �� ������ � ����������� ��� �����, ������������ � ���. �� ����� ������� ��� � ������� �������
$ thead $HOME
���� �� ����� ����������� ������ �������� ����� �� ����� �� (*.c), �� �������������� ���� ��������� �� ������� ��� �����. �� �� �������� ����������� ���������. ��� ���������� ����� ������ ������� (��� ���������������) ����� � $HOME ����� ���, ��� ������������� ��. ��� ��� ������� thead ����� ������������ ������ ����� ������, �� ����� ������������ ��������� �������:
$ find $HOME -name "*.c" -print | sort | thead
������� find ���������� ������ ������ � ����������� C, ������� ����������� � �������� �� ������ �� ���� ������� thead. ��� ����� �� �������������� ���� ��������, ������ �������� ��� ���������� ����� �������� ����������� �������� ������� ������ ���� �� ���������� ��������� ������ (��� � ������ �������), ���� �� ������������ ������ (��� �� ������ �������). ����������� ������������ ����������� ����� ��������� ��� ��������� �����-���� ������ ������� ������� UNIX, ������� ����� �������� ������� ������ ��� ������ ���������� �����. ������� � ����� ������� ������������ ���������� ��������. ����� ����������� ������ ������� UNIX �� ������� ���� ��������� ������-��������, ����� ��� wc, awk, sort.
��� ��� ������� ����������� ������� ������ � ��������� ������ ��������� � ���������� ������� ����� ������. �� ����� ������������ ���������� �������� ��� ���� �����, � �� ������������ ���� ������� ��� ��������� ����������� �����������.
����������� ��� ������� thead �������� ��������. ������� �����, ������������ �� ����� "-" ���, ������ ������� ��� ������ ����� ������. ������� thead ����� �� ����������, ����� ������ ������� ������� ����� ��������������. ���� ��������� ������ �������� ��� �����, thead ���������� ��� ����������� ���������. ���� ������� ����� �� �������, thead ������ ����������� ���� (stdin) � ���������������, ����� ��������� EOF. (����� ������ � ������, ����� ������� thead �������� ������� �� ������������ ������.)
��� ������� �����, � ������� �������� thead, ����������� �������� - ��������� �� ��� ����. ���������� ������� head � ����������� ������� �������� � ������ "������������" �������� �� ����� � ������ ����� ������� ���� ����������� ������.
1. $ thead /etc
�������� ������ �� ������� ���������� �����, ������������ � �������� /etc. ����� �������� �������, ��� ��� ����������� ������ � /etc �������� ������������ ��������. ������ ����� ����������� ������ ����������� ��������� �����.
2. $ thead /usr/include
������������� ��� ������������ ����� (*.h), ���� � ��������� ����������� sys.
3. $ find $HOME -ctime 0 -print | thead
���� ��� ����� � ����� ��������������� ��������, ������� ���� �������� � ������� ��������� 24 �����. ��� ������� ����� �����������, ��������� �� ��. ���� ���� ���������, �� �� ����������.
������ 4-8 ��������� �������� ������. ��� ��� ������� thead �� ����� ������� �����, ����� ����������� ���������, ������� ���������� � ������ (-) �������� ���������. ���� ������ �������� ������� ������������ ��������� ����������� "-", �� ���������� ��������� "argument error" (������ ���������) ������ � ���������� � ������� ������� � ������� thead ���������� ������.
��������� ������ ���������������� ��� �������������� shell, ������������ � ���� �������, �������� ����� ����������� � ������ �����, ������� ����� ����� ������������ �� ��� ���������. �������������� ������ 4, ���������� ������� ������. ������� echo ������ ���������� $1 (������� �������� ��������� ������), ������� ���������� �� ������������ ������ ������� cut. ������� cut ������������ ��� ����, ����� �������� ������������ ������� ��� ������ �������� �� ������. � ������ ������ ����� -c1 ������������ ��� ��������� ������ ������� �������.
� ������� BSD ��� ������� cut, �� ��������� ��������� ���� ��� �� "��������" ������ �������� ���� � ������� ���������. �����������, �� ���������� ������� ��� ��������� ������ ������ �����. � ������ ������ ��� ������� who:
for NAME in 'who | sed "s/^\([^ ]*\).*/\1/"' do done
��� ������ ������������ ������ (���������) ������� sed ������ ���������� ������ ������ �������� ������ ������ ������. ������ ������ - ��� ������, ������� ����������. �� ���� �� ������ ������ (^) ������, �������� �� ������� ([^ ]), �� ������� ������� ����� ����� �������� �������� (*). ��� �������� ����������� �� ���������� �������. ����� �������� �������� �������������� ��������� ������ ������� \( � \). ������������ ������ �� ���� ����� ������ � ���� \1. ������� .* ��������, ��� ����� ����, ��� ������ ������, ���������� ������� ����������� ��� ������� �� ����� ������. �� ��������� ���������� ����� ����� ����, ��� ��������� � ���� �������� \( � \). ��������� ������ ����� ��������, �������� �� �������, �� �������� ��, ��� �������� ����������� ������ ������� "cut -f1".
� ���� ����� �� �������� � ������ �������� (`), ����������� ��� ���������. ��� ����� ��������� ������ ���� ������, ����������� � ����� �������� � �������� �� ��������� ������������ ��������� � ����� ��������� ����������. ���� ��������� ������� ���������� ������ ���������. ������� ���������� ������ � ������, ����� ��� ����� ���� �������� � �������� "-". ��������� ���� - ���������� ������, ����������� ������� ��� ��������� if. ��� �������� � ����, ��� ������������ ������� (������) ��� ��������� (����) �������, ������� ��������� ���, ����� �� ��������� ����� then ��������� if-then.
�� �� ���������� �������� ������������� ����� ����� ������� ���������� �����, �� �� ����� �������� ���, ��� ������ ��������� ��� ��� ������ ������ ��������� ���, ����� ��� ����� �����.
��������� ����� ���������� ����� ������������ ����� ���� �������� �������� ������ (case). ����������, ������������ ��� ���������, �������� ����� ����������� ���������� � ��������� ������. ���� ����������� ���������� ���, �� � ������� 11-19 ������������ ���� while. �������, ��� ���� while ��������� �������� ������, �� �� ���������, ������ ���- ��� ���� ���� ��� ����. ��� ������� � ���, ��� ������ �� ��������� �������� ����������� ���� (stdin). ��� ������� ����� �����, ������� �������� �� ������������ �����, ����������� ������� file ������� UNIX. ����� ������� file ���������� �� ������������ ������ ������� fgrep (� �� grep, ��� ����������� ��������), ����� ����������, �������� �� ���� ���������.
����������� ����� ������� fgrep ���������������� �� ������� ���������� (� ����������� ������� ������), ��������� �� ��� �� �����. ��� ���������� ���� ��� �������� ����� ���������� ����� ���������. ���� ������� file � fgrep ���������� �������, ����� �������� �������� ����. ��� �������� ��������, ������� ����������� ������� ����� ����� then (������ 14-17). ���� ���� �� ���������� ��� �� �������� ���������, �� ��� �������� ���������, � �������� �������� �����������. ��� �������� ��� � ����� �����, ����������� ��������� �������� ����� while � �� ������������� ��������� �������� �� ������������ �����.
������ ���������� ���������, ����������� �� then (������ 14-17). ��� ������� �����, ������� �������� ���������, ���������� ������ ��������� (:) �� � ����� ����� �����, � ������� head ������� UNIX �������� ������ 15 �����. ����� �������� ������������, ���� �� ���������� ������ � ����������� �����.
���������� ������ ������������, ����������� ������ ���������� ������. ��� ������������ ��������, ����� ������� ��������� ����������� ���������� (��� ������� �������� * � ��������� case). ���� for ��������� ��� ��������� (������ 20). ��������� (*) � ��������� case ��������, ��� �������� ����� ��������, ������� �� ������� �����. ��� ������������ (catchall) �����. ���� for ���������� �������� $* � �������� ������ �����. �� ������������ �������� ���� ����������� ����������, ��� �������� ���������� ���� ��������� �������, �������� ��� �������. ������� find ������������ ��� ������ ���� ���������� ������ � ��������. "����������" ����� �� �������� "������ ��������� �����", ������� �� �������� ��� �����. ����� ������� find ���������� �� ������ ������� sort, ����� ������� ��� ����� ���������. ��������������� ������ ���������� �� ������ � ���� while, ������� �������� ��� ����� � ���������� FILE (������ 27). �����������, ��������� �� ����, ����� �� ���������� �������� head.
���� �� ������� ������ 13-18 � ������ 24-29, �� �� ������, ��� ��� ���� � ��� �� ���. � ����������� ������ ���������������� ��� �������� ��, ��� �� ������ �������� ��� ������ ��� ��������� � �������� ��, ����� �����. ���� ���������������� �������������� shell, ���� � �������� ������, �� ����� �������� ������� ���������� ��������. ��������� ������������� shell � System V ����� �������, ������� ��������� ������ ��� ��������. �������, ��� ���������� ���� while ����������� �� ������ �����, ������� ���������� � ������������ ��������, � ������� ���� for �������� �� �������� � ��������.
��� ���������� �������� ������ �� �������� �����, ����� �� ����� ���������� �� ������� find ��������������� �� thead. ��������� ����������� ���� �� -name ��� ������������ �������� ���� ������ � -ctime ��� ��������� ���������, ��������� �� ��������.
��� ����� ��������������� ������������ ���� �� ���������� ����� ��������������� ������� (���������� �� -) � ����� -n, �����������, ��� �� ������� head ������ ���� ���������� n �����.
� ��� ������� ����� ����� ���������� �����������?
$ find $HOME -name "*.c" -print | thead � $ find $HOME -name "*.c" -exec head {} \;
��� �������� ����� ������, � ��� ������������� ������. ��� ������������ ���� � �� �� ����� � �������� ���� � �� �� ������ �� ������� �����. �������� ������� � ���, ��� ������, ������� ���������� thead, �������� ������� ���������� ������ ����� �����, � ������ ������� find �������� ����������� ����� ������ ���, ��� ����� ������ ����������, ����� ���� �� ��������������.
���: tgrep
tgrep ����� ������ �� ������� � ������ ������
������� �������� ������ � ���� � ������ ����� ��������� ������. ���� �� ������ ������� �������, tgrep ��������� ��� ������.
tgrep [-c|-h] string [file ...]
# tgrep "profanity" /
����� ����� "profanity" �� ���� ������� (����������������� ����� �� ����� �����!)
1 : 2 # @(#) tgrep v1.0 Search for string in tree Author: Russ Sage 2� ����� ������ � ������ 4 OPT="" 6 for ARG in $@ 7 do 8 if [ "`echo $ARG|cut -c1`" = "-" ] 9 then case $ARG in 10 -c) OPT="-name \"*.c\"" 11 shift;; 12 -h) OPT="-name \"*.h\"" 13 shift;; 14 *) echo "$O: incorrect argument" >&2 15 echo "usage: $O [-c|-h] string [file ...] >&2 16 exit 1;; 17 esac 18 fi 19 done 21 case $# in 22 0) echo "$O: argument error" >&2 23 echo "usage: $O [-c|-h] string [dir ...]" >&2 24 exit 2 25 ;; 26 1) while read FILE 27 do 28 grep -y "$1" $FILE /dev/nul 29 done 30 ;; 31 *) STRING=$1; shift 32 eval find "$@" -type f $OPT -print | sort | while read FILE 33 do 34 grep -y "$STRING" $FILE /dev/null 35 done 36 ;; 37 esac
FILE | �������� ��� ������� ����� |
OPT | �������� ����������� ����� ������� find |
STRING | ��������� ����������, � ������� ���������� ������ ������ |
����� ��� ����� ��������� ���� tgrep?
��� �� ����� ������ �� ������� ���� ���������� ������, ����������� �������� ������ ����� �������. �� ��������� �����, ��������� ��������� �������� ������ ������ �������, � ����� ������� ��������, ������� ����� ���� ������������ � ����� ������ ��������. ��� ������ ������� ��������� ���� �������, ��� ������ ����� ������� �� ����� ��������� � �� �������. ������������ �������� ����������� � ���, ��� �� ������ ������������ �� �� ����������������� (����� �������� ��� ��������� ��������� ������ ������� ��� �������� � ��� �� ���� ������). ��� ���� �������, ��� UNIX �� ����� "������" ����������� ������� - ��� ��������� �����. ��������� ������ ���� grep ����� ������, �� ��� ��� �������� ������ �� ������ �������������� ����������� ����� �����. ��� ��������� ������������ ��� ������� grep. ������, �� ����� ���� ������ �� ��� ����� �� ���� ������� ��� �����-���� �� ����� �� ������ ������. ���� �� ���������� ������� ��� �������, �� ��� ��������, ��� �� ������ ����� ��� �������� �� �������, ��� ����� �������� � �������������� ������. �� ����� ������ ����� �������, ��� �� ��������� ��������� ������, ���� �� � ��������� ��� �������� ��������� ����� �� ������. ����� ��������� ������� ������? ��� ����� ���������� ���������.
�������� ��������� ��������������� ������ ������ ������, �� ������������� ��� ����, ����� ��������� ���� ������� �� ����� ������ ���� ������ ����, ����� ������������ �� �������� � ������ ������-���� ������� ������������ ����������. ���� ��� ������ ���������� ������ �������� ������� � ������, �� ����� ��������� ���� ����� ��������� ��������, �������������� ����� ������ ��� ������� �����-���� �����.
��� ������ tgrep?
�������� ��������������� tgrep �������� ����������� ������� �������� � �������� ������������� ������������ ������� grep. �� ��������� ����� ����� ��, ��� � � grep, �� ����������� ���������� ����� ������. � ������� grep UNIX � �������� ��������� ����� ����������� ����������� ����� ����, �� �������� ���������� ����� ����� ���������� �����. � ������� tgrep ����� ����� �������������� ��������� �����, �� ���������� ����� ����� �������� ���������, ��������� �� ���� ����� ������. ������� find �������� �� �� ����� ������, ���� �� �������� ������� ��������� ���� ������ �� ���������� �����. � ��������� ������ ����� ����������� ��������� ���� ���������, ��������� ��� ��� ������������ ��� ��������� ����� ������ ��������� find.
�� ��������� tgrep ������� ��� ������� �����. � ���� ��������� ��� ������� �������� �� ��, ��������� ���� ��� ���, ��������� �� �� �������� ���������� ��� �� �����. ������� �� ���� ������ �������� �� ���� ������, ������� �� �������� � ���������� ������������. ���� �� ������ ������� ���� ������, ����������� ��� �����, -c � -h. ����� -c ���������� ������� UNIX find ������ ������ ����� � ������� ���� *.c. ����������, ����� -h ������������� ������ *.h. ��� ����� ����� ���� ������� ��� ���������� ����������� �� ����� ��, � �������� �� ����� �������� ������������ � ����� 4. ��� ����� �� ����� ������, �� ��� ����������, ��� ����� �������� ����� ����� � ���������. ���� ��� ������ ���� ������� �����-�� ���� �����, ����� ����������, ��������� ��������� �� ������ � ��������� ���������������. ������� thead, tgrep �������� ��������.
1. $ tgrep unix $HOME
����� ������ ��������� ����� unix
�� ���� ������ �����
���������������� ��������.
2. $ tgrep -c "^sleep()$" $HOME/src
����� ��������� (������ ������, ���������� ������, ����� ������) �� ���� �������� ������ �� ����� �� � ��������������� �������� � ��������� �������� (����� -c).
3. # find /usr/src -name "*.c" -print | tgrep "ioctl"
����� ���� ������� ioctl � �������� ��-������, ������� � �������� /usr/src. (�������� ��������, ��� � ������� ������������������. ��� ����� �� ����, ��� � ��������� ������� � ������������ ����� �������, � ������ � �������� �������������, � ����� �� ����, ��� � �������� ������� ����������� ������������ ������ "#".)
4. $ tgrep "| more" `find . -type f -print`
����� ������� ������������ ����� (|), ����� �������� ������� ����� more, � ������ ���� ������, ������������ ���������� find. Find �������� ����� ���� ������ �������� �������� � ���� ������������, ������� �������� �������� �������.
5. $ tgrep trap /bin /usr/bin /etc
����� ������� ���������� (trap) �� ���� ��������� ������ �������������� shell, ������� ������� � ���� ���������.
� ������ 4 ���������� OPT, � ������� �������� �������������� ������� ��������� find, ���������������� � ������� ��������.
������ 6-18 ��������� �������� �� ������� ������. �����������, �������� �� ������ �������� ������� ������������ ��������� ������ "-". ���� �������� �������, �� ����������� �� ������������ ��� ��������. ���������� ������� �������� -c � -h. ���� ������� ���-���� ������, ��������� ��������� �� ������ � ��������� �����������. �������� ��������, ��� � ������� ������� shift ���������� ����� ��������� �� ��������� ������. ��� ������� ��� ����, ����� ������������ ��������� $@ ����� ���� ������������ ��� ��������� ������ ���������� ������ ������ � ��������. ��������� $@ �������� ������ ������ ��������� $ *, � ������� ��� ���������������� �� ��� ����������� ���������. ������ � ����������� ������ �� ������ ���� ������� ������� ����� ����.
��� ���� ���� ������ ��� ���������� �������� ���������� OPT � ������ 10. ���� ���������� ��� ���������� ��������� ��������, ������� �������� � ���� ���� �������, ��������� ������� ������ ���� ������ ������ ������, ������� � ����� ������ ������������ ���������� find. ������ ����������� ������ ������� ������ ��������� �������� ������������, � �� ����� � ������ ������ �� �����. ������� �� �������� �������� ������������� ������� \, ������� �������� ����������� �������� ���������� �� ��� �������. � ������ ������ ����������� �������� ���� �� ������ ������ ������������.
����� �������, ������� ����� ���������� (*) � ������ 10 ��������������� ��� ����� �������� ���������� OPT, ������ ����, ����� ��������� �������� ������������. ��������� ����������� ������� ����� ������ ���� ��������� � �������� ����������, ����� ������� ����� �������� ����� ������ ������, ������� ��� ����� ������������ �������� \. ��������� ������� � ���� ������ �� ������������ �������� ����� ������. ��� ������� ������������� ����� ������� ������� � ������ �������������� shell � ��������� �������� ������������.
��� ����� �������������������� � �������������� �������, ����� ������ ���. ����� �����-�� ��������� ���� �� ������ �������� ���������, �� ������ �� �����, ��������� ������������ ������������� �������. ���������� ����� ���������� ����� - ��� �������� case (������ 21-37), ������� ����� ���� � ������ ���������� ��������� ������. ���� ��� ������� ����������, ���������� ��������� �� ������ � �� ������� �� ���������. �� ���� �� ����� ������ �������� ������ �������� grep, ���� �� ���� �� �����, ����� ������ ����� ������.
���� ������ ������ ���� ��������, �� ��� ������ ���� ������ ������. ��� ����� ��������, ��� � ��������� ������ �� ������� ����� ������ � ������� �� ������ �� �� ������������ ���������� �����, �.�. ��������� ���� ��������� ��� ������. ���� while (������ 26-29) ������ �� ������������ ����� ��� ������� ����� ��� ������ � ��� �������� grep ������ ������. ����� -y ������� grep �������� ������������������ � �������� �������� ��� ������. ������������� ���� ����� ���� ��� ������� ����� ������� �� ������ ������.
������ ���������� ������������ ����� ����� �������� ��� ������� grep � ������� 28 � 34. �� ���� ������ ������ �� ������ � �����, �� ����� � �������� /dev/null. ��� ������� ��������? ��. �������� ����������� � ����� ������� grep. Grep �����, ����� � ��������� ������ ������� ����� ������ �����. ���� ������� ����� ������ �����, �� ��� ����� ��������� �� ����� �� ������ ��������� ������. ���� �� � ��������� ������ ������ ������ ���� ����, �� ��� ��� �� ���������, ��������� ���������, ��� ������������ ������ ������� ��� ���. ��� ������� �������� ��� ��������� ��������� ������, ����� �� ������ ����� ���� ������, �� ��� �������������� �� ������. �� ������������ ����� �� ������, ��������� ���� �� �� ������������ �������� ���������� ����� ������ � ������� ������������, �� ����� �� ��������� ������� ����� ���� ������ � ����� ��������� ������ ��� ������� grep. ������� ������ ������������� ��������� ������������ ����� ��� ���������� ���������� ����������, �� �������� ����� ����� ��������� � ����� ������� ����� �� �������.
��������� �� ����� ���� �� ���� ������� ���������� ������ �����, �� �� ����� ������ ����� ������, � ������� ��� ���� �������. ��� �������� � ��������� ������ grep �������� /dev/null, grep ������ �������� ��� ����� �� ������ ��������� ������ � ����� �����, ��������� ������ ������� ��� ����� ����� � �������� ����������. �������, � /dev/null ������ ������ �����, ��������� �� ���� �� �����������. ��������� ������� � ��������� case (������ 31-36) - ��� �������. �� ������������� ������ ���������� ����������� ���������� ����� ������, ��� ��������� ��� ����� ���������� ����� ��������� � ��������� ������.
���� ���� �� ����� ������� ��������� ��������� � ��������� ������, ������ ���������� ��-�������� �������� ������ ������. �� ��� ����� �������: "������� �� ������� ���������", ������� �� ��������� ������ ������ (� ���������� STRING - ����. �����.) � ������� �� �������� shift. ������ �� ����� �������� ������ � ��������� ����� ��������� ������ � ������� ��������� $@.
������� ���������, ��� ����������, ����� �� ��������� �� ���������� $OPT ��� ��������� ����� ������� find. ��������, �� ������� tgrep � ������ -c. ����� �� ����������� �������� ���������� OPT, �� ������ ������ c � ���� "*.c" ������ ������� �������, ��������� �� �� ������, ����� shell ��������� ��� ������ (�.�. ��������� �� ��� ����� ���� ������, ��������������� ������� �������) ������ ������. ������, ��� ������ � ���������� $OPT ���� ��������� � ������� find, ��������� OPT �������� *.c, ��� �������� ����� ������, ���������� ����� ������� ������������� *.c. ��� ������ ���������� ������������� �� ������ ������������ ������� eval. ����� ����������� ������� find ������� eval ���������� shell �������� ������������� ������� � ��������� ��������������� �������� ����������. �� ���� ������� ��������� "*.c" ������������ � *.c, ��� ��������� ��������� ���� ������ ����� �������, ����� ���� ����������� ��� ��� �����.
�������� $@ � ������� find, �� ����� ����������� ����� �� ���� ��������� �����. ����� �������, ��� ����� ������� find ������ ���� ���, ��� ��������� ������� ����� ������������ ����������. ����� �� ���������� �������, ��������� ��� ���������� ������� ���������� ����� ���� ��, ��� ��������� ���� $* �� ��������. � ������� find ��������� ������ ����������. ���� ������ shell'� � ������ -x (������������� ���� ���������� ����������) �� �������� ��������. ��������� ����������, �������, ������� ����������� � ���. �����������, ������� � ���, ��� ��������� $* ������������ � "$1 $2 ...", � �� ����� ��� ��������� $@ ������������ � "$1" "$2" (�.�. � ��������� ���������). ����������� ��, ��� ��������� $* ���������� ����� ���������� ��������� ������� find ��� ���� ������. ������� find �� ����� ���������� ���� ������ ����, ������� ���������� ����������. ����� �� ������ ����� ���� ������������ ��������� $@, ������� find �������� ��������� ����������� ����� � �������. ��� ������ ������� ������� find, � ��� ����������. ����� ������ ������ ������ ������� ����� ������� ��� ��������!
� ��� ������� ����� ����� ���������� �����������?
grep "$1" `find "$2" -print` � find "$2" -print | while read F do grep "$1" $F done
��� ������� ���������� ��������, �� ���������� �������� � �������. ������ �������� - ��� ���� ����� ������� grep. ����������� �������� ��������� ���� ������, ������������ �������� find. ���� find ����������� ������� ����� ���� ������, �� ���������� ������� ����������. � ���, ��� ������������� ������� ����� ���� ������, �������� �������������� �� ��������, �� ������� ���������� ������ �������� ��� grep. ������� �� ������ ������������� ����� ��������� ��� ������������ � ����� ������.
������ �������� - ��� ����. �� �������� ��������� � �������� grep ����� ���, ��� �������� ����� ������� ������������ ����������. ������ ������������� �������� �������� ��, ��� ���� �������� ������ �� ���������, ������� ���������� �� ����� ����������� �� ����� ������, ������� �� ����� �����. ���� ��������� ������� ���������� �� ��������� ����������.
����� | ���������� | ������