| ���������� | ����������� | �������� | ������
| ����� 1 | ����� 2 | ����� 3 | ����� 4 | ����� 5 | ����� 6 | ����� 7 | ����� 8 | ����� 9 | ����� 10
| ����� 11 | ����� 12 | ����� 13 | ����� 14 | ����� 15 | ����� 16 | ����� 17 | ����� 18 | ����� 19
| ���������� � | ���������� � | ���������� � | ���������� � |

����� 13

    � ���� �����:


��������������� ������� � ����������

� ���� ����� �� �������, ��� ����� �������������� ������ �������, � �� ������ ������������� � ��� �������. ��� ������������ ��������� ������� � ������ � ��������� �� ����� ������������ ���������� UNIX (a ����� POSIX � Linux). ���� � ������ ��������� ������� � �������� ��������, �� ����������� ����� �������� �������� ������������ ��� ����������� �������� ������.

�������� �����

�� ��� ��������� ��������� � Per! ����, �������� ��� ��� ������ ����� ���������� �����. ������ �� ������ ������� ��������� �������� ������ (����� ������ ��� ����������� �����, �� ������ ��?).

Perl-������� unlink (��������� �� ����� ���������� ������ POSIX) ������� ���� �� ���� ����� (������� ����� ����� � ������ �����). ����� ��������� ��������� ��� ����� � �� � ����� �������� �� �� ������, ��������� � ��� ����. ��� � �������� ������������� ����, ��� ������ UNIX-������� ��. ��������� � ����� ����� ������ ������ ���� ��� (���� �� �� ��������� ������� ������), �� � ����������� ������� �������� ����� ����� ������� ��������� �����. ������ ��� ���������, �������, ��� ������� ���� fred, � ����� ������� ����, ��� �������� �������� �� ����� ���������� ���������:

unlink ("fred"); # ������������ � ������ fred print "what file do you want to delete? ";

chomp($name = <STDIN>) ;

unlink ($name) ;

������� unlink ����� ��������� ����� ������ ����, ���������� ��������:

unlink ("cowbird","starling"); # ����� ���� ������ unlink <*.�>; # ��� "rm *.o" � shell

�������� <*. o> ����������� � ��������� ��������� � ������� ������ ���� ������, ������� ��������� � ��������. ��� ������ ��, ��� ����� �������� � unlink.

������� unlink ���������� ���������� ������� ��������� ������. ���� ������ ������ ���� �������� � ��������������� ��� ���� ���������, �� ������������ �������; � ��������� ������ ������������ ����. ���� ������ ����� ���� ������, �� ������� ����� ������ ���, �� ������������ ���. ����������, ����� ������ ����� ���� �������, �� ��������� ������-������� �������� ����������, ������� ���� ��� ����� ����������, ����� ���� �� ������, �������� �� �� ������. ��� ��� ������������ �������� ���� ��������� ������ (����� ������� ������������� �� . �) � ������� ������-��� �� ������ ��� ������� �����, ������� ������� ������:

foreach $file (<*.o>) ( # ������ �� ������ .�-������

unlink($file) || warn "having trouble deleting $file: $!";

1

���� unlink ���������� 1 (��� ��������, ��� ������������ ��������� ���� ��� ������), �� ������� warn ������������. ���� ��� ����� �� ����� ���� �������, ��������� "�" �������� "����", ������� warn �����������. ���������� ��� ����� ��������� ���: "����� ���� ���� ��� ������ ��� � ���".

���� ������� unlink ������ ��� ����������, �� �� ��������� ����� ������������ ���������� $_. ���, ����������� ���� ���� ����� �������� ��������� �������:

foreach (<*.�>) ( # ������ �� ������ .�-������

unlink || warn "having trouble deleting $_: $!";

�������������� �����

� shell UNIX ��� ����� ���������� � ������� ������� mv. � Perl ��� �������� ������������ ��� rename {$������,$�����). ��� ��� ������� ������������� ���� fred � barney:

rename("fred","barney") II die "Can't rename fred to barney: $!";

��� � ����������� ������ �������, ��� �������� ���������� rename ���������� �������� "������", �������, ����� ������, ��������� �� ������� rename, ����� ��������� ���� ���������.

����� ������������ ������ mv ���� �����-��_�������, ������� /�������� ���� ���������� ������� � ������� ������ ������� ��� (���, ������� �������, ������ �������� ���� � ����� ���������� �����). ������� rename ����� ������ �� �����. � Perl ������������� �������� �������� ���:

rename("����","�����-��_�������/����");

�������� ��������: � Perl ����� ������� ��� ����� � ����� �������� ����. ����� ����, ������� mv �������� ����, ����� �� �����������������, � ������ ��������������� ���������� �� ������ (���� �� ����������� ���� �� ���������� ����������� ������������ ������). ������� rename �� ��������� ����, ������� �� �������� ��������� �� ������, ����������, ��� ��� �������� ����� ������ �����-�� ���� �������� (��������, ����������� ������ ������� mv c ���� �� �������). ������ File::Find ������������ ������� move.

�������� ��� ����� �������������� ����: ���������� ��������

������ ������������ �����, ����� � ����� ���� ���, ���, � �� � ������ ���� (��� ����� ������ ����� ����� �� �������!). �������� �����Ϻ��� ����� �������������� ���� ���������� �������� ������. ��� �������� ����� �������� ������ � ��� �������� ������� ������ � �������� �����-�������� (��� ������) ������. �� ��� ���� �������� ������ ������������ ��� ���� ������ ��� ���� �� ���� �� ���. � ���� ������� ������� �������� �������, ��������������� ��������� POSIX.

������� � ������������� ������

������� ������ �� ���� ���������� �� ��� ��������� �����; �� ���� �� ������� ������ �� �������� ����� "�������� ������" ��� �����, ��� ����� ������.

������������ ������� ������ �� ���, ������� ������� ������ ��������-�� ���� � ������ ������ ������ �������. ����� ���� ������� ���������, � ���� ������� ���� ������. ������ ����� ������� ������ ����������� ��� �����, � ������ ��������� � ���������. ����� �������� ��������� ������ �� ���� � ���� �����������, �� ���������� ��Ϻ �������������.

������ ������� ������ �� ���� ������ ������������� � ��� �� �������� ������� (������ ��� ���� ��� ����� �����). �� ���� ������� ������ ������� ����� ������� ������ �� ����, ����������� � ������ �������� �������.

� ����������� ������ ���������� ������� ������ ��� ��������� ����-������. ����� ��������� ��������� ����� ��� ������, � �� ������������ �����, ��� �������� ����������� ������� ������ ������ ����� �� �����, ������ �� "���������" ����� �� ������ �������, � ��������� ������� ������ "�����-�����" �� ������� �� ��� ������������. ���� �� ����������� ������� ��� ���� ������� ������ �� �������, �� �������� ��������� �� ������ (���� ������ �� �� ����������������� ������������ � ����� ��� �������� �������� ��� ���� �� ��������������� ����� ������������ ���-����� �������).

������������� ������ � ��� ���� ������� ����, ������� �������� � �������� ������ ������� ���. ����� ���� ���� �����������, ������������ ������� ������������� ��� ���������� ��� ���������� ������� ��� ���-���� �������� ����� � ���������� ���� ��� ������� ��������� �� ������ ���������, ��������� ����� ���.

��������, ���� ������������� ������ fred �������� ��� barney, �� �������� ������� ���� fred � ���, �� ����� ����, �������� ������� ���� barney. ���� barney � �������, �� fred/wilma ���������� �����/wilma.

���������� ������������� ������ (i.e. ���, �� ������� ��������� ������������� ������) �� ����������� ������ ���������� ������������ ���� ��� �������. � ������, ����� ����������/'erf, ������������� barney ����� �� �����������. ����� ����, ����� ����� ������� � �� ���������! ���������� ������������� ������ ����� ��������� �� ����, ������� ����� �� ������� ������� �������� �������, ������� ����� ��������� ���������-���� ������ �� ����, ����������� � ������ �������������� �������� �������.

���������� ����� ���, ���� ����� ������������ �� ������ ���������-���� ������. ��� ����� ������ �������� ����� �������� �������������� ����. ���� ������������� ������ ����� ��������� �� ������ ������������� ������. ��� �������, ����������� �� ������ ������� ������������� ������, �� �� �������� ����� ����������� �����.

������� ������ �������� ���������� ����� �� ����������� (������ ��� ��� ��������� ����� �� ���� �����). ������������� �� ������ �� ����� ������� ���������� ����� �� ������������. ������������� ������ ����� ��������� �� ������ �������������� �������� �������, � ������� � �� �����. ��� �������� ����� ���� ������� ������ ������������� ������.

�������� ������� � ������������� ������ � Perl

� �� UNIX ������� ������ ������� � ������� ������� In. ��������, �������

In fred bigdumbguy

��������� ������� ������� ������ �� ����� fred (������� ������ ��������-����) �� bigdumbguy. � Per! ��� ���������� ���:

link("fred","bigdumbguy") || die "cannot link fred to bigdumbguy";

������� link ��������� ��� ��������� � ������ ��� ����� � ����� ��������� ��� ����� �����. ���� ������ ������� �������, link ���������� �������� "������". ��� � ������� mv, UNIX-������� In ��������� ��������� � �������� ���������� ������ ������� (��� ����� �����). ������� link (��� � ������� rename) �� ��������� ����, ������� �� ������ ��������� ������ ��� ����� ����.

��� �������� ������� ������ ������ ��� �� ����� ���� ������ ��������*, � ����� ��������� ������ ��������� �� �� �� �������� �������. (��� ����������� �������� ���������� ������������� �������� �������-������ ������.)

� ��������, ������� ������������ ������������� ������, � ������� In ����� �������������� ����� -s, ������� ������� ������������� ������. ��������, ���� ���������� ������� ������������� ������ �� barney �� neighbor (����� ��������� � neighbor �������ӿڳ ���� ���������� � barney), ������� ������������ �������

In -s barney neighbor

� Perl ��� ����� ����������� ������� symlink:

symlinkf"barney","neighbor") || die "cannot symlink to neighbor";

�������, ��� barney �� ����������� ������ ������������ � �� ������, �� � �������. � ���� ������ ��������� � neighbor ��������� ����� �������� ����� No such file or directory.

����� �� ��������� Is -1 ��� ��������, ����������� ������������� ������, �� ��������� ��� ��� ���� ������, ��� � ���������� � ���, ���� ��� ���������. � Perl ��� �� ���������� ����� �������� � ������� ������� readlink, ������� �� �������� ������ ����������� ������ �� ��������� ����� � ��� �� ������: ��� ���������� ���, �� ������� ��������� �������� ������������� ������. ���, � ���������� ���������� ��������

if (defined($� = readlink("neighbor"))) ( print "neighbor points at '$x'\n";

�� �������� �������� � barney, ���� ��� ���������. ���� ��������� ������������� ������ �� ����������, �� ����� ���� ��������� ��� ������ �� �������� �������, readlink ���������� undef (�.�. ������� ������ "����") � ������ ������� �� �� ����� � ���������.

� ��������, �� �������������� ������������� ������, ��� ������� � � symlink, � readlink � �������� ������� � ������� ��������� �� ������. Perl ����� "��������" �� ��� ��������� ��������� �� ���������� ������� �����������, �� ��������� ��� ����� �����������. ��� ��� ��� ���� �� ���.

* ���� ������ �� �� ����������������� ������������ � �� ������ ����������� � �������� fsck, �������������� ������������ �������� �������.

�������� � �������� ���������

�� �� ������ �� ��������� ��������� �������� (�� ������ ������, � UNIX-�������), �� ���� � ������� mkdir(\), ������� ������� ��������, ���������� ����� � ������ ��������. � Perl ���� ���������� ���� �����-�� � ������� mkdir, ������� � �������� ���������� ��������� ��� ������ �������� � ����� �����, ������������ ����� ������� � ���������� ��������. ����� ������� �������� ��� �����, ���������������� �� ���������� ������� ���� �������. ���� �� �� ������� � ���������� �������� ���� �������, ���������� � man-�������� chmod(2). ���� ��� ������� � ���� �����������, ������ ������� ����� ������� ��� 0777, � ��� ����� ���������*. ��� ������ �������� �������� � ������ gravelpit:

mkdir ("gravelpit",0777) || die "cannot mkdir gravelpit: $!";

UNIX-������� rmdir(l) ������� ������ ��������. � Perl ���� �� ���������� � ��� �� ������. ��� ��� ����� ������� ����� �����������:

rmdir ("gravelpit") I| die "cannot rmdir gravelpit: $!";

���� ��� Perl-�������� ���������� ������������ ��������� ������� � ������ �� �������, ��� ����� ����������� (���� � ������� ���������) ���� � ��������, �� �������������� ����� ������. Perl �������� ������� mkdir � rmdir (��� ��� ��� ��� ���������� � ��� � �������) �������������.

��������� ���� �������

����� ������� � ����� ��� �������� ����������, ��� (� ������� ������ �����) � ��� ����� ������ � ���� ������ ��� ���������. � UNIX �������-����� ����� ��������� ���� ������� � ����� � ���������� ������� chmod(l). (���� �� �� ������� � ���� ���������, ���������� � �� man-��������.) � Perl ����� ������� ���������� � ������� ������� chmod. ��� ������� �������� � �������� ���������� �������� ������������ ������ ����� ������� � ������ ���� ������ � �������� �������� ����� ������� �� ���� ���� ������ � ������������ � ��������� �������. ����� ������� ����� fred����� ���������� � ������� ������ � ������ ��� ���� �������������, ����� ��������� ����� ��������:

chmod(0666,"fred","barney");

����� 0666 ���������� ������ � ������ ��� ���������, ������ � ������ �������������, �.�. ��� ��� ��, ��� ��� �����.

* � ������ ������ �� �� �������� ������� � ������ �������� ������� �������. ���������� ����� ������� ��� ����� ������� ������� ����� ������� umask ������ ��������. � UNIX-�������� ��. �������� ������� shell umask ��� man-�������� umask(2).

 

������� chmod ���������� ����� ������, ��� ������� ���� ������� �������� ����� ������� (���� ���� � ���������� ���������� ������ �� ����������). ����� �������, � ��������� �������� ������ ��� �������� ���������� ������� unlink. �������, ����� �������� ����� ������� � ������ fred������ � ��������� �������� ������ � ������ ������, ���������� ������������ ��������� �����������:

foreach $file ("fred","barney") f unless chmod (0666,$file) (

warn "hmm... couldn't chmod $file.\$!";

��������� ��������������

������ ���� � �������� ������� (�������, �������, ���� ���������� � �.�.) ����� ��������� � ������. ��� ��������� ����������, ���� ����������� ����� �������, ������������� ��� ����� �� ���������� "��������" � "������" (������, ������ � (���) ����������). �������� � ������ ������������ � ������ �������� �����, �� ��� ������������ ��������������� �� ������ �������� ��. (��� �������������� ������� �� ���������� ������������� UNIX, c ������� �� ���������; ����������� ��. �� man-�������� chown.)

������� chown �������� ������������� ������������ (UID), ������-������� ������ (GID) � ������ ���� ������ � �������� �������� ������-�������� ������� �� ������������� ������ � ������������ � ���������� ����������������. ��������� ���������� ������������� ��������� �����-���, ������ ����� ������, �������������� ������� �������� (��� � ����-���� chmod � unlink). �������� ��������: �� ������������ ������� � ���������, � ������. ���� �����-�� �� ���� ��������������� �� ������ �� ������, ��������� ������ ���� -1. �������, ��� ����� ������������ �������� UID � GID, � �� ��������������� ������������� ����� (���� ������� chmod � ��������� ����� �����). ��������, ���� UID ����� fred � 1234, � ������������� ������ stoners, ������� ���� ���� ����������� �� ���������,� 35, �� � ���������� ���������� ��������� ������� ����� slategranite ��������� � ������������ fred � ��� ������:

chown(1234, 35, "slate", "granite"); # �� ��, ��� �

# chown fred slate granite

# chgrp stoners slate granite

� ����� 16 �� �������, ��� ������������� fred � 1234 � stoners � 35.

��������� ����� �������

� ������ ������ ������ ����� �� ���� ����� �������. �� ������� ��������� � ���, ����� �������� � ���, ��� �������� ���������� � �����:

��� ����� ���������� �������, ����� ���������� ��������� � ����� ������-���� ��������� ���������� �����������. ������ ���� ������ ������� ����� ��������� ������������ �������� � ������� ������� utime (��-����� ������������� ���������� ������ utime � �� UNIX). ��� ��������� ���� ���� �������� ������ ����� ������������� ��������������� � ������� �����, ������� ���������� ������� ��� �� ��������� �� �������������.

��� �������� ��������������� �� ���������� ������� �������, � ����-�� � ���������� ������, ��������� ����� �������� 1 ������ 1970 ���� �� ������������������ �������. ����� �� ������ ���� �����, ��� ����� �������� 800 ��������� � ���������. (�� ���������� ������� ��� ����-���������� ��� 32-��������� ����� ��� �����, � ���� ��� �� �� �������� �� 64-��������� (� �����) ������, �� ������������ �������� ���-�� � ������-��� ��������. � ��� ����� ������� ����� ��������� �������� � 2000-� ����*.)

������� utime �������� ���������� �������� chmod � unlink. ��� �������� ������ ���� ������ � ���������� ����� ������, ��������� ������� ������� ���� ��������. ��� ��� ����� �������, ����� ����� fred � barney ��������� ���, ����� ��� ���������� � �������� �������:

$atime = $mtime = 700_000_000; # ��������� ����� ����� utime($atime,$mtime,"fred","barney")

�������� "���������" �������� ��� ����� ������� ���: ����� ������� ���, ����� ���� �������� ����� ������ ������, ��� ����� ��������, ����� �� ��� ������� � ������� ������� (��� �������, ���� �� ������ ������-�������������� ��������). ��� ���, �������� � ������� ������� time (������� ���������� ������� ����� ��� ����� ������� UNIX) ����� ������� ���, ����� ��������, ����� ���� max_headroom ��� ������� ������ 20 ����� ����� �������� ������� �������:

$when = time() + 20*60; # 20 ����� � �������� ������� utime($when,$when,"max headroom");

* Perl-������� localtime nqmtime �����������, �����: ��� ���������� ���, ���������� ������� ����� 1900. � 2003-� ���� localtime ������ ��� ��� 103.

����������

������ � ����������� ��. � ���������� �.

�������� ���������, ������� �������� ��� ������� ��, ������ �����, ����� ������� ���� ������ ��� ��������� ��������� ������ ��� ������ ���������. (������� ����� ������� Գ ��� ��� ����� �� �����������.)

����������� ��������� ��� ��������� � ����� ������ ���������, ����� �������� �� ������� ������ �����! �������, ��� ��������� ��������� ������ ��� ������� ��������� ����������� �� ������� @argv.

�������� ���������, ������� �������� ��� ������� mv, �������������� ������ �������� ��������� ������ �� ������ ��������. (������� ����� ������� mv ��� ��� ����� �� �����, � ���������� ����� ����� ���.) ������ ����� ����������� ������ ��������������, ����� ������� ���-����� �������� �������.

�������� ���������, ������� ��������, ��� In, �������� ������� ���ɳ�� �� ������� ��������� ��������� ������ �� ������ ��������. (������� ����� ������� In ��� ��� ����� �� �����, � ���������� ����� ����� ���.)

���� � ��� ���� ������������� ������, ������������� ��������� �� ����������� ���������� ���, ����� ��� �������� � �������������� ������ -s.

���� � ��� ���� ������������� ������, �������� ���������, ������� ���� � ������� �������� ��� �����, �� ������� ���� ����� ������, � ������� �� ����� � �������� ������ ���, ��� ��� ������ Is -1 (��� -> ��������). �������� � ������� �������� ��������� ������������� ���-��� � ��������� ���������.

 




|     �����     |     ������     |


| ���������� | ����������� | �������� | ������
| ����� 1 | ����� 2 | ����� 3 | ����� 4 | ����� 5 | ����� 6 | ����� 7 | ����� 8 | ����� 9 | ����� 10
| ����� 11 | ����� 12 | ����� 13 | ����� 14 | ����� 15 | ����� 16 | ����� 17 | ����� 18 | ����� 19
| ���������� � | ���������� � | ���������� � | ���������� � |