08/03/22 20:07:27 /5OR7tiw
>>805
AとBは異なるという説明し、その異なりを無視して同一のもととして扱うと
余計なコストが発生するから、次からはきちんと区別してくれという依頼が
出来ない風土、もしくは、意思決定にかかわる情報を扱うやつが説明しても、
その異なりを理解できないなら、そんな会社つぶれるだろ常考。
また、痛いレスみてJavaとJavascriptも区別して話す新入りが入ってきたら、
それこそ大迷惑だ。
>>791のえいぎょうのアレは赤っ恥ですめばいいけど。発注元からみると、
大丈夫かこの営業さんと思ったに違いない。
という燃料を補給してみた。
810:login:Penguin
08/03/22 20:29:32 ldkQa/0V
まぁ派遣は大変だよな。ガンガレ。
811:login:Penguin
08/03/22 21:23:56 I+OQFn9y
>>797
つまり春奈と偽春奈で仕事をすると。
812:login:Penguin
08/03/22 21:25:26 ldkQa/0V
>>810だが、今見たら言い方が悪かった。なんだか煽っているようにもとれるかもな。
すまんかった。そういう意味じゃなくて、今時、派遣ぽい職場の人は技術職まで
そんな感じになってきて大変だと思う。漏れにも似たような経験あるからさ、
マジ、ガンがって欲しいと思ってる。
言われたのと行った先で条件が違うなんてのはちょくちょくあって
アホな会社にも言えなくて当人が泣きをみてしまうつーのは辛いよな。
やる気ならなんとかユニオンとかそっちに話をもってくしかないわけだが
自分の身を守るのが第一かと思うよ。
まぁここでそんなこと言っててもしょうがないわけで、そういう言い方になった。
813:login:Penguin
08/03/24 00:53:04 W0JgcRQd
教えて先生。つーか、自分がやった時に苦労したんだけど、
プロな人はもっと簡単な方法を知ってるんじゃないかな的なお題。
ひょっとして歴代のスレで既出の可能性ありだけど許して。
ディレクトリに
お宝画像(1).jpg お宝画像(2).jpg .... お宝画像(100072).jpg お宝画像(100073).jpg
が入っている。ファイル名はutf8の日本語、連番はカッコ付きで
連番途中に欠番がある可能性がある。これらのファイルをすべて
ero-pic000001.jpg ero-pic000002.jpg .... ero-pic100072.jpg ero-pic100073.jpg
という風にリネームしたい。どうしたらいいでしょう?
814:login:Penguin
08/03/24 01:03:25 zratqhRJ
プログラミングの基礎を学べば余裕でできると思うよ
815:login:Penguin
08/03/24 01:09:16 1V6v3lmW
実は漏れは結局Cでやったんだけどね。シェルで簡単にやるにはどうするの?
816:login:Penguin
08/03/24 01:11:56 BAIAfq4T
rename や mmv を使うかな。
817:login:Penguin
08/03/24 01:16:04 eiDHSNtl
perl版renameで
rename '/\d+/ and $_=sprintf(q{ero-pic%06d.jpg}, $&);' お宝画像*.jpg
とか?
818:login:Penguin
08/03/24 01:23:02 RkCnK2Rz
ls > file_list.txt して中身を
mv "お宝画像(1).jpg" "ero-pic00001.jpg" とかに変えて
sh file_list.txt
するかな
819:login:Penguin
08/03/24 02:17:54 QVIn50Y1
>>816
mmvというのは? うちにはないみたいだけど。
>>817
perl版renameというのは普通のrenameとは違いますよね?多分。
>>818
基本的にはその方法を用いましたが、
> mv "お宝画像(1).jpg" "ero-pic00001.jpg" とかに変えて
ここがエディタでも番号を取り出す文字列操作を伴うマクロかなにかを使う必要があるわけです。
10000行以上あるので手動では無理ですし。私はCでやりましたが。
やっぱそもそも結構めんどくさいことだったんですかね。
なんか簡単そうな感じはするんだけど。
820:login:Penguin
08/03/24 02:39:44 sKYr6YWg
Perl版renameといえばラクダ本に載っている正規表現でリネームパターンを
指定できるスクリプト(使い方は>>817)のこと。
821:login:Penguin
08/03/24 02:44:18 xdVA6Pwk
>>820 導入するには?
822:login:Penguin
08/03/24 02:50:59 RkCnK2Rz
>>819
でも、正規表現使ったら5回くらいの置換でいけるから、
それでやっちゃうなぁ。俺だったら
vi で
:%s/.*\(.[0-9]\).*/ero-pic0000\1.jpg/gc
:%s/.*\(.[0-9]{2}\).*/ero-pic000\1.jpg/gc
みたいな感じで
自信ないけど
823:login:Penguin
08/03/24 02:56:32 NZTM56J5
>>822
> :%s/.*\(.[0-9]{2}\).*/ero-pic000\1.jpg/gc
これダメっぽいような?
あと「お宝動画」は例えばの例でどうかわかんないけど
日本語大丈夫かしら?
824:login:Penguin
08/03/24 02:57:54 BAIAfq4T
perl-rename のGTK版見付けた。
gprename
しかしprel-renameみつからない・・・
825:login:Penguin
08/03/24 03:00:27 BAIAfq4T
って ubuntu のrenameはprenameだった。
826:login:Penguin
08/03/24 03:07:10 NZTM56J5
>>824
さんきゅ。これ?
URLリンク(sourceforge.net)
あとひょっとしてPerl版renameって
$ perl -e '{ rename "old-filename", "new-filename";}'
みたいな話なのだろうか?(↑はちゃんと動くようだけど)
827:login:Penguin
08/03/24 03:08:54 eiDHSNtl
debianのperlのパッケージに標準で含まれてるのよ
828:login:Penguin
08/03/24 03:17:40 /I27eUR4
今思いついたのだが、ひょっとしてスクリプトで
#!/usr/bin/perl
rename old-filename, new-filename;
みたいな話とか?なるほどそれならいけそだけど。
829:login:Penguin
08/03/24 03:20:03 sKYr6YWg
Perl版renameはこんな感じのスクリプト
$op = shift;
foreach (@ARGV) {
$was = $_;
eval $op;
die $@ if $@;
rename($was, $_) unless $was eq $_;
}
830:login:Penguin
08/03/24 04:12:10 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 でも動くんじゃないかな
831:login:Penguin
08/03/24 06:30:29 bi7lOxG6
zshだが許せ。
for n in {1..100073}; mv お宝画像($n).jpg ero-pic`printf %06d $n`.jpg
832:login:Penguin
08/03/24 10:57:24 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でも同じか。
833:login:Penguin
08/03/24 10:57:58 62iD1Dht
>>831
zshって便利そうだね。
834:login:Penguin
08/03/24 22:35:08 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"
ってやっちゃった(´・ω・`)
835:login:Penguin
08/03/24 23:31:47 If29/JKD
>>798
なんて頭の悪い…
836:login:Penguin
08/03/24 23:35:42 If29/JKD
>>819
> perl版renameというのは普通のrenameとは違いますよね?多分。
renameがperl版renameじゃないUNIX類って具体的には何があります?
UNIX類じゃないけど、VMSはそうでした。
837:login:Penguin
08/03/25 00:24:28 FMsixLid
>>832
> 日本語が混じるとためかな。あとかっことか。
括弧の方だな。すまん。クォートするなりしてやってくれ。
838:login:Penguin
08/03/25 00:44:35 Mm1m5DLO
>>836
$ whereis rename
rename: /usr/bin/rename
$ less /usr/bin/rename
"/usr/bin/rename" may be a binary file. See it anyway?
多分debianが変わり者では?
839:login:Penguin
08/03/25 00:50:23 6V9ksjI9
>>836
util-linux に入ってるよ。
840:login:Penguin
08/03/25 00:56:57 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.
*/
841:login:Penguin
08/03/25 01:44:34 Mm1m5DLO
>>840
古典的なLinuxというより一般的な普通のLinuxはそうだろうな。
Here C Version.のほうな。
URLリンク(d.hatena.ne.jp)
URLリンク(d.hatena.ne.jp)
debianのrenameは/usr/bin/prenameへのリンクで
prenameは Debian のパッケージメンテナが独自にパッケージ生成時に追加したスクリプト
つーのが真相らしい。perl版renameはdebianの方言つーことだわな。困ったもんだね。
842:login:Penguin
08/03/25 01:51:01 uIxNik7B
それ自身はポータブルなPerlスクリプトだから
もし使いたかったら$HOME/binあたりに突っ込めばいいんじゃない
843:login:Penguin
08/03/25 02:00:22 +i6zdHek
>>813
ls -1 ero_dir | sort | ruby -nle 'printf "mv " + $_ + " " + $_.sub("お宝画像\(", "ero-pic").delete("\)")' | sh
844:login:Penguin
08/03/25 02:03:33 +i6zdHek
訂正orz
ls -1 ero_dir | ruby -nle 'print "mv " + $_ + " " + $_.sub("お宝画像\(", "ero-pic").delete("\)")' | sh
845:login:Penguin
08/03/25 02:05:27 6V9ksjI9
>>841
> prenameは Debian のパッケージメンテナが独自にパッケージ生成時に追加したスクリプト
↓だってさ。
# This script was developed by Robin Barker (Robin.Barker@npl.co.uk),
# from Larry Wall's original script eg/rename from the perl source.
846:login:Penguin
08/03/25 03:45:05 mfggD9uB
ラクダ本のだってのはだいぶ上の方で言及されとるがな。
847:login:Penguin
08/03/25 06:52:15 Mm1m5DLO
>>845
prenameは Debian のパッケージメンテナが独自に
「the perl source(perlのオルジナルセット、いわゆるラクダ本)」から
パッケージ生成時に追加したスクリプト、つーことですね。
/usr/bin/renameがC版の代わりにこれで置き換えて拡張してあるのが
debianの方言ということで。
実はラクダ本のやつは見たことがあるな。
848:login:Penguin
08/03/25 17:01:59 7L4Qk+Sn
・>>840にある元のシェルスクリプトはsed版正規表現を理解する
・Here a C versionは正規表現を全く理解しない
・perl版はperl版正規表現を理解する
というわけでLinuxでも三種類あるんですね。
849:login:Penguin
08/03/25 17:59:25 Mm1m5DLO
こういう微妙な違いってひょっとするとトリごとに結構あるのかもしれないね。
スレからはずれるけど、apache/httpdのコンフィグがバージョン系列は
一緒なのにDebian系(ubuntuも)とRH系(RedHat/Fedora/CentOS)で
まるっきり違ってて面くらったことがある。
850:login:Penguin
08/03/25 18:02:21 IQ4Jbr/0
コマンドなんかもちょっと違うくらいだから、設定ファイルの書き方なんて違っていて当たり前。
851:login:Penguin
08/03/26 21:17:50 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
852:login:Penguin
08/03/26 21:52:30 f9ufLLgD
よくわからんけど tree -dA じゃダメなの?
853:851
08/03/26 22:04:51 B6BxqxUi
そういうコマンドがあるのは知ってるのですが
# which tree
/usr/bin/which: no tree
残念なことに入ってないんです。
いろいろ調べまわった結果がこれなんです。
もう少し自分でも調べてきます。
854:login:Penguin
08/03/26 22:31:33 f9ufLLgD
そうかtreeのないトリもあるのか。
855:login:Penguin
08/03/26 23:21:22 5Znd97qm
yumとかaptで入れられないっけ?
856:login:Penguin
08/03/27 00:04:09 ZXE2f6WU
>>853
PATH が通ってないだけとか。locate 辺りで調べてみたら?
他に何かあったっけ>探す方法
857:851
08/03/27 00:35:50 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も結構便利そうですね。
858:login:Penguin
08/03/27 01:47:43 nVTK+35Z
>>857
> 下記のシェルスクリプト
ちょっとマテ
859:login:Penguin
08/03/27 04:19:25 LOwKjqa0
どう見てもシェルスクリプトでなくPerlスクリプトだなw
ちなみに、鳥は何なの?
860:851
08/03/27 19:23:00 yDbPGpUf
あ、確かにperlスクリプトですねw
ちなみに鳥はCentOS4.6で、サーバー構築の勉強用で使ってます。
最小構成でインストールしたからtreeコマンドが入って無かったのかもしれないです。
861:login:Penguin
08/03/27 19:43:49 ysMS9Gn7
美女の現われるスクリプトを教えて下さい。
862:login:Penguin
08/03/27 19:56:21 ORW3s1IJ
>>861
emerge beautiful_girl
863:login:Penguin
08/03/27 23:51:02 QsCLAAyg
>>851-857
pstreeだと思うんだ・・
864:login:Penguin
08/03/28 00:18:06 jk3nWqNP
>>863 find / だけど?
865:login:Penguin
08/03/28 00:18:55 deyesKz0
>>864
そだったw
866:789
08/03/28 01:42:56 QgSpL7VJ
にやにや
もりあがってんじゃねーかw
867:login:Penguin
08/03/28 01:46:42 deyesKz0
>>866
javascriptをjavaと呼ぶひと、こんばんはw
868:login:Penguin
08/03/28 14:06:32 Z7X2dF3N
cshで質問です。
下記のように変数をperlに渡したいんですが、変数を認識してくれません。
どうすれば良いですか?
set hoge = funi
perl -pe 'print $hoge' file
869:login:Penguin
08/03/28 15:16:41 KjmTtujq
>>868
シングルクォートをダブルクォートに変える
870:login:Penguin
08/03/28 15:47:45 Z7X2dF3N
>>869
ありがとうございます。
試してみましたが、ダメのようです。
setenvで与えると上手く行きましたが、setで出来る方法も知りたいです。
871:login:Penguin
08/03/28 16:04:18 UFHtgKJC
無理。
あえてやるなら
perl -e 'print "'"$hoge"'"'
これはperlに print "funi" という式を渡したに等しい。
872:login:Penguin
08/03/28 17:22:58 Z7X2dF3N
>>871
ありがとうございます。
やってみたら出来ました。
意味は分かんないのでこれから調べてみようと思います。
873:login:Penguin
08/03/28 17:26:00 s6QtoqP9
csh じゃなきゃいかんの?
sh 系で書いた方がいいんじゃない?
874:login:Penguin
08/03/29 22:39:26 Je2/7f5V
リダイレクト 「>&-」 (ディスクリプタ番号に 「-」 を指定した場合) の振舞いについて記述している manpage を探しています。
(manpage でなくともそれに準ずる文書であれば構いません)
JM Project の bash(1) などや google で検索してみたのですが見つかりません。
>&- を使用しているシェルスクリプトは見つかりましたが、そこには正式な説明はありませんでした。
google って記号検索がとても弱いようなので シェルスクリプトとか GAME言語みたいな記号で頑張るタイプのを探すのは大変。
何か効果的な検索技があるんですかね。
875:login:Penguin
08/03/29 22:48:22 6BdICwv7
シェルスクリプトで連番を振る際に
1から100を1、2、3…ではなく
001、002、003…と出力させたい場合どうしたらよいでしょう?
val=1
while $val lt 100
do
echo $val
val=expr`$val+1`
done
876:login:Penguin
08/03/29 22:53:17 z7EKOxA5
>>875
for i in {0..9}; do printf "%03d\n" ${i}; done
877:login:Penguin
08/03/29 22:57:09 ZodWq0Ht
printfが嫌なら echo "000$i" | sed 's/0*¥(...¥)$/¥1/'
878:874
08/03/29 23:01:58 Je2/7f5V
すみません。事故解決しました。 JM Project の bash(1) に記述されてました。
879:875
08/03/29 23:02:33 6BdICwv7
>>876-877
凄まじくソッコーのレス ありがとうございます。
形式を指定してるってことくらいは分かりました。
調べてきます!
ありがとございました。
880:login:Penguin
08/03/29 23:06:18 z7EKOxA5
>>875
単純に、必要な個数の名前のリストがありゃいいだけなら、
これでもいいと思う。
seq -f "moe_ero_guro_%03g.png" 0 9
881:login:Penguin
08/03/29 23:16:52 U1N+QPd9
>>876
{0..9} は bash3 じゃないと動かないはず。
まだ bash 2.05b の環境ってけっこうあるよね?
882:login:Penguin
08/03/29 23:19:47 ZodWq0Ht
seqは、あーここLinux板だからまず間違いなく入ってるな。
883:login:Penguin
08/03/29 23:23:13 ZodWq0Ht
seqだととびとびの値とかも作れるんだが、
単に連番がつくりたいとき個人的によくやるのは
yes '' | cat -n | sed 100q
とか。
884:login:Penguin
08/03/29 23:30:36 WiwCN3W0
seqって便利だね。知らんかった。
seq -f %03g 1 100
885:login:Penguin
08/03/29 23:33:55 z7EKOxA5
>>881
聞かれたから一応、答えておこう。そんな環境は知らん。
bash 2.05bなのはRHEL3かVineか、2005年ぐらいで閉鎖空間へ移行したやつだけだろ。
886:login:Penguin
08/03/29 23:36:52 WiwCN3W0
そうなのか。ある意味Vine恐るべしだな。
887:874
08/03/29 23:41:18 Je2/7f5V
組込系だったりすると bash どころか busybox ん中の sh (ash) だったりもする。
La Fonera の seq は -f オプションなんか無いので
printf "%03d\n" `seq 1 10`
888:login:Penguin
08/03/30 00:08:49 36hI9fyL
この仕様は初めて知ったw
$ printf "%03d%03d\n" 1 2 3 4 5
001002
003004
005000
889:login:Penguin
08/03/30 00:34:47 91o/3wOF
おまいらのseq には -w ってオプション無いの?
seq -w 1 100
890:874
08/03/30 00:48:35 VLE1BQAD
BusyBox v1.1.3 (2006.11.21-19:49+0000) multi-call binary
Usage: seq [first [increment]] last
Print numbers from FIRST to LAST, in steps of INCREMENT.
-w ? そんなオプション見たこと無い。(笑)
891:login:Penguin
08/03/30 15:18:36 AAKkqqTb
拡張子の変換ってどうやってる?俺は
for f in *.hoge; do
mv $f ${f%.hoge}.fuga
done
っていちいち打ち込んでるんだけど、なんかいい方法ない?
892:login:Penguin
08/03/30 16:16:42 SBrBro/C
>>891
過去ログ読め。
893:login:Penguin
08/04/01 00:07:30 mTzNKv6N
ニコ動の動画IDをwgetで落とせる直リンに変換するスクリプトないっすか?
894:login:Penguin
08/04/01 00:12:45 +SHNTduy
>>893
仕様出てるだろ。
895:login:Penguin
08/04/01 00:12:57 bWFHq2/G
>>893
nicovideo-dl
896:login:Penguin
08/04/01 22:06:47 Mk5CpRwr
$ oppai
bash: oppai: command not found
897:login:Penguin
08/04/04 13:09:23 Lie/X+/S
質問させて下さい。
ubuntu7.1 server を使用しています。
シェルスクリプトを勉強し始めてLinuxの設定セットアップシェルを作ろうとしています。
■入力受付状態を省略し、自動入力にするにはどのようにすればいいのでしょうか?
例えばsambaのコマンドですが
smbpasswd -a root
をするとパスワードの入力を求められます。
普段なら手動でxxxxと入力するのですが、この作業を自動化したいのです。
色々調べてsedの使い方等はわかりファイルの書き換えによる設定はおおむね出来たのですが
上記のやり方は見つけることができませんでした。
どうかアドバイス頂けないでしょうか?
宜しくお願い致します。
898:login:Penguin
08/04/04 21:25:51 WDSwmhLm
>>897
Windowsから接続しているなら、TeraTermのマクロで何とかできるかもね。
ただユーザー名やパスワードが見えてしまう状態でファイルに保存するから
セキュリティ上には良くないかも
sambaの設定ファイルだけバックアップ取って
ユーザーとパスワードはその都度入力するのが無難かと
899:login:Penguin
08/04/05 11:09:58 co3/wC9l
>>897
expectスクリプト
expectに突いてくるサンプルを読んで
900:login:Penguin
08/04/05 11:16:23 co3/wC9l
すまん、サンプルついてないわ。
apt-get source expect
して、サンプル見て。
901:login:Penguin
08/04/06 14:52:52 20te6qz4
シェルスクリプトできるけどPerlスクリプト出来ないやつなんなの?
902:login:Penguin
08/04/06 15:42:41 6d0Si0sC
単にawkとかpythonが好きなんじゃないの?
903:login:Penguin
08/04/06 17:08:40 Y81bdbYI
>>901
シェル・スクリプトは基本だが、perl は awk やら python やらのワン・オブ・ゼムに過ぎないので、それが普通。
MS-Windows95の頃、cgiはperlスクリプトでという謎の風潮があった名残で、あなたのような疑問が出て来るのだろう。
904:login:Penguin
08/04/07 02:13:58 WGY+O99D
>>903
そうそう。
別に、cgiがシェルスクリプトでも問題ないし(使いにくいけど)、なんでもいい。
perlだろうが難だろうが、所詮手段なんだから、どうでもいいじゃんw
905:login:Penguin
08/04/07 08:01:37 DKzh8iuy
>>901
多分、
同じ構造化手続き型言語なのに何で方言によって使える使えないみたいなこと言ってんの?
ということかと。
906:login:Penguin
08/04/07 20:27:53 ky4RCRjO
>>905
そうなら「シェル」スクリプトスレで何言ってんだこのバカは?
ってな話しにしかならんからそれはなかろ。
907:login:Penguin
08/04/08 00:22:25 xWC78uSv
つまり、シェルスクリプターはアホです。
908:login:Penguin
08/04/08 21:18:54 mlftshp4
Aho氏
URLリンク(en.wikipedia.org)
909:login:Penguin
08/04/08 21:20:29 L1HkWImv
ahoさんはawkの偉い人でしょ
910:login:Penguin
08/04/09 01:18:06 8anDW64k
フィンランドではよくある名字。
911:login:Penguin
08/04/09 01:40:20 vyKS0pT6
えっほ
912:login:Penguin
08/04/09 02:03:59 JRgbXb6K
スキーでアホネンさんっていたな
この人もフィンランドだったな
913:login:Penguin
08/04/09 13:12:39 vyKS0pT6
だれがあほやねん!
914:login:Penguin
08/04/09 18:16:40 pjxRKuKN
>>911,913
しょーもないレスして悲しくなってこないか?
915:login:Penguin
08/04/09 19:47:59 D07VbGXN
$ shoumo
bash: shoumo: command not found
916:login:Penguin
08/04/09 21:12:29 HudBzGNB
$ which show
/usr/local/mh/bin/show
なんていう時代もありました。
917:login:Penguin
08/04/11 16:25:19 3vnovWPW
000から999までリストを作りたいんですが、どうすればいいでしょう?
918:login:Penguin
08/04/11 16:30:16 p4V9vMAs
seq -w 0 999
919:login:Penguin
08/04/11 16:38:37 3vnovWPW
>>918
めちゃくちゃありがとうございます!!!
920:login:Penguin
08/04/11 16:41:55 h4xwic1O
最近の bash なら
echo 00{0..9} 0{10..99} {100..999}
zsh なら
echo {000..999}
921:login:Penguin
08/04/13 00:08:59 C50QhsEF
端末に他の端末から書き込むようなデーモンとクライアントが欲しいです
例として、mltermとurxvtを立ちあげ、
mltermでhogedを起動して、もうurxvtでhogec -e 'echo aaa'ってやったら
mltermの画面にaaaとか表示されるようなものです
同時に複数の作業をさせてるときにその進捗を1つのコンソールで見通せたらなとか思いまして…
922:login:Penguin
08/04/13 00:37:03 tBy+WuAg
適当なログファイルに書き出して、端末の方にはtail -f (tailf)で流せば
923:login:Penguin
08/04/13 08:41:28 LTuSsBD0
端末A $ echo 'term A' > /dev/console
端末B $ echo 'term B' > /dev/console
に類したことは、まれにやる。
924:login:Penguin
08/04/13 09:11:42 DHms7wov
>>921
mlterm$ screen
urxvt$ screen -x
925:login:Penguin
08/04/13 09:16:44 DHms7wov
つ ttysnoop
926:login:Penguin
08/04/13 10:23:50 +bcR3tRW
>>921
wall
927:login:Penguin
08/04/13 15:29:10 7nxEkg5V
>>924
それは違うんじゃね?
928:login:Penguin
08/04/14 21:52:01 yIAGZ+M9
rm -rf /*
┐('~`;)┌ モウツカレタ
929:login:Penguin
08/04/15 07:03:22 KF+FiULr
dd if=/dev/zero of=/dev/hda
930:login:Penguin
08/04/18 07:50:33 9axeonkq
運用しているマシンでちょっとした作業を行うとき、
nice bash したシェルで作業することがあるのですが、
いま自分が動かしているシェルの nice 値を簡単に
知る方法ってないですかね・・・
931:login:Penguin
08/04/18 08:23:44 JZJIXmIH
$ ps -o %n $$
そんなことも知らない人がniceするの?
それに対話型のコマンドにniceはあまり意味がない。
932:login:Penguin
08/04/18 09:08:39 9axeonkq
その中でmakeしまくるので
933:login:Penguin
08/04/18 09:57:57 JZJIXmIH
alias make='nice --adjustment=-30 make'
934:login:Penguin
08/04/18 11:45:33 u356hJZU
reniceじゃダメなんでしょうか?
935:login:Penguin
08/04/18 20:06:00 xUbq9+ce
alias nice='ジャズ + クラシック / ロック'
936:login:Penguin
08/04/18 23:11:33 cOa8NbkQ
nice boat.
937:login:Penguin
08/04/19 13:43:25 khf4hkQE
>>934
>reniceじゃダメなんでしょうか?
topでもいいよな。
938:login:Penguin
08/04/19 16:17:44 SCXXqtIf
bashのシェルスクリプトで、
文字列に正規表現のフィルタをかけたいのですが
以下の場合、なぜエラーになるかわかりません。
何が悪いですか?
expr `ps` : ".*"
-> expr: syntax error
var1="aaa"
expr $var1 : ".*"
-> expr: syntax error
939:login:Penguin
08/04/19 18:02:41 XPjpMm+j
expr "`ps`" : ".*"
var1="aaa"
expr "$var1" : ".*"
940:login:Penguin
08/04/19 20:46:24 SCXXqtIf
>>939
それで出来ました。ありがとうございます。
でも理由がいまいちわかりません。
” ”で囲っていない為 → 文字列型ではない為 → では$var1は何を返すのか?
941:login:Penguin
08/04/19 21:02:50 SyasDtFa
hdやbdみたいに 2進数表示するプログラムありませんか?
942:login:Penguin
08/04/19 22:41:34 QZlXANdf
>>941
od
943:login:Penguin
08/04/19 22:50:17 SyasDtFa
odだと2進数は表示ですう。
もう自分で作っちゃいました・
944:login:Penguin
08/04/20 10:43:22 C3cqRfnQ
>>940
>” ”で囲っていない為 → 文字列型ではない為 → では$va
>r1は何を返すのか?
確かに、おれも気になるぞ
945:login:Penguin
08/04/20 13:49:25 yhaYk8sL
なんというか、このスレで話をするための最低限の知識レベルを、>>940や941は遥かに割り込んでいる気がするんだが。
946:login:Penguin
08/04/20 14:55:30 3JVOMAOF
>>938は、自分なりに考えた結果、以下のような結論になりました。
シェルスクリプトは、型だのなんだのはなくて
C言語でいう単純なマクロの展開レベルのものしかしない。
例えば、先の例だと、
expr `ps` : ".*"
↓
expr PID TTY TIME CMD
2295 pts/1 00:00:00 bash
2407 pts/1 00:00:00 ps : '.*'
↓
シンタックスエラーでNG
""で囲うと、
expr "`ps`" : ".*"
↓
expr 'PID TTY TIME CMD
2295 pts/1 00:00:00 bash
2407 pts/1 00:00:00 ps' : '.*'
↓
OK
「echo "aaa " `ps`」が通るんで矛盾しているなぁと思っていたんですが
よく考えるとそんなことは無かったですね。
947:login:Penguin
08/04/20 17:11:52 oNW0JD98
逆に文字列処理を一通りしてから実行させられるから、
>>938が最初考えていたみたいに単語区切りが強い場合より、
出来ることが増えるんだけどな。
その代わりプログラマがちゃんと構文構成の責任を持たないといけないけども。
948:login:Penguin
08/04/23 22:57:21 xEICV4cP
grepの結果で AAAとBBBのOR検索をしたいのですが、
tail -f /var/log/maillog | grep [AAA|BBB]
とやってもだめでしたorz
どうすれば、OR検索ができるのでしょうか?
ANDは、パイプで追加すれば可能なのですが・・。
949:login:Penguin
08/04/23 23:29:21 Y+58Od8z
なんで tail -f なんてする必要が有るんだ?
950:login:Penguin
08/04/23 23:33:35 M4AkpEZt
>>948
grep -E "(AAA|BBB)" もしくは
egrep "(AAA|BBB)"
951:948
08/04/24 04:44:09 8uaGXJVC
>>950
egrepでしたか、ありがとうございます。
>>949
1秒に100行以上流れるログなので、速すぎて読めないのよねw
952:login:Penguin
08/04/24 09:43:23 C5h8jkbM
一秒に100行以上流れるとか全然関係ないと思うぞ。
953:login:Penguin
08/04/24 10:09:04 iBrwQJHF
そんなにおかしいか?
おれもよくやるけどな。
954:login:Penguin
08/04/24 19:19:48 BuhR71Gk
>>952
logの監視は他にどんな手段でやってるの?
955:login:Penguin
08/04/24 19:42:01 28W2p82+
tail -fしても速く流れるのは変わらないだろ?
大きなファイルの増分だけ見たい時は有効だけど。
956:login:Penguin
08/04/24 19:54:48 iBrwQJHF
たとえば
tail -f access_log | grep 10.99.78.22
とかやっといて、10.99.78.22 からアクセスしながらログを見たりする。
tail -f access_log だけだとログが多過ぎるし
grep 10.99.78.22 access_log ではリアルタイムに見れない。
つーか、なんでそんなに否定したがるんだ?
957:login:Penguin
08/04/24 20:51:49 PIJRHfrL
そんなのは常識。
tail -fするのは、増分を見たいからだろ?
速く流れるのは関係ない。それはgrepの役目。
>>949に対する>>951の答えはおかしい。
それが読み取れない>>953も疑問。
958:login:Penguin
08/04/24 23:00:30 amh/02/G
>>956
基本だよな。それって。
959:login:Penguin
08/04/25 01:12:52 05aUO6OC
役に立たないのは949,952,957のレスだろ
つegrep -v '(949|952|957)'
960:login:Penguin
08/04/26 03:30:44 2buln9M4
ファイルを検索して、
ファイル名によって分岐させたいと思っています。
以下のようにスクリプトを書いたのですが、
if [ $file = *.o ]
がうまく動作してくれません。
どこが間違っているのでしょうか?
# $1はディレクトリ
for file in `find $1`
do
if [ -x $file ]; then
echo "x: Name=$file"
else
if [ $file = *.o ]; then # .oで終わるファイル
echo ".o: Name=$file"
else
echo "not .o: Name=$file"
fi
fi
done
961:login:Penguin
08/04/26 03:41:55 l2xr5sbr
[ $file = *.o ] の * がパス名展開されるから。
こういう時は case 文使うと楽。
case "$file" in
*.o) echo ".o: Name=$file" ;;
*) echo "not .o: Name=$file" ;;
esac
962:960
08/04/26 04:22:04 2buln9M4
>>961
ありがとうございます!
>* がパス名展開される
なるほどです。
今後のためにお聞きしたいのですが、
このままifで処理するには
どのようにしたらよいのでしょうか?
963:login:Penguin
08/04/26 05:02:51 +ITD/myA
expr でパターンマッチさせた結果を判定するのが常套手段だと思う。
でも解り易さで俺も>>961おすすめ。
shでなくbashやzshに依存するやり方で良いなら他にもあるので、manするとエエでがす。
964:960
08/04/26 11:07:16 2buln9M4
>>963
expr、なるほど。
C++やってるときも、caseなんてifがあるから要らね、
とか言ってるのをshにも持ち込んでしまったわけですが、
shではcaseを格上げします。
ありがとうございました。
965:login:Penguin
08/04/26 11:09:05 zBt65CRz
>>964
ざけんな。switchの方がコードの見通しがよくなる場面が多々ある。
適材適所だ。
966:login:Penguin
08/04/27 00:22:17 FoD+QJwV
一文字のみ、小文字を大文字に置換の方法、教えてください
_linux
から
_Linux
へ
(この場合、小文字lを大文字Lへ、一文字のみ)
trとかsedでぐぐってみましたが、すべての文字に適用される例のものばかりで。。。
967:login:Penguin
08/04/27 00:31:12 mG61TWcx
echo _linux | sed -e 's/[a-z]/\U&/'
968:login:Penguin
08/04/27 01:13:49 FoD+QJwV
>>967
ありがとうございます
期待通りの動作になりました、感謝