14/12/12 19:08:12.46 .net
要素って具体的に何?
151:名無しさん@お腹いっぱい。
14/12/12 19:58:42.72 .net
>>149
やればできると思うが、結構面倒だしな
>>150
テキスト要素とかタグ要素とか
152:名無しさん@お腹いっぱい。
14/12/12 20:44:30.25 .net
>>149
xslt使えよ
153:名無しさん@お腹いっぱい。
14/12/13 00:48:34.76 .net
シェルスクリプトで、XMLのDOM操作をしたいってことなのか
「のようなこと」ってあるから別の何かかと思った
使ったことは無いんだけど、XMLgawkが便利そう
154:名無しさん@お腹いっぱい。
14/12/13 03:47:01.58 .net
XML Starletとか
155:名無しさん@お腹いっぱい。
14/12/15 19:52:22.36 .net
dashってのがあったんだ。
知らなかった。。。ash系なのか、ダッシュ島系なのか
156:名無しさん@お腹いっぱい。
14/12/15 20:11:02.18 .net
農家専用プログラミング言語
157:グールドの著作を読むなら原書で
14/12/16 15:34:56.67 .net
1993年に慶応藤沢で書いたc shellプログラムです。fingerの結果から名字を省いて名前だけローマ字表示で取り出しHi xoxo!とするプログラム
#!/bin/csh -f
### Compact wise program that extracts user's first name only from result of "finger" command on UNIX without any Admin rights ###
set who = `finger -m $user`
echo -n ' Hi '"$who[7]" echo '\!' (= Hi YOURNAME!)
# First name comes at 7th place divided by spaces
当時の基準で採点してみてください。当時はこういうユーザフレンドリなプログラム見かけなかったんだけど。環境が違えばあったのかな?
158:名無しさん@お腹いっぱい。
14/12/16 17:02:19.69 .net
>>157
1993年ってもうSVR4とかある時代だからそんなに古くないし、スクリプト内容も見所がない。
何を採点して欲しいやら。
強いて言うと、
cshスクリプト - 大減点
echoコマンドを2回に分ける必要ない - 減点
echoコマンドのところ改行のコピペミス?
fingerコマンドの出力って環境によってたぶん違うよ。
ちなみにこちらの環境では finger の 4番目の位置にファーストネームが入る。
#!/bin/sh
set `finger -m $USER`
echo ' Hi '"$4"'!'
159:グールドの著作を読むなら原書で
14/12/16 17:23:03.61 .net
>>158
echoコマンドはこういう遣り方じゃないと勝手に改行が入って苦労しました。
!も特殊文字扱いだったということでしょう。
それはさておきいちいちwhoとか名前付けてsetしなくてよいということですね。
こういうプログラムって当時からやってました?
sfcって遅れたキャンパスだったので、他大学の工学部などでは常識でも
あのキャンパスでは非常識ということも多々あるかと思います。
とにかくHi [first name]っていうプログラムを動かしてたのは学内で自分だけでした。
プログラムの全体はLaTeXをエクステンション除いたファイル名だけ打ち込めば
任意のプリンタから自動印刷できるという内容なんですがね。
160:名無しさん@お腹いっぱい。
14/12/16 17:28:04.57 .net
昔話がしたいの?
161:グールドの著作を読むなら原書で
14/12/16 17:38:54.20 .net
他キャンパスでは当時どうだったか知りたいだけ。これってアドミン権限除いた
基本的な構造はAmazon.comなどで金になってる商売だから。
162:名無しさん@お腹いっぱい。
14/12/16 17:51:39.82 .net
1993年ならUNIXとしては遅い方。
どこにでも普通に転がってるスクリプトだし、なんの変哲もないヘボスクリプトの何を評価しろとw
163:グールドの著作を読むなら原書で
14/12/16 17:54:06.78 .net
このスクリプトの特許持っている人ってどの国の何ていう人で取得年は何年?
164:名無しさん@お腹いっぱい。
14/12/16 17:54:28.41 .net
なんで特許持ってる前提になってんの?
165:グールドの著作を読むなら原書で
14/12/16 17:58:23.52 .net
金になるアイデアには特許が付き物でしょう。Amazon.comだって誰かに金払ってるでしょ。
166:名無しさん@お腹いっぱい。
14/12/16 18:23:54.80 .net
もしかして、root権限がなくても/etc/passwdのフルネームフィルドが読める手法がすごい、って言ってるの?
/etc/passwdは一般ユーザーでももともと読めるし、(たとえshadowでもパスワード部分以外は)
NIS使ってるならypcat passwdは一般ユーザーでもできるし。
何の新規性もない。
167:グールドの著作を読むなら原書で
14/12/16 18:38:28.60 .net
>>166
そうではなくて、大したことの無いアイデアが金になることがある、ということを強調している。
Amazon.com等々が誰かに金を払っているのは事実の筈だし。無論アドミン権限の中のプログラム
であってもデータから抜き出す作業は同じ。で、Amazonとかできた当初はHi某とか言ってこなかった
筈なので、そこら辺の経緯を知りたいわけ。日本語では英語名で抜き出すのは日本語名で抜き出す
よりは厄介な筈。他に方法いくらでもあるから。
168:名無しさん@お腹いっぱい。
14/12/16 18:43:25.43 .net
スレ違い。
169:名無しさん@お腹いっぱい。
14/12/16 20:12:06.60 .net
「俺が始めてだ、すげーだろー」は、その時点で主張しなけりゃ何の意味もない
ちなみにBBSにおいてユーザーの識別子として一方向ハッシュを表示する手法を、提唱したのは俺だ。
170:名無しさん@お腹いっぱい。
14/12/16 21:46:14.47 .net
>>167
そこまで知りたいなら調べて報告してくれ
おしえてクンじゃなければね
171:名無しさん@お腹いっぱい。
14/12/17 00:10:11.34 .net
>>167
> Amazon.com等々が誰かに金を払っているのは事実の筈だし。
まず、このソースを出してくれ
172:名無しさん@お腹いっぱい。
14/12/19 14:14:12.27 .net
mksh; MirBSD Korn Shell
ってのがあったんだ。
知らなかった。。。ash系なのか、ダッシュ島系なのか
173:名無しさん@お腹いっぱい。
14/12/23 07:08:11.72 .net
おっさんそんな調子で年越せんのか
しっかりしろ
174:名無しさん@お腹いっぱい。
14/12/25 17:52:08.23 .net
さあ、クリスマスだよ。
学生さんは冬休みに、買ってもらった
Mac, iPhone, android でシェルスクリプトを書いて遊ぼう!
175:名無しさん@お腹いっぱい。
14/12/25 18:54:27.87 .net
買ってもらった?
学生なら自分で買うわ。
生徒や児童なら買ってもらうかも知れんが。
176:あ
14/12/25 19:32:27.25 .net
/:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ヽ
/:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::://ヽ:::::::::::::::|
l:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::// ヽ::::::::::::::l
l:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::/:::「'ヽ:::::::::::// ヽ:::::::::::|
|::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ノl:::ノ l:::::::/ ヽ::::::::|
ノ:::::::::::::::::::::::::::::::::::::::::::::::::::::/ ゙゙ ノ:::/ ,,;;;;;;,, ,,,,ヽ:::::l
):::::::::::::::::::::::::::::::::::::::::::::::/ ノ/ __,'''i: ('''__):::l
)::::::::::::::::::::::::::::::::::::::::::::::::::/  ̄ ̄ン:. :「 ̄`ヾ
1:::::::::::::::::::::::「 `┤l:::::::::::::::::l  ̄ , ヽ ̄ l
`l:::::::::::::::::::::ヽ :l li:::::::::::::/ ヽ /´ `l |
ヽ::::::::::::::::::::::\_」 lヽ::::/ .l !:-●,__ ノ /
ノ:::::::::::::::::::::::::::ノ | l `゙゙ i ,,;;;;;;;;;;;;;;;;;;;;, /ヽ
,/ ヽ::::::::::::::::::::::( l l::::::::.. /.:''/´ ̄_ソ / `ヽ
ヽ:::::::::::::::ヽ | l:::::::::::... /::// ̄ ̄_ソ / \ ヴッ!!
ヽ:::::::\| l::::::::::::::::... / :::.ゝ` ̄ ̄/ / ヽ
ヽ:::l l:::::::::::::::::::..  ̄ ̄;;'' / ヽ
l l;;;;;;:::::::::::::::.....;;;;............;;;;;;''ノ l
l l '''''''''''''''''''''''''''''''''''''' ̄l | |
URLリンク(www.youtube.com)
177:名無しさん@お腹いっぱい。
14/12/26 09:25:20.89 .net
スレ違いかもだけど。。。
cronでスクリプト最速で回すとすると
* * * * * /home/user/hoge.sh
だけど、これ以上の頻度というか速度で実行できないのかな。
無限ループ覚悟で、hoge.shの最後に自分自身をコールするとか。
178:名無しさん@お腹いっぱい。
14/12/26 09:36:37.85 .net
自分自身でまわすならcronからは1回でいいじゃん
179:名無しさん@お腹いっぱい。
14/12/26 09:36:40.46 .net
>>177
何かの待ち受けイベントチェックか?
普通にsleep 1とかしながらループすればいいじゃん。cron必要なし。
自分自身をコールするするのは無駄だからwhile :; do hoge; sleep 1; done で無限ループな。
180:名無しさん@お腹いっぱい。
14/12/26 09:55:10.70 .net
*じゃなく*だ。
181:名無しさん@お腹いっぱい。
14/12/26 10:01:04.07 .net
>>179
そうです、自宅鯖で、smtpからweb、ssh、イベント監視まで
全部やらせてるマシン。あんまとっぴなことすると、落ちそう
なので。sleep入れれば、変な挙動はなくなりそうですね。
感謝!
182:名無しさん@お腹いっぱい。
14/12/26 12:23:03.31 .net
>>179さんの助言をそのまんまパクリ、
さっそくcronをやめて、do while ( `nantoka` ) done方式に変更。
前にcase文をつけてstart、stop、resartで起動、停止
できるようにした。sleep_secは10秒。これで様子みます。
しかし、良スレですね、ここは。いつも助けていただき感謝です。
183:名無しさん@お腹いっぱい。
14/12/26 12:27:53.31 .net
ここの住人のかたがたは皆さん知ってるだろうけど
今浦島な私には、pgrep、pkillというコマンドが使える
のが素晴らしいと思いました。(最近知った)
なんか昔は、kill -9 `pidof nantoka`とかやってたのが
なつかしいというか。
184:名無しさん@お腹いっぱい。
14/12/26 13:13:19.56 .net
話続けるなら名前欄にレス番入れてよ。
185:名無しさん@お腹いっぱい。
14/12/27 13:16:10.86 .net
>>179
conky使ったりatに登録したりしてまわさなくても、
単純にそれで良かったんだなあ。
186:名無しさん@お腹いっぱい。
14/12/31 06:28:21.74 .net
さあ、大晦日だよ。
学生さんは冬休みに、買ってもらった
Mac, iPhone, android でシェルスクリプトを書いて遊ぼう!
187:名無しさん@お腹いっぱい。
14/12/31 13:02:42.92 .net
iPhoneでどうやって書けるの?
188:名無しさん@お腹いっぱい。
14/12/31 13:58:30.05 .net
URLリンク(ideone.com)
189:名無しさん@お腹いっぱい。
14/12/31 19:47:38.53 .net
書くだけでなく、走らせて結果を見れるやり方
ただ調べた結果だけなので自己責任で
* インターネットブラウザーのjavascript上で走るLinuxで
URLリンク(bellard.org)
* もしくは、インターネットブラウザーでwebアプリ
URLリンク(ideone.com)
URLリンク(www.tutorialspoint.com)
* もしくは、sshで他マシンにアクセス
試した事はないけど、学習用のFree UNIX Shell Accountsとかもある
URLリンク(freeshell.org)
* Jailbreak
190:名無しさん@お腹いっぱい。
15/01/01 17:27:22.86 .net
ggl 検索文字列
でw3mを使って検索文字列でググる要にしているのを拡張したい
具体的には
コピーしてクリップボードの中に入ってる文字で検索しようと思う
それ自体は簡単なのだけど、問題は --clipboard や -c のオプションを付けた時に実行されるのか、(ggl -c)
それとももっとルーズに (ggl) と引数無しの状態で実行するか悩んでいる
オプションとかのガイドラインてある?
例えば -l はリスト(at -l など)で使うとか、多くのコマンドは
引数がない時は -h オプションと同じように簡単な説明がでるとかのメジャーなガイドライン
191:名無しさん@お腹いっぱい。
15/01/01 18:19:12.95 .net
GNUにはあった気がする
192:名無しさん@お腹いっぱい。
15/01/01 18:26:54.79 .net
引数ないときは「クリップボードから」なんて慣習は存在しない。
193:名無しさん@お腹いっぱい。
15/01/01 18:29:20.31 .net
興味があったのでちょっと検索してみた。
ガイドラインというのはわからないが、こんな感じで使われてるね~みたいのなら、
URLリンク(catb.org)
> The -a to -z of Command-Line Options
>
> Over time, frequently-used options in well-known Unix programs have established a loose sort of semantic standard
> for what various flags might be expected to mean. The following is a list of options and meanings that should prove
> usefully unsurprising to an experienced Unix user:
URLリンク(www.gnu.org)
> 4.9 Table of Long Options
>
> Here is a table of long options used by GNU programs. It is surely incomplete, but we aim to list all the options that
> a new program might want to be compatible with. If you use names not already in the table, please send
> bug-standards@gnu.org a list of them, with their meanings, so we can update the table.
194:名無しさん@お腹いっぱい。
15/01/01 20:15:18.38 .net
>>191-193
サンキュー
URL先の情報にぴったりのオプション見つからないから
-h を少し書いて後々忘れた時に備えて、
デフォルトでクリップボードで検索、
引数あるときはそれで検索にする
195:名無しさん@お腹いっぱい。
15/01/01 22:28:20.83 .net
両方用意すればいいんじゃない?
自分の名前がgglかgglcかで動作が変わるのも面白そう。
196:名無しさん@お腹いっぱい。
15/01/01 22:31:09.64 .net
名前同じで動作変わるとmanの括弧書きの数字が増えてややこしいみたいな?
197:名無しさん@お腹いっぱい。
15/01/03 21:18:53.70 .net
そういやgetopt(3)ってPOSIXで規定されてるんだね。いまどきの
*BSD, Linuxならlibcで持ってるものなんだな。
とあるソフトがGNUのgetopt.cを同梱しているので消してやりたいと思って
いたんだけど、configureでgetoptの存在チェックしてlibcの方を優先して
使わせるようにするのがいいのかな。
198:名無しさん@お腹いっぱい。
15/01/08 11:56:42.54 .net
「とあるソフト」がGPLなら、一部を削除するのはライセンス違反。
199:名無しさん@お腹いっぱい。
15/01/08 12:01:18.92 .net
>>198
なんで?
200:名無しさん@お腹いっぱい。
15/01/08 12:15:36.60 .net
GPL V3
4. Conveying Verbatim Copies.
5. Conveying Modified Source Versions.
201:名無しさん@お腹いっぱい。
15/01/08 13:17:19.27 .net
>>200
詳しく
202:名無しさん@お腹いっぱい。
15/01/08 18:53:35.81 .net
質問です
22, 32, 33, 45,
12, 47, 78, 44, 32,
...
数字がカンマで区切って700個書いてあるファイルがあります。
一行に数字が何個あるか規則性はありません。
このファイルを読み込んで数字を100個ずつ出力して7枚のファイルを
作りたいと思っています。シェルスクリプトでうまくできますでしょうか。
出力されたファイルには数字が一列で入っているほうがいいです。
お願いします。
203:名無しさん@お腹いっぱい。
15/01/08 19:41:16.46 .net
GNU awk 限定
awk -v RS='' -v FPAT='( *[0-9]+, *\n?){1,100}' \
'{
for(i=1;i<=NF;i++){
gsub(" *\n"," ",$i);
gsub(", *$","",$i);
print $i > i ".txt";
}
}' a.txt
上手く行けば 1.txt ... 7.txt というファイルができるはず
204:名無しさん@お腹いっぱい。
15/01/08 20:20:07.70 .net
gawk じゃなくてふつーの awk で。
awk -v RS=, '{print $0+0 > int(NR/100)+1 ".txt" }'
205:名無しさん@お腹いっぱい。
15/01/08 20:36:37.66 .net
int((NR-1)/100)+1 じゃないとダメだった。
206:203
15/01/08 20:51:41.18 .net
あ、カンマはいらないのね
207:203
15/01/08 20:56:03.24 .net
なおかつ1列を1行と読み間違えていた(´・ω・`)ショボーン
208:名無しさん@お腹いっぱい。
15/01/08 21:09:50.76 .net
ファイル分割が有るし、awkでやる方が良いだろうけど、sedで
見易さの為-r付けてます
#!/bin/sh
sed -re '
:loop;
$! {
N;
b loop;
}
s/,[ \n]+/, /g;
s/([0-9]+, ){100}/&\n/g;
' | {
i=1
while read line
do
echo "$line" > "$(( i++ )).txt"
done
}
209:名無しさん@お腹いっぱい。
15/01/08 21:43:46.83 .net
awkもsedも出ちまったか
tr -d '\r\n' < file
210:名無しさん@お腹いっぱい。
15/01/08 21:52:48.42 .net
set -- `sed 's/,/ /g' input.txt`
i=1
while [ $i -le 7 ]; do
(j=1; while [ $j -le 100 ]; do echo "$1"; shift; done) > $i.txt
211:209
15/01/08 21:57:31.95 .net
ミス
tr -d '\r\n' < file | tr ',' '\n' | split -l 100
212:名無しさん@お腹いっぱい。
15/01/08 21:58:20.67 .net
考えてる途中で送っちゃった。やり直し
set -- `sed 's/,/ /g' input.txt`
i=1
while [ $i -le 7 ]; do
(j=1; while [ $j -le 100 ]; do echo "$1"; shift; j=$((j + 1)); done) > $i.txt
shift 100
i=$((i + 1))
done
213:209
15/01/08 22:01:45.08 .net
>>212
お前は俺か
214:名無しさん@お腹いっぱい。
15/01/08 23:07:34.58 .net
/ *, */を改行に変換してhead
215:名無しさん@お腹いっぱい。
15/01/09 00:45:24.74 .net
#!/bin/sh
file=`cat "$1"`
for i in `seq 1 7`; do
for j in `seq 1 100`; do
echo -n ${file%%,*}, >>$i.txt
file=${file#*,}
done
done
216:名無しさん@お腹いっぱい。
15/01/09 01:53:20.06 .net
GNU grep and GNU parallel
$ grep -Po '[0-9]+' data.txt | parallel --pipe -L 100 -n 1 -k 'cat - > {#}.txt'
217:名無しさん@お腹いっぱい。
15/01/09 01:59:25.49 .net
211と216を足して
$ grep -o '[0-9]\+' data.txt | split -l 100
218:名無しさん@お腹いっぱい。
15/01/10 02:47:23.50 xezKGq2J7
.net が書き込めなくなったな
とりあえずscから見ているが
219:202
15/01/11 18:59:23.53 .net
>>203-217
ありがとうございます。本当に助かりました。
勉強不足を痛感。向上心を刺激されました。
220:名無しさん@お腹いっぱい。
15/01/14 13:42:56.50 .net
$SEARCH に入れても awkが動いてくれません
{}が引っかかってしまったのだろうか? どうすればよいのだろうか?
while true
do read SEARCH
awk 'BEGIN{RF="---"}/${SEARCH}/' $save_to
done
221:名無しさん@お腹いっぱい。
15/01/14 13:55:03.85 .net
シングルクォートで囲まれてるから置換されないのよ
222:名無しさん@お腹いっぱい。
15/01/14 14:41:45.54 .net
>>221
多少書き換えてみました
しかし、まだ動きません
clp.sh
do read SEARCH
export SEARCH
awk -f ~/sbin/h_Searher.awk $save_to
done
~/sbin/h_Searher.awk
BEGIN{RF="---"}/$SEARCH/
223:名無しさん@お腹いっぱい。
15/01/14 17:08:45.99 .net
perlで書いてしまった
たった1行のためにつまずくとは悔しい
do
perl ~/Perl_instance/clp.pl
done
~/Perl_instance/clp.pl
open FH, '<', '$save_toと同じファイル';
my @LOG = <FH>;
close FH;
my $sentence = join ' ', @LOG;
my @field = split /---/, $sentence;
# my $search = "Ano";
chomp(my $search = <STDIN>);
for my $lines (@field) {
if ( $lines =~ m/${search}/ ) {
print "---\n";
print "$lines\n";
}
}
224:名無しさん@お腹いっぱい。
15/01/15 10:05:06.27 .net
>>220
awk 'BEGIN{RF="---"}/'${SEARCH}'/' $save_to
225:名無しさん@お腹いっぱい。
15/01/15 12:37:55.02 .net
>>224
thanks!
226:名無しさん@お腹いっぱい。
15/01/15 13:19:56.10 .net
そして、$SEARCHにインジェクションされましたとさ。
227:名無しさん@お腹いっぱい。
15/01/15 18:30:18.23 .net
GNU awk ならこんなのも
awk -v SEARCH="$SEARCH" 'BEGIN{RF="---"}/SEARCH/' $save_to
228:名無しさん@お腹いっぱい。
15/01/20 01:40:59.45 .net
こんな雑誌があることを初めて知った。
なんと月刊で20号以上出ているということにも驚いた。
シェルスクリプトマガジン vol.21
URLリンク(www.amazon.co.jp)
URLリンク(www.usp-lab.com)
229:名無しさん@お腹いっぱい。
15/01/20 05:22:18.17 .net
その雑誌の半分はシェルスクリプト関係ない内容だから相当ネタがないんだろなって思った
230:名無しさん@お腹いっぱい。
15/01/21 01:45:14.76 .net
ツールドフランスの実況が森の景色の解説になってるようなもんか
231:名無しさん@お腹いっぱい。
15/01/22 16:29:19.37 .net
コマンドラインから手入力するとちゃんと動くスクリプトが、cronからだと動かない。
数日悩んだ結果。。。原因はLANGだった
232:名無しさん@お腹いっぱい。
15/01/22 16:32:53.58 .net
ルンゲの罠
233:名無しさん@お腹いっぱい。
15/01/22 16:48:29.41 .net
>>231
まれによくある。
スクリプトの先頭付近でLANGを設定しちゃうことも多いんだけど、Unix的でクールな
ポータビリティのある手法を紹介してくれる偉い人が出てくるのを正座して待ちたい。
234:名無しさん@お腹いっぱい。
15/01/22 17:14:56.12 .net
LANG=C
235:名無しさん@お腹いっぱい。
15/01/23 06:42:51.72 .net
偉い人が
共通したものは crontab 先頭で、タスク毎のは env NAME=VALUE COMMAND
と答えるか、もうまるっきり答えないと予想した
236:名無しさん@お腹いっぱい。
15/01/23 10:00:16.40 .net
共通したものは crontab 先頭で、タスク毎のは env NAME=VALUE COMMAND
237:名無しさん@お腹いっぱい。
15/01/23 16:52:05.70 .net
偉い人のコピペ北ー!
自演っぽくて、コメントしづらい輪
238:名無しさん@お腹いっぱい。
15/01/23 17:30:03.53 .net
この話はここで終わりって暗に言ってるんだろう
239:名無しさん@お腹いっぱい。
15/01/24 10:11:24.87 .net
LANG=C sl
的な書き方ってどこまで有効なのかな?
bashだけ?
240:名無しさん@お腹いっぱい。
15/01/24 10:23:49.81 .net
>>239
bourne shell でも使える
241:名無しさん@お腹いっぱい。
15/01/24 15:26:45.88 .net
配列の命名規則ってある?
242:名無しさん@お腹いっぱい。
15/01/24 15:41:53.70 .net
ない
243:240
15/01/25 04:39:03.74 .net
みんなはどうしてる?
しっくりくる表記法がないんだけど
244:名無しさん@お腹いっぱい。
15/01/25 05:18:01.83 .net
しっくりこない表記がワカラナイ
245:名無しさん@お腹いっぱい。
15/01/25 11:18:23.60 .net
配列は邪教
使わないので規則などない
246:名無しさん@お腹いっぱい。
15/01/25 11:45:02.72 .net
>>245
同意
247:名無しさん@お腹いっぱい。
15/01/25 12:36:31.55 .net
配列って変数名に連番を入れたりして使うことかと思ってたw
248:名無しさん@お腹いっぱい。
15/01/25 13:47:36.00 .net
>>245,245
じゃあ代わりにどうすればよいのだ?
まさかコピペ?
249:名無しさん@お腹いっぱい。
15/01/25 17:38:43.45 .net
ポインタとか言い出すと見た
250:名無しさん@お腹いっぱい。
15/01/25 19:40:14.84 .net
あほらし
> じゃあ代わりにどうすればよいのだ?
> ポインタとか言い出すと見た
いかにも、めんどくさそう
251:名無しさん@お腹いっぱい。
15/01/25 19:46:57.10 .net
会話するネタがないんだなぁ……
252:名無しさん@お腹いっぱい。
15/01/25 21:21:36.60 .net
じゃあおれからネタ
xargsコマンドが好き。無理だと思ってた処理がワンライナーになる
いっそ、powershellみたいにjsonパイプラインみたいなのがあればいいのにって思う
253:名無しさん@お腹いっぱい。
15/01/25 22:41:49.00 .net
俺がよく使うのはfind ... | xargs grep だったかな
他どんな場面で使うっけ
254:名無しさん@お腹いっぱい。
15/01/25 23:37:38.84 .net
\ls -1t *.* |head -3|xargs head
255:名無しさん@お腹いっぱい。
15/01/26 12:06:00.33 .net
>>236
*.*の3行が、headへの標準入力じゃなくて、引数として与えられるのか。
おもしろいなあ。
256:名無しさん@お腹いっぱい。
15/01/26 20:35:10.75 .net
xargs で何か面白い事は無いかと、あれこれ考えた結果
ループになる
xargs loop で検索したら結構見つかるので
珍しくは無いんだろうが、まあ、一応
<<EOF xargs -I i sh -c 'seq 3 | xargs -I j echo i j'
foo bar
baz qux quux
corge
grault
EOF
257:名無しさん@お腹いっぱい。
15/01/27 02:26:05.37 .net
xargs は並列処理でもよく使うかな
例えば find ... | xargs -P 12 -n 16 gzip とすると12プロセスがファイルの圧縮を行う
258:名無しさん@お腹いっぱい。
15/01/27 03:09:32.08 .net
\nをファイル名に仕込まれて爆死する
259:名無しさん@お腹いっぱい。
15/01/27 06:47:01.92 .net
find ... -print0 | xargs ... -0 ... ってしとけばええやん…
260:名無しさん@お腹いっぱい。
15/01/27 07:02:05.92 .net
\0をファイル名に仕込まれて(ry
261:名無しさん@お腹いっぱい。
15/01/27 07:38:50.39 .net
仕込めるんだっけ?
262:名無しさん@お腹いっぱい。
15/01/27 08:17:49.81 .net
find ‥ -print0 を知らん奴もいるんだな w
263:名無しさん@お腹いっぱい。
15/01/27 08:20:05.07 .net
>>261
API だと思い付かない
ディスクを直接バイナリ編集すれば可能かも
264:名無しさん@お腹いっぱい。
15/01/27 08:25:13.28 .net
>>262
実装によってはないのよ
265:名無しさん@お腹いっぱい。
15/01/27 08:28:26.16 .net
solarisにはまだない
266:名無しさん@お腹いっぱい。
15/01/27 12:18:24.66 .net
>>264
移植すりゃいいじゃん
267:名無しさん@お腹いっぱい。
15/01/27 12:56:34.51 .net
大抵は
-exec {} +
で用が足りる
268:名無しさん@お腹いっぱい。
15/01/27 13:01:19.27 .net
>>263
カーネル内でもファイル名は0終端で扱ってるから無理だね
実際のサイズと異なる事でカーネルクラッシュなどまずいことが発生する可能性は
あるけど、それは普通にカーネル内バグ
269:名無しさん@お腹いっぱい。
15/01/27 13:29:38.19 .net
>>266
そういう話じゃないよ
270:名無しさん@お腹いっぱい。
15/01/27 13:41:29.10 .net
>>269
半分冗談だよ、いちいち気にしてたら禿げるぞ
271:名無しさん@お腹いっぱい。
15/01/27 13:43:51.02 .net
冗談に見えないし、
冗談だとしても面白くないよ
272:名無しさん@お腹いっぱい。
15/01/27 15:15:56.23 .net
大抵は
-exec \{\} +
とエスケープなりクォートで囲むなりするのを忘れる
273:名無しさん@お腹いっぱい。
15/01/27 16:27:07.47 .net
{}をquoteしなきゃならないカタワ専用シェルって何?
274:名無しさん@お腹いっぱい。
15/01/27 21:10:27.07 .net
-execはなんか怖いんだよなぁ
理由はないんだけど
275:DAEMON
15/01/27 21:45:21.58 .net
>>273
シ
タッ・・(Φ Φ+)・・・ 恐らく Perl です
276:DAEMON
15/01/27 22:02:58.78 .net
続 >>275
シ
タッ・・(Φ Φ+)・・・ 例えば、基礎公文で…
while (test) {
open test-file.txt(filehandle) ,
">test-file.pl"
print test-file.txt
close test-file.txt
}
斯様な様にですか…
277:名無しさん@お腹いっぱい。
15/01/28 00:14:24.97 .net
>>272
で、{}をクォートする必要があるシェルって何?
278:名無しさん@お腹いっぱい。
15/01/30 19:56:12.76 .net
wait入れるsleepだが、引数が整数だけだろと思ってたら、整数じ
ゃなくてもいいというので、0.1入れてやってみたら、ほんとに動
作してるっぽい。manには何も書いておらん。つかえねーman
279:名無しさん@お腹いっぱい。
15/01/30 20:00:01.61 .net
うちのsleepはGNUだけど man sleep すると info 見ろって書いてあって、info 見たら:
Historical implementations of `sleep' have required that NUMBER be
an integer, and only accepted a single argument without a suffix.
However, GNU `sleep' accepts arbitrary floating point numbers (using a
period before any fractional digits).
280:名無しさん@お腹いっぱい。
15/01/30 21:57:35.82 .net
>>279
おお、サンクス
281:名無しさん@お腹いっぱい。
15/01/31 12:09:54.06 .net
>>274
客先環境での操作なんかだとおおいにある
xargsなら、-pとか-tがあるので安心
282:名無しさん@お腹いっぱい。
15/01/31 13:19:36.31 .net
>>281
同意が得られて異端じゃないと安心出来た
尚就職してから今まで客先環境でしか働いたことがない模様
283:名無しさん@お腹いっぱい。
15/01/31 17:47:20.57 .net
こうじゃなくて
v=${v:-default}
こうでしょ
: ${w:=default}
っていうの有りますか?皆さんの、そういうの教えて下さい
284:名無しさん@お腹いっぱい。
15/02/01 00:46:16.74 .net
こうじゃなくて
echo -e 'hoge\nfuga'
こうでしょ
printf 'hoge\nfuga\n'
285:名無しさん@お腹いっぱい。
15/02/01 00:47:04.51 .net
俺はecho派
286:名無しさん@お腹いっぱい。
15/02/01 07:05:52.05 .net
公文い公文
287:名無しさん@お腹いっぱい。
15/02/01 13:49:52.79 .net
echo は -e が必要だったり不要だったりモノによってバラバラなんで printf だなぁ。
OSX の /bin/sh は bash だけど、同じ bash のはずなのに
bash -c "echo -e 'hoge\nfuga'" と sh -c "echo -e 'hoge\nfuga'" で
結果が違うとかめんどくさすぎる。
288:名無しさん@お腹いっぱい。
15/02/01 18:28:40.97 .net
似た様なのだけど、
こうじゃなくて
function f () {
echo hoge hoge
}
こうでしょ
f () {
echo hoge hoge
}
289:名無しさん@お腹いっぱい。
15/02/01 19:10:32.63 .net
個人的には上なんだけど
最近やってるのがjavascriptだからかな
290:名無しさん@お腹いっぱい。
15/02/02 10:43:19.51 .net
変数は大文字か小文字か。
個人的には環境変数と区別するために小文字なんだけど、
社内の他の人が書いたのを見ると大文字ばっかりなんだよな。
291:名無しさん@お腹いっぱい。
15/02/02 12:18:06.01 .net
いつexportしても問題が出ないような命名規則なら問題無しw
292:名無しさん@お腹いっぱい。
15/02/02 21:56:58.79 .net
質問です。
linux mint 17.1 でコマンドの練習してるのですが、
% ls -l
だと色々ずらーっと出るんですけど、本に書いてあるとおり、
ソートコマンドを練習しようとして
% ls -l | sort +4
と打ち込んでファイルサイズで降順ソートしたかったのですが
sort: cannot read: +4: そのようなファイルやディレクトリはありません
と出てしまいます。
bashですが、シェルの種類によってはこのオプション使えないんでしょうか。
-r等は正常に動作します。
293:名無しさん@お腹いっぱい。
15/02/02 22:04:13.81 .net
sort -k4
sort -k4r
294:名無しさん@お腹いっぱい。
15/02/02 22:34:00.27 .net
で、できました!有り難うございます!
295:名無しさん@お腹いっぱい。
15/02/03 03:09:11.93 .net
>>292-294
sort +4と同じ指定はsort -k5
たぶんls -lでファイルの所有者が全て同じで、できたと勘違いしてる
--debugオプションをつけるとわかりやすい
URLリンク(www.gnu.org)
> On older systems, sort supports an obsolete origin-zero syntax ‘+pos1 [-pos2]’ for specifying sort keys.
> The obsolete sequence ‘sort +a.x -b.y’ is equivalent to ‘sort -k a+1.x+1,b’ if y is ‘0’ or absent,
> otherwise it is equivalent to ‘sort -k a+1.x+1,b+1.y’.
sort +4という古いオプションの扱いはPOSIXのバージョンによるってことかな
URLリンク(www.gnu.org)
296:名無しさん@お腹いっぱい。
15/02/03 06:48:02.67 .net
Linux だったら ls コマンドは GNU coreutils の ls だろうから、
$ ls -l --sort=size
or
$ ls -lS
でええじゃまいか
297:名無しさん@お腹いっぱい。
15/02/03 08:37:05.99 .net
( 検索結果で上位に上がると期待して ) 日本語訳を貼り付けておきます
URLリンク(linuxjm.sourceforge.jp)
URLリンク(linuxjm.sourceforge.jp)
298:確認不足だった orz
15/02/03 08:40:20.78 .net
訂正
( 検索結果で上位に上がると期待して ) 日本語訳を貼り付けておきます
URLリンク(linuxjm.sourceforge.jp)
URLリンク(linuxjm.sourceforge.jp)
299:名無しさん@お腹いっぱい。
15/02/04 22:55:20.92 .net
>>298
おお、infoの日本語訳できたんだ
man on WWWのように検索できるとさらにいいね
300:名無しさん@お腹いっぱい。
15/02/08 15:04:24.54 .net
よく使うワンライナーなどはどうやって呼び出すものなんですか?
何か簡単に管理する方法がありませんかね?
301:名無しさん@お腹いっぱい。
15/02/08 15:06:57.37 .net
zshならzawから
vimのUnite historyの様なgrep効くから、それで呼ぶか
編集して完成させる
302:名無しさん@お腹いっぱい。
15/02/08 16:40:17.45 .net
>>301
anything.elみたいなヒストリーサーチみたいですね。
bashなのでどうしたものか。
303:名無しさん@お腹いっぱい。
15/02/09 09:34:08.43 .net
>>300
aliasじゃないの?
304:名無しさん@お腹いっぱい。
15/02/09 10:04:38.99 .net
自分で書いたスクリプトはいつでも、一見、間違いのないように見えるw
305:名無しさん@お腹いっぱい。
15/02/09 18:00:27.27 .net
まったくだ(´・ω・`)
ぼくの書いたスクリプトが動かないなんてけしからん(´・ω・`)
シェルの方を治したまえ
306:名無しさん@お腹いっぱい。
15/02/09 18:21:02.80 .net
cygwinからLinuxに移植したシェルスクリプトが,ping部分で成功しなかった
declare -A URL
URL=(
["Vim_part24"]="スレリンク(unix板)"
["vim_part5"]="スレリンク(software板)"
)
# ping for download
ping_error=0
for i in ${!URL[@]}
do
# ping ${URL[$i]} > /dev/null
ping -n 1 `echo ${URL[$i]} | awk -F"/" '/http/{print $3}'` > /dev/null
if [ "$?" -ne 0 ]; then
echo "${i} : can not contact ${URL[$i]}"
ping_error=1
fi
done
307:名無しさん@お腹いっぱい。
15/02/09 18:41:13.94 .net
ping -c 1 ... にするべきじゃないの?
pingのコマンドオプションって統一されてないよなぁ
308:名無しさん@お腹いっぱい。
15/02/09 19:27:08.45 .net
配列を使うのはダサいと思うのです。
#!/bin/sh
url_list='
Vim_part24 スレリンク(unix板)
vim_part5 スレリンク(software板)
'
ping="ping -w 3 -c 1"
echo "$url_list" | while read thr url __; do
case "$url" in
https?://*)
host=`echo $url | cut -d/ -f3`
if ! $ping $host >/dev/null; then
echo "$thr: cannot contact $url"
err=1
fi
;;
esac
done
exit $err
309:名無しさん@お腹いっぱい。
15/02/09 19:28:49.19 .net
ああ、case の条件部分がおかしい。
URLリンク(*|fhttp:)">URLリンク(*|URLリンク(search.cpan.org)
てのがあった
このままじゃ使いものにならんけどね
411:名無しさん@お腹いっぱい。
15/03/12 16:01:30.66 .net
ちょっとお知恵を拝借したい
テキストファイルを検索して見つけた行数を取得したいときって
grep -nで行数出力させて取得するのが一番シンプルかな?
マッチする最終行にしたい場合はtailと組み合わせてさ
ちなみにシェル知らなかったころってreadで1行ずつ読み込んで判断してたw
412:名無しさん@お腹いっぱい。
15/03/12 16:32:34.70 .net
「一番」って難しいこと聞くね
413:名無しさん@お腹いっぱい。
15/03/12 18:00:51.55 .net
>>411
grep -c
414:名無しさん@お腹いっぱい。
15/03/12 18:40:40.82 .net
>>413
オマエいつも問題の意味取り違えて回答して点数もらえないタイプだろw
415:名無しさん@お腹いっぱい。
15/03/12 20:35:27.12 .net
>>414
ん?
質問:検索して見つけた行数を取得したい
cオプション: 検索条件にマッチした行数を表示する
416:名無しさん@お腹いっぱい。
15/03/12 20:36:26.22 .net
>>414
あ、わかった
質問は行番号のことを行数といっているのね
417:名無しさん@お腹いっぱい。
15/03/12 20:36:37.62 .net
>>415
まだわかってないのか…重症?
418:名無しさん@お腹いっぱい。
15/03/12 21:26:36.04 .net
ちょっとwc
419:名無しさん@お腹いっぱい。
15/03/12 22:07:04.23 .net
>>418
オプションなしだと複数返すコマンドだよね
420:名無しさん@お腹いっぱい。
15/03/13 00:23:15.74 .net
行数と行番号じゃ、意味が違うな。
日本語に不自由してるのぅ
421:名無しさん@お腹いっぱい。
15/03/13 01:03:30.38 .net
grep -nで出力されるのは行数ではないね
422:名無しさん@お腹いっぱい。
15/03/13 01:16:54.86 .net
なんかgrep -c言ってる人がバカにされてるけど
>grep -nで行数出力させて取得するのが一番シンプルかな?
>マッチする最終行にしたい場合はtailと組み合わせてさ
これから察するに、行数と書いてはいるが、実際は行数じゃなくて行番号のこと言ってるんじゃないの?
マッチした行数が知りたいなら最終行の話なんて出てこないだろ
つまり本当にバカなのは>>417と推測
まぁ質問主から続きがなければ有耶無耶だが
423:421
15/03/13 01:17:57.58 .net
俺何言ってんだ?
すまん眠かったってことで何も見なかったことにしてくれ……死ぬ……
424:名無しさん@お腹いっぱい。
15/03/13 04:43:04.00 .net
行数、直訳すると line number
425:名無しさん@お腹いっぱい。
15/03/13 07:28:39.51 .net
line countじゃないの?
426:名無しさん@お腹いっぱい。
15/03/13 07:40:15.74 .net
直訳、と言ってるだろ。
natural number = 自然数
complex number = 複素数
number = 数
427:名無しさん@お腹いっぱい。
15/03/13 08:04:07.16 .net
>number = 数
ちがう。
428:名無しさん@お腹いっぱい。
15/03/13 08:20:54.53 .net
違うの知ってて言ってんでしょ
429:名無しさん@お腹いっぱい。
15/03/13 11:04:35.04 .net
順序数?
430:名無しさん@お腹いっぱい。
15/03/13 13:12:27.06 .net
行番号を行数と呼ぶ人がいるとして、その人は行数を何と呼ぶのでしょうかね。行の数?
431:名無しさん@お腹いっぱい。
15/03/13 17:11:36.57 .net
行回数
432:名無しさん@お腹いっぱい。
15/03/14 01:06:12.05 .net
行数はnumber of linesだろ
Fランもたいがいにせいよ
433:名無しさん@お腹いっぱい。
15/03/14 02:26:16.92 .net
>>411
まあgrepでいいと思う
grep -n regexp FILE | tail -n1 | cut -d: -f1
awk /regexp/'{print NR}' FILE | tail -n1
sed -n /regexp/= FILE | tail -n1
434:名無しさん@お腹いっぱい。
15/03/14 04:57:44.74 .net
>>432
行数は line count (だからこそ grep -c )
435:名無しさん@お腹いっぱい。
15/03/14 05:17:25.87 .net
count number of lines じゃね
てかどーでもいいよ
行数にしろ行番号にしろ質問者が具体例を明示してる時点で誤解しようがないだろ
早がってんしたエスパースキルゼロのうっかりさんが
早漏の言い訳をぐだぐだぐだぐだぐだぐだぐだぐだぐだぐだ
くだらねー
436:名無しさん@お腹いっぱい。
15/03/14 05:44:10.73 .net
それは「行数を数えろ」だろ
中卒もたいがいにしとけ
437:名無しさん@お腹いっぱい。
15/03/14 07:03:54.77 .net
>>436
countは動詞だけじゃなく名詞にもなるんだよ、知らなかった?
438:名無しさん@お腹いっぱい。
15/03/14 08:50:28.21 .net
へー
439:名無しさん@お腹いっぱい。
15/03/14 18:41:01.09 .net
>>437
名詞が連続してるが、それはどう言い訳するんだ?
440:名無しさん@お腹いっぱい。
15/03/14 21:16:03.47 .net
URLリンク(www.gnu.org)
-c
--count
Suppress normal output; instead print a count of matching lines for each input file. With the -v (--invert-match) option, count non-matching lines. (-c is specified by POSIX.)
441:名無しさん@お腹いっぱい。
15/03/15 00:27:31.56 .net
一行の中に、
bbbbaaa124iiiiiccccaaaa456lllllddddaaa789と書いてあった場合に、
特定の文字列の後に続いている数字を、スペース空けて抜き出す書き方はないでしょうか
うえの場合だとaaaの後にあるものを抜き出すように、124 456 789のような・・
素人質問ですいませんがよろしくお願いします
442:名無しさん@お腹いっぱい。
15/03/15 01:12:54.15 .net
GNU grep が使えるなら
$ echo "bbbbaaa124iiiiiccccaaaa456lllllddddaaa789" | grep -Po '(?!aaa)[[:digit:]]+' | tr '\n' ' '
443:名無しさん@お腹いっぱい。
15/03/15 02:09:05.45 .net
>>442
できました!
使わせていただきます。ご親切にありがとうございました。
444:名無しさん@お腹いっぱい。
15/03/15 03:20:18.84 .net
追加で質問したいのですが、
上の例でbbbbaaa124iiiiicccc222aaaa456lllllddddaaa789とあった場合に、
aaaの直後でない222は省いて124 456 789だけ方法はないでしょうか
何度もすいません
445:名無しさん@お腹いっぱい。
15/03/15 03:27:09.47 .net
grep -Po '(?<=aaa)\d+'
446:名無しさん@お腹いっぱい。
15/03/15 03:50:51.90 .net
>>445
完璧にできました!
この時間に回答いただけるとは思いませんでした。
大変助かりました。ありがとうございました。
447:名無しさん@お腹いっぱい。
15/03/15 13:29:40.91 .net
何度もすいません
上の例で、bbbbaaa0.24iiiiicccc2.22aaaa456lllllddddaaa7.89 など
小数点も含む数字が混じっている場合に、同様の条件で0.24 456 7.9を抜き出す方法はないでしょうか
あまりにも聞きすぎなので最後にしようと思います。
448:名無しさん@お腹いっぱい。
15/03/15 14:11:57.45 .net
こうかなぁ…
grep -Po '(?<=aaa)\d+(\.\d+)?
でもこれだと、".01" とかにはマッチしないけどね。
それと、"1.2.3" なんて文字列があると、"1.2" にマッチしちゃう。
449:名無しさん@お腹いっぱい。
15/03/15 14:12:54.78 .net
ちったぁ自分で考えな
過去2回の答えがなぜそうなるのかを考えれば応用でいけるはずだ
450:名無しさん@お腹いっぱい。
15/03/15 14:15:07.46 .net
grep -o 'aaa[0-9\.][0-9\.]' | tr '\n' ' '
451:名無しさん@お腹いっぱい。
15/03/15 14:16:19.36 .net
ミス
grep -o 'aaa[0-9\.][0-9\.]*' | sed 's/aaa//g' | tr '\n' ' '
452:名無しさん@お腹いっぱい。
15/03/15 14:37:30.13 .net
>>448
grep -Po '(?<=aaa)\d+(\.\d+)?(?=[^\d.]|$)'
453:名無しさん@お腹いっぱい。
15/03/15 14:52:31.67 .net
>>448
>>450
>>451
再度ありがとうございました。
私のファイルのケースですと450さんのやり方で完全にできました!
大変助かりましたし、勉強になりました。ありがとうございました。
>>449
本当そうしようと思います。
それ以前にgrepやsedは簡単な文字抜き出しぐらいにしか使ったことがなかったのですが、
こんなに便利だとは驚きました。学習して次は自分で解決できるようにしたいと思います
454:448
15/03/15 14:55:28.70 .net
これは私見だが
grepの-PはPerlの正規表現として扱うためのオプションだ
Perlを知ってるなら問題ないが、知らないなら>>451のが多分勉強対象としては正しい
455:名無しさん@お腹いっぱい。
15/03/15 15:09:05.03 .net
>>452
投稿した後でレス確認しました。すいません。
こちらのやり方でもできました!ありがとうございました。
書き方の意味を勉強してみたいと思います。
>>454
ありがとうございます。perlも知らないので、
教えていただいたオプションの意味も含めて調べてみようと思います。
456:395
15/03/16 22:22:07.74 iYLKElrbV
>>401
なんとか出来ました!ありがとうございました!
sed -e 's/_[0-9][0-9]_/_%%_/' tree.txt | uniq #sortするとls -Rの構造が崩れる
awk '!a[$0]++' tree.txt #fooとbarが交互になっている行をuniq
uniq tree.txt #空行(改行?)が全部消えてまう
sed -i "/:$/i \n" tree.txt #?わからん しっぽが:の行の前に空行を挿入
sed "/:$/i \n" tree.txt #?
sed -e "s/^n//" tree.txt #なんとかできた。あとは%%を数字に戻すのだけ手打ちでがんばる
457:395
15/03/16 22:22:55.63 iYLKElrbV
>>401
何とか出来ました!ありがとうございました!
sed -e 's/_[0-9][0-9]_/_%%_/' tree.txt | uniq #sortするとls -Rの構造が崩れる
awk '!a[$0]++' tree.txt #fooとbarが交互になっている行をuniq
uniq tree.txt #空行(改行?)が全部消えてまう
sed -i "/:$/i \n" tree.txt #?わからん しっぽが:の行の前に空行を挿入
sed "/:$/i \n" tree.txt #?
sed -e "s/^n//" tree.txt #なんとかできた。あとは%%を数字に戻すのだけ手打ちでがんばる
458:395
15/03/16 22:24:14.07 iYLKElrbV
連投申し訳ない
459:名無しさん@お腹いっぱい。
15/03/25 06:56:05.87 .net
専用コマンド使わずに実用的な強度の暗号復号フィルタとか誰か書ける?
460:名無しさん@お腹いっぱい。
15/03/25 12:51:41.84 .net
>>459
専用コマンドってのは、gpg とか openssl みたいなのを指してるの?
python とか perl とかを使っていいのならライブラリ次第で何とでもなりそうだけど、
それも NG なのかな?
461:名無しさん@お腹いっぱい。
15/03/25 15:07:14.94 .net
rot13でよければ
tr A-Za-z N-ZA-Mn-za-m
462:名無しさん@お腹いっぱい。
15/03/25 18:11:12.12 .net
それはさすがに「実用的な強度」とは言えないのでは……
463:名無しさん@お腹いっぱい。
15/03/27 22:26:36.44 .net
会社でシェルスクリプト(awkやsed)いじる必要があるんですが
何かおすすめの本ないですか?
464:名無しさん@お腹いっぱい。
15/03/28 00:47:40.73 .net
URLリンク(www.goggle.co.jp)
465:名無しさん@お腹いっぱい。
15/03/28 11:31:55.66 .net
後ろからn文字目のみを削除する方法ってある?
1234567890
なら
123456780
12345
なら
1235
になるような。
466:名無しさん@お腹いっぱい。
15/03/28 14:11:41.06 gf0XqcquF
>>465
nawkのsubstrでできない
467:名無しさん@お腹いっぱい。
15/03/28 15:17:24.35 shU+BQtVu
>>465
rev, cut -c, head -c, tail -c などでいけるのでは?
$ echo 12345 | rev | cut -c1,3- | rev
1235
$ echo 1234567890 | rev | cut -c1,3- | rev
123456780
468:名無しさん@お腹いっぱい。
15/03/28 14:36:27.39 .net
sed -e 's/.\(.\{n-1\}\)$/\1/'
後ろから2文字目なら
echo 12345 | sed -e 's/.\(.\{1\}\)$/\1/'
1235
469:名無しさん@お腹いっぱい。
15/03/28 15:15:24.11 .net
>>460
LL言語呼び出すにしても拡張ライブラリの専用コマンドに依存するのはNGじゃない?
nkfでrot13読むのは専用コマンドとは言えない気がするけど>>462だよなあ。
バイナリ法辺りを実装すればとりあえずなんとかなるんだろうか?
470:名無しさん@お腹いっぱい。
15/03/28 15:18:54.26 .net
>>465
rev, cut -c, head -c, tail -c などでいけるのでは?
$ echo 12345 | rev | cut -c1,3- | rev
1235
$ echo 1234567890 | rev | cut -c1,3- | rev
123456780
471:名無しさん@お腹いっぱい。
15/03/29 05:16:26.01 .net
>>465
>後ろからn文字目のみを削除する方法ってある?
a=1234567890; echo "${a%??}${a#?????????}"
472:名無しさん@お腹いっぱい。
15/03/29 08:10:35.43 .net
>>471
それ、n文字目と言うのが $n 変数に入ってる場合のこと聞いてるんでは? 固定数値ならいろいろ方法あるよ。
473:名無しさん@お腹いっぱい。
15/03/29 13:30:23.41 .net
>>472
可変でも同じことはできるけど。
a=1234567890; n=4; f(){ r=$1; while [ ${#r} != $2 ]; do eval r=\${r$3?}; done; echo $r; }; echo $(f $a $((${#a} - $n)) %)$(f $a $(($n - 1)) \#);
474:名無しさん@お腹いっぱい。
15/03/29 13:51:13.01 .net
もっとエレガントな方法がいいなぁ
475:名無しさん@お腹いっぱい。
15/03/29 14:10:10.11 .net
467が他の回答に勝っている点って何があるのかなあ
476:名無しさん@お腹いっぱい。
15/03/29 14:39:04.14 .net
bash + GNU coreutils の cut コマンド限定
範囲チェックはしていない
ncut () {
declare str="$1"
declare -i idx="$2"
declare -i len=$(expr length "$str")
echo $str | cut --complement -b$((len - idx + 1))
}
$ ncut 1234567890 2
123456780
$ ncut 12345 2
ncut 12345 2
477:名無しさん@お腹いっぱい。
15/03/29 14:40:32.78 .net
>>476
おっと、s/delcare/local/ でお願い
478:名無しさん@お腹いっぱい。
15/04/06 20:37:17.61 .net
$ N=1; echo 1234567890 | rev | sed 's/\(.\{'"$((N-1))"'\}\)./\1/' | rev
479:名無しさん@お腹いっぱい。
15/04/06 23:05:32.98 .net
xyzあいうえおabc
xyzかきくけこabc
というファイルがあったときに
あいうえお
かきくけこ
と抜き出す方法にはどうすればよいでしょうか
grepなどを使うとおもったのですがうまくいきません。
よろしければご教示おねがいします
480:名無しさん@お腹いっぱい。
15/04/07 01:08:35.80 .net
ファイル名変更じゃ無くて抜き出しなら
lsのオプション弄ってパイプでsedに繋げばいい
変更ならrename使おう
481:名無しさん@お腹いっぱい。
15/04/07 01:19:37.06 .net
sed 's/xyz\(.*\)abc/\1/g'
482:名無しさん@お腹いっぱい。
15/04/07 23:44:39.59 .net
例えば、
親ディレクトリ
/小ディレクトリA/photo/
/小ディレクトリB/photo/
/小ディレクトリC/photo/
みたいなディレクトリ構造があった時photo3つをpictureに
変更するにはどうすればよいのでしょうか
for文にmv入れ込めばできると思ったのですができませんでした
初歩的な質もう申し訳ありませんがよろしくお願いします。
483:名無しさん@お腹いっぱい。
15/04/07 23:56:55.05 .net
最後にスラッシュつけなきゃできると思うが
484:名無しさん@お腹いっぱい。
15/04/08 00:23:18.58 .net
for i in *; do cd $i; mv photo picture; done
なんとか自己解決しましたそして>>483有難う
485:名無しさん@お腹いっぱい。
15/04/08 00:30:06.79 .net
って違う
for i in *; do cd $i; mv photo picture; cd ..;done
こうだ!!一つしか変わってなかったぜ
486:名無しさん@お腹いっぱい。
15/04/08 05:44:31.48 .net
cdが無駄です。
for i in *; do mv "$i"/photo "$i"/picture; done
ディレクトリ名等にスペースが含まれていてもいいように $i は "$i" としておく。
487:名無しさん@お腹いっぱい。
15/04/09 06:55:16.58 .net
サブシェルとすればいいだけじゃね?
488:名無しさん@お腹いっぱい。
15/04/09 08:37:12.98 .net
サブシェルが無駄です。
489:名無しさん@お腹いっぱい。
15/04/09 19:49:27.51 .net
効率求めてshellなんか使っていない。
490:名無しさん@お腹いっぱい。
15/04/09 22:21:14.40 .net
その返しは馬鹿っぽいと思います
491:名無しさん@お腹いっぱい。
15/04/09 23:52:38.50 .net
>>482
URLリンク(x68000.q-e-d.net)
util-linuxのrenameコマンドの場合
rename -v photo picture */photo
Debian系だと正規表現指定、できるかは不明
URLリンク(wiki.ubuntulinux.jp)
FreeBSDだとsysutils/renameで正規表現指定、できるかは不明
URLリンク(www.freshports.org)
492:名無しさん@お腹いっぱい。
15/04/15 08:31:50.31 .net
$> TIME="2015/04/15 08:25:16"
$> printf ${TIME:5:11}
04/15
$> echo ${TIME:5:11}
04/15 08:25
$> printf "${TIME:5:11}"
04/15 08:25
罠だ、はまった。。。
493:名無しさん@お腹いっぱい。
15/04/15 08:45:36.46 .net
何が罠なの?
シェル変数の展開時には " " でかこんで "${HOGE...}" にするのが基本。
494:名無しさん@お腹いっぱい。
15/04/15 08:48:00.87 .net
最初から、
date '+%m/%d %H:%M'
にした方がいいのでは?
495:名無しさん@お腹いっぱい。
15/04/15 08:48:10.66 .net
>>492
$ printf "${TIME:5:11}"
04/15 08:25
$ printf "%s %s\n" ${TIME:5:11}
04/15 08:25
496:名無しさん@お腹いっぱい。
15/04/15 09:13:38.03 uEYnIocSI
$ TIME="2015/04/15 08:25:16"
$ printf ${TIME:5:11}
04/15
$ /usr/bin/printf ${TIME:5:11}
04/15/usr/bin/printf: warning: ignoring excess arguments, starting with `08:25'
$ type printf
printf is a shell builtin
497:名無しさん@お腹いっぱい。
15/04/15 09:14:12.79 .net
$ TIME="2015/04/15 08:25:16"
$ printf ${TIME:5:11}
04/15
$ /usr/bin/printf ${TIME:5:11}
04/15/usr/bin/printf: warning: ignoring excess arguments, starting with `08:25'
$ type printf
printf is a shell builtin
498:名無しさん@お腹いっぱい。
15/04/15 13:25:09.88 .net
$ TIME="2015/04/15 13:30:16"
$ printf ${TIME:5:11}
04/15
$ IFS="wanada"
$ printf ${TIME:5:11}
04/15 13:30
499:名無しさん@お腹いっぱい。
15/04/15 13:48:45.04 .net
bash依存をやめよう
$ TIME="2015/04/15 08:25:16"
$ printf ${TIME:5:11}
sh: Bad substitution
$ IFS='/ :'
$ set $TIME
$ echo $2/$3 $4:$5
04/15 08:25
500:名無しさん@お腹いっぱい。
15/04/16 23:26:24.70 .net
GNU date
$ TIME="2015/04/15 08:25:16"
$ date '+%m/%d %H:%M' --date="${TIME}"
04/15 08:25
501:名無しさん@お腹いっぱい。
15/04/30 23:24:48.53 .net
今月のsoftware designはgrepsedawk入門で面白かったな
502:名無しさん@お腹いっぱい。
15/05/07 20:52:12.51 .net
シェルスクリプトを最近使うようになりffmpegなどにファイルを投げて一括処理できるようになりました。
でも、エラー処理に困っています。例えば、ffmpegで作ったファイルが壊れているかどうかわからないのです。
ffmpegはファイルとログを出してくれるのでログの特定の文字(たとえば、bad header、skip)が出てきたときに、
その時のログを書き出し、そのログを使って処理を分岐させることは可能なのでしょうか?
このときffmpegは終了コードは0を返してきました。プログラムによっては終了コード1を返してしてくるものもありました。
503:名無しさん@お腹いっぱい。
15/05/07 20:53:06.51 .net
grep君でうまく抽出したら正規表現で検索すればできるのでは?
504:名無しさん@お腹いっぱい。
15/05/07 21:54:28.34 .net
>>502
ffmpegは最後に 2>&1 を付ける
付ければログをgrepとかできる
505:名無しさん@お腹いっぱい。
15/05/08 20:35:13.72 .net
grepをどう使えばいいのですか?
506:名無しさん@お腹いっぱい。
15/05/08 22:13:16.56 .net
manくらい見た?
507:名無しさん@お腹いっぱい。
15/05/08 22:36:52.79 .net
うーんこの
man見てくれよせめて--helpとかググるとかしろよ
508:名無しさん@お腹いっぱい。
15/05/09 12:39:02.61 .net
こんな感じでエラー処理するんだよ
書き込みの内容見てる限りは無理だと思うけど
ffmpeg xxxx > xxxx.log 2>&1
cat xxxx.log | grep "bad header"
if [ $? -ne 0 ]
then
# エラー処理
fi
509:名無しさん@お腹いっぱい。
15/05/09 12:42:06.41 .net
catは無駄だな。
510:名無しさん@お腹いっぱい。
15/05/09 13:01:23.55 .net
if [ も無駄だな
511:名無しさん@お腹いっぱい。
15/05/09 13:11:39.85 .net
>>509
判定が1種類だと思ってるアホ発見
512:名無しさん@お腹いっぱい。
15/05/09 13:25:48.27 .net
>>511
二種類あるとどうなるわけ?w
513:名無しさん@お腹いっぱい。
15/05/09 13:26:22.67 .net
無駄だなw
514:名無しさん@お腹いっぱい。
15/05/09 13:32:28.84 .net
>>511
わかった、こいつ馬鹿だから、catがどう無駄なのかわかってないんだ。
なるほどなー、馬鹿だなーw
515:名無しさん@お腹いっぱい。
15/05/09 15:56:32.15 .net
ffmpeg xxxx > xxxx.log 2>&1
if ! grep "bad header" <xxxx.log
then
# エラー処理
fi
516:名無しさん@お腹いっぱい。
15/05/09 18:51:16.11 .net
if [ -n "$(grep 'bad header' xxxx.log)" ]; then
fi
517:名無しさん@お腹いっぱい。
15/05/09 20:08:36.31 .net
grep -qs "bad header" xxxx.log
case $? in 0) echo "Match";; 1) echo "No match";; *) echo "Error";; esac
518:名無しさん@お腹いっぱい。
15/05/11 21:15:37.13 .net
>>515
これだと判定のたびにログを全部読み直すから無駄無駄
519:名無しさん@お腹いっぱい。
15/05/11 22:56:21.16 .net
>>518
どう直せばいいと思う?
520:名無しさん@お腹いっぱい。
15/05/12 18:27:59.13 .net
bashで
for i in $@
do
command
echo ○○中××番目を処理中です。
done
としたいのですが、○○と××はどうすれば表示できるようになりますか?
521:名無しさん@お腹いっぱい。
15/05/12 19:54:49.92 .net
もう一つ聞きたいことがありました
for i in $@にカレントディレクトリだけじゃなく
そのサブディレクトリのファイルを送るにはどう書けばよいのですか?
522:名無しさん@お腹いっぱい。
15/05/12 19:59:27.57 .net
>>520
count=1
for i in $@
do
echo "$#中${count}番目を処理中です。"
command
count=$(($count + 1))
done
523:名無しさん@お腹いっぱい。
15/05/12 20:00:20.69 .net
コピペから脱却すればその答えはおのずと見つかるであろう
524:名無しさん@お腹いっぱい。
15/05/12 20:18:46.18 .net
わざわざ指摘させる流れですか?もうひとつは残しておいた
in $@ は無駄だな
525:名無しさん@お腹いっぱい。
15/05/13 06:35:40.84 .net
$count の $ は無駄だな。
count=$(($count + 1)) の行自体も無駄とは言わないけどbashなら不要だな。
echo "$#中$(( count++ ))番目を処理中です。"
526:名無しさん@お腹いっぱい。
15/05/13 07:02:23.50 .net
>>525
可読性・保守性が悪いから却下
527:名無しさん@お腹いっぱい。
15/05/13 07:23:59.83 .net
for ((i=1;i<=$#;i++)); do echo "${#}中${i}番目を処理中"; done
528:名無しさん@お腹いっぱい。
15/05/13 07:39:14.30 .net
>>527
それだと肝心の $@ の処理ができないじゃん、本末転倒。
529:名無しさん@お腹いっぱい。
15/05/13 08:39:25.96 .net
$@ をどう処理したいの? 例えばこんな感じ?
for ((i=1;i<=$#;i++)); do eval item=\${$i};echo "${#}中${i}番目($item)を処理中"; done
530:名無しさん@お腹いっぱい。
15/05/13 13:58:41.25 .net
curlでメールチェックできないかと思ったんだけど、どうも参考コードが見当たらないなあ。
もしかしてtelnetのような感じの方法になってスマートには無理なのだろうか?
531:名無しさん@お腹いっぱい。
15/05/13 17:11:23.00 .net
こういうことではなくて?
URLリンク(blog.sarabande.jp)
532:名無しさん@お腹いっぱい。
15/05/13 17:26:02.42 .net
送信と受信の違いがわからない男おことわりw
533:名無しさん@お腹いっぱい。
15/05/13 17:49:35.48 .net
ああなるほど、送信がわかれば受信もできるのがわかるから
調べればいいのにと思ったのに
実装されてるコードそのものが欲しかったのね
キミのレベルに合わせられなくてごめんね
534:名無しさん@お腹いっぱい。
15/05/13 17:52:16.16 .net
マニュアル見れば受信できることなんて一目瞭然だよ
535:名無しさん@お腹いっぱい。
15/05/13 19:45:16.01 .net
カウントありがとうございます
サブディレクトリのほうは無理のでしょうか?
536:名無しさん@お腹いっぱい。
15/05/14 01:27:00.37 .net
>>535
$ hogehoge.sh * カレントディレクトリのファイルだけ
$ hogehoge.sh $(find) カレントとサブディレクトリ全部
537:名無しさん@お腹いっぱい。
15/05/14 02:06:32.75 .net
>>534
できないなんて話は最初からどこにもないしなあ。
送信と受信の違いというかプロトコル自体が違うんだから参考になるかどうか。
538:名無しさん@お腹いっぱい。
15/05/14 05:00:09.66 .net
マニュアルにPOP3の記載とかあると思うんだが
脳内で>>531=>>534って妄想でもしたか?
539:名無しさん@お腹いっぱい。
15/05/14 06:30:49.15 .net
>>535
IFS=$'\n'
set -- $( find . -type f )
count=0
for i
もしくは、
IFS=$'\n'
fileList="$( find . -type f )"
fileLength=$( echo "$fileList" | wc -l )
count=0
for i in ${fileList}
ところで、v="$( )" のダブルクォートって無駄かな?
540:名無しさん@お腹いっぱい。
15/05/14 07:13:26.75 .net
v= のように直接代入する場合はダブルクォートは無駄。
それより、findでスペース入りファイル名が見つかった場合とかの対応ができてない。
541:名無しさん@お腹いっぱい。
15/05/14 07:25:46.50 .net
findで苦労してスペース入りファイル名の対処するより、
for f in * */* */*/* */*/*/*
って書いちゃった方が早いんだよな。どうせ階層は何段階か有限だし、
アスタリスクならスペース入りでも無問題。
542:名無しさん@お腹いっぱい。
15/05/14 07:27:50.46 .net
> findでスペース入りファイル名が見つかった場合とかの対応
IFS=$'\n'
543:名無しさん@お腹いっぱい。
15/05/14 07:35:52.80 .net
findで改行入りファイル名が見つかった場合とかの対応ができてない
544:名無しさん@お腹いっぱい。
15/05/14 07:44:29.36 .net
> 改行入りファイル名が
それは
IFS=$'\n'
と書いてある時点で、自明じゃない?
指摘自体が無駄だな
545:名無しさん@お腹いっぱい。
15/05/14 07:46:27.90 .net
自明ならバグを作り込んでもいいのかよw 結局使いものにならない
546:名無しさん@お腹いっぱい。
15/05/14 07:49:42.88 .net
シェルなどのコマンドラインの入力に再利用可能な方法でちゃんとエスケープしてファイル名出力できるようなオプションが
findに欲しいな。(スペースも改行もその他記号もちゃんとクォートして、シェルで評価すると元のファイル名に戻る形式)
(-print0 は xargs 用にしか使えないし)
547:名無しさん@お腹いっぱい。
15/05/14 08:06:46.69 .net
やるならこんな感じかな。
$ find . -print0 | while read -r -d $'\0' f; do echo $f; done
それから bash の組み込み関数 printf にある %q が使えるかも
bash$ help printf
:
%q quote the argument in a way that can be reused as shell input
548:名無しさん@お腹いっぱい。
15/05/14 09:04:56.24 .net
while read -rd ''
549:名無しさん@お腹いっぱい。
15/05/14 09:46:33.11 .net
>>538
なぜそういう話になるのかよくわからんが、記載があるならぐだぐだ言うよりコピペで一発なんじゃないか?
550:名無しさん@お腹いっぱい。
15/05/14 10:26:05.55 .net
誰も相手してないのになぜその質問に触れるかなあ・・・
551:名無しさん@お腹いっぱい。
15/05/14 10:28:14.98 .net
read -rd '' とかはbash依存なんだよなぁ。。
read: 1: Illegal option -d
552:名無しさん@お腹いっぱい。
15/05/14 10:36:47.40 .net
>>550
どの質問の話?
553:名無しさん@お腹いっぱい。
15/05/14 11:21:47.00 .net
コマンド置換とシェル関数の違いがピンとこないのですけど
どう違うのでしょか?
554:名無しさん@お腹いっぱい。
15/05/14 11:31:29.33 .net
記載がある筈 なんてはっきりしない話は要らないんだよなあ。
このスレのネタなんて大抵記載がある筈だから。
555:名無しさん@お腹いっぱい。
15/05/14 12:13:05.97 .net
どう勘違いしたらコマンド置換とシェル関数が同じようなものに思えるんだ??
556:名無しさん@お腹いっぱい。
15/05/14 12:15:56.28 .net
>>553
使う分には
・コマンド置換は再利用ができない
・シェル関数は再利用ができる
の違いがある
557:名無しさん@お腹いっぱい。
15/05/14 12:19:07.87 .net
それこそ置き換えの効かない例でも出せば理解するだろ。
558:名無しさん@お腹いっぱい。
15/05/14 12:21:29.00 .net
ll(){ ls -l;}
ll
ってのがシェル関数。
hoge=`ls`
echo "$hoge"
ってのがコマンド置換。
どこも似てない。
559:名無しさん@お腹いっぱい。
15/05/14 12:25:28.02 .net
どう勘違いしたら言語的文法的に似てるかという話に思えるんだ?
560:名無しさん@お腹いっぱい。
15/05/14 12:45:56.98 .net
むしろ似てると思うのは何か根本的な勘違いが原因
561:名無しさん@お腹いっぱい。
15/05/14 13:19:51.91 .net
コマンド置換をaliasと勘違いしてるとか?
562:名無しさん@お腹いっぱい。
15/05/14 13:27:28.77 .net
>>551
今回はbash限定でいい話しだよ。まあ、無駄じゃあないけど
>>520
> bashで
> bashで
> bashで
563:名無しさん@お腹いっぱい。
15/05/14 14:08:51.71 .net
違いを聞くのは別に似てるからじゃないと思うぞ。
単にとある使い方では等価に思えたってだけだろう。
重箱の隅が知りたいみたいな話だな。
564:名無しさん@お腹いっぱい。
15/05/14 14:28:51.82 .net
どう勘違いしたらコマンド置換とシェル関数が等価に思えるような使い方があるんだ??
565:名無しさん@お腹いっぱい。
15/05/14 14:47:51.26 .net
ageてる人が等価に思えるような話だろう。
566:名無しさん@お腹いっぱい。
15/05/14 18:12:58.96 .net
おっしゃる通り、使い方が同じに見えたので
どんな使い分けをしたらいいのだろうと思っていました
567:名無しさん@お腹いっぱい。
15/05/14 19:43:10.96 .net
>>563
いや、その気持ちが分かるなら答えてやれよ。
さっぱり分からん人間には答えようがないんだから。
568:名無しさん@お腹いっぱい。
15/05/14 20:08:14.55 .net
使い分けとか考えなくていいんじゃないの?
期待通りの動作をしない場合がないのかだけ考えれば。
569:名無しさん@お腹いっぱい。
15/05/14 20:38:06.69 .net
>>567
わからなきゃ聞くしかなかろ。
気持ちの想像すらできなければ回答役なんて荷が重いから
黙って見守るべきだと思う。
570:名無しさん@お腹いっぱい。
15/05/14 20:54:02.91 .net
>>569
は?だからお前が適任だろ?って話をしてるんだが?
さてはお前どえらい馬鹿だな?
571:名無しさん@お腹いっぱい。
15/05/14 21:13:48.75 .net
聞こうとしている時にそんな暴言を言うから
気持ちの想像すらできないなんて言われるんですよ。
572:名無しさん@お腹いっぱい。
15/05/14 21:20:34.11 .net
>>571
なんか壮大な勘違いをしてるようだから言っとくけど
お前かなり性格悪そうに見えてるぞ
573:名無しさん@お腹いっぱい。
15/05/14 21:25:29.94 .net
>>568以外になにか言う事でもあるの?
574:名無しさん@お腹いっぱい。
15/05/15 06:21:18.71 .net
echo $(a=A;echo $a)
echo $a
b () {a=A;echo $a;}
b
echo $a
unset a
(a=A)
echo $a
a=A
echo $a
unset a
# 以下zsh。
() {typeset a=A;}
echo $a
() {a=A;}
echo $a
575:名無しさん@お腹いっぱい。
15/05/15 07:08:32.05 .net
色々言ってたけど結局メールチェックは誰も試してないの?
576:名無しさん@お腹いっぱい。
15/05/15 08:03:24.42 .net
curlでやってるよ
IMAPもPOP3も普通に使える
577:名無しさん@お腹いっぱい。
15/05/15 08:50:33.60 .net
./test.sh: 行 5: 予期しないトークン `{a=A' 周辺に構文エラーがあります
b () (a=A;echo $a)
578:名無しさん@お腹いっぱい。
15/05/15 11:06:13.53 .net
ここ見てると昔書いたスクリプトについて
あのコマンドはああするべきだったとか思うことはあるけど
曲がりなりにも期待した動作はしてたから問題ないと思い直した
579:名無しさん@お腹いっぱい。
15/05/15 13:23:55.72 .net
>>577
そう。そこに違いがある事が言いたかった。
580:隼人新聞社
15/05/15 17:26:05.10 .net
★サヨクを応援して1票入れた人は強く反省してください
★民主 枝 野 は殺人を平気で行う極左テロ暴力団と親密交際があった!!!親密交際!テロの手先!北朝鮮の手先(安倍総理の談話)
★ 菅 直 人 は朝鮮人と親密交際、献金があった!!朝鮮韓国の傀儡手先(TVで報道!)
★民主は日教組の巣窟。極めて危険な団体、危険な政権だった!北朝鮮を熱烈に支援するのが日教組(信頼できる情報スジの話)!!北朝鮮の手先!
民主の基本姿勢は死刑廃止!!だから自民の安倍総理を支援してください!
サヨクと公明創価を応援するは地獄行き
サヨクを応援して1票入れた人は反省してください
581:名無しさん@お腹いっぱい。
15/05/16 18:18:52.70 .net
キー入力を受け付けを待って止まっているコマンドを
何らかの方法で次のコマンドに行かせる方法はありますか?
582:名無しさん@お腹いっぱい。
15/05/16 18:38:27.01 .net
zshだとzpty
tclだとexpect
ただ単純な事なら
command<<EOF
y
y
n
EOF
とかこんなんで処理できるよ。
583:名無しさん@お腹いっぱい。
15/05/16 18:41:48.45 .net
マウスつかってどうのこうのの話なら、xdotoolとかいうのが使えそう。
plamolinuxのこじま氏の2015/1/8の日記に少し使い方が書いてある。
584:名無しさん@お腹いっぱい。
15/05/17 09:38:15.41 .net
>>582, >>583
ありがとう
早速、調べてみます
今までできないものと思って諦めていたから感動
585:名無しさん@お腹いっぱい。
15/05/17 18:06:01.98 .net
freebsdのスレッドの人なのかなと思ったので以下でできたよ。詳しい事は知らない。
最近はbashのほうが強力なのかもしれないし、おそらく似た機能はあると思う。
ただexpectが定番だと思う。ただ構文はtclだけど、
たぶん他のshellを使うのって嫌な部分があるだろうし。
# まず以下のpasswordの部分を書いて、試して、感じる。
expect -c '
spawn su
expect Password:
send "your password\r"
interact
'
# passwordとpromptの指定の部分を書換える必要があると思う。
expect -c '
spawn su ;# expectで制御できるようにsuを起動する。
expect Password: ;# promptにPassword:が来るまで待機。
send "your password\r" ;# 来たら引数で指定されたpasswordを入力する。
expect -re {(%|#|\\$) $} ;# Password:が来るまで待機になってたものを、
;# promptの入力受け付け画面に変える。
;# -reは正規表現。ここはmanpageそのまま写しました。
;# 各々によって変える必要があるでしょう。
send "whoami\r"
send "exit\r"
expect eof
'