トップページ⇒linux
988コメント336KB

シェルスクリプト総合@LINUX Part3

■ このスレッドは過去ログ倉庫に格納されています
0001login:Penguin2007/07/10(火) 23:17:13ID:qGthZdME
UNIX板のスレを見ている方も多数おられるかと思いますが、
まあそれはそれとして、BASHウゼーとか言われる心配なく
平和にLINUX的スクリプト談義しましょうよ。

初めての自作スクリプト、自信ないから見てください。な初心者から
トリッキーな技を駆使した作品を披露したい、蘊蓄を語りたい上級者まで
いろいろな人に参加して頂けると嬉しいです。

perlやらPythonやらの話が混ざっても良いんでない?

【sed】シェルスクリプト総合@LINUX Part2【awk】
http://pc11.2ch.net/test/read.cgi/linux/1154578200/
http://pc8.2ch.net/test/read.cgi/linux/1121994321/

>>2-5あたりに色々と。
0776login:Penguin2008/03/05(水) 00:05:43ID:EV9xTscM
grep -q を使わないのはポータビリティー重視だから?
0777かね ◆CHAS.7AvVo 2008/03/05(水) 10:22:08ID:JQ4a1dor?2BP(158)
>>777ゲット
0778login:Penguin2008/03/10(月) 18:08:47ID:qsIz6iXz
論文を書くときに使うグラフをTopazというソフトを用いて作成しております。
その結果、グラフがepsファイルとして作成されるのですが、Windowsにもってくるとフォント関係でエラーが生じてしまいます。
なのでLinuxでフォントをアウトライン化しようと思い「eps2eps」というコマンド(シェルスクリプト?)を用いて
epsファイルのフォントをアウトライン化しました。
しかし、そうするとbounding boxがおかしくなってしまいます。
ですので元のepsをテキストエディタで開き、bounding boxの項目をコピペして対応しています。



それでようやく本題なんですがw
上のような作業を、複数のファイルに対して一括で行いたいのです。

for file in *.eps
do
eps2eps $file ${file%eps}2
done

のようなシェルスクリプトを使えば一括でアウトライン化epsができると思うのですが
さらに、インプットファイルをテキストエディタで開きbounding boxの項目をコピー
アウトプットファイルにbounding boxの項目を貼り付け
というような機能を持たせることはできるのでしょうか?
0779login:Penguin2008/03/10(月) 19:47:47ID:PtxOKuxD
ed
0780login:Penguin2008/03/11(火) 02:26:04ID:3Mwu+R1S
>>778
スクリプトに慣れた人ならすぐに作れる。
0781login:Penguin2008/03/12(水) 23:51:51ID:wAPdko8t
>>780
?
0782login:Penguin2008/03/13(木) 22:58:09ID:A7XLS93G
>>781
!
0783login:Penguin2008/03/13(木) 23:17:56ID:SoJCaJfU
ああ、無情
0784login:Penguin2008/03/14(金) 00:22:41ID:XhBWUHl1
シログミガンバレ
0785login:Penguin2008/03/18(火) 03:16:13ID:TPZ/j5Uw
basenameが第二引数を取ることを今知った。
0786login:Penguin2008/03/20(木) 22:15:42ID:N/tKbDY7
echo hoge=1で代入、表示両方できる知った件
0787login:Penguin2008/03/21(金) 00:14:20ID:jeNVffRp
>>786
$ echo hoge=1
hoge=1
$ echo x"$hoge"x
xx

bash 2.05b@debian ではできないぞ。
環境を教えてくれ。
0788login:Penguin2008/03/21(金) 01:11:50ID:3ULYcj2H
そんなのできたら困る。
0789login:Penguin2008/03/21(金) 01:53:30ID:Mk2nPfge
>>539
>>537 最近はGUIの環境もシェルと呼んだりするらしいしね.
>ところで,シェルスクリプトをシェルと略す感覚が信じられない
>.せめてスクリプトのほうを残すべきじゃないのか,意味的に…

javascriptをjavaって呼ぶ奴おおいし、むきになんなよ
ちっせーな、何度も何度も
0790login:Penguin2008/03/21(金) 03:00:16ID:tzWxNirH
>>789
javascriptとjavaだって別物じゃねーか
まったく別の意味にとられる表現は避けるべきだろ。
0791login:Penguin2008/03/21(金) 03:26:20ID:yp4cACqr
javaの開発と言われて行ってみたら、javascriptの案件だった……

経験者を求めていた筈なので確認をとったら速攻で別案件に回されたけど。
(だれがどこでまちがったのかはしらない。たぶん、えいぎょうのアレがマタやらかしたんだろうけど)
0792login:Penguin2008/03/21(金) 18:28:30ID:dmCthI0s
>>789
無能丸出しだな。
0793login:Penguin2008/03/22(土) 00:13:19ID:/5OR7tiw
そうだよね、文字の"あ"を"い"って発音してもいいじゃん?
0794login:Penguin2008/03/22(土) 06:15:29ID:EkMxwp6R
>>792
頭の構造が粗雑なんだろうね。
しかし無能とは決めつけられないよ。土方としては有能かも知れないじゃないか。
0795login:Penguin2008/03/22(土) 13:14:51ID:I+OQFn9y
>>794
井の中の蛙、大海を知らず。
0796login:Penguin2008/03/22(土) 14:00:07ID:4xBJlBA7
javascriptをjavaと呼ぶ井戸の外の世界
0797login:Penguin2008/03/22(土) 14:23:40ID:79XeAASw
もうすべて「あれ」と「あれ以外の何か」でいいんじゃね?

「この開発にはあれが必要だな」
「そうですね、あれも必要です」
「あれのほうはどうだ」
「あれはあれ以外のあれでやりましょう」
「あれはあれだったからな」

募集要件にはエスパー希望と書けば何も問題ない。
0798login:Penguin2008/03/22(土) 14:25:08ID:ldkQa/0V
残念なことにハードディスクドライブをハードと略すおっさんを結構見かけるのがリアル世の中なのねん。
javascriptをjavaと呼んじゃうおばちゃん、ねーちゃんだってざらにいるよ。
どっちかというと>>789のほが常識的な気がす
0799login:Penguin2008/03/22(土) 15:16:06ID:OrPubXKD
>>789
perlスクリプトをPerlと呼んだりPerlでやると言ったり
awkスクリプトをawkと読んだりawkでやると言ったり

それと同じでは
0800login:Penguin2008/03/22(土) 16:27:56ID:5bvfNtQw
省略したら同種の別の言葉になるかどうかだな。
0801login:Penguin2008/03/22(土) 16:38:49ID:ldkQa/0V
厳密なことをいえばさ、シェルって単体で言う場合はシェルスクリプトの略じゃないのよね。
(>>537,>>539はこれにつっこんでいる)

OSのカーネルに対する、(コマンド)インターフェイス外殻(カーネルの外層を覆う殻の概念)を
現在はCUI/GUIの別を問わずにシェルと呼んでる。このうちGUIの場合はグラフィカルシェルとか
CUIの場合はコマンドラインインタプリタとか呼ぶのだけど、このコマンドラインインタプリタを
Linuxを含めたUNIX系OSでは単にシェルと呼ぶ慣習がある。昔UNIXにはGUIなんて無かったらね、
シェルといったらコマンドラインインタプリタのことだ、ということに定着していたわけね。
いわゆるsh, bash, csh, tcshのshがシェルだ罠。

シェルスクリプトの略がシェルじゃなくて、シェルで動くスクリプトがシェルスクリプトなの。
順番が逆なのよ。
awk/perlもawk(言語)/perl(言語)のスクリプトがawk/perlスクリプトなのであって
awk/perlスクリプトの略がawk/perlなんじゃないよ。

まぁどうでもいいけどな。

以上を踏まえてあえて言えば
たしかにシェルとシェルスクリプトは別物だしjavaとjavascripは別物だし、
細かいこと言えばGUIだってグラフィカルシェルなのだ(>>539)が
あんま細かいことをいうとバカみたいだ。つーか狭量に見える。
というわけで>>789のほが同意できる。聞き上手って言葉があるじゃない?
0802login:Penguin2008/03/22(土) 17:33:00ID:/5OR7tiw
でだ、>>539がシェルスクリプトをシェルと略さずにせめてスクリプトと略しゃ
いいだけじゃねーかと建設的な提案をしたのに、他の軽量プログラミング言語
までもちだし、略した言葉を受け取った人間の能力の問題じゃね?
となるこのスレの流れに、思わず小岩井ミルクコーヒーを噴いた。

>>791の様に読解および対話能力が備わってないと、悲惨な状況のド真中に
パラシュート降下させられる奴がわんさかでそうだ。単語の略し方の問題で。
0803login:Penguin2008/03/22(土) 18:27:12ID:g5kThUF3
>たしかにシェルとシェルスクリプトは別物だしjavaとjavascripは別物だし、
>>800の言う通り、
シェル・スクリプトをシェルと呼んでも文脈から意味は通じるが、
javascriptをjavaと呼んでしまうと別のものを指してしまう。
混同するな。
0804login:Penguin2008/03/22(土) 19:12:09ID://sUM775
WikipediaをWiKiとかね。
0805login:Penguin2008/03/22(土) 19:20:26ID:ldkQa/0V
では、世の間違いをどこまでも正していってくれ。
思い浮かべて欲しい世の人々は道の傍らでJavaとJavascriptの違いを
切々と説く君たちに聖者が来れり、天国は来れりと歓喜することであろう。

が、まぁ少なくとも営業の彼と経理の彼女、はす向かいの鈴木さんに
今後一切飲みに誘われなくなるのは間違いと思うけどね。
0806login:Penguin2008/03/22(土) 19:26:48ID://sUM775
>>805 は啓蒙活動を自粛するようです。
0807login:Penguin2008/03/22(土) 19:39:22ID:pZoAGsoS
モヒカン族と村人ですから
0808login:Penguin2008/03/22(土) 19:39:41ID:d90KTFFK
>>805
さっさと氏ね
0809login:Penguin2008/03/22(土) 20:07:27ID:/5OR7tiw
>>805
AとBは異なるという説明し、その異なりを無視して同一のもととして扱うと
余計なコストが発生するから、次からはきちんと区別してくれという依頼が
出来ない風土、もしくは、意思決定にかかわる情報を扱うやつが説明しても、
その異なりを理解できないなら、そんな会社つぶれるだろ常考。

また、痛いレスみてJavaとJavascriptも区別して話す新入りが入ってきたら、
それこそ大迷惑だ。

>>791のえいぎょうのアレは赤っ恥ですめばいいけど。発注元からみると、
大丈夫かこの営業さんと思ったに違いない。

という燃料を補給してみた。
0810login:Penguin2008/03/22(土) 20:29:32ID:ldkQa/0V
まぁ派遣は大変だよな。ガンガレ。
0811login:Penguin2008/03/22(土) 21:23:56ID:I+OQFn9y
>>797
つまり春奈と偽春奈で仕事をすると。
0812login:Penguin2008/03/22(土) 21:25:26ID:ldkQa/0V
>>810だが、今見たら言い方が悪かった。なんだか煽っているようにもとれるかもな。
すまんかった。そういう意味じゃなくて、今時、派遣ぽい職場の人は技術職まで
そんな感じになってきて大変だと思う。漏れにも似たような経験あるからさ、
マジ、ガンがって欲しいと思ってる。
言われたのと行った先で条件が違うなんてのはちょくちょくあって
アホな会社にも言えなくて当人が泣きをみてしまうつーのは辛いよな。
やる気ならなんとかユニオンとかそっちに話をもってくしかないわけだが
自分の身を守るのが第一かと思うよ。
まぁここでそんなこと言っててもしょうがないわけで、そういう言い方になった。
0813login:Penguin2008/03/24(月) 00:53:04ID:W0JgcRQd
教えて先生。つーか、自分がやった時に苦労したんだけど、
プロな人はもっと簡単な方法を知ってるんじゃないかな的なお題。
ひょっとして歴代のスレで既出の可能性ありだけど許して。

ディレクトリに
お宝画像(1).jpg お宝画像(2).jpg .... お宝画像(100072).jpg お宝画像(100073).jpg
が入っている。ファイル名はutf8の日本語、連番はカッコ付きで
連番途中に欠番がある可能性がある。これらのファイルをすべて
ero-pic000001.jpg ero-pic000002.jpg .... ero-pic100072.jpg ero-pic100073.jpg
という風にリネームしたい。どうしたらいいでしょう?

0814login:Penguin2008/03/24(月) 01:03:25ID:zratqhRJ
プログラミングの基礎を学べば余裕でできると思うよ
0815login:Penguin2008/03/24(月) 01:09:16ID:1V6v3lmW
実は漏れは結局Cでやったんだけどね。シェルで簡単にやるにはどうするの?
0816login:Penguin2008/03/24(月) 01:11:56ID:BAIAfq4T
rename や mmv を使うかな。
0817login:Penguin2008/03/24(月) 01:16:04ID:eiDHSNtl
perl版renameで
rename '/\d+/ and $_=sprintf(q{ero-pic%06d.jpg}, $&);' お宝画像*.jpg
とか?
0818login:Penguin2008/03/24(月) 01:23:02ID:RkCnK2Rz
ls > file_list.txt して中身を
mv "お宝画像(1).jpg" "ero-pic00001.jpg" とかに変えて
sh file_list.txt
するかな
0819login:Penguin2008/03/24(月) 02:17:54ID:QVIn50Y1
>>816
mmvというのは? うちにはないみたいだけど。

>>817
perl版renameというのは普通のrenameとは違いますよね?多分。

>>818
基本的にはその方法を用いましたが、
> mv "お宝画像(1).jpg" "ero-pic00001.jpg" とかに変えて
ここがエディタでも番号を取り出す文字列操作を伴うマクロかなにかを使う必要があるわけです。
10000行以上あるので手動では無理ですし。私はCでやりましたが。

やっぱそもそも結構めんどくさいことだったんですかね。
なんか簡単そうな感じはするんだけど。
0820login:Penguin2008/03/24(月) 02:39:44ID:sKYr6YWg
Perl版renameといえばラクダ本に載っている正規表現でリネームパターンを
指定できるスクリプト(使い方は>>817)のこと。
0821login:Penguin2008/03/24(月) 02:44:18ID:xdVA6Pwk
>>820 導入するには?
0822login:Penguin2008/03/24(月) 02:50:59ID:RkCnK2Rz
>>819
でも、正規表現使ったら5回くらいの置換でいけるから、
それでやっちゃうなぁ。俺だったら
vi で
:%s/.*\(.[0-9]\).*/ero-pic0000\1.jpg/gc
:%s/.*\(.[0-9]{2}\).*/ero-pic000\1.jpg/gc
みたいな感じで
自信ないけど
0823login:Penguin2008/03/24(月) 02:56:32ID:NZTM56J5
>>822
> :%s/.*\(.[0-9]{2}\).*/ero-pic000\1.jpg/gc
これダメっぽいような?

あと「お宝動画」は例えばの例でどうかわかんないけど
日本語大丈夫かしら?
0824login:Penguin2008/03/24(月) 02:57:54ID:BAIAfq4T
perl-rename のGTK版見付けた。
gprename

しかしprel-renameみつからない・・・
0825login:Penguin2008/03/24(月) 03:00:27ID:BAIAfq4T
って ubuntu のrenameはprenameだった。
0826login:Penguin2008/03/24(月) 03:07:10ID:NZTM56J5
>>824

さんきゅ。これ?
https://sourceforge.net/project/showfiles.php?group_id=40094&package_id=32230

あとひょっとしてPerl版renameって

$ perl -e '{ rename "old-filename", "new-filename";}'

みたいな話なのだろうか?(↑はちゃんと動くようだけど)
0827login:Penguin2008/03/24(月) 03:08:54ID:eiDHSNtl
debianのperlのパッケージに標準で含まれてるのよ
0828login:Penguin2008/03/24(月) 03:17:40ID:/I27eUR4
今思いついたのだが、ひょっとしてスクリプトで

#!/usr/bin/perl
rename old-filename, new-filename;

みたいな話とか?なるほどそれならいけそだけど。
0829login:Penguin2008/03/24(月) 03:20:03ID:sKYr6YWg
Perl版renameはこんな感じのスクリプト

$op = shift;
foreach (@ARGV) {
$was = $_;
eval $op;
die $@ if $@;
rename($was, $_) unless $was eq $_;
}
0830login:Penguin2008/03/24(月) 04:12:10ID:dtyI9N0m
>>813
あえてシェルスクリプトで書くのならこんな感じかな。

#! /bin/bash
for file in "$@" ; do
 num=${file#*(}
 num=$( printf '%06d' "${num%)*}" )
 mv "$file" "ero-pic${num}.jpg"
done

bashism が嫌いなら sed に置き換えれば
/bin/sh でも動くんじゃないかな
0831login:Penguin2008/03/24(月) 06:30:29ID:bi7lOxG6
zshだが許せ。

for n in {1..100073}; mv お宝画像($n).jpg ero-pic`printf %06d $n`.jpg
0832login:Penguin2008/03/24(月) 10:57:24ID:62iD1Dht
>>817 >>820 >>827 >>829
>>826=>>828だけど、ええとそれってシェルスクリプトで使えるの?
/usr/bin/rename が置き換えられているとか?
どうなっているんだろう。

>>830
うちでは動かないようだ。

日本語が混じるとためかな。あとかっことか。

で結局こうやったのだけど。
$ls | sed s/.*\(//g | sed s/\).*//g | awk '{printf("mv \"お宝動画(%d).jpg\" \"ero-pic%06d.jpg\"\n",$1,$1)}' | sh

前やったときはawkの代わりにcのプログラムでやってた。まぁawkでも同じか。
0833login:Penguin2008/03/24(月) 10:57:58ID:62iD1Dht
>>831
zshって便利そうだね。
0834login:Penguin2008/03/24(月) 22:35:08ID:7MP5JU0g
>>813
いろんなやり方があるけど、スクリプト内でいきなりmvなりrenameして
失敗すると悲劇なので、

mv "旧いお宝画像1.jpg" "新しいお宝画像1.jpg"
mv "旧いお宝画像2.jpg" "新しいお宝画像2.jpg"
mv "旧いお宝画像3.jpg" "新しいお宝画像3.jpg"
mv "旧いお宝画像4.jpg" "新しいお宝画像4.jpg"
mv "旧いお宝画像5.jpg" "新しいお宝画像5.jpg"
mv "旧いお宝画像6.jpg" "新しいお宝画像6.jpg"
(以下略)

みたいに一旦テキストに落として、それざっと眺めてからshで流しなおしたほうが良いよ。
以前、

mv "旧いお宝画像1.jpg" "新しいお宝画像1.jpg"
mv "旧いお宝画像2.jpg" "新しいお宝画像1.jpg"
mv "旧いお宝画像3.jpg" "新しいお宝画像1.jpg"
mv "旧いお宝画像4.jpg" "新しいお宝画像1.jpg"
mv "旧いお宝画像5.jpg" "新しいお宝画像1.jpg"
mv "旧いお宝画像6.jpg" "新しいお宝画像1.jpg"
(中略)
mv "旧いお宝画像1000.jpg" "新しいお宝画像1.jpg"

ってやっちゃった(´・ω・`)
0835login:Penguin2008/03/24(月) 23:31:47ID:If29/JKD
>>798
なんて頭の悪い…
0836login:Penguin2008/03/24(月) 23:35:42ID:If29/JKD
>>819
> perl版renameというのは普通のrenameとは違いますよね?多分。

renameがperl版renameじゃないUNIX類って具体的には何があります?
UNIX類じゃないけど、VMSはそうでした。
0837login:Penguin2008/03/25(火) 00:24:28ID:FMsixLid
>>832
> 日本語が混じるとためかな。あとかっことか。

括弧の方だな。すまん。クォートするなりしてやってくれ。
0838login:Penguin2008/03/25(火) 00:44:35ID:Mm1m5DLO
>>836
$ whereis rename
rename: /usr/bin/rename
$ less /usr/bin/rename
"/usr/bin/rename" may be a binary file. See it anyway?

多分debianが変わり者では?
0839login:Penguin2008/03/25(火) 00:50:23ID:6V9ksjI9
>>836
util-linux に入ってるよ。
0840login:Penguin2008/03/25(火) 00:56:57ID:ukA1etix
そういやDebianはprenameとかいう名前になってんだっけね?
古典的なLinuxはこのrenameなのかな。

/*
* rename.c - aeb 2000-01-01
*
--------------------------------------------------------------
#!/bin/sh
if [ $# -le 2 ]; then echo call: rename from to files; exit; fi
FROM="$1"
TO="$2"
shift
shift
for i in $@; do N=`echo "$i" | sed "s/$FROM/$TO/g"`; mv "$i" "$N"; done
--------------------------------------------------------------
* This shell script will do renames of files, but may fail
* in cases involving special characters. Here a C version.
*/
0841login:Penguin2008/03/25(火) 01:44:34ID:Mm1m5DLO
>>840
古典的なLinuxというより一般的な普通のLinuxはそうだろうな。
Here C Version.のほうな。

http://d.hatena.ne.jp/takunama/20061123/rename
http://d.hatena.ne.jp/moriyoshi/searchdiary?word=*%5Bdebian%5D

debianのrenameは/usr/bin/prenameへのリンクで
prenameは Debian のパッケージメンテナが独自にパッケージ生成時に追加したスクリプト
つーのが真相らしい。perl版renameはdebianの方言つーことだわな。困ったもんだね。
0842login:Penguin2008/03/25(火) 01:51:01ID:uIxNik7B
それ自身はポータブルなPerlスクリプトだから
もし使いたかったら$HOME/binあたりに突っ込めばいいんじゃない
0843login:Penguin2008/03/25(火) 02:00:22ID:+i6zdHek
>>813
ls -1 ero_dir | sort | ruby -nle 'printf "mv " + $_ + " " + $_.sub("お宝画像\(", "ero-pic").delete("\)")' | sh
0844login:Penguin2008/03/25(火) 02:03:33ID:+i6zdHek
訂正orz

ls -1 ero_dir | ruby -nle 'print "mv " + $_ + " " + $_.sub("お宝画像\(", "ero-pic").delete("\)")' | sh
0845login:Penguin2008/03/25(火) 02:05:27ID:6V9ksjI9
>>841
> prenameは Debian のパッケージメンテナが独自にパッケージ生成時に追加したスクリプト
↓だってさ。
# This script was developed by Robin Barker ([email protected]),
# from Larry Wall's original script eg/rename from the perl source.
0846login:Penguin2008/03/25(火) 03:45:05ID:mfggD9uB
ラクダ本のだってのはだいぶ上の方で言及されとるがな。
0847login:Penguin2008/03/25(火) 06:52:15ID:Mm1m5DLO
>>845
prenameは Debian のパッケージメンテナが独自に
「the perl source(perlのオルジナルセット、いわゆるラクダ本)」から
パッケージ生成時に追加したスクリプト、つーことですね。

/usr/bin/renameがC版の代わりにこれで置き換えて拡張してあるのが
debianの方言ということで。

実はラクダ本のやつは見たことがあるな。
0848login:Penguin2008/03/25(火) 17:01:59ID:7L4Qk+Sn
・>>840にある元のシェルスクリプトはsed版正規表現を理解する
・Here a C versionは正規表現を全く理解しない
・perl版はperl版正規表現を理解する
というわけでLinuxでも三種類あるんですね。
0849login:Penguin2008/03/25(火) 17:59:25ID:Mm1m5DLO
こういう微妙な違いってひょっとするとトリごとに結構あるのかもしれないね。
スレからはずれるけど、apache/httpdのコンフィグがバージョン系列は
一緒なのにDebian系(ubuntuも)とRH系(RedHat/Fedora/CentOS)で
まるっきり違ってて面くらったことがある。
0850login:Penguin2008/03/25(火) 18:02:21ID:IQ4Jbr/0
コマンドなんかもちょっと違うくらいだから、設定ファイルの書き方なんて違っていて当たり前。
0851login:Penguin2008/03/26(水) 21:17:50ID:B6BxqxUi
ツリー表示について

find / -type d|sort|sed -ne'1b;s/[^\/]*\//┗━━/g;s/┗━━┗━━/┃ ┗━━/g;
s/┗━━┗━━/┃ ┗━━/g;
s/┗━━┃/┃ ┃/g;p'

これだと下記のような表示になるのですが
┗━━proc
┃ ┗━━1
┃ ┃ ┗━━attr
┃ ┃ ┗━━fd
┃ ┃ ┗━━task
┃ ┃ ┃ ┗━━1
┃ ┃ ┃ ┃ ┗━━attr
┃ ┃ ┃ ┃ ┗━━fd
┃ ┗━━1106
┃ ┃ ┗━━attr

不要な線を無くして見栄えを良くしたいのですが、何か良い方法はありませんでしょうか
┗━━proc
┃ ┗━━1
┃ ┃ ┗━━attr
┃ ┃ ┗━━fd
┃ ┃ ┗━━task
┃ ┃ ┗━━1
┃ ┃ ┗━━attr
┃ ┃ ┗━━fd
┃ ┗━━1106
┃ ┃ ┗━━attr
0852login:Penguin2008/03/26(水) 21:52:30ID:f9ufLLgD
よくわからんけど tree -dA じゃダメなの?
08538512008/03/26(水) 22:04:51ID:B6BxqxUi
そういうコマンドがあるのは知ってるのですが

# which tree
/usr/bin/which: no tree

残念なことに入ってないんです。
いろいろ調べまわった結果がこれなんです。
もう少し自分でも調べてきます。
0854login:Penguin2008/03/26(水) 22:31:33ID:f9ufLLgD
そうかtreeのないトリもあるのか。
0855login:Penguin2008/03/26(水) 23:21:22ID:5Znd97qm
yumとかaptで入れられないっけ?
0856login:Penguin2008/03/27(木) 00:04:09ID:ZXE2f6WU
>>853
PATH が通ってないだけとか。locate 辺りで調べてみたら?
他に何かあったっけ>探す方法
08578512008/03/27(木) 00:35:50ID:yDbPGpUf
なんとか自己解決できました
下記のシェルスクリプトを「/usr/bin/tree」に置いて代用することにしました。

#!/usr/bin/perl
use strict;
my($top)=$ARGV[0];
if($top eq ""){ $top="."; }
print "[$top]\n";
&tree("",<$top/*>);
sub tree
{
my($bar,@dir)=@_;
for my $i(0..$#dir){
my($bl1)=($i<$#dir)?"┣":"┗";
my($bl2)=($i<$#dir)?"┃":" ";
my(@path)=split(/\//,$dir[$i]);
if(-d $dir[$i]){
print "$bar $bl1 [$path[$#path]]\n";
tree("$bar $bl2",<$dir[$i]/*>);
}else{
print "$bar $bl1 $path[$#path]\n";
}
}
}


ちょっと中身を理解するのは難しいですけど、使いこなせたらperlも結構便利そうですね。
0858login:Penguin2008/03/27(木) 01:47:43ID:nVTK+35Z
>>857
> 下記のシェルスクリプト

ちょっとマテ
0859login:Penguin2008/03/27(木) 04:19:25ID:LOwKjqa0
どう見てもシェルスクリプトでなくPerlスクリプトだなw
ちなみに、鳥は何なの?
08608512008/03/27(木) 19:23:00ID:yDbPGpUf
あ、確かにperlスクリプトですねw
ちなみに鳥はCentOS4.6で、サーバー構築の勉強用で使ってます。
最小構成でインストールしたからtreeコマンドが入って無かったのかもしれないです。
0861login:Penguin2008/03/27(木) 19:43:49ID:ysMS9Gn7
美女の現われるスクリプトを教えて下さい。
0862login:Penguin2008/03/27(木) 19:56:21ID:ORW3s1IJ
>>861
emerge beautiful_girl
0863login:Penguin2008/03/27(木) 23:51:02ID:QsCLAAyg
>>851-857
pstreeだと思うんだ・・
0864login:Penguin2008/03/28(金) 00:18:06ID:jk3nWqNP
>>863 find / だけど?
0865login:Penguin2008/03/28(金) 00:18:55ID:deyesKz0
>>864
そだったw
08667892008/03/28(金) 01:42:56ID:QgSpL7VJ
にやにや

もりあがってんじゃねーかw
0867login:Penguin2008/03/28(金) 01:46:42ID:deyesKz0
>>866
javascriptをjavaと呼ぶひと、こんばんはw
0868login:Penguin2008/03/28(金) 14:06:32ID:Z7X2dF3N
cshで質問です。
下記のように変数をperlに渡したいんですが、変数を認識してくれません。
どうすれば良いですか?

set hoge = funi
perl -pe 'print $hoge' file

0869login:Penguin2008/03/28(金) 15:16:41ID:KjmTtujq
>>868
シングルクォートをダブルクォートに変える
0870login:Penguin2008/03/28(金) 15:47:45ID:Z7X2dF3N
>>869
ありがとうございます。
試してみましたが、ダメのようです。

setenvで与えると上手く行きましたが、setで出来る方法も知りたいです。
0871login:Penguin2008/03/28(金) 16:04:18ID:UFHtgKJC
無理。

あえてやるなら
perl -e 'print "'"$hoge"'"'

これはperlに print "funi" という式を渡したに等しい。
0872login:Penguin2008/03/28(金) 17:22:58ID:Z7X2dF3N
>>871
ありがとうございます。
やってみたら出来ました。
意味は分かんないのでこれから調べてみようと思います。
0873login:Penguin2008/03/28(金) 17:26:00ID:s6QtoqP9
csh じゃなきゃいかんの?
sh 系で書いた方がいいんじゃない?
0874login:Penguin2008/03/29(土) 22:39:26ID:Je2/7f5V
リダイレクト 「>&-」 (ディスクリプタ番号に 「-」 を指定した場合) の振舞いについて記述している manpage を探しています。
(manpage でなくともそれに準ずる文書であれば構いません)
JM Project の bash(1) などや google で検索してみたのですが見つかりません。
>&- を使用しているシェルスクリプトは見つかりましたが、そこには正式な説明はありませんでした。

google って記号検索がとても弱いようなので シェルスクリプトとか GAME言語みたいな記号で頑張るタイプのを探すのは大変。
何か効果的な検索技があるんですかね。
0875login:Penguin2008/03/29(土) 22:48:22ID:6BdICwv7
シェルスクリプトで連番を振る際に
1から100を1、2、3…ではなく
001、002、003…と出力させたい場合どうしたらよいでしょう?

val=1
while $val lt 100
do
echo $val
val=expr`$val+1`
done
0876login:Penguin2008/03/29(土) 22:53:17ID:z7EKOxA5
>>875
for i in {0..9}; do printf "%03d\n" ${i}; done
■ このスレッドは過去ログ倉庫に格納されています