シェルスクリプトの総合スレです。
□お約束
・特記なき場合はBourne Shell(/bin/sh)もしくはPOSIX準拠の互換シェルがデフォルトです。
bash/zsh/ksh/ash/dash/yash/poshなどの専用機能に依存する場合は明示しましょう。
Linuxユーザは/bin/shの正体がbashまたはdashなので特に注意。
FreeBSDユーザは/bin/shの正体がashなので注意。
・POSIXについてのリンクは https://en.wikipedia.org/wiki/POSIX にまとめられています
最新の仕様はこちらへ http://pubs.opengroup.org/onlinepubs/9699919799/
(左上の「Shell & Utilities」 から参照することができます。)
・v7 shに一番近くて、現役(?)のshは、OpenSolaris由来のheirloom sh。
http://src.illumos.org/source/xref/illumos-gate/usr/src/cmd/sh/
http://heirloom.sourceforge.net/sh.html
・csh/tcshのシェルスクリプトは推奨されません。
(理由は「csh-whynot」でググれ)
・UNIXにはシェルスクリプトに便利な小さなコマンドがいろいろあります。
manや参考リンクを見ましょう。
aproposないしはman -kでそれらしい単語による簡単な検索もできます。
・シェルで使えるワイルドカード等は正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな
□初心者へのアドバイス:
・適した道具を判断するのも頭の重要な使い方。シェルスクリプトよりも
awkまたはperlの方が適した処理にはそちらを使いましょう。
・知らないコマンドが出てきたらmanを引きましょう。
・思い通りに動かないときは、まずは sh -x でトレースしましょう。
□回答者への注意事項:
・シェルスクリプトでの処理方法を質問しているのに、よくわからずに
「そういうのはperl使いましょう」と回答するのはやめましょう。
安易にperlに逃げずにシェルスクリプトで処理するのが頭のいいやり方。
質問に対して問題が間違ってるといちゃもんをつけるのもやめましょう
シェルスクリプト総合 その27
https://mevius.5ch.net/test/read.cgi/unix/1525337663/
探検
シェルスクリプト総合 その28
■ このスレッドは過去ログ倉庫に格納されています
2018/08/02(木) 05:22:16.82
2020/03/14(土) 21:05:30.89
2020/03/14(土) 21:19:09.39
2020/03/14(土) 22:00:38.59
>>198
1MBってことは、1行256バイトとして4096行以下なら小さいってことですね。
10MBで約4万行、100MBで約40万行、1GBで400万行
昔のExcelの制限が1シート65000行だったことを考えると
エクセルで扱えるデータなら問題なさそうですね
1MBってことは、1行256バイトとして4096行以下なら小さいってことですね。
10MBで約4万行、100MBで約40万行、1GBで400万行
昔のExcelの制限が1シート65000行だったことを考えると
エクセルで扱えるデータなら問題なさそうですね
2020/03/14(土) 22:38:14.38
アスペかよw
アスペならちゃんと改行コードも数えるんだぞ?
アスペならちゃんと改行コードも数えるんだぞ?
2020/03/15(日) 13:40:07.33
2020/03/20(金) 18:13:05.78
185です。説明不足ですみません。
やりたいことは1行目を読み取り、2行目以降はそのままwhileループで最後まで読みたいのです。
ただそのためだけにフラグを使うのもなんだかなぁと。
やりたいことは1行目を読み取り、2行目以降はそのままwhileループで最後まで読みたいのです。
ただそのためだけにフラグを使うのもなんだかなぁと。
2020/03/20(金) 19:59:54.90
わざわざ空読みする理由が分かんねえ
今出来てる状態のスクリプト貼って何がうまく行かないのか説明してみ
今出来てる状態のスクリプト貼って何がうまく行かないのか説明してみ
2020/03/21(土) 00:02:26.75
#!/bin/sh
お願いします
お願いします
2020/03/21(土) 00:18:20.18
2020/03/21(土) 13:58:51.87
2020/03/21(土) 14:07:34.22
bash は重複しない4文字である。つまり2bitのデータと考えられる
日本語を1文字16bitのデータと考えると、
1文字をbashの4文字×8組=32個のデータで表現できる
つまりbashで質問すると32倍のデータが必要になる
1レスに2048バイト、1024文字を書き込めるから32文字の質問であれば
bashで質問することは可能
日本語を1文字16bitのデータと考えると、
1文字をbashの4文字×8組=32個のデータで表現できる
つまりbashで質問すると32倍のデータが必要になる
1レスに2048バイト、1024文字を書き込めるから32文字の質問であれば
bashで質問することは可能
2020/03/21(土) 15:26:35.50
向いてないんだろ
こういうの
こういうの
2020/03/22(日) 10:34:31.24
2020/03/22(日) 17:21:49.94
2020/03/23(月) 20:28:21.83
2020/03/24(火) 21:32:10.12
2020/04/11(土) 10:24:56.50
タブで字下げされてるテキストファイルの中にある
_TAG("S.T.A.R.T") が含まれる行と
_TAG("E.N.D") が含まれる行との間にある行数を数えるにはどうすればいいでしょうか
_TAG("S.T.A.R.T") が含まれる行と
_TAG("E.N.D") が含まれる行との間にある行数を数えるにはどうすればいいでしょうか
2020/04/11(土) 11:20:47.30
...... | sed -n '/_TAG("S.T.A.R.T")/,/_TAG("E.N.D")/p' | wc -l
こんな感じ
こんな感じ
2020/04/12(日) 07:36:15.54
さんくす
sedやwcなどの外部コマンド?を使わない方法はありますか?
sedやwcなどの外部コマンド?を使わない方法はありますか?
2020/04/12(日) 07:43:15.09
宿題は自分でやろう
2020/04/12(日) 13:13:39.28
>>216
そういうことするなら
perl5に行きなよ
普通はそれも最初から入ってて、文字処理に強い言語だから
---
そんな処理だと、その処理の前に
タグがネストしてたり、正しく対になっているのか調べれた方が安全
おみあげに類似したコードあげる
https://ideone.com/XCz8Ou
対が壊れてたら -1 を
壊れてないならネストの最大の深さを返す
そういうことするなら
perl5に行きなよ
普通はそれも最初から入ってて、文字処理に強い言語だから
---
そんな処理だと、その処理の前に
タグがネストしてたり、正しく対になっているのか調べれた方が安全
おみあげに類似したコードあげる
https://ideone.com/XCz8Ou
対が壊れてたら -1 を
壊れてないならネストの最大の深さを返す
2020/04/12(日) 17:00:27.78
>>218
ダクネスが居たように見えた
ダクネスが居たように見えた
2020/04/13(月) 19:58:42.58
>>214
問題の意図が明確
その _TAG("S.T.A.R.T") とかは字下げされているのかどうなのか
_TAG("S.T.A.R.T") が含まれてると言うが、
一行 は _TAG("S.T.A.R.T") だけではないのか?
echo ' _TAG("S.T.A.R.T")' なんかも考慮する必要あるのか?
俺だったら一行まるまる、_TAG("S.T.A.R.T") だけにするがな
その方がパースしやすいので
問題の意図が明確
その _TAG("S.T.A.R.T") とかは字下げされているのかどうなのか
_TAG("S.T.A.R.T") が含まれてると言うが、
一行 は _TAG("S.T.A.R.T") だけではないのか?
echo ' _TAG("S.T.A.R.T")' なんかも考慮する必要あるのか?
俺だったら一行まるまる、_TAG("S.T.A.R.T") だけにするがな
その方がパースしやすいので
2020/04/13(月) 19:59:20.04
あと _TAG("S.T.A.R.T") は複数あるのか?という質問も追加
ネストされている場合は考慮するのか?とか
ネストされている場合は考慮するのか?とか
2020/04/13(月) 20:01:47.27
まあいずれにしろテキストファイルは read で読み込めるんだから
こんな感じになるだろうが
while IFS= read -r line; do
case $line in
'_TAG("S.T.A.R.T")') なんとか ;;
'_TAG("E.N.D")') かんとか ;;
esac
if 条件; then
count=$((count + 1))
fi
done < テキストファイル
こんな感じになるだろうが
while IFS= read -r line; do
case $line in
'_TAG("S.T.A.R.T")') なんとか ;;
'_TAG("E.N.D")') かんとか ;;
esac
if 条件; then
count=$((count + 1))
fi
done < テキストファイル
2020/04/13(月) 20:03:02.16
>>218みたいにそういう場合だったら Perl にとかいうやつがいるけど
シェルスクリプトで同等のコードを書いても大差ないんだけどなw
シェルスクリプトで同等のコードを書いても大差ないんだけどなw
2020/04/13(月) 21:07:49.84
sedやwc使うなとかいう制約も謎だわ
言語やツールが何であれ結局裏で似たようなライブラリの関数呼び出すのに
言語やツールが何であれ結局裏で似たようなライブラリの関数呼び出すのに
2020/04/13(月) 21:38:58.14
理由がわからないなら普通に聞けばいいだけなのに。
自分が知らないだけなのに、なんでそんなことありえない、
あってたまるかみたいな書き込みをするんだろうねw
自分が知らないだけなのに、なんでそんなことありえない、
あってたまるかみたいな書き込みをするんだろうねw
2020/04/13(月) 22:33:21.03
理由がわからないんじゃなくて、そんなことを言い出す人間が理解できないって話だよ
こだわりがあるならこんなところで人に聞くんじゃないよって話で
こだわりがあるならこんなところで人に聞くんじゃないよって話で
2020/04/13(月) 22:41:09.86
自分とは違う方針の質問は受け付けない
そんなレスはこてんぱんにしてやる。ですか?
そんなレスはこてんぱんにしてやる。ですか?
2020/04/13(月) 23:40:18.71
自分の期待とは違う方針の回答は受け付けない
そんなスレはこてんぱんにしてやる。じゃないの?
そんなスレはこてんぱんにしてやる。じゃないの?
2020/04/14(火) 04:36:43.78
>>227
スレの流れ見たけど受け付けられてるじゃん
宿題を済ませたいのか知らないが
人に聞くくらいなら針路変更したらどう?
知り合いにコンピューターの勉強してた人居るけど
大学で課題をすべて友人からパクってたそうだ
今その人バイトで食いつないでる
ITの仕事できたら低くても年収400万は行ったろうにね
スレの流れ見たけど受け付けられてるじゃん
宿題を済ませたいのか知らないが
人に聞くくらいなら針路変更したらどう?
知り合いにコンピューターの勉強してた人居るけど
大学で課題をすべて友人からパクってたそうだ
今その人バイトで食いつないでる
ITの仕事できたら低くても年収400万は行ったろうにね
2020/04/14(火) 07:50:06.07
2020/04/14(火) 07:52:02.07
232名無しさん@お腹いっぱい。
2020/04/14(火) 08:10:41.322020/04/14(火) 08:12:21.45
問題を解決できないやつは
学歴がなんでも大成しないな
学歴がなんでも大成しないな
2020/04/14(火) 08:16:49.74
2chは口が悪いやつが多いけど
ここ見てると分かるように無償で相手してくれるやつがいるんだな
現実はどうだろう
そんなことないよ
社会に出れば分かるがフリーライダーは受け入れられない
街角でスケッチブックに助けてくださいって掲げるのか?
そんなの通報されて終わるよ
SNSなら答えてくれるって?
フォロワーも居ない人の相手なんて誰もしない
要するに2chしか質問する先がないんだ
ここ見てると分かるように無償で相手してくれるやつがいるんだな
現実はどうだろう
そんなことないよ
社会に出れば分かるがフリーライダーは受け入れられない
街角でスケッチブックに助けてくださいって掲げるのか?
そんなの通報されて終わるよ
SNSなら答えてくれるって?
フォロワーも居ない人の相手なんて誰もしない
要するに2chしか質問する先がないんだ
2020/04/14(火) 08:18:35.42
2020/04/14(火) 08:24:13.25
2020/04/14(火) 08:26:10.64
課題か仕事か知らんが問題を片付けてくれたのになぜ素直になれないんだろうか
仕事だったら出来上がらないから検収されずに報酬もらえないぞ
仕事だったら出来上がらないから検収されずに報酬もらえないぞ
2020/04/14(火) 08:29:48.56
JavaHouseってのがあって明らかに仕事に関係するであろう質問してた輩に
運営者の人がそれ幾らなのって聞いてたな
聞いた本人は無料ですってなんか意味の分からんこと言ってたが
運営者の人がそれ幾らなのって聞いてたな
聞いた本人は無料ですってなんか意味の分からんこと言ってたが
2020/04/14(火) 08:31:37.22
>>232
宝くじワロタ
宝くじワロタ
240名無しさん@お腹いっぱい。
2020/04/14(火) 08:44:03.74 >>230
それは単にその人が優秀だっただけ
それは単にその人が優秀だっただけ
2020/04/14(火) 09:06:13.53
課題をこなせず大学をやめて成功したって丸投げ派遣会社でも設立したんか
2020/04/14(火) 10:27:17.89
2020/04/14(火) 11:48:50.47
宿題は自分でやりましょうってことだけじゃ
2020/04/14(火) 12:53:01.03
>>243
全ての質問に対してそういう回答をしてるなら何も言わんよ
全ての質問に対してそういう回答をしてるなら何も言わんよ
2020/04/14(火) 16:26:20.38
>>230
まあ今どきの日本人はだいたいビル・ゲイツは知り合いだからなw
まあ今どきの日本人はだいたいビル・ゲイツは知り合いだからなw
2020/04/14(火) 16:29:02.33
2020/04/14(火) 16:51:38.83
自分なら質問者が
「今こうやってるけどもっと効率のいい方法ない?」
とか聞いてきたら答えてあげたくなる
一度答えてそーじゃねーよとか言われたら・・・w
「今こうやってるけどもっと効率のいい方法ない?」
とか聞いてきたら答えてあげたくなる
一度答えてそーじゃねーよとか言われたら・・・w
2020/04/14(火) 17:19:48.25
一度答えてそーじゃねーよと言われたら?
↓これみて「そーじゃねーよ」言われたと思っちゃったの?
215 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2020/04/11(土) 11:20:47.30
...... | sed -n '/_TAG("S.T.A.R.T")/,/_TAG("E.N.D")/p' | wc -l
こんな感じ
216 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2020/04/12(日) 07:36:15.54
さんくす
sedやwcなどの外部コマンド?を使わない方法はありますか?
↓これみて「そーじゃねーよ」言われたと思っちゃったの?
215 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2020/04/11(土) 11:20:47.30
...... | sed -n '/_TAG("S.T.A.R.T")/,/_TAG("E.N.D")/p' | wc -l
こんな感じ
216 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2020/04/12(日) 07:36:15.54
さんくす
sedやwcなどの外部コマンド?を使わない方法はありますか?
2020/04/14(火) 17:20:54.13
沸点が低いんだろうなぁ。
少しでもなにか言われたら、親を侮辱されたかのように感じるんだろうな
少しでもなにか言われたら、親を侮辱されたかのように感じるんだろうな
2020/04/14(火) 17:27:27.07
なんとなく答える前に
sedやwcなどの外部コマンド?を使わない方法はありますか?
と書いても、同じようにキレていそうな気がするなw
sedやwcなどの外部コマンド?を使わない方法はありますか?
と書いても、同じようにキレていそうな気がするなw
2020/04/14(火) 17:38:50.71
3連投かよw
そんなに悔しかったのかよw
そんなに悔しかったのかよw
2020/04/14(火) 18:07:42.02
レスしただけでこの反応w 矛先をずらしているのもありがちだなぁw
2020/04/14(火) 23:33:18.21
2020/04/15(水) 00:16:02.16
2020/04/15(水) 00:37:48.24
>>254
もういいから早くスクリプト作れって言ってんだよ
もういいから早くスクリプト作れって言ってんだよ
2020/04/15(水) 00:47:14.66
257名無しさん@お腹いっぱい。
2020/04/15(水) 08:44:47.782020/04/16(木) 00:36:27.10
>>253の後半からはawkのセンスありと見た
2020/04/16(木) 07:29:49.82
自分で man 読んで自分で出来るようになる方が自分にとって有益だと思うんだが…
2020/04/16(木) 12:09:07.65
awkでやればできるよ!・・・全部BEGIN
これ萎えるw
これ萎えるw
2020/04/17(金) 09:28:05.07
フレッシュなニンニクジュースを飲めばコロナの菌が死滅する
2020/04/19(日) 04:34:10.20
この板の住民なら生ニンニクで腸内細菌死滅して病院送りになるのは知ってそう
2020/04/19(日) 04:48:20.74
言うほどUNIXやシェルスクリプトってコロナ菌に関係あるか?
2020/04/19(日) 13:15:29.97
[ と [[ の違いなんかも理解できてないままflgやcontinueを使って書いてみました。
_TAG("S.T.A.R.T")の後でもループの度にflgをチェックするのが無駄なので
_TAG("S.T.A.R.T")を探すループと_TAG("E.N.D")まで行数を数えるループを完全に分けてflgを無くしスッキリ出来たらいいのですが。
declare -i i=0
declare -i flg=0
for f in `cat $INPUT_FILE`
do
if [ $flg == 0 ]; then
if [[ "$f" =~ \t*'_TAG("S.T.A.R.T")' ]]; then
flg=1
else
continue
fi
else
if [[ "$f" =~ \t*'_TAG("E.N.D")' ]]; then
echo 行数は $i
exit 0
else
i=$i+1
fi
fi
done
_TAG("S.T.A.R.T")の後でもループの度にflgをチェックするのが無駄なので
_TAG("S.T.A.R.T")を探すループと_TAG("E.N.D")まで行数を数えるループを完全に分けてflgを無くしスッキリ出来たらいいのですが。
declare -i i=0
declare -i flg=0
for f in `cat $INPUT_FILE`
do
if [ $flg == 0 ]; then
if [[ "$f" =~ \t*'_TAG("S.T.A.R.T")' ]]; then
flg=1
else
continue
fi
else
if [[ "$f" =~ \t*'_TAG("E.N.D")' ]]; then
echo 行数は $i
exit 0
else
i=$i+1
fi
fi
done
2020/04/19(日) 22:46:59.99
>>264
> ループを完全に分けてflgを無くしスッキリ出来たらいいのですが。
まず for f in `cat $INPUT_FILE`を使うのはやめよう
シェルスクリプトでテキストファイルを読むならwhile + read を使う
そしてread は read してから read すると次の行を read する(当たり前だw)
> ループを完全に分けてflgを無くしスッキリ出来たらいいのですが。
まず for f in `cat $INPUT_FILE`を使うのはやめよう
シェルスクリプトでテキストファイルを読むならwhile + read を使う
そしてread は read してから read すると次の行を read する(当たり前だw)
266名無しさん@お腹いっぱい。
2020/04/26(日) 02:43:28.05 一応それらしいのを書いてみました。
exitがあるのと、whileループの前と中にreadがあるのがちょっと不満です。
後チェックができるように do; read; while という使い方ができればいいのですが。
declare -i i=0
while : ; do
read f <- 不要かも
while [[ !("$f" =~ \t*'_TAG("S.T.A.R.T")') ]]; do
read f
done
read f
while [[ !("$f" =~ \t*'_TAG("E.N.D")') ]]; do
i=$i+1
read f
done
echo 行数は $i
exit
done < $INPUT_FILE
exitがあるのと、whileループの前と中にreadがあるのがちょっと不満です。
後チェックができるように do; read; while という使い方ができればいいのですが。
declare -i i=0
while : ; do
read f <- 不要かも
while [[ !("$f" =~ \t*'_TAG("S.T.A.R.T")') ]]; do
read f
done
read f
while [[ !("$f" =~ \t*'_TAG("E.N.D")') ]]; do
i=$i+1
read f
done
echo 行数は $i
exit
done < $INPUT_FILE
2020/04/26(日) 07:48:46.75
そもそも done < $INPUT_FILE とか書く必要ない
script.sh < $INPUT_FILE とやればいいんだよ
その方が柔軟性が高くなる
そうすりゃスクリプトは中身だけで良くなる。endはいらない。
そして while read do にも置き換えられるやろ?
read f <- 不要かも
while [[ !("$f" =~ \t*'_TAG("S.T.A.R.T")') ]]; do
read f
done
read f
while [[ !("$f" =~ \t*'_TAG("E.N.D")') ]]; do
i=$i+1
read f
done
echo 行数は $i
script.sh < $INPUT_FILE とやればいいんだよ
その方が柔軟性が高くなる
そうすりゃスクリプトは中身だけで良くなる。endはいらない。
そして while read do にも置き換えられるやろ?
read f <- 不要かも
while [[ !("$f" =~ \t*'_TAG("S.T.A.R.T")') ]]; do
read f
done
read f
while [[ !("$f" =~ \t*'_TAG("E.N.D")') ]]; do
i=$i+1
read f
done
echo 行数は $i
2020/04/26(日) 07:49:15.89
× endはいらない。
○ exitはいらない。
○ exitはいらない。
2020/04/26(日) 13:23:56.84
後出しっぽくてすみません。
$INPUT_FILE は_TAG("S.T.A.R.T")や_TAG("E.N.D")と同じく固定名なので汎用性は不要なんです。
それにこの部分はscriptの一部で本体には引数があるため毎回script.sh 引数 < $INPUT_FILE とやるのはちょっと...
といって、このためだけに分割するのも...
$INPUT_FILE は_TAG("S.T.A.R.T")や_TAG("E.N.D")と同じく固定名なので汎用性は不要なんです。
それにこの部分はscriptの一部で本体には引数があるため毎回script.sh 引数 < $INPUT_FILE とやるのはちょっと...
といって、このためだけに分割するのも...
2020/04/26(日) 16:11:10.53
じゃあ
{
なかみ
} < "$INPUT_FILE"
とかすればいい
{
なかみ
} < "$INPUT_FILE"
とかすればいい
2020/12/09(水) 09:14:48.51
2021/03/01(月) 22:58:36.48
$ eval "<"
bash: 予期しないトークン `newline' 周辺に構文エラーがあります
これってどういうこと?
bash: 予期しないトークン `newline' 周辺に構文エラーがあります
これってどういうこと?
2021/03/02(火) 03:17:30.34
予期しないトークン が出てきたんだろ
2021/03/02(火) 09:29:15.67
そりゃ < をbashに渡すから
$ <
と同じ結果になる訳で
$ <
と同じ結果になる訳で
2021/03/02(火) 11:20:08.32
おふたりありがとう
たしかに
$ <
と同じ結果になった
でもnewlineというのはどこにも記述してないのにどうして `newline' なんだろう?と
たしかに
$ <
と同じ結果になった
でもnewlineというのはどこにも記述してないのにどうして `newline' なんだろう?と
2021/03/02(火) 11:55:19.88
英語の勉強をしましょう
277名無しさん@お腹いっぱい。
2021/03/02(火) 12:14:10.372021/03/02(火) 12:48:18.17
あー、そういうことか、なるほどわかりました
日本語の中に突然newlineが出てきて、しかもわざわざクォートされてるからてっきり予約語かと思い込んでいた
というか目に見えない予約語なんだろうけど
ありがとうございます
日本語の中に突然newlineが出てきて、しかもわざわざクォートされてるからてっきり予約語かと思い込んでいた
というか目に見えない予約語なんだろうけど
ありがとうございます
2021/03/02(火) 16:21:26.89
わかっとらんやんけ!
2021/03/14(日) 10:53:57.86
>>164
win鯖管か個人用途のみで使うなら7系はいいものだと思うけど、数百MB食うpwshがunix界隈で受け入れられるとはとても思えない
まあ新興非b系シェルは駆逐されるかもしれんが
そもそもまだMacとlinux主要ディストロにしか公式対応してないので
IT職でなく、単にツールキットを享受できればいい人ならpwshでいいと思うよ
たとえ趣味や仕事でも(だけど時代遅れな)b系シェルの技能は汎用性あるから、あえて普段から使うのも勉強になるよ
win鯖管か個人用途のみで使うなら7系はいいものだと思うけど、数百MB食うpwshがunix界隈で受け入れられるとはとても思えない
まあ新興非b系シェルは駆逐されるかもしれんが
そもそもまだMacとlinux主要ディストロにしか公式対応してないので
IT職でなく、単にツールキットを享受できればいい人ならpwshでいいと思うよ
たとえ趣味や仕事でも(だけど時代遅れな)b系シェルの技能は汎用性あるから、あえて普段から使うのも勉強になるよ
2021/03/14(日) 10:59:38.87
あと怒涛の互換性ブチ壊しバージョンアップ中だから、せっかく書いても一年で動かなくなる
まだソフトウェア開発には使えないのが現状
まだソフトウェア開発には使えないのが現状
2021/03/14(日) 17:45:37.35
シェルスクリプトの特徴は「人間がそのまま読むことが出来る1行1データのテキストを扱う」という点なんだわ
シェルスクリプトは分かりづらいからPerlやPythonを使うとか言ってるやつがいるけど
1行1データのテキストを扱うならば、シェルスクリプトが一番うまく処理できる
正確に言えば、シェルスクリプトだけじゃなくてUNIX系のCLIコマンドがそれを前提としたインターフェースになってる
CLIコマンド=シェルスクリプトのAPIなんだよ
pwshがunix界隈で受け入れられないのは、APIが全く違っていて互換性がないから
API=CLIコマンドなので、プログラマの多くはAPIコマンドを知ってる
シェルスクリプトがいつまでたってもPerlやPythonに置き換わらないのも
それらの言語はCLIコマンドというAPIを使わないから
CLIコマンドを使うならば、シェルスクリプトより簡潔に書ける言語が存在しない
シェルスクリプトは分かりづらいからPerlやPythonを使うとか言ってるやつがいるけど
1行1データのテキストを扱うならば、シェルスクリプトが一番うまく処理できる
正確に言えば、シェルスクリプトだけじゃなくてUNIX系のCLIコマンドがそれを前提としたインターフェースになってる
CLIコマンド=シェルスクリプトのAPIなんだよ
pwshがunix界隈で受け入れられないのは、APIが全く違っていて互換性がないから
API=CLIコマンドなので、プログラマの多くはAPIコマンドを知ってる
シェルスクリプトがいつまでたってもPerlやPythonに置き換わらないのも
それらの言語はCLIコマンドというAPIを使わないから
CLIコマンドを使うならば、シェルスクリプトより簡潔に書ける言語が存在しない
2021/03/31(水) 10:37:33.90
シェルなんだから外部コマンドは呼べるし、テキストも扱えるしそんなに変わらんのでは
そんなに変らんということはすなわち、わざわざunix環境で使うモチベとしては弱いと思うが
ドザーが流行りのwsl使うのには便利なんじゃね
そんなに変らんということはすなわち、わざわざunix環境で使うモチベとしては弱いと思うが
ドザーが流行りのwsl使うのには便利なんじゃね
2021/03/31(水) 10:41:33.46
昔ながらのwinコマンドは大体外部コマンドだけど、pwshはほとんど組み込みコマンドなのがなあ
slsとか分けて提供してくれればbetter grep/findとして個人的には使いたいんだが
slsとか分けて提供してくれればbetter grep/findとして個人的には使いたいんだが
285名無しさん@お腹いっぱい。
2021/03/31(水) 22:49:44.43 >>283
Windowsのコマンドはスクリプトから使うことを考慮されてない物が多い
例えば、copyコマンドは、copyすると
1 個のファイルをコピーしました。
とか人間のためのメッセージが出てくるからテキスト処理に向かない
バッチファイルは人間が操作するのと同じことただやるだけ
(出力を加工しない)なのでバッチファイルから使う分にはそれでもいいが
シェルスクリプトのように出力と入力をつないで処理することには向いていない
だからpwshはWindowsのコマンドを呼び出さない
一方pwshで使うAPIは1行1データのテキストにはなってないし
普段使ってる外部コマンドではない
どちらかと言えばPythonなどの関数に近い
Unix/Linuxの外部コマンド・・・1行1データのAPIインターフェースでCLIからも参照する
pwsh、Python、多くの言語・・・引数と戻り値のAPIインターフェースで言語内から参照しない
APIのインターフェースが大きく違っていて
Unix/Linuxの外部コマンドは改行の扱いが難しいなどの制限があるが
その制限の範囲内ではスクリプトからも人間からも使いやすくて
他の言語には置き換えることが出来ないんだよ
Windowsのコマンドはスクリプトから使うことを考慮されてない物が多い
例えば、copyコマンドは、copyすると
1 個のファイルをコピーしました。
とか人間のためのメッセージが出てくるからテキスト処理に向かない
バッチファイルは人間が操作するのと同じことただやるだけ
(出力を加工しない)なのでバッチファイルから使う分にはそれでもいいが
シェルスクリプトのように出力と入力をつないで処理することには向いていない
だからpwshはWindowsのコマンドを呼び出さない
一方pwshで使うAPIは1行1データのテキストにはなってないし
普段使ってる外部コマンドではない
どちらかと言えばPythonなどの関数に近い
Unix/Linuxの外部コマンド・・・1行1データのAPIインターフェースでCLIからも参照する
pwsh、Python、多くの言語・・・引数と戻り値のAPIインターフェースで言語内から参照しない
APIのインターフェースが大きく違っていて
Unix/Linuxの外部コマンドは改行の扱いが難しいなどの制限があるが
その制限の範囲内ではスクリプトからも人間からも使いやすくて
他の言語には置き換えることが出来ないんだよ
2021/04/01(木) 00:40:09.95
Windowsでシェルスクリプト動かそうとすると、パスの\のエスケープで気が狂いそうになるから
その辺捨てたパワーシェルの割り切りは、それはそれで理解できるけどなー
その辺捨てたパワーシェルの割り切りは、それはそれで理解できるけどなー
2021/04/01(木) 01:14:08.37
>>286
Windowsでシェルスクリプトって何を使ってるの?
パスの\のエスケープなんかしたことないよ
pwshはスクリプト言語としては悪くないと思うよ
ただPythonなんかと同じようなプログラミング用の言語ということ
Pythonにも当てはまるけどプログラミング用の言語は
シェルスクリプトとはスタイルが異なる。
シェルスクリプトは端末操作に特化した言語だから
プログラミングはしにくいが端末操作は得意
まあPowerShellでも普段からコマンドレット使って端末操作してます。
pwshでもコマンドレットをメインで使いますって人なら
シェルスクリプトと同じような感じに見えるかもしれないけど
そんな人いるのかな?
Windowsでシェルスクリプトって何を使ってるの?
パスの\のエスケープなんかしたことないよ
pwshはスクリプト言語としては悪くないと思うよ
ただPythonなんかと同じようなプログラミング用の言語ということ
Pythonにも当てはまるけどプログラミング用の言語は
シェルスクリプトとはスタイルが異なる。
シェルスクリプトは端末操作に特化した言語だから
プログラミングはしにくいが端末操作は得意
まあPowerShellでも普段からコマンドレット使って端末操作してます。
pwshでもコマンドレットをメインで使いますって人なら
シェルスクリプトと同じような感じに見えるかもしれないけど
そんな人いるのかな?
2021/04/01(木) 03:02:34.14
>>287
Windowsはダブルクォートの直前にバックスラッシュがある場合のみエスケープとして扱うということに一応なってる。
しかし実はWindowsではダブルクォートも引数の区切りも解釈するのはアプリケーションの仕事なので実は上記のように解釈される保証はない。
Windowsはダブルクォートの直前にバックスラッシュがある場合のみエスケープとして扱うということに一応なってる。
しかし実はWindowsではダブルクォートも引数の区切りも解釈するのはアプリケーションの仕事なので実は上記のように解釈される保証はない。
2021/04/01(木) 06:04:39.51
2021/04/14(水) 16:39:38.83
int main( int argc,char **argv){ printf("%s\n",argv[1]); return 0;}
みたいなプログラムを書いて
a.exe "abc xyz"
みたいに実行しても処理系によって出力が
"abc xyz"
だったり
abc xyz
だったり
"abc
だったり…そんな時代もあったね。
みたいなプログラムを書いて
a.exe "abc xyz"
みたいに実行しても処理系によって出力が
"abc xyz"
だったり
abc xyz
だったり
"abc
だったり…そんな時代もあったね。
2021/04/20(火) 16:39:52.31
SSDがいっぱいになってきたのでfindで各binを周りfileが吐いたリストをunstripped(だったか?)でgrep&stripするスクリプト書いた
半分くらいになるのなこれ…
今の所不具合は出てないからヨシ
おすすめ
半分くらいになるのなこれ…
今の所不具合は出てないからヨシ
おすすめ
2021/04/20(火) 16:48:14.77
>>287
ubuntuだけどbashからpwsh -cで便利なツールとして使うのがベスト
多少最適化されてそうなapt提供のプレコンパイル版でも60MiBあるから配布時依存に加えるのは厳しいのが悩み
私的ハックにはすごく重宝
ubuntuだけどbashからpwsh -cで便利なツールとして使うのがベスト
多少最適化されてそうなapt提供のプレコンパイル版でも60MiBあるから配布時依存に加えるのは厳しいのが悩み
私的ハックにはすごく重宝
2021/04/20(火) 16:53:51.68
2021/04/20(火) 16:55:18.39
>>291
golang製のバイナリってstripすると壊れるんじゃなかったっけ
golang製のバイナリってstripすると壊れるんじゃなかったっけ
2021/04/20(火) 17:07:12.66
2021/04/20(火) 18:04:12.33
学習コスト高そうだから何でも賢くキャストしてくれるキャスト器として使ってるわ
[xml]'<foo>...'くらいのカジュアルユース
年だからjqとか付いてけないしjsonもキャストして.付けてるタブ補完連打でアクセス
ただの型コレクションとして気兼ねなく使えばいい
[xml]'<foo>...'くらいのカジュアルユース
年だからjqとか付いてけないしjsonもキャストして.付けてるタブ補完連打でアクセス
ただの型コレクションとして気兼ねなく使えばいい
2021/04/21(水) 20:07:40.11
>>296
歳のせいにするな。お前の能力の問題だ。
歳のせいにするな。お前の能力の問題だ。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 事実上の減反政策を法定化へ 農水省方針 「需要に応じた生産」推進 [蚤の市★]
- 【北海道】夫の車にひかれ妻が死亡 バックで出庫中後ろにいる妻に気付かず・・ 83歳の夫を逮捕 札幌 [ぐれ★]
- 【鰻】ニホンウナギの規制強化案、ワシントン条約会議で正式に否決 [ぐれ★]
- フジテレビ F1地上波放送11年ぶり復活へ 26年シーズンから最大5戦 [征夷大将軍★]
- 与党“議員定数削減法案”きょう国会に提出へ 衆院1割削減目標 野党からは「あんこのないまんじゅう」など批判相次ぐ [ぐれ★]
- 【独占直撃】「国分太一と縁は切れない」電動ママチャリで疾走する元TOKIOリーダー城島茂、ついに明かした31年間と沈黙の「本音」 [Ailuropoda melanoleuca★]
- 高市「ひらめいた!東京の税収を地方に配分するわ」 [219241683]
- 【美しい国へ】高市「給食費無償化はムリ!」「防衛特別所得税(仮称)を新設」 [219241683]
- 日本人「AIで失業?ないない(笑)日本人を舐めるな😡」 AIに対する楽観姿勢、先進国で異例。 [271912485]
- マイクロ星条旗ビキニ🇺🇸「ムッチィ💕💕💕💕」
- 【悲報】所得税増税、2027年1月からWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
- ネトウヨ「今ならまだ中国に勝てる!台湾に積極的に介入し、第三次世界大戦の戦勝国になろう!中国を叩き潰せ!」→5万いいね [314039747]
