シェルスクリプト総合 その34
■ このスレッドは過去ログ倉庫に格納されています
シェルスクリプトに関する総合スレッドです。
全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。
シェルスクリプト総合 その33
https://mevius.5ch.net/test/read.cgi/tech/1584893550/ > ファイルの情報に関してはtestコマンドの方が一発で分かる
testでわかるのは、自分が何をできるか?(書き込み等)だけ
他のユーザーのことはわからない .sshディレクトリは自分は読み書きできるが
他の人は読み書きできてはいけない
ということを、testコマンドでは確認することができない >>435
それは対話的な使用での話で,
シェルスクリプトの話じゃないです。 >>434
> testコマンドの場合はtest -e && test -d
ちなみに、test -eはイランで。
-dに含まれとる。-fとかも同様。 >>442
いや、シェルスクリプトでもやけど?
-excludeとかいちいち書くの面倒。 >>440
ちなみにそれをlsを使ったスクリプトで書くとどうなるんでしょう。 >>446
ちゃんと確認してないけどこんな感じ
case $(ls -dl -- "$file") in
????------*) echo 他の人は読み書きできない
esac ファイルサイズなんかもstatだとLinuxとmacでオプションが違うからな 自分で読み書きできるのかだったらtestの方が簡単だわな
rootで他のユーザではだったら素直にsudo使えばだしな、自分でごちゃごちゃ書く必要もなく >>447
SELinuxだとダメなときがあるな。
頭にドットがついたりしよる。 >>449
testではだめな場合があるって話をしてるのに、話を元に戻すな
それからパーミッションと実際に読み書きできるかは厳密には異なる
お前が持ってきた、そのrootがその一例だな
所有者rootでパーミッションが000。パーミッションを見れば
読み書きできないが、実際にはrootで読み書きできる >>450
lsの出力は(基本的なものは)POSIXで決まってるはずだがSELinuxはドットがつくんか?
SELinuxがPOSIXを歪めてるってことになるんだがそれは本当なのか?
画面でそう出力されているからって、シェルスクリプト(出力先がttyでないとき)でも同じとは限らんぞ
例えばGNUのlsはファイル名に改行などが含まれている時、
画面に表示した時はエスケープされていてこれはPOSIXの仕様を逸脱してる。
しかし出力がttyでないときはPOSIX準拠の動作をするので互換性は保たれている。
まあ本当にドットが付いていたりするなら、それを取り除けばいいだけだが >>450
軽くググったがドットがつくのは頭じゃなくて後ろじゃないのか?
パーミッションの後ろであれば、追加で何かをくっつけてもPOSIX的にはOK
macOSでも何かくっついてたはずだな
それもちゃんと考慮しての ????------*) アスタリスクだ >>451
なに当たり前のこと言っているのだか
rootも自分が読み書きできるのかなんだから当然だろ、そう言う権限があるんだから
なに必要もないことしてんだかなってとこだな >>454
人の話聞こうか?
.sshのように、他の人が読み書きできないことを
チェックするときにtestは使えないって話をしてるの
だから戻すなと言ってるの testでできることの話はもうしてないの。終わった話なの。
今はtestでできないことの話をしてるの。だから話を戻すなと言ってるの。 >>455
ちゃんとレスを読もうか?>>449って書いてるだろ
rootで他のユーザでは
は
rootで他のユーザの場合ではをチェックする場合では
な。「rootで」って付けたのは余分だがそんなのするのはrootでしかないだろうという >>457
あ、もしかしてお前、「自分以外には見れない」ことを
(シェルスクリプトで)チェックすることはありえないと思ってんの?w
sshがやってるんですが? なに言ってるの?sshのシェルスクリプトでやってるってどのシェルスクリプト? >>459
どうもお前は話が理解できないようだから
数字で答えてくれ
あるファイルが「自分以外のユーザーから読み書きできるかどうか」を
確認したいことは
1. ありえる
2. ありえない
3. 想像力がない
4. 言ってることが難しすぎてわからない(笑)
レスするのは数字だけな。それ以外の言葉はいらんから(全部言い訳としてみなす) はあ...
答えるのもアホくさいが、>>449って書いてんだから 1 に決まってるだろ
>>449、また、読めなさそうなお前のために>>457って書いてんだろに
読めればそんなアホくさい問題を出さないだろうに(わざわざそんな何行もかけてw)
実はお前のなんか知らんが偉そうなw自説はダメなはずだぞ。なんででしょう?
(sshのシェルスクリプトでやってるってどのシェルスクリプト?ってのも答えてな、そのアホな質問にこんだけ答えてやったんだからw)>>459
>sshのシェルスクリプトでやってるってどのシェルスクリプト?
なんか制限を勝手に付けたが、いつもの自分の都合の良いように反論押さえ込むだけの馬鹿な言葉なので無視 ああ、
あるユーザ=管理者権限がある=sudoが使える
な
一般ユーザはそんなことする必要もないしするべきでもないから、2 な >>461
言い訳するな。数字だけ答えろ
「自分以外のユーザーから読み書きできるかどうか」をtestでは調べることができない
1. YES
2. NO > 一般ユーザはそんなことする必要もないしするべきでもないから、2 な
うわーw
一般ユーザーが、自分以外はファイルにアクセスできないような
パーミッションになってるかを確認する必要はないって
いっちゃったよこいつwww 答えたぞ。読めない読まないのは知らない
質問するのはいいが馬鹿な偉そうな素人のような態度での質問のしかたは辞めなさいw
言い訳でもなんでもいいから俺の質問にも応えてねw
sshのシェルスクリプトでやってるってどのシェルスクリプト?
実はお前のなんか知らんが偉そうなw自説はダメなはずだぞ。なんででしょう? >>464
逆にある場合を具体的に言ってみてほしいな
俺の言うことはあり得ないとそんなアホのように馬鹿にした表現するなら > sshのシェルスクリプトでやってるってどのシェルスクリプト?
sshのシェルスクリプトでやってるなんて一言も言っていません。
自分の都合のいいように読み替えるのはやめろ >>466
> 逆にある場合を具体的に言ってみてほしいな
こいつヤバイなぁw
ファイルに他人には秘密にして置かなければいけないような
パスワード等を保存したとしても、パーミッションが
問題ないかを確認したりしないって言っちゃってるよw
ドコモ口座とかこういうやつが原因なんだろうな >>467
なんだ
>あ、もしかしてお前、「自分以外には見れない」ことを
>(シェルスクリプトで)チェックすることはありえないと思ってんの?w
>sshがやってるんですが?
って、括弧付きでわざわざ シェルスクリプト って書いていて、続いて、sshって書いてるから、そんなのあるかと思った
sshが〜なんて、sshって別次元のある意味当たり前の話だからな
sshも作るときはパーミッションを設定するが、読み書きは読み書きできるかどうか(単なるopenできるかどうか)じゃないのかなあ、知らんけど
ともあれ、すっきりしたwから、どうも >>468
>ファイルに他人には秘密にして置かなければいけないような
>パスワード等を保存したとしても、パーミッションが
>問題ないかを確認したりしないって言っちゃってるよw
イミフすぎw
何でそれを管理者権限もない一般ユーザが他のユーザのそれをしなきゃならん??のだか?
何言ってるの??
なんか管理がむちゃくちゃなシステムを作ってそうなお前がやりそうだけどw > 何でそれを管理者権限もない一般ユーザが他のユーザのそれをしなきゃならん??のだか?
こいつ理解力ゼロじゃねw
管理者(root)の話を持ってきたのはこいつだけど、
俺の話には管理者という登場人物は出てきていない
くり返し言うね。
「自分(=一般ユーザー)以外のユーザーから読み書きできるかどうか」を
(自分=一般ユーザーが)testでは調べることができない
この話をしていたという理解力はありますか? もちろん俺は
「管理者権限もない一般ユーザが他のユーザのそれをしなきゃならん」
などと一言も言ってません。
こいつはいつも、自分の思い込みで発言を改ざんしています。 だから既に答えたことを質問すんなって
ちゃんと管理してる(てかいたって当たり前の)環境では、「必要ない/すんな/あり得ない」よ、当たり前に
同じ質問繰り返してばかり堂々めぐりではなくて「逆にある場合を具体的に言ってみてほしいな」に応えた方が話は進むと思うぞw
あと、悪いが、
実はお前のなんか知らんが偉そうなw自説はダメなはずだぞ。なんででしょう?
も、よろしくw >>469
こいつには、かっこの使い方も説明しないといかんのか(呆)
丸括弧
https://kotobank.jp/word/%E4%B8%B8%E6%8B%AC%E5%BC%A7-636089
文章表記中などで用いる( )の記号。補足説明や省略可能などを表すのに用いる。
「(シェルスクリプト)」は補足説明であり省略可能なんだから
重要な言葉じゃねーんだよ。はー、こいつ日本人じゃないだろw >>473
お前に言っておく。
自分で作ったファイルに他人には見られてはいけないパスワードなどを入れるなら
パーミッションに問題がないか必ず確認しろ
このように「自分以外が見れないことを確認する必要」はあるんだからな >>474
お前はいつも指摘の仕方が異常
お前自身ががその程度なのかもしれないがという話にかならんぞ
なに当たり前のことを言っているねん
それに、逆に補足するということはそれもある意味重要ということだぞ?別にどうでもいいなら補足もしないからな 重要なときには ”ダブルクォートで” とか「かぎかっこ」でくくるんだよアホw >>475
>自分で作ったファイルに他人には見られてはいけないパスワードなどを入れるなら
パーミッションに問題がないか必ず確認しろ
なるほど、むちゃくちゃなシステムなんだな
自分では確認できない、他人になり変わらないとわからないってかw
大丈夫、お前の使ってるようなお前が作った変な環境なのは使ってない作ってないから
てか、lsで確認できる程度なら全然関係ない話だろうがっ。それも自分のではなくて他人のって話だろうが、お前のは(一般ユーザがすることではないな)
無理がありすぎな設定だな。また妄想の世界に入ってるのか
>lsで確認できる程度
ここのヒントがあります(ナゾw) >>478
もう「testでは自分以外が見れないことを確認することができない」って話をしてること忘れちゃったの? >>477
括弧付きでも保続で書くのは「[ある意味]重要」な
本当にお前は読めないヤツだな
だからそんな当たり前のようなことを書くのは、お前自身が〜だってw >>469で自分から括弧の話題を初めたのに↓
> って、括弧付きでわざわざ シェルスクリプト って書いていて、
何を言ってるんだろうこいつはw >>479
わかった、話が通じないのは
test なんて自分で読み書きできるかどうかだけの話、それを他のユーザが読めるか確認するために使おうとする奴なんていない
ls(他)使うのは当たり前(ていうか普通コマンドなどで確認するよなw)
お前のいうtestをそんなので使うシチュエーションなんてハナからあり得ないから俺の頭に入ってこなかった
あくまでも、ファイル読みたい書きたいの話でしかしてない、俺は
なんか悪かったなw
悪かった答えの一つとしてACLを調べればいいよ。lsで確認できない、ACLはパーミッション無視してACLでのになるシステムもあったず
(めんどくさいからお前のいう目的でもsudo+test使った方が簡単だと思うぞw ダミーユーザ作ってもな、コマンドで確認しても後で変わるような変なシステム使ってるなら) >>481
あああぁ
「で」は「だが」のつもりだったんだが、なんでか「で」と打っていた
そりゃお前が噛み付くのも仕方がないな、そこはスマン >>434の質問に対して、>>482という答えを言うバカでしたね(笑)
434 名前:デフォルトの名無しさん[sage] 投稿日:2020/09/23(水) 13:32:17.22 ID:BgUeNus/ [1/3]
lsコマンドをシェルスクリプトの中で使う場合ってなにかある?
ファイルの列挙に関してはfindコマンドや,もっと簡単にグロブとかを使った方が
余計な書式を含まずに処理しやすいし,
ファイルの情報に関してはtestコマンドの方が一発で分かる
(例えばディレクトリかどうかはlsコマンドの場合権限欄の情報を文字列として
解析しなくてはいけない(先頭にdがあるかどうか)が,
testコマンドの場合はtest -e && test -dで完結する)
lsコマンドを使わないとできないシェルスクリプトでの処理ってなにかあるかな。
興味本位でききたい(言わずもがなだけどlsコマンドが不要!とかそういう話ではなく)。 お前が質問とは関係ないシチュエーションの話をいきなりしだしたのがだな
質問者もそんな目的でtest使おうとは思ってないだろうw 質問と関係ないシチュエーション?
自分以外から読み書きできないことを確かめるというシチュエーションは
testではできずlsではできるので、質問と関係ありますが?
> 質問者もそんな目的でtest使おうとは思ってないだろうw
すでに、礼を貰ってるんだがw
> 443 名前:デフォルトの名無しさん[sage] 投稿日:2020/09/23(水) 16:43:09.16 ID:BgUeNus/ [3/3]
> >>439
> あーこれはあるな。
> thx
な?こいつ色々やばいだろ?w だから、それもそのユーザがという話だろう。それが俺の言う
質問者がどっちかというのは知らんけど、さすがにtestを使ってるならお前の言うようなシチュエーションはないなっていう、そう書いてるだろ >>487
>そう書いてるだろ
俺がな。いちおうw
>>486
しつこく自説を書き偉ぶりたいなら、お前のは重大なミスw(なんか急にドモモが〜とか言い出すんだから重大なんだろうw)があると思うからちゃんと調べてから書いてね、せっかく「教えてやったw」んだから >>487
俺のシチュエーションは質問者が「あーこれはあるな。」と言いました。
それとは関係ないお前のが考えたシチュエーションの話を始めないでください(笑) ドコモ口座のくだりは「自分以外が見れないことを確認するというシチュエーション」を
あなたが思いつかなかったからですねw 質問者「lsコマンドをシェルスクリプトの中で使う場合ってなにかある?」
ORLEAcPg「testを使ってるならお前の言うようなシチュエーションはない」
な?会話になってない シチュエーションは書いてないね
だから、それも その別のユーザが読み書きしたいときにできるか確認=読み書きできないのかではなくて読み書きしたいができるのか という話も全然ありえるね
多分、>>446もそうだと思うよ「スクリプトで書くと」と書いてるしね
質問者も。理由を書いてるように
お前のようにはなりたくないけどw、多分俺の方じゃないかなあどうかなああ
お前はそのシチュエーションに当たった想像した時にtestを使おうと思ったの?そんなに自説に拘るとは > だから、それも その別のユーザが読み書きしたいときにできるか確認=読み書きできないのかではなくて読み書きしたいができるのか という話も全然ありえるね
質問者「lsコマンドをシェルスクリプトの中で使う場合ってなにかある?」
俺「他のユーザーが読み書きでないこと確認したいときはls使うしか無いよ」
質問者「 あーこれはあるな。tkx」
ORLEAcPg「読み書きしたいができるのかというシチュエーションがー」
意味不明w >>492
>理由を書いてるように
俺がな。いちおうw
大げさに急にドコモが〜とか騒ぎだしたくせに、責任転嫁か、意味不明すぎ
脊髄反射のような内容のない連投は辞めろよw 自説は一歩も引きません、俺の頭の中で思ったことは全て正解ですそれしかありません
モードに入ったか
すでにそれだけじゃないと書いたので ちゃんとそれに対して 反論してね(なんて言いたくはないが誰かの常套句なのでw) 会話のキャッチボールができてないんだろうね
俺は質問者の質問に対して、testではできずにlsでしかできないという一例を
言ったのにこいつは何が言いたいんだろうかw
ORLEAcPg「testを使ってるならお前の言うようなシチュエーションはない」 >>495
お前は質問者の質問に対して何を言いたいのか
それだけを書いてみてよw
無理だろ?お前は質問者を置いてきぼりにしてるからね >>497
だから質問者の質問に答えろってw
2回目 すでに書いてる。堂々巡りだな、それでよくキャッチボールとかw
そして ls はお前の言うようなのでも俺の言うようなシチュエーションでも不備があるともなw > すでに書いてる。
聞いてるのは質問者への答えだが?どのレス?
言えないはず >>499
イミフ
ls は使うよ。使う場合はお前じゃない人が書いてる場合とか
あえて言うなら、お前のそれだけじゃ使えない場合もあるよってことかな
てか、なんでお前がそんなレスするのかイミフすぎw > そして ls はお前の言うようなのでも俺の言うようなシチュエーションでも不備があるともなw
質問者にlsを使う場合を聞かれたから、その答えである「lsを使わなければいけない場合」を俺が言ったのに、
なぜか「lsでは駄目な場合もある!」と言い出してけんかを売ってくるアホw >>502
だから俺じゃなくて質問者の質問に答えろってw
3回目 >>501
お前の頭の構造は計り知れない。わかるかっw
そしてイミフなことを急に言われても困惑するだけ 「質問者の質問に答えろ」の意味がわからないらしいw >>503
補足だよw
ホントにお前は自分のミス/抜けなりを絶対に認めないマンだなw
>>504
堂々巡りw キャッチボールとはなんなのか。お前のは壁当て(?)だ 質問者の質問に答えてみろっていっても、やっぱり俺にレスをするw
4回目 >>506
なんで「お前が」「俺に」命令してるのか、全くわからんな
真っ当な根拠をちょっと言うてみ >>508
>質問者の質問に答えてみろっていっても、やっぱり俺にレスをする
>質問者の質問に答えてみろっていっても、
>やっぱり俺にレスをする
超絶イミフすぎw イミフという言葉でごまかして
質問者の質問に答えないw
6回目 しょもな。さすが自称キャッチボールできるが実はしたことがない人だなあ
ショーーーもなっ 質問者の質問に答えないからキャッチボールできてない
7回目 >>512
>>509
以下のレスに対しても
てか同じレス繰り返してるだけだと 荒らし だよ >>515
心当たりないと思うけど、 ID:ORLEAcPgはレスを返したつもりらしいよw >>515
こいつ とは 誰もが こんな風になる何度も繰り返してるパターンだから気にすることないよ
>>517,518
よく言うよww何言ってんだか どっちの味方をする訳でもないんですけど,
私の質問を別の言い方で表わすなら
「(対話的でない)シェルスクリプトにおいて
私はlsコマンドを使う意義をあまり感じないんだけれど
(なぜならlsコマンドを使うほぼ全ての状況において
やりたいことをもっと簡単に実現できる
コマンドが用意されてるから。例: find, test),
lsコマンドを積極的に使わないといけない場合はありますか」
ということで,それに対して
「ある。lsコマンドでないと他人の権限を確認できない。
(testコマンドは自分の権限のみ)」
という解答を頂いたので,それで十分です。
ありがとうございました。 どういたしましてw
lsは対話型で使うようなイメージだけど
POSIX準拠コマンドは最低限だが必要なコマンドを網羅しているはずという観点から見ると、
もっと簡単に実現できるコマンド(findやtestじゃなくてstatなどね)の多くは
POSIX準拠ではないので、じゃあどうやって実現するんだ?と考えると
lsコマンドでできるじゃんという結論に達するんだよ
その結論を前提としてlsコマンドの仕様を再確認すると
lsコマンドの出力形式はちゃんと決まっており
(対話的でない)シェルスクリプトから使うことも
想定されてることに気づく
lsコマンドは一覧表示だけではなくファイルの属性を
取得するためのコマンドでもあるんだよ >>434
何万ファイルもあるディレクトリ以下の実際のファイル数をカウントしたい時とか。
ls -U ディレクトリ | wc -l
が速くて良いかな。
これじゃディレクトリも一緒にカウントしちゃうか・・・ うう。リロード忘れてとっくの昔に終わった話にレスを・・・orz あ、まだ終わってなかったかな?
まあでもたいした事書いてないからどうでもいいや。俺のことは忘れてくれ。 普通に使うな。逆になんで使わないと思うのか不思議
lsで問題があるようなら言うような別のをにするけど いろんなコマンドを臨機応変に使うことが気になる質だったんやろ。
好き好きとしか。 >>526
POSIX限定コマンドじゃないなら
ls以外でほとんどのことができるからでしょ
macOSがオプション違っていて面倒くさすぎるってのを除けば
パーミッションとかもstatコマンドで取得できるし
それにしてもWindowsはLinuxに対応したから楽になったけど
macOSはBSD系だからローカルでテストして
そのままサーバーに持っていくってのが難しくなってるなw 訂正
POSIX準拠コマンドに限定しないなら
ls以外でほとんどのことができるからでしょ >>527
ls使わないだからな、臨機応変ではなさげ
好き好きにとしかは同意 >>530,527
ああ、
>コマンドを臨機応変に使うことが気になる質
は、他の人を指してるとも読めるな。そっちのつもりならすまん >>531
使うことが気になる(から使いたくない)質 >>532
>>531の、
>コマンドを臨機応変に使うことが気になる質
は「ことが気になる質」余分だった「コマンドを臨機応変に使う」だなと書き込んだ後で気がついた。まあいいかとほっといた(真逆(?)なんだが)。すまん
なんとなくw理解。どうも&重ね重ねすまん 誰とは言わんけどツイッターで永遠と古い記事繰り返し流してるボットいるよね
リンク切れてるし邪魔なだけなんだけどああいうの消し去りたい https://zenn.dev/mattn/books/bb181f3f4731920f29a5/viewer/5
> 既にシェルスクリプトのみでやる領域を超えてきています。
> 本来ならば正しいプログラミング言語を選んで正しくフィルタリングすべきだと思います。
と書いてありますが、これを「正しいプログラミング言語」で書くとどうなりますか?
シェルスクリプトだけでやるより分かりやすくなりますか? >>535
Windows のRuby で、JSON ファイルをダウンロードして保存する、部分だけを作ったが、
85KB のファイルの中身には、日本語は無く、
ほとんど、\u6708 みたいなユニコード・コードポイントの表示ばかりで読めない。
{{\u30ab\u30ec\u30f3\u30c0\u30fc 10\u6708}}
ダウンロードする際の、オプションでも間違ったのかな?
download_file = "wikipedia.json"
# ファイルが存在しない時だけ、ダウンロードして保存する
unless FileTest.exist? download_file
require 'open-uri'
require 'cgi'
require 'date'
today = Date.today.strftime( "%-m月%-d日" ) # 今日の日付。1桁表示。例、10月1日
url = "https://ja.wikipedia.org/w/api.php?format=json&action=query&prop=revisions&rvprop=content&exintro&explaintext&redirects=1&titles=" +
CGI.escape( today ) # URL encode
# ダウンロードしたファイルを保存する
open( url ) do |file|
open( download_file, "w" ) do |out|
out.write( file.read ) # 書き込み
end
end
end >>537
やっぱり逆に長くなってるし分かりやすくなってないですよね? Ruby の方が、一般的な関数を使っているから、分かりやすい。
例えば、CGI.escape で、URL encode してる
元のサイトだと、date +%-m月%-d日
の部分を、何かでエンコードして、以下のようにして、
date +%-m%%E6%%9C%%88%-d%%E6%%97%%A5
それを、titles の所に書いている。
titles=$(date +%-m%%E6%%9C%%88%-d%%E6%%97%%A5) ■ このスレッドは過去ログ倉庫に格納されています