
Ubuntu日本語フォーラム

ログインしていません。
スクリプトファイル権限付与ができません。
1.スリフトファイルはウェブサイトからコピーしてきて gedit で編集しました。
・スクリプトファイル名:spacer.pl
2.ファイルの保存先:home/ユーザ/bin
ここは PATH が通っているディレクトリと聞いています。
3.権限付与ー端末から操作
コード:~$ chmod a+x spacer.pl
これでうまく行き、全角-半角文字間に半角スペースが挿入されます。
・ファイルの内容:
名前;spacer.pl
コード:
#!/usr/bin/perl
use strict;
use warnings;
use Encode;
my $east = qr/(?!\p{M})(?:\p{Han}|\p{Katakana}|\p{Hiragana})/;
my $west = qr/(?!\p{M})(?:\p{Latin}|\p{Greek}|\p{Cyrillic})/;
binmode STDOUT, ':utf8';
while(<>){
$_ = decode 'utf8', $_;
s/($east)($west)/$1 $2/g;
s/($west)($east)/$1 $2/g;
print;
}
・Ubuntu のバージョン:Ubuntu 14.04 64bit 版(日本語 Remix )にも spacer.pl を適用しようとしたが
Linux-Mint Petra 16もダメだった。
・経緯:下記でご指導を頂き、
日本語フォーラム https://forums.ubuntulinux.jp/viewtopic.php?pid=103422#p103422
件名:「テキストエディタ:半角スペースをワンクリックで挿入」
4月18日に本家サイトからダウンロードした Ubuntu 14.04 32bit 版で、上記1.〜3.の設定を行ったところ、うまく行きました。権限付与ができ、スクリプトが期待通りに動いてくれました。
Ubuntu 14.04日本語 Remix がリリースされたので、64bit 版をインストールして、端末から32bit 版の時と同じ作業を行ったのですが、下記のエラー。
~$ chmod a+x spacer.pl
chmod: `spacer.pl' にアクセスできません: そのようなファイルやディレクトリはありませんと、なりうまく行きません。ターゲットを/bin に変更して試しましたが、ダメでした。
Linux-Mint での結果も同様でうまく行きません。
どこで間違いを犯しているのは自力では分からず、ご助力いただけるとありがたいです。
・追記:Windows 7、Ubuntu 14.04、Ubuntu 12.04、Linux=Mint のマルチブート環境です。
;CPU Core i 3570K メモリ 8GB
オフライン
spacer.pl があるディレクトリーまで端末で移動していただいて、
pwd
ls -l
echo $PATH
の結果を教えていただけませんか?
オフライン
makopi さん、ご連絡有難うございます。
ご指示の通りに端末を操作。
echo SPATH の結果:
hk@hk-Ub64:/bin$ echo SPATH
SPATH
これは spacer.pl が機能している32ビット版のUbuntu 14.04 と同じ結果です。
32ビット版の pwd/ls -l も内容こそ異なりますが160行ほどになります。
pwd
ls -l の結果は160行ほどあり、ここに貼り付けるのが憚れます。
makopi さんご指定のファイル共有サービスがあればそちらに160行ほどのテキストファイルをアップロードすることもできます。
ご指示をお待ちしています。
オフライン
わざわざコマンドでやる必要はないです。
Ubuntuなら、ファイルを右クリックしてプロパティを表示して、「プログラムとして実行できる」にチェックを入れるだけです。
Sekko による投稿:
ご指示の通りに端末を操作。
echo SPATH の結果:
SPATH では有りません。 $PATH (1文字目は「ドル記号」) です。
オフライン
#1 より
1.スリフトファイルはウェブサイトからコピーしてきて gedit で編集しました。
・スクリプトファイル名:spacer.pl
2.ファイルの保存先:home/ユーザ/bin
ここは PATH が通っているディレクトリと聞いています。
3.権限付与ー端末から操作
コード:~$ chmod a+x spacer.pl
これでうまく行き、全角-半角文字間に半角スペースが挿入されます。
spacer.pl の保存先が /home/ユーザ/bin なのに /home/ユーザ で chmod を実行しています。
これは 3. の ~$ でわかります。
だから、
~$ chmod a+x spacer.pl
chmod: `spacer.pl' にアクセスできません: そのようなファイルやディレクトリはありません
のメッセージになるのです。
この時点では
chmod a+x ~/bin/spacer.pl
になると思います。
今は /bin にあるようなので
sudo chmod a+x /bin/spacer.pl
でいけると思います。
以下は説明です。
> pwd
spacer.pl がどこにあるか確認。
> ls -l
これはすみません。自分の配慮不足です。
(お願いした時は端末で /bin にいるはずなので)
ls -l spacer.pl
が正しいです。
> echo $PATH
ry さんがおっしゃるとおり 'S' ではなく '$' (ドル) です。
/home/ユーザ/bin を作った後にログアウトもしくはPC再起動を行ったか?が判断できます。
amd64 版でも一旦ログアウトする事で /home/ユーザ/bin にパスが通ることは確認しています。
オフライン
有難うございました。おかげさまで半角スペースのワンクリック挿入が出来るようになりました。
Ubuntu 14.04日本語 Remix 版と Ubuntu GNOME で確認しました。残念ながら Linux Mint ではPerl スクリプトが機能してくれませんでした。次期バージョンでどうなるか?
makopi による投稿:
この時点では
chmod a+x ~/bin/spacer.pl
になると思います。
今は /bin にあるようなので
sudo chmod a+x /bin/spacer.pl
でいけると思います。
"chmod: `/bin/spacer.pl' にアクセスできません: そのようなファイルやディレクトリはありません"
のエラーになります。
一方、"chmod a+x ~/bin/spacer.pl"のコードが通り、64bit 版の14.04で半角スペースの自動挿入ができるようになりました。
Ubuntu GNOME でも半角スペースツールの利用が出来ました。
makopi による投稿:
以下は説明です。
> pwd
spacer.pl がどこにあるか確認。
> ls -l
これはすみません。自分の配慮不足です。
(お願いした時は端末で /bin にいるはずなので)
ls -l spacer.pl
が正しいです。
> echo $PATH
ry さんがおっしゃるとおり 'S' ではなく '$' (ドル) です。
/home/ユーザ/bin を作った後にログアウトもしくはPC再起動を行ったか?が判断できます。
amd64 版でも一旦ログアウトする事で /home/ユーザ/bin にパスが通ることは確認しています。
"pwd"の説明など詳しい解説をいただき有り難うございます。
ry さん、STGSAGWAN さんにもこの場をお借りしてお礼申し上げます。有難うございました。
PS:
蛇足ですが ls -l hk@hk-desktop:~$ pwd
/home/hk
hk@hk-desktop:~$ echo PATH
PATH
hk@hk-desktop:~$ ls -l の結果を貼っておきます。
合計 52
drwxrwxr-x 2 hk hk 4096 5月 2 07:13 bin
-rw-r--r-- 1 hk hk 8980 4月 19 19:12 examples.desktop
drwxr-xr-x 2 root root 4096 4月 29 19:33 usr
drwxr-xr-x 2 hk hk 4096 4月 30 15:13 ダウンロード
drwxr-xr-x 2 hk hk 4096 4月 19 20:59 テンプレート
drwxr-xr-x 2 hk hk 4096 5月 2 20:37 デスクトップ
drwxr-xr-x 2 hk hk 4096 5月 2 20:37 ドキュメント
drwxr-xr-x 2 hk hk 4096 4月 30 14:32 ビデオ
drwxr-xr-x 2 hk hk 4096 5月 3 08:28 ピクチャ
drwxr-xr-x 2 hk hk 4096 4月 19 20:59 ミュージック
drwxr-xr-x 2 hk hk 4096 4月 19 20:59 公開
オフライン
echo $PATH
を端末へコピー&ペーストしてから実行してみてください。
makoto@t552-u1404:~/Desktop$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
makoto@t552-u1404:~/Desktop$
こんな風になるはずですよ。
spacer.pl と入力・実行した場合、このディレクトリーの順番に spacer.pl を探して実行します。
~/bin がある場合は、
/usr/ユーザー名/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
となるはずです。
これ以上はオフトピになりそうなので。
オフライン
makopi による投稿:
echo $PATH
を端末へコピー&ペーストしてから実行してみてください。makoto@t552-u1404:~/Desktop$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
makoto@t552-u1404:~/Desktop$こんな風になるはずですよ。
spacer.pl と入力・実行した場合、このディレクトリーの順番に spacer.pl を探して実行します。
~/bin がある場合は、
/usr/ユーザー名/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
となるはずです。
結果は、
hk@hk-Ub64:~$ echo $PATH
/home/hk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
これらはPATHが通っているディレクトリということですね。勉強になりました。
オフライン