シェルスクリプト総合 その30

■ このスレッドは過去ログ倉庫に格納されています
2019/07/01(月) 23:04:27.02ID:/rKj5XUf
シェルスクリプトに関する総合スレッドです。

全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。

前スレ:
シェルスクリプト総合 その29
https://mevius.5ch.net/test/read.cgi/tech/1537540487/
2019/08/02(金) 03:02:36.73ID:O3iYpUQI
ああ、そんな風 = 返り値が勝手に暗黙的に変わる変わらないってことかな?
だったらほぼ同意
2019/08/02(金) 03:40:21.45ID:hQ+yEyXN
>>453
あー。例えばあるコマンドで「ファイルが無い」ことを示すのに
exit 32が返ってくるとして
それに応じた最適なエラー処理をするってことかな?
2019/08/02(金) 03:54:22.19ID:O3iYpUQI
まあ元レスの人がどういう使い方をしたいのかわからんけど、そういう感じ
2019/08/02(金) 07:48:45.01ID:hQ+yEyXN
bcコマンドで階乗計算をしたくてコードを書いてるんだけど↓
n = 2
define f(n) {
f = 1
if (n == 0) { return(f) } /* 0! := 1 */
f = n * f(n - 1)
return(f)
}
"0! = "; f(0)
"1! = "; f(1)
"2! = "; f(2)
"5! = "; f(5)
多分これでいい筈なんだけどreturn式を二度使ってるのがダサく感じる…
もうちょっと賢い方法知らない?
2019/08/02(金) 07:49:38.54ID:hQ+yEyXN
ごめん一行目のn=2は無視って。
2019/08/02(金) 08:02:59.58ID:XJV5qmce
define f(n) {
if (n == 0) {
f = 1
} else {
f = n * f(n - 1)
}
return(f)
}

とか( n < 0 の場合、無限ループになるけど)
2019/08/02(金) 08:15:06.73ID:hQ+yEyXN
>>459
ありがとう。
でもelseって使えなくない? GNU bcだと使えるのかな?
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/bc.html
2019/08/02(金) 08:42:59.37ID:dUmy9lW0
elseはGNU拡張
else使えないならこうするしかない

define f(n) {
if (n == 0) { f = 1 }
if (n != 0) { f = n * f(n - 1) }
return(f)
}
462デフォルトの名無しさん
垢版 |
2019/08/02(金) 09:23:07.90ID:7tJhBDcy
>>438
それ喩える意味あるぅ?
情報量低すぎるどころか混乱を招いて逆効果だわ。
「グーはチョキに勝つ。そう、斧が槍に強いように」とか言われてる気分。
2019/08/02(金) 11:27:07.42ID:hQ+yEyXN
世の中には例え話を持ち出さないと気が済まない人が一定数存在する。
464デフォルトの名無しさん
垢版 |
2019/08/02(金) 12:50:24.63ID:vUPSv33I
>>462
知らんけど昔の人が思い付いていいと思ったから書いたんだろう。
2019/08/02(金) 12:51:11.15ID:hQ+yEyXN
>>190 WindowsにJavaが入るかもって話あったの?そもそもそんな話すらなくね?
2019/08/02(金) 13:50:46.03ID:pa9nweBb
>>465
昔あったっしょ
Microsoft J++だったっけ?
JDirectとか言うCOMかActiveXコントロールかを直接呼び出せる機能拡張付きで、
それにSunがケチを付けて(確か)裁判沙汰になって、結局廃止になったやつ
TCKにも通らないだろうからJavaは名乗れないはずだけど
467デフォルトの名無しさん
垢版 |
2019/08/02(金) 13:54:51.56ID:xsQQm7uF
>>465
90年代後半にだな・・・
2019/08/02(金) 13:57:46.29ID:XJV5qmce
「マイクロソフトが Java に塩を混ぜた!」ってやつか
2019/08/02(金) 20:32:46.34ID:hQ+yEyXN
sedかなにかで↓
<td>
AAAA
</td>
<td>
BBBB
</td>
↑っていうデータのBBBを取り出したい。

残念なことにtdにIDやらなにやらが賦与されてないから手段としては
「1番目に表われた/<td>/<\/td>/は無視って2番目の/<td>/<\/td>/の中身を表示する」
っていうのになると思う。しかし方法が思い付かない……。
できればsed, awkあたりで処理できればいいなと思ってるんだけど,どなたか力を貸してほしい。

上のデータだけど,「実際はもっと複雑でtableが入れ子になってる」とかそういうことはないです。
2019/08/02(金) 20:38:11.21ID:cEuue6ob
なら5行目を取り出せばいいじゃん
2019/08/02(金) 20:40:10.25ID:2UnKye9C
/^<td>$/{n;/BBB/p}
2019/08/02(金) 20:44:47.38ID:O3iYpUQI
今までのレスからはそんな質問するはずがないとしか思えないんだけどw
<td>AAA
</td>
<td>
BBB</td>
なんぞリターンがあってもなくてもいいというhtml/xmlらしく、行がちゃんとしているわけではないとか?
2019/08/02(金) 21:06:45.26ID:dUmy9lW0
>>469
俺ならシェルスクリプト使わずにHTMLパーサに食わせるな
nodejsでcheerio使うとか楽な方法を選ぶね
2019/08/02(金) 21:06:52.97ID:XJV5qmce
GNU sed の -z オプションを使って

$ sed -rz 's:.*</td>\n?<td>\n?(.*)</td>.*:\1:' data.html
2019/08/02(金) 21:07:39.38ID:hQ+yEyXN
>>472
そうです。相手はHTMLなんで改行されてない場合が普通にあるんです……。
つくづくUnixツールとマークアップ言語は相性悪いなぁと思いますw
2019/08/02(金) 21:30:15.54ID:XJV5qmce
GNU grep ならこんな感じ

$ grep -Pzo '<td>\n?\K(.|\n)*?(?=\n?</td>)' x.xml | tr '\0' '\n' | sed -n 2p
2019/08/02(金) 21:35:20.07ID:hQ+yEyXN
>>476
すげぇ!
ありがとうございます!とりあえず脳死状態でコピペさせていただきます。
正規表現の勉強しないとなぁ……。
2019/08/02(金) 21:38:37.66ID:cEuue6ob
正直、CLIツール使って一発でやってしまおう!
なんて考えるから難しくなるんだよ。
一行一データになってないものは、
シェルスクリプトでやったほうが楽

#!/bin/sh
a=$(cat html.txt)
a=${a#*<td>}
a=${a#*<td>}
a=${a%%</td>*}
echo "$a"
2019/08/02(金) 21:38:54.44ID:+p+nzQa3
>>475
>を>\nにして\n\nを\nにすればいいだけじゃないの?
480デフォルトの名無しさん
垢版 |
2019/08/02(金) 21:59:02.93ID:T1FFAKuC
xmllint使えは禁句なの?
2019/08/02(金) 22:00:05.58ID:G/LyK8vk
Ruby なら、すべての改行を削除してから、最短マッチ

str = <<"EOT"
<td>
AAAA
</td>
<td>
BBBB
</td>
EOT

str.delete!( "\n" ) # すべての改行を削除する

re = /<td>(.*?)<\/td>/ # ? は最短マッチ

p results = str.scan( re ).flatten
# ["AAAA", "BBBB"]

p results[ 1 ]
# "BBBB"
2019/08/02(金) 22:47:11.19ID:hQ+yEyXN
>>480
残念ながらそのHTMLは整形形式じゃないのでマトモに解析できないんです。
483481
垢版 |
2019/08/02(金) 23:15:30.78ID:G/LyK8vk
Ruby で、nokogiri パーサーなら、

require 'nokogiri'

doc = Nokogiri::HTML( <<EOT.delete( "\n" ) ) # すべての改行を削除する
<td>
AAAA
</td>
<td>
BBBB
</td>
EOT


elements = doc.css( "td" )
p elements.first.content #=> "AAAA"
p elements[ 1 ].content #=> "BBBB"
2019/08/02(金) 23:29:54.36ID:pa9nweBb
>>476
\Kじゃなくて(?<=..._)で書いたほうが読みやすくね?とか思ったけど
PerlやPCREじゃlookbehindに可変長になるパターンは指定できないのか
JavaScriptだと通るんだよね....
2019/08/02(金) 23:34:34.72ID:cEuue6ob
Ruby遅すぎるんだよ

$ time ruby html.rb
"AAAA"
"BBBB"

real 0m0.079s
user 0m0.079s
sys 0m0.000s



$ time sh html.sh

BBBB

real 0m0.002s
user 0m0.002s
sys 0m0.000s
2019/08/02(金) 23:36:49.26ID:cEuue6ob
これも遅いな。やっぱりシェルスクリプトが一番か

$ time grep -Pzo '<td>\n?\K(.|\n)*?(?=\n?</td>)' x.xml | tr '\0' '\n' | sed -n 2p
BBBB

real 0m0.003s
user 0m0.004s
sys 0m0.003s
2019/08/02(金) 23:38:32.60ID:cEuue6ob
こうしたらさらに速くなったわw
シェルスクリプト最強伝説

#!/bin/sh
a="
<td>
AAAA
</td>
<td>
BBBB
</td>
"

a=${a#*<td>}
a=${a#*<td>}
a=${a%%</td>*}
echo "$a"

$ time sh html.sh

BBBB


real 0m0.001s
user 0m0.001s
sys 0m0.000s
2019/08/02(金) 23:46:41.69ID:dUmy9lW0
>>487
スクレイピングする時にそんなコード毎回書くわけ?
2019/08/02(金) 23:58:58.92ID:2UnKye9C
a#*
a%% あたりがシェルスクリプト独自の難読パーツだが
覚えたら高速なのか...
2019/08/03(土) 00:25:50.69ID:i7fqO3Sj
>>489
どっかの書籍(確かオライリー)に
数字を考えて#は数字の前に,%は数字の後に付ける。
という連想から
#及び##は前から削る,%及び%%は後から削ると覚えるといいと書いてあった。
2019/08/03(土) 00:33:21.53ID:dYT3TwZL
自分は
キーボードの左側: # -> prefix
キーボードの右側: % -> suffix
で、削るんだっったっけ?残すんだったっけ?
結局毎回調べるという体たらく
2019/08/03(土) 00:40:18.71ID:9AEx1UEu
>>490
thanks
493デフォルトの名無しさん
垢版 |
2019/08/03(土) 00:57:31.70ID:37D8ZUar
>>482
ブラウザでF12キーでコンソール開いて、
var q = (xml, query) => new DOMParser().parseFromString(`<xml>${xml}</xml>`, 'application/xml').querySelector(query).innerHTML.trim();

var text = q(`
<td>
AAAA
</td>
<td>
BBBB
</td>
`, 'td:nth-of-type(2)');
console.log(text); //=> BBBB

xmlとしてのパースだから、
q(`<chinko>AAAA</chinko><chinko>BBBB</chinko>`, 'chinko:nth-of-type(2)');
とかでも大丈夫。

一方htmlとしてもパースできるけど少なくともtableタグは補わなきゃならんね↓
var q = (html, query) => new DOMParser().parseFromString(html, 'text/html').querySelector(query).innerHTML.trim();

var text = q(`
<table>
<td>
AAAA
</td>
<td>
BBBB
</td>
</table>
`, 'td:nth-of-type(2)');
console.log(text); //=> BBBB
2019/08/03(土) 03:42:42.10ID:eOXqQaf9
>>490
> 数字を考えて#は数字の前に,
あー、ナンバーサインか

俺は、コメントだから頭につけるって覚えてたわ
%は同じく100%の%で後ろって覚えてたけど
2019/08/03(土) 04:43:13.91ID:i7fqO3Sj
>>494
俺含め日本人には#42みたいなのは馴染み薄いよね…
まあ「全く知らない概念」ではなかったから
とりあえず#は前,%は後,というように覚えられたけど。
コメントっていうのはいい案だと思う。
シェルスクリプトを書いている全員が把握できる概念だから。
2019/08/03(土) 05:33:16.75ID:20yQPXqo
ナンバナィン?

#はスーパーユーザで%はcshだな
2019/08/03(土) 06:07:39.94ID:l2kKbyZy
シェルスクリプトの#と%はなんとなく使えてるが正規表現の前後読みは未だに無理ポ
2019/08/03(土) 06:23:53.55ID:i7fqO3Sj
正規表現の割と新しめの拡張は
既存のメタ文字と被らないようになってるから類推しにくい記号になってしまってる場合が多い。
…まあ出典とかなくて俺の予想だけどw

最近だと「名前空間」的な概念が登場して\p{Kata}みたいな書き方が増えてきて助かる。
覚えるの簡単!
2019/08/03(土) 08:10:24.89ID:GWDLl7Iz
なんのこっちゃと思ったら.NETか
[:Katakana:]でいいんじゃないか。すでにあるからわかりやすいし
思惑でそうしてないんだろうけど
2019/08/03(土) 09:10:18.89ID:i7fqO3Sj
>>499
いや\p{Kata}っていう正規表現が使えるのはかなり広範な言語よ
少くともICUバインディングがあれば使える筈。
2019/08/03(土) 09:11:02.22ID:i7fqO3Sj
逆に.NETでUnicodeロケールの正規表現が使えるとは思いもよらなんだ
2019/08/03(土) 09:42:41.49ID:9AEx1UEu
...| perl -pe 's{" [^"]+ "}{ $& =~ s/ /-/gr }xeg'|...
awk でもできるかもしれないけどこの正規表現が便利
"text with blank space" の中だけ空白を-で詰め物するのに使っている

空白があると正常に動作しないコードの前パイプに挟む
2019/08/03(土) 10:30:59.00ID:i7fqO3Sj
>>502
なんかコマンドの引数の仕様とかを利用して
POSIXの範囲で実装できそう。
もちろんperlで十分だけど。

abc def "text with blacket" dee
に対して
abc def "text-with-blacket" dee
ってい出力を返す訳だから
for str in abc def "text-with-blacket" dee; do
printf '%s\n' "$str" | tr ' ' '-'
done | tr '\n' ' '
とか?
あ,駄目だこれだと"が戻ってこねーw
2019/08/03(土) 11:33:18.72ID:63RDVzrz
無理やり

echo 'abc def "text with blcket" dee' |
sed -E 's:^(.*)"([^"]*)"(.*)$:printf "%s\\"%s\\"%s\n" "\1" $(echo "\2"|tr " " "-") "\3":e'
2019/08/03(土) 11:35:32.45ID:l2kKbyZy
$ echo やまだヤマダ山田 | grep -oP "\p{Katakana}"




-o使うと改行されるのね
2019/08/03(土) 12:22:48.42ID:63RDVzrz
スペース区切りでよければ

$ echo やまだヤマダ山田 | grep -oP "\p{Katakana}" | xargs
ヤ マ ダ
2019/08/03(土) 13:09:38.57ID:H1MpioV8
>>485
何百ページもパースするの?
Ruby でも十分早いと思うけどなあ
2019/08/03(土) 13:55:12.22ID:dYT3TwZL
40秒で支度しな
509デフォルトの名無しさん
垢版 |
2019/08/04(日) 17:11:27.60ID:d0z5l48N
俺だったらperl使って全部読んで長い一行として扱って抜き出すか、または XML::Simple モジュール使って変数に展開してから取り出すかするかな。

つまり、シェルスクリプトは使わない。やってやれないことはないと思うが複雑怪奇なものになりそうなので。
510デフォルトの名無しさん
垢版 |
2019/08/04(日) 17:12:43.83ID:d0z5l48N
あ、リロード忘れて書いたら山盛りで他の書き込みが・・・

俺の書いたことは忘れてくれ。
511デフォルトの名無しさん
垢版 |
2019/08/04(日) 17:13:02.34ID:arZQ1GVT
【小沢が育てた刺客】 山本太郎「政権を仕留める」
http://lavender.5ch.net/test/read.cgi/giin/1564896780/l50
512デフォルトの名無しさん
垢版 |
2019/08/04(日) 18:10:11.11ID:d0z5l48N
丸くても刺客
2019/08/04(日) 18:11:50.20ID:M00OQnGm
40秒で刺客しな
514デフォルトの名無しさん
垢版 |
2019/08/04(日) 18:22:43.73ID:OC9PgLo7
PythonのBeautifulSoupだと、パーサーにCで書かれたlxmlを選べるようになってるんだが、
そういうの使えば、シェルの方が断然速いとはならないんじゃないかな?
PerlとかRubyにも似たようなのはあるでしょ。
2019/08/04(日) 18:40:40.05ID:zjBZp1dd
ディレクトリに、test01 〜 test99 ファイルがある時に、
test100, test101 と、ファイルを増やしていくと、

表示順が、test20, test21 などよりも、
test100, test101 の方が、先に来るようになった

これらを数字順で表示するには、どういうフィルターを作れば良いでしょう?

まあ、すべてのファイル名を、test001 など、3桁表示に変えれば、解決するけど
2019/08/04(日) 19:18:29.22ID:ApCAdEzq
>>515
プレフィクスが一緒なら
そのプレフィクスと0パディングを切り取ってsortに掛ければいいんじゃないかな。
で並び換えたものにプレフィクスと%0dを追加する。

ファイル名じゃなくてすまんが↓こんな感じ?
$ <<. sed 's/test0*//1' | sort -n | while read line; do printf 'test%02d\n' $line; done
test99
test100
test21
test01
test20
test101
.
517516
垢版 |
2019/08/04(日) 19:38:16.75ID:ApCAdEzq
改良。あとsort -nって0埋め関係ないんだな。
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sort.html#tag_20_119_04

ls -1 test* | sed 's/^test//' | sort -n | xargs -I @ printf 'test%02d\n' @
2019/08/04(日) 19:45:40.73ID:ZVJM9ExE
>>515
GNUのsortなら-Vオプションがあるけど...
ls | sort -V
あるいはtest[0-9]*のファイルだけなら
ls | sort -t t -k 3n
とか(汚いけど)
2019/08/04(日) 20:01:45.96ID:hlZDnb3L
>>515
ls -v
2019/08/04(日) 20:02:42.33ID:/i7K4ZYC
>>515
GNU coreutils の ls コマンドなら -v オプションで version sort してくれる

$ ls -v test*
$ man ls

-v natural sort of (version) numbers within text
2019/08/04(日) 20:05:19.04ID:KSih4AJE
となるとMacは切り捨てだな
2019/08/04(日) 20:06:51.77ID:ZVJM9ExE
おお、lsにも-vオプションあったっけ
523515
垢版 |
2019/08/04(日) 21:06:16.73ID:zjBZp1dd
>>518
GNUのsort、-V オプション
ls | sort -V

これは便利!
2019/08/04(日) 21:11:25.12ID:WhAPGaK9
sort --help には
-V, --version-sort 自然な (バージョン) 数字順でソートする

って書いてあるけどさ、これセマンティクスバージョニングでの
比較にちゃんとなってるの?正確な仕様がわからん
2019/08/04(日) 21:14:26.03ID:ApCAdEzq
なんにせよ可搬性ないからあまり使わんほうがいい
526デフォルトの名無しさん
垢版 |
2019/08/04(日) 23:41:22.05ID:fspxWXLG
シェルスクリプトに可搬性期待するなって結論出たろ
2019/08/05(月) 00:49:19.74ID:uR0Am4u5
bashごと持って行けばいいんじゃね?
他のインタプリタ系の言語ってみんなそうしてるっしょ?
2019/08/05(月) 00:58:52.07ID:lQJxfKJu
>>526
馬鹿だなぁ。sortはシェルスクリプトじゃないよ。
sortコマンドだよ。可搬性がないのはsortコマンドだよ。
シェルスクリプトで実装すれば可搬性があるよ
2019/08/05(月) 01:59:22.26ID:053u+cPb
sortは-hもよく使うな
du -hc * | sort -hみたいに
2019/08/05(月) 02:53:17.73ID:IFzEkeeB
>>527
sortコマンドはBash組込みコマンドじゃないから関係ないんじゃ…
2019/08/05(月) 04:07:47.17ID:RegSSUKZ
busyboxをスクリプトに同梱して、
全部これに解釈させればいいじゃん
ashに加えて、よく使うコマンドも一緒についてくる
2019/08/05(月) 04:23:15.10ID:IFzEkeeB
いいじゃんと言われても…いいね。としか答えようがないw
2019/08/05(月) 06:43:25.45ID:IFzEkeeB
exitコマンドってexit $?とやってやらなくても前に実行したコマンドの終了コードを見てくれるんだな。
ずっとexit $?ってやってたわw
2019/08/05(月) 07:20:51.08ID:O6CFE/yb
if $? でやるより
&& || で分岐したほうが らしい 感じにならないか?
2019/08/05(月) 08:03:05.75ID:IFzEkeeB
>>534
ああいや。
埋め込みシェルスクリプト(←なんて呼べばいいのか知らんけど
実行形式のファイルで冒頭に書かれてることがある
そのファイル自身を伸長するシェルスクリプトのこと)
で使ってたのよ。
#!/bin/sh

< "$0" sed -n '5,$p' | unar -
exit $?
こっからZIP
↑みたいに。
2019/08/05(月) 11:46:23.87ID:MNXFY7cg
tputの存在理由はわかるが
現実的な問題として、どういう場合にtput使ってよかったって思える?
もうエスケープシーケンス決め打ちでよくね?
2019/08/05(月) 12:52:22.28ID:IFzEkeeB
clearコマンドがPOSIXで定められていないのをいいことに実装されていない環境がある。
そのときにtput clear。
2019/08/05(月) 13:19:56.72ID:MNXFY7cg
> 実装されていない環境がある。

「現実的な問題」っていうのはその実装されてない環境なんて、
今どきあるの?って話なんだよ。
2019/08/05(月) 13:23:05.75ID:MNXFY7cg
clearが実装されてない環境より
tputが実装されてない環境のほうが多くて、
tputを使うと逆に動かない環境の方が多くなっちゃう
例えばbusyboxとかalpine linuxとか
2019/08/05(月) 13:31:42.54ID:O6CFE/yb
which clear >/dev/null 2>&1 && echo has || echo 404
両対応書いておけばいい
2019/08/05(月) 14:26:42.83ID:MNXFY7cg
/usr/share/terminfoの中を見てみたが、
シンボリックリンクを抜かして1700ものファイルがあった。

なるほどこれは大変だ。だがその中でどれだけのものが使われているのだろうか?
またどれだけ違いがあるのだろうか?ほとんどは細かい(殆ど使われない)
機能の違いでしか無いのではないか?

大抵は色を変えるぐらいしか使わないだろうし、
それ以上使っても画面サイズとカーソル移動ぐらいだろう。
数パターンしか違わないのであれば、独自対応も可能だろう。

実用レベルで考えるとtputを使うことは、使わないよりもデメリットが大きい気がしている。
2019/08/05(月) 14:33:25.56ID:IMjI9HmJ
vt100, xterm 以外設定した覚えがないな
2019/08/05(月) 14:47:57.15ID:MNXFY7cg
おそらく端末名の後ろは細かいバリエーションだろうからと削ってみたら789種類にまで減った
それでも数が多すぎるかつこんなの誰も使ってないやろと思ってしまって
何が違うのか把握する気が起きないレベル

でもinfocmpとか便利だな。よし俺の中で方針が決まった。
もしこれらの端末に対応しなければいけない自体になったら、
プログラムで直接tputを使用するのではなく、tputと同じ引き数で関数を実行しますから、
それで出力するエスケープシーケンスは設定ファイルで書き換えられるって方式にしよう。

さしあたって、現状、色を変えるだけしかやっとらんのだがtput使う必要あるのかな?
2019/08/05(月) 14:55:51.10ID:uR0Am4u5
なんであるものを使わないんだろう
二段階認証おじさんみたいな頭の構造なんだろうか
2019/08/05(月) 15:27:49.43ID:MNXFY7cg
> なんであるものを使わないんだろう
書いたでしょ? tputコマンドがない環境が現実としてある。
2019/08/05(月) 15:54:00.38ID:MNXFY7cg
簡単なスクリプトを書いて、とりあえずcolsについて
データベースに登録されてる1700端末をすべて調べてみたが
すべてが 0x31 0x33 0x31 0x0a だった

boldだと非対応を除いて892端末。44パターン。結構違いがあるな
setafだと340端末、11パターン

まあtputを使うほうが楽だってのはわかるけど、エスケープシーケンスが違うのは
マイナー端末だろうし、数の割にパターン数は限られているので
完璧を求めたいなら別だけど使う環境で動けば良いわけで、tputを使用するのは過剰な気がするな。
2019/08/05(月) 15:55:50.50ID:IMjI9HmJ
tputがない環境って例えば何?
2019/08/05(月) 16:04:49.48ID:MNXFY7cg
む、/lib/terminfo/ 以下にも定義ファイルがあるのか
xterm-256colorがないのに使えると思ったら
まあ +40個しか変わらんけど
2019/08/05(月) 16:05:10.32ID:MNXFY7cg
>>547
書いたんだから上見ろ
2019/08/05(月) 16:11:29.93ID:IMjI9HmJ
まあいいけど日記はブログで書けや
2019/08/05(月) 16:18:56.02ID:MNXFY7cg
ブログねーしw ここはみんなのらくがき帳だ
2019/08/05(月) 18:58:04.34ID:7Al1V6ob
シェルスクリプトマスターの皆様
xxxxNN.txtというファイルが大量にあります(xxxxの部分はファイル名、NNの部分は0〜99の連番)
NNの部分が50未満ならxxxx50.txtにNNが50以上ならxxxx99.txtに一括でリネームしたいのですがやり方教えてください
2019/08/05(月) 19:10:26.82ID:AegVyuQi
xxxx の部分はファイルによって異なるって前提でOK?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況