開発環境
- OS X Lion - Apple(OS)
- BBEdit - Bare Bones Software, Inc.(Text Editor)
- Script言語:Perl
『初めてのPerl 第6版』(Randal L. Schwartz, Tom Phoenix, brian d foy 共著、近藤 嘉雪 訳、オライリー・ジャパン、2012年、ISBN978-4-87311-567-2) の13章(ディレクトリ操作)、13.13(練習問題)7を解いてみる。
その他参考書籍
7.
コード(BBEdit)
sample.pl
#!/usr/bin/env perl use strict; use warnings; use utf8; use 5.016; binmode STDIN, ':utf8'; binmode STDOUT, ':utf8'; use File::Basename; use File::Spec; my $s = $ARGV[0] eq '-s'; shift @ARGV if $s; my($old_name, $new_name) = @ARGV; die $! unless -f $old_name; if(-d $new_name){ my $basename = basename $old_name; $new_name = File::Spec->catfile($new_name, $basename); } if($s){ symlink $old_name, $new_name or die "can't symlink $old_name to $new_name:$!"; } else { link $old_name, $new_name or die "can't link $old_name to $new_name:$!"; }
入出力結果(Terminal)
$ ls -l symlink* -rw-r--r-- 3 kamimura staff 8 1 2 23:25 symlink.txt $ ./sample.pl symlink.txt symlink1.txt $ ls -l symlink* -rw-r--r-- 4 kamimura staff 8 1 2 23:25 symlink.txt -rw-r--r-- 4 kamimura staff 8 1 2 23:25 symlink1.txt $ ./sample.pl -s symlink.txt symlink2.txt $ ls -l symlink* -rw-r--r-- 4 kamimura staff 8 1 2 23:25 symlink.txt -rw-r--r-- 4 kamimura staff 8 1 2 23:25 symlink1.txt lrwxr-xr-x 1 kamimura staff 11 1 2 23:34 symlink2.txt -> symlink.txt $ ./sample.pl -s symlink1.txt some_folder $ ls -l some_folder/* -rw-r--r-- 3 kamimura staff 3 1 1 16:58 some_folder/ln.txt -rw-r--r-- 1 kamimura staff 3 12 31 13:45 some_folder/mv1.txt -rwxr-xr-x@ 1 kamimura staff 477 9 28 15:58 some_folder/sample.pl -r--r--r-- 2 kamimura staff 28 9 27 14:38 some_folder/some_file -r--r--r-- 2 kamimura staff 28 9 27 14:38 some_folder/some_file1 lrwxr-xr-x 1 kamimura staff 9 9 28 16:00 some_folder/some_file2 -> some_file lrwxr-xr-x 1 kamimura staff 12 1 2 23:35 some_folder/symlink1.txt -> symlink1.txt $
pythonの場合。
sample.py
コード(BBEdit)
#!/usr/bin/env python3.3 #-*- coding: utf-8 -*- import os, sys s = "" if sys.argv[1] == '-s': s = True src, dest = sys.argv[2], sys.argv[3] else: src, dest = sys.argv[1], sys.argv[2] if os.path.isdir(dest): dest = os.path.abspath(dest) + os.path.sep + src if s: os.symlink(src, dest) else: os.link(src, dest)
入出力結果(Terminal)
$ ls -l symlink* -rw-r--r-- 3 kamimura staff 8 1 2 23:25 symlink.txt $ ./sample.py symlink.txt symlink1.txt $ ls -l symlink* -rw-r--r-- 4 kamimura staff 8 1 2 23:25 symlink.txt -rw-r--r-- 4 kamimura staff 8 1 2 23:25 symlink1.txt $ ./sample.py -s symlink.txt symlink2.txt $ ls -l symlink* -rw-r--r-- 4 kamimura staff 8 1 2 23:25 symlink.txt -rw-r--r-- 4 kamimura staff 8 1 2 23:25 symlink1.txt lrwxr-xr-x 1 kamimura staff 11 1 2 23:41 symlink2.txt -> symlink.txt $ ./sample.py -s symlink.txt some_folder $ ls -l some_folder/symlink* lrwxr-xr-x 1 kamimura staff 11 1 2 23:41 some_folder/symlink.txt -> symlink.txt $
0 コメント:
コメントを投稿