シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
前スレ: シェルスクリプト総合 その35
https://mevius.5ch.net/test/read.cgi/tech/1606221440/
関連スレ
・【Bash】Windows Subsystem for Linux【WSL】9
https://mao.5ch.net/test/read.cgi/linux/1607589861/
・Bashでプログラミング [転載禁止](c)2ch.net
https://mao.5ch.net/test/read.cgi/linux/1443885102/
・シェルスクリプト総合 その28
https://mevius.5ch.net/test/read.cgi/unix/1533154936/
・zsh その7
https://mevius.5ch.net/test/read.cgi/unix/1337844883/
・過去UNIXで使われていた ksh というシェルについて
https://mevius.5ch.net/test/read.cgi/unix/1582358403/
・【POSIX】UNIXプログラミング【BSD】 [転載禁止](c)2ch.net
https://mevius.5ch.net/test/read.cgi/unix/1443103705/
・おまえら! shell は何を使っているんですか?
https://mevius.5ch.net/test/read.cgi/unix/1012330865/
探検
シェルスクリプト総合 その36
■ このスレッドは過去ログ倉庫に格納されています
2021/02/25(木) 09:20:14.64ID:ZyJLXTlk
2021/02/28(日) 20:27:29.22ID:pff3D6mj
可哀想なのがおるな
2021/03/01(月) 03:10:12.92ID:UPXhvHyB
>>17
xargsはPOSIXじゃないぞ
xargsはPOSIXじゃないぞ
2021/03/01(月) 03:28:09.40ID:RTWwkQ1E
2021/03/01(月) 03:34:18.55ID:UPXhvHyB
あ、POSIXにあるのかw
ってことはxargsは使っていいけど-Pは
POSIXじゃないから使わないって言ってるのか?
ほんとPOSIX中心主義みたいなこと言ってるなw
ってことはxargsは使っていいけど-Pは
POSIXじゃないから使わないって言ってるのか?
ほんとPOSIX中心主義みたいなこと言ってるなw
2021/03/02(火) 15:59:01.27ID:NSMtG/TQ
この部分がどうしても繋がりません
if [ {find "$line" -maxdepth 1 -mindepth 1 -type d | wc -lc } -eq 0 ] ; then
echo "hoge"
fi
これがどうしても出来ません
find "$line" -maxdepth 1 -mindepth 1 -type d | wc -lcだけだと出来るんですが、それを演算式に繋げようとすると私が思いつく限りは何をどういじっても動きません
パイプを更に不等式で繋げるのがよくないと思うんですが
どうしたら直りますか?
if [ {find "$line" -maxdepth 1 -mindepth 1 -type d | wc -lc } -eq 0 ] ; then
echo "hoge"
fi
これがどうしても出来ません
find "$line" -maxdepth 1 -mindepth 1 -type d | wc -lcだけだと出来るんですが、それを演算式に繋げようとすると私が思いつく限りは何をどういじっても動きません
パイプを更に不等式で繋げるのがよくないと思うんですが
どうしたら直りますか?
23デフォルトの名無しさん
2021/03/02(火) 16:47:44.09ID:5tuGRxIW $()
2021/03/02(火) 16:50:56.84ID:kOL3oDu9
2021/03/02(火) 16:55:13.39ID:kOL3oDu9
まけた。。。
ちなみに、"$()"のほうが安心。
ちなみに、"$()"のほうが安心。
2021/03/02(火) 17:15:53.31ID:qy7/OUMA
だがwcを使うのがイケてない
27デフォルトの名無しさん
2021/03/02(火) 17:24:52.22ID:5tuGRxIW wcだと改行コードがね
2021/03/02(火) 18:08:15.82ID:qy7/OUMA
$ printf abc | wc -l
0
こうなるって話?
行数を数えるより良いロジックはなんだろうか
0
こうなるって話?
行数を数えるより良いロジックはなんだろうか
2021/03/02(火) 18:29:23.93ID:bIA4j74d
何にも該当するのがないかどうかって判断でしかないのに、余計なこと考えたんじゃね
wcを使うのがイケてないって他の行数を数える方法でなのか??
単に出力があるか無いかだけでかと思った
wcを使うのがイケてないって他の行数を数える方法でなのか??
単に出力があるか無いかだけでかと思った
2021/03/02(火) 18:41:11.07ID:bIA4j74d
-lc ってどっちやねんもあるか。それか?いや違うか
どっちかにしろってのは存在してるけど
どっちかにしろってのは存在してるけど
2021/03/02(火) 18:47:50.24ID:NSMtG/TQ
おお!
なんかエラーがそれっぽくなって近づきました
エスケープ文字で引っかかってる感じですけど
ありがとうです
なんかエラーがそれっぽくなって近づきました
エスケープ文字で引っかかってる感じですけど
ありがとうです
2021/03/02(火) 18:54:51.13ID:NSMtG/TQ
すいません
-lcのcはいつの間にか間違えて入ってしまってたみたいです
ただのミスです
申し訳ない
-lcのcはいつの間にか間違えて入ってしまってたみたいです
ただのミスです
申し訳ない
2021/03/02(火) 18:57:13.79ID:bIA4j74d
なる。いや、謝るほどでもない。でも、まあ、いいなその姿勢w
頑張れ
頑張れ
2021/03/02(火) 18:57:26.63ID:NSMtG/TQ
0にしてるのは簡易的なテストで
フォルダが1かつファイルが0ならば下層フォルダの階層を全部あげようとしてた感じでした
これもまたもっと良い方法があるのかもしれまん?
フォルダが1かつファイルが0ならば下層フォルダの階層を全部あげようとしてた感じでした
これもまたもっと良い方法があるのかもしれまん?
2021/03/02(火) 20:26:31.82ID:1DoNrFvk
$ printf abc | grep -c .
でええんちゃうちゃう
でええんちゃうちゃう
2021/03/02(火) 20:28:20.11ID:1DoNrFvk
あ、間違えた
$ printf abc | grep -c ''
だった
$ printf abc | grep -c ''
だった
2021/03/02(火) 21:37:15.67ID:11FPPCA/
>>34
>フォルダが1かつファイルが0
??
>下層フォルダの階層を全部あげようとしてた
?
調べるフォルダで内包するのがファイルも無くフォルダ一つ
って言っていることになると思うけど
ありそうなのは、中身空っぽのフォルダ だけど、それとは違うのか
調べるフォルダ(始点のフォルダ)直下のフォルダだけでなくそれ以下の階層でもの空のフォルダを探そうとしてる
ってことなのかなあ
>フォルダが1かつファイルが0
??
>下層フォルダの階層を全部あげようとしてた
?
調べるフォルダで内包するのがファイルも無くフォルダ一つ
って言っていることになると思うけど
ありそうなのは、中身空っぽのフォルダ だけど、それとは違うのか
調べるフォルダ(始点のフォルダ)直下のフォルダだけでなくそれ以下の階層でもの空のフォルダを探そうとしてる
ってことなのかなあ
2021/03/02(火) 21:38:12.22ID:gQx0ks5j
KARA「呼んだ?」
2021/03/07(日) 19:26:32.91ID:T3tOQ7Z+
こんな感じで
if [ "$source_line_10_first" -ne "$source_line_10_after" ] ; then
i=40
fi
ソースを引っ張ってきて比較するんですが、ソースはやはりエスケープ文字が多いので失敗します
シングルクォテーションでも思いつく限り括弧で括ってもダメでした
変数のエスケープ文字を無視する方法は何か無いですか?
if [ "$source_line_10_first" -ne "$source_line_10_after" ] ; then
i=40
fi
ソースを引っ張ってきて比較するんですが、ソースはやはりエスケープ文字が多いので失敗します
シングルクォテーションでも思いつく限り括弧で括ってもダメでした
変数のエスケープ文字を無視する方法は何か無いですか?
2021/03/07(日) 19:40:15.82ID:vyuBuDwH
41デフォルトの名無しさん
2021/03/07(日) 19:49:06.84ID:UqHHohgI 文字列に元々含まれてるシングルクォートだけ"で囲って
あとは文字列全体をシングルクォートで囲めばいいのでは
あとは文字列全体をシングルクォートで囲めばいいのでは
2021/03/07(日) 19:54:42.49ID:abZnd7wd
コンピューターサイエンスの難問:
・命名
・オフバイワン
・キャッシュインバリデーション
・文字のエスケープ(New!)
・命名
・オフバイワン
・キャッシュインバリデーション
・文字のエスケープ(New!)
2021/03/07(日) 20:00:22.61ID:quYd9iFF
2021/03/07(日) 20:09:21.95ID:vyuBuDwH
答える方もアホばかりやなw
素人がエスケープが〜と言っていたからって
それが原因だと思うな
素人がエスケープが〜と言っていたからって
それが原因だと思うな
2021/03/07(日) 20:41:29.78ID:PBQIZrIy
2021/03/07(日) 20:43:03.31ID:vyuBuDwH
素人の質問を真に受けるな、相手に情報を出させろ。アホどもが
2021/03/07(日) 21:28:47.98ID:UPuiYP7U
後で自分がわかったから偉そうにする馬鹿
2021/03/07(日) 23:47:36.62ID:T3tOQ7Z+
2021/03/08(月) 03:27:47.81ID:3+uDlPP2
だから最初から出力されてるエラーメッセージをわかると書いただろ
2021/03/08(月) 09:59:07.99ID:6lKYXbK2
>>49
人にやかましく言う前に、まともな日本語を書け!
人にやかましく言う前に、まともな日本語を書け!
2021/03/08(月) 10:09:07.56ID:3+uDlPP2
> ソースを引っ張ってきて比較するんですが
ソースを引っ張ってくるとは?
> ソースはやはりエスケープ文字が多いので失敗します
ソースにエスケープが多いとは
> シングルクォテーションでも思いつく限り括弧で括ってもダメでした
思いつきで書くんじゃなくて、正しい書き方を学べ
> 変数のエスケープ文字を無視する方法は何か無いですか?
変数のエスケープ文字とか意味が全くわからない
この初心者の意味不明な文章を真に受けて
レスするやつがいるんだもんなぁ
アホかと
ソースを引っ張ってくるとは?
> ソースはやはりエスケープ文字が多いので失敗します
ソースにエスケープが多いとは
> シングルクォテーションでも思いつく限り括弧で括ってもダメでした
思いつきで書くんじゃなくて、正しい書き方を学べ
> 変数のエスケープ文字を無視する方法は何か無いですか?
変数のエスケープ文字とか意味が全くわからない
この初心者の意味不明な文章を真に受けて
レスするやつがいるんだもんなぁ
アホかと
2021/03/08(月) 13:04:09.36ID:OXaKjPz6
結局あんなにレスしてるのに一つとしてまともな文を書けないのな
2021/03/08(月) 13:04:45.87ID:QR/il1w1
>>51
お前の指摘は「-eq を理解している事 前提」なんだよ
右も左もわからん奴は中学生レベルの英語のエラーメッセージを読む精神的な
余裕が無かったり、読んでも正しく解釈できない
お前のやり方は抽象的過ぎるわ「情報小出しにするな」的な基本でもないわで相手に全く届かず
会話に参加できていない
幾ら吠えてもムダ
お前の指摘は「-eq を理解している事 前提」なんだよ
右も左もわからん奴は中学生レベルの英語のエラーメッセージを読む精神的な
余裕が無かったり、読んでも正しく解釈できない
お前のやり方は抽象的過ぎるわ「情報小出しにするな」的な基本でもないわで相手に全く届かず
会話に参加できていない
幾ら吠えてもムダ
2021/03/08(月) 21:43:41.10ID:vBncgnCM
ある文字1文字が標準入力で与えられたときに
その文字がサロゲートペアであるかを判定するシェルスクリプトを教えてください
その文字がサロゲートペアであるかを判定するシェルスクリプトを教えてください
2021/03/08(月) 21:49:20.34ID:eBezB7N7
文字はodコマンドで1バイトずつに変換できる
あとはその数値を調べればいいだけ
あとはその数値を調べればいいだけ
2021/03/08(月) 21:58:22.39ID:0PSdEx+k
>>54
| 判定するプログラム
| 判定するプログラム
2021/03/09(火) 01:18:57.53ID:GjAck/b0
文字って正確には何のことじゃいな?
2021/03/09(火) 03:38:34.14ID:O1t/zxF9
コンピューターサイエンスの難問:
・命名
・オフバイワン
・キャッシュインバリデーション
・文字エンコーディング(New!)
・命名
・オフバイワン
・キャッシュインバリデーション
・文字エンコーディング(New!)
2021/03/10(水) 14:30:06.19ID:4EdeRuF3
!r posix shell
をDuckduckgoで検索
をDuckduckgoで検索
2021/03/16(火) 18:28:13.75ID:KSYjhM+z
行頭の任意の数の特定文字を、同じ数の別の特定文字に、sedで置換する方法はあるかな?
たとえば、次のようなテキストを
a aaa
aa aa
aaa a
次のように変更したい。
A aaa
AA aa
AAA a
次のようにだらだら書いたらできるけど、めんどくさいし、任意の数に対応できない。。。
s/^a¥s/A/;
s/^aa¥s/AA/;
s/^aaa¥s/AAA/;
...
たとえば、次のようなテキストを
a aaa
aa aa
aaa a
次のように変更したい。
A aaa
AA aa
AAA a
次のようにだらだら書いたらできるけど、めんどくさいし、任意の数に対応できない。。。
s/^a¥s/A/;
s/^aa¥s/AA/;
s/^aaa¥s/AAA/;
...
61デフォルトの名無しさん
2021/03/16(火) 18:57:27.90ID:4E4BJCoI IPF="対象のファイル.txt"
OPF="結果を出力するファイル.txt"
#最初のフィールドを抜き出し、aをAに変換
cat ${IPF} | cut -d' ' -f1-1 | sed -e "s/a/A/gi" > /tmp/$$0
#残りのフィールドを抜き出す
cat ${IPF} | cut -d' ' -f2-128 > /tmp/$$1
#同列行を連結
paste -d " " /tmp/$$0 /tmp/$$1 > ${OPF}
rm -f /tmp/$$*
OPF="結果を出力するファイル.txt"
#最初のフィールドを抜き出し、aをAに変換
cat ${IPF} | cut -d' ' -f1-1 | sed -e "s/a/A/gi" > /tmp/$$0
#残りのフィールドを抜き出す
cat ${IPF} | cut -d' ' -f2-128 > /tmp/$$1
#同列行を連結
paste -d " " /tmp/$$0 /tmp/$$1 > ${OPF}
rm -f /tmp/$$*
6260
2021/03/16(火) 19:53:28.48ID:KSYjhM+z2021/03/16(火) 19:53:49.41ID:37ClWGtj
'h;s/ .*//;s/a/A/g;x;s/^[^ ]*//;H;g;s/\n//'
2021/03/16(火) 20:44:06.60ID:Uw3qDZze
':b;s/^\(A*\)a/\1A/g;tb'
2021/03/16(火) 23:16:18.12ID:cOTzxoWO
仕様を後出しするなカス
2021/03/16(火) 23:29:02.91ID:iNI2JLkI
$ echo 'aa@aa' | sed -E '/^(a+)/!b;s/^(a+)(.*)\n/\1\n\2/;h;s/^(a+).*$/\1/;s/./A/g;G;s/\na+//'
aa@AA
$ echo 'aabbb' | sed -E '/^(a+)/!b;s/^(a+)(.*)\n/\1\n\2/;h;s/^(a+).*$/\1/;s/./A/g;G;s/\na+//'
AAbbb
aa@AA
$ echo 'aabbb' | sed -E '/^(a+)/!b;s/^(a+)(.*)\n/\1\n\2/;h;s/^(a+).*$/\1/;s/./A/g;G;s/\na+//'
AAbbb
2021/03/16(火) 23:31:10.17ID:iNI2JLkI
>>66
最初の方、aa@AA じゃなくて AA@aa だわ
最初の方、aa@AA じゃなくて AA@aa だわ
2021/03/16(火) 23:40:46.05ID:iNI2JLkI
考えてみたら
'/^(a+)/!b;h;s/^(a+).*$/\1/;s/./A/g;G;s/\na+//'
でええかな…
'/^(a+)/!b;h;s/^(a+).*$/\1/;s/./A/g;G;s/\na+//'
でええかな…
6960
2021/03/16(火) 23:57:21.97ID:KSYjhM+z2021/03/17(水) 00:55:43.47ID:ORBKE+6f
>>70
どこに?
どこに?
2021/03/17(水) 00:59:05.62ID:8tt0N3Ix
perl -pe 's/^(a*\s)/$1=~s|a|A|rg/e'
2021/03/17(水) 02:07:36.90ID:MY4kqLB8
yafiygi
2021/03/18(木) 22:37:09.67ID:TQ/yKLr3
パイプとリダイレクトなんだけど、どっちを使ったほうがいいとかありますか?
1は cat のプロセスが生成されるだけ無駄なのかな
1. cat file1 | wc
2. wc < file1
1は cat のプロセスが生成されるだけ無駄なのかな
1. cat file1 | wc
2. wc < file1
2021/03/18(木) 22:38:55.72ID:TQ/yKLr3
連レスすまそ
手癖で1をやっちゃうんだけど、こういう時にまずいとかあったら教えてほしい感じです
手癖で1をやっちゃうんだけど、こういう時にまずいとかあったら教えてほしい感じです
2021/03/18(木) 22:47:23.96ID:3HmhYQS2
ないだろう
別次元で
cat file | read a
read a < file
aをなんかする
とかならあるけど
cat file | は古典的定番で今でも悪でもないだろう
別次元で
cat file | read a
read a < file
aをなんかする
とかならあるけど
cat file | は古典的定番で今でも悪でもないだろう
2021/03/18(木) 22:54:13.26ID:3HmhYQS2
https://ja.wikipedia.org/wiki/Cat_(UNIX)
なんかウザいw
1995年からそんなのあったんだ
あんま普及してなさそ
wc < file1
も古典だって
<file1 wc
だって。ウザいなw
なんかウザいw
1995年からそんなのあったんだ
あんま普及してなさそ
wc < file1
も古典だって
<file1 wc
だって。ウザいなw
2021/03/18(木) 23:06:25.59ID:TQ/yKLr3
気にしすぎか、ありがとう!
> cat > newfile
> 新規ファイルnewfileを作成もしくは上書きして、入力したい内容を打ち込み、CTRL+Dコマンドで終了する。入力された内容は新規ファイルに書き込まれる。
これ知らなかったな、同じことをやりたい時は cat << EOF > newfile してたぜ
> cat > newfile
> 新規ファイルnewfileを作成もしくは上書きして、入力したい内容を打ち込み、CTRL+Dコマンドで終了する。入力された内容は新規ファイルに書き込まれる。
これ知らなかったな、同じことをやりたい時は cat << EOF > newfile してたぜ
2021/03/19(金) 00:06:34.36ID:vJ8/R89b
Useless use of cat (UUOC)
昔から有名だな
catなんか使うもんじゃない
昔から有名だな
catなんか使うもんじゃない
2021/03/19(金) 00:09:26.01ID:vJ8/R89b
>>74
> 1. cat file1 | wc
> 2. wc < file1
明らかに2の方が良い
> cat file | read a
> read a < file
特にこの2つだと後者のほうが圧倒的に速い
なぜならcatを使うとシーク不可能になるから
1バイトずつの読み込みになる
< file だとシーク可能だから一定のサイズで読み込むので速い
> 1. cat file1 | wc
> 2. wc < file1
明らかに2の方が良い
> cat file | read a
> read a < file
特にこの2つだと後者のほうが圧倒的に速い
なぜならcatを使うとシーク不可能になるから
1バイトずつの読み込みになる
< file だとシーク可能だから一定のサイズで読み込むので速い
2021/03/19(金) 00:15:10.62ID:gmXrz9Hk
ウザいのが出たよw
2021/03/19(金) 00:17:10.15ID:gmXrz9Hk
>なぜならcatを使うとシーク不可能になるから〜
www
何言ってるんだか
www
何言ってるんだか
2021/03/19(金) 00:17:28.82ID:vJ8/R89b
ウザいのはあなたの感想ですよね
事実の話をしましょう
事実の話をしましょう
2021/03/19(金) 00:18:15.17ID:vJ8/R89b
>>82
恥ずかしくないの?
sh の組み込みコマンド read は遅い
https://www.allbsd.org/~hrs/blog/2020-03-28-sh-built-in-read.html
恥ずかしくないの?
sh の組み込みコマンド read は遅い
https://www.allbsd.org/~hrs/blog/2020-03-28-sh-built-in-read.html
2021/03/19(金) 00:19:26.55ID:vJ8/R89b
> 改善するには
ここまで読んで、「最初の shcat の例とコードが違うのでは」と気づいたひとがいるかも知れない。
> 文頭では、次のような例として紹介した。
>
> shcat() { while read L; do echo "$L"; done; }
>
> shcat < foo
> 当たり前だが、こちらは cat(1) を使っていない。先ほどのベンチマークは cat(1) を使っていたので、
> 入力をリダイレクトにしてみよう。
> 実は、シェルの実装によってはシーク可能な記述子を read(2) が読む場合に限り、
> システムコールのバッファを増やすという最適化が入っている。前述したとおり、r
> ead 組み込みコマンドは改行文字を飛び越さないために、1 文字ずつ読む必要がある。
> しかし読む対象がファイルであれば、ランダムアクセスできるので読み出す位置は自由に設定できる。
> そのため、read(2) で大きめに読み込んでから改行文字を探し、その直後に読み出し位置を
> 再設定すれば 1 文字ずつ read(2) を呼び出す必要はない。
ここまで読んで、「最初の shcat の例とコードが違うのでは」と気づいたひとがいるかも知れない。
> 文頭では、次のような例として紹介した。
>
> shcat() { while read L; do echo "$L"; done; }
>
> shcat < foo
> 当たり前だが、こちらは cat(1) を使っていない。先ほどのベンチマークは cat(1) を使っていたので、
> 入力をリダイレクトにしてみよう。
> 実は、シェルの実装によってはシーク可能な記述子を read(2) が読む場合に限り、
> システムコールのバッファを増やすという最適化が入っている。前述したとおり、r
> ead 組み込みコマンドは改行文字を飛び越さないために、1 文字ずつ読む必要がある。
> しかし読む対象がファイルであれば、ランダムアクセスできるので読み出す位置は自由に設定できる。
> そのため、read(2) で大きめに読み込んでから改行文字を探し、その直後に読み出し位置を
> 再設定すれば 1 文字ずつ read(2) を呼び出す必要はない。
2021/03/19(金) 00:20:25.38ID:gmXrz9Hk
www
わざわざ煽って出してきたのが、
自分が何も理解してませんという証明にしかなってないという
わざわざ煽って出してきたのが、
自分が何も理解してませんという証明にしかなってないという
2021/03/19(金) 00:21:37.14ID:gmXrz9Hk
連投して抽出までしてるのにww
何も理解してませんという証明にしかなってないよ
何も理解してませんという証明にしかなってないよ
2021/03/19(金) 00:22:02.15ID:vJ8/R89b
>>86
なにか言い返す言葉があるなら言い返してみてよ
なにか言い返す言葉があるなら言い返してみてよ
2021/03/19(金) 00:23:55.24ID:gmXrz9Hk
偉そうな馬鹿に教えてやるとでも思ってるのか
そんな煽りでとかも思ってそうだな、とことん甘ちゃんだな
それと、いつものが確定してんぞw
そんな煽りでとかも思ってそうだな、とことん甘ちゃんだな
それと、いつものが確定してんぞw
2021/03/19(金) 00:26:19.51ID:vJ8/R89b
自分からいつものやつだって自白してらw
2021/03/19(金) 00:28:27.48ID:gmXrz9Hk
アホな返しっぷりがまたこれがまた、いつものパターンという...w
2021/03/19(金) 02:10:05.59ID:qP05xHwq
いつもの2人やな
2021/03/19(金) 02:17:31.73ID:7j/6ICPv
トムとジェリー仲良く喧嘩しな〜♪
2021/03/19(金) 04:05:22.98ID:RMQx/osX
catよりパロディのtacの方がオプションモリモリでcat以上に乱用されてるよな…
2021/03/19(金) 04:19:36.74ID:L0TmvpAG
2021/03/19(金) 12:05:21.82ID:8EGHMbin
$ cat << EOL > file1
> foo
> bar
> EOF
これでヒアドキュメントを使った複数行テキストの書き込みはできるんだけど、
cat を使わないようにするのって可能なのかな
> foo
> bar
> EOF
これでヒアドキュメントを使った複数行テキストの書き込みはできるんだけど、
cat を使わないようにするのって可能なのかな
2021/03/19(金) 12:06:22.99ID:8EGHMbin
>>96 s/EOF/EOL/
2021/03/19(金) 12:13:54.81ID:UA/QoJ1s
エンドオブライフ
2021/03/19(金) 13:27:42.94ID:8EGHMbin
tee を使えば行けることに気付いたけど、cat が減っても tee が出てきたら意味ないよね
そもそも数行程度で cat を無理に外す必要はないことに気付いた
忘れてくれ
そもそも数行程度で cat を無理に外す必要はないことに気付いた
忘れてくれ
100デフォルトの名無しさん
2021/03/19(金) 15:51:37.59ID:R0IdNopV echo ... >file
でええがな。w
シェルビルトインコマンドやし、ちょっと軽い。
でええがな。w
シェルビルトインコマンドやし、ちょっと軽い。
101デフォルトの名無しさん
2021/03/19(金) 16:55:09.45ID:MDPOlxpG >>96
ちょっと上に出てきたshcatからわかるように
catはほぼ同等のものをシェルスクリプトで実装できる
(ファイルにNULL文字や不正な文字が入ってる場合に少し異なる)
ただし行数が多くなるとループ処理の回数も増えるので
遅いシェルスクリプトよりもcatの方が良い
ちなみにこんな感じね
while IFS= read -r line; do
printf '%s\n' "$line"
done << EOW > file1
foo
bar
EOW
ちょっと上に出てきたshcatからわかるように
catはほぼ同等のものをシェルスクリプトで実装できる
(ファイルにNULL文字や不正な文字が入ってる場合に少し異なる)
ただし行数が多くなるとループ処理の回数も増えるので
遅いシェルスクリプトよりもcatの方が良い
ちなみにこんな感じね
while IFS= read -r line; do
printf '%s\n' "$line"
done << EOW > file1
foo
bar
EOW
102デフォルトの名無しさん
2021/03/19(金) 16:56:26.33ID:DiNJqFEB それでいいなら最初からそうしてるんじゃないか。知らんけど。
104デフォルトの名無しさん
2021/03/19(金) 18:57:42.69ID:RMQx/osX >>84
比べてないがその用途にmapfileがビルトインなんじゃないの、標準かは知らんけど
比べてないがその用途にmapfileがビルトインなんじゃないの、標準かは知らんけど
105デフォルトの名無しさん
2021/03/19(金) 19:00:37.39ID:RMQx/osX ああ配列使うんだから標準なわけないか
ストリームじゃないからクソデカだと困るか
でも手放せない
ストリームじゃないからクソデカだと困るか
でも手放せない
106デフォルトの名無しさん
2021/03/23(火) 17:53:11.07ID:laboXhIZ 0、標準入力
1、標準出力
2、標準エラー出力
ですよね?
cat <&0 ってやってなんか文字打ったら
標準入力から入力したものを標準出力に出力するから
入力した行と同じ行が出力されるのはわかるんですが
なんで cat <&2 ってやっても同じように
入力した行と同じ行が出力されるんです?
標準エラー出力から入力するってどういう意味なんです?
1、標準出力
2、標準エラー出力
ですよね?
cat <&0 ってやってなんか文字打ったら
標準入力から入力したものを標準出力に出力するから
入力した行と同じ行が出力されるのはわかるんですが
なんで cat <&2 ってやっても同じように
入力した行と同じ行が出力されるんです?
標準エラー出力から入力するってどういう意味なんです?
107デフォルトの名無しさん
2021/03/23(火) 18:14:05.04ID:2hAdV+Tt $ tty
/dev/pts/0
$ ps
PID TTY TIME CMD
94 pts/0 00:00:00 bash
232 pts/0 00:00:00 ps
$ sudo ls -l /proc/94/fd
total 0
lrwx------ 1 user user 0 Mar 23 17:56 0 -> /dev/pts/0
lrwx------ 1 user user 0 Mar 23 18:08 1 -> /dev/pts/0
lrwx------ 1 user user 0 Mar 23 18:08 2 -> /dev/pts/0
lrwx------ 1 user user 0 Mar 23 18:08 255 -> /dev/pts/0
/dev/pts/0
$ ps
PID TTY TIME CMD
94 pts/0 00:00:00 bash
232 pts/0 00:00:00 ps
$ sudo ls -l /proc/94/fd
total 0
lrwx------ 1 user user 0 Mar 23 17:56 0 -> /dev/pts/0
lrwx------ 1 user user 0 Mar 23 18:08 1 -> /dev/pts/0
lrwx------ 1 user user 0 Mar 23 18:08 2 -> /dev/pts/0
lrwx------ 1 user user 0 Mar 23 18:08 255 -> /dev/pts/0
108デフォルトの名無しさん
2021/03/23(火) 20:33:12.59ID:laboXhIZ あなるほー
紐付いてんのか
POSIXで決まってたりするんかな?
紐付いてんのか
POSIXで決まってたりするんかな?
109デフォルトの名無しさん
2021/03/23(火) 22:24:47.39ID:abnhlux1 POSIXで当然定義はされてる
紐付いてんのか(?)のことじゃないけどな
紐付いてんのか(?)のことじゃないけどな
110デフォルトの名無しさん
2021/03/23(火) 22:43:31.00ID:laboXhIZ 標準エラー出力から入力した場合の仕様はどこに書いてるの?
111デフォルトの名無しさん
2021/03/23(火) 23:02:58.99ID:abnhlux1 そんな仕様じゃないよ
<&2 という表記だから、標準エラー出力から入力する と思うのはしょうがないけど、多分思い違いしてるぞ
0<&2 は、標準エラー出力のディスクリプタの複製を標準入力のディスクリプタにするだからな
(その時点での)標準エラー出力のディスクリプタがrwで開かれてる tty(/dev/pts/0) で、それの複製なんだから、以下省略
<&2 という表記だから、標準エラー出力から入力する と思うのはしょうがないけど、多分思い違いしてるぞ
0<&2 は、標準エラー出力のディスクリプタの複製を標準入力のディスクリプタにするだからな
(その時点での)標準エラー出力のディスクリプタがrwで開かれてる tty(/dev/pts/0) で、それの複製なんだから、以下省略
112デフォルトの名無しさん
2021/03/23(火) 23:06:00.65ID:laboXhIZ > (その時点での)標準エラー出力のディスクリプタがrwで開かれてる tty(/dev/pts/0) で、
これがPOSIXの仕様なの?
これがPOSIXの仕様なの?
113デフォルトの名無しさん
2021/03/23(火) 23:17:16.76ID:abnhlux1 0<&2 は、標準エラー出力のディスクリプタの複製を標準入力のディスクリプタにする
これ
そこは、疑問と思ってるようだが仕様での動作として何も疑問はないってこと
これ
そこは、疑問と思ってるようだが仕様での動作として何も疑問はないってこと
114デフォルトの名無しさん
2021/03/29(月) 04:33:30.50ID:T/NVAJfs シェルスクリプトの互換性やら#!の書き方の作法互換性やらbashismやら言われてるけど、みんなmailcap/mime-type使わんの?
115デフォルトの名無しさん
2021/03/29(月) 04:41:36.50ID:T/NVAJfs 一応mailcapそれ自体はPOSIX…のはず
ちゃんと各shのmime-typeがそのPOSIXで定義されてるかは不明だけど、IANAとかでは規定あるわけだし
みんな適切に拡張子つければ解決するんじゃないかなって
unix系以外のOSでも対応してるのでPOSIXのみ準拠よりポータブルのはず
ちゃんと各shのmime-typeがそのPOSIXで定義されてるかは不明だけど、IANAとかでは規定あるわけだし
みんな適切に拡張子つければ解決するんじゃないかなって
unix系以外のOSでも対応してるのでPOSIXのみ準拠よりポータブルのはず
116デフォルトの名無しさん
2021/03/29(月) 07:07:57.33ID:wK+S1L2g117デフォルトの名無しさん
2021/03/29(月) 07:31:02.84ID:HXftsQaM >>116
だからこそ
application/x-dash; /bin/dash %s
mime-extensions
application/x-bash; /usr/bin/bash %s
mime-extensions
application/x-dash sh dash
application/x-bash bash
なり指定しておけば面倒はないと思ったんだよ(ごめん書式はあってるかしらん)
だからこそ
application/x-dash; /bin/dash %s
mime-extensions
application/x-bash; /usr/bin/bash %s
mime-extensions
application/x-dash sh dash
application/x-bash bash
なり指定しておけば面倒はないと思ったんだよ(ごめん書式はあってるかしらん)
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【コメ】卸売業者「簡単に安売りできない」「大暴落起きれば大赤字に」 JA「新米の販売進度が近年になく遅い。コメの回転が悪い」 ★3 [Hitzeschleier★]
- 【将棋】福間香奈 女流六冠が会見 妊娠・出産でタイトル戦の事実上不戦敗 「妊娠したら、どちらか一方を諦めないといけない状況」★2 [冬月記者★]
- かつや、明日からカツ丼(竹)790円→590円、ロースカツ定食830円→630円、カツカレー(竹)990円→790円 画像あり [お断り★]
- タイがカンボジアを空爆、トランプ氏仲介の和平合意は“事実上崩壊”軍事衝突へ タイ首相「もはや対話の余地ない」 [お断り★]
- 【速報】 米国政府、中国が日本の自衛隊にレーダー照射を批判、同事案で中国を批判するのは初めて ★2 [お断り★]
- 空自機レーダー照射、音声データ公開 中国 ★5 [蚤の市★]
- 防衛省「了解は言っていない」 [966095474]
- 中国、日本人tiktokの収益剥奪開始wmwmwmwmwmwm [834922174]
- 【速報】共同通信スクープキタ━(゚∀゚)━!!「実際は日本の自衛隊機が中国機に対してレーダ照射ロックオンしていたことが発覚」 [339712612]
- マリン船長のラーメン、投げ売りされてしまう😭
- steamで面白いゲーム教えて
- 茂木外務大臣、行事費の名目でディオール、エルメス、ブルガリへ支出 [256556981]
