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

■ このスレッドは過去ログ倉庫に格納されています
2021/02/25(木) 09:20:14.64ID:ZyJLXTlk
シェルスクリプトに関する総合スレッドです。

全般
・荒しは無視しましょう。
・丁寧な姿勢を心掛けましょう。
・ネチケット(死語)を意識しましょう。
・「○○(他の言語)でいいやん」は禁止。他のスレに行ってください。

前スレ: シェルスクリプト総合 その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/
634デフォルトの名無しさん
垢版 |
2021/05/19(水) 13:20:50.01ID:isp/WQPk
>>622
> またシェルスクリプトでなくても、タブは単独の区切り文字としてはベスト。

シェルスクリプトにおいてはタブ区切りはベストではない。
なぜなら空白系文字の一つで特殊な処理が行われるから。

foo,bar,baz という CSVは IFS="," read -r f1 f2 f3 で正しく読み込める。
foo,,baz でも正しく、f1="foo"、f2=""、f3="baz" と読み込める。
しかしこれがタブ区切り(タブ文字=<TAB>とする)であった場合、

空白系文字が連続している場合は一つとして扱われるという例外ルールにより、
foo<TAB><TAB>baz という CSV は IFS=<TAB> read -r f1 f2 f3 と読み込むと、
f1="foo"、f2="baz"、f3="" と間違って読み込まれる。
2021/05/19(水) 13:23:02.17ID:ZyjXFBY0
内部的というか、個人的に、だな
個人的にならそれこそモダンなパーサ使えよって話だし、declare等中途半端なハックはやめておこう
ごめん
636デフォルトの名無しさん
垢版 |
2021/05/19(水) 13:24:53.12ID:isp/WQPk
名前は忘れたけど、シェルスクリプトでCSVを扱うためのライブラリかコマンドを見かけたことがある
awk実装のパーサーを使ってたはず。githubでawk csv で検索して見つけたんだったかな?
まあいくつかあったはず。
637デフォルトの名無しさん
垢版 |
2021/05/19(水) 13:27:02.65ID:isp/WQPk
たしかシェルスクリプトで扱いやすいように区切り文字を変換する機能とかエスケープする機能とかとかがあったはず
2021/05/19(水) 13:34:02.00ID:ZyjXFBY0
空白文字としてシェルにパース(単語分割)される、って性質もシェルスクリプティングにおいて便利な場面(forで回したり)は多々あるので一概に悪いとは思わないよ
スペースあるならtsvは避けるとか、IFSをコマンド前置代入で弄るとか、ハッキリ区別したいなら値をクオートしてワンステップ分割を遅延させたりとか

tsvは厳密性と利便性の真ん中の立ち位置だね
シェルスクリプティングにおいて、総合的に見ていい形式だと思うよ、(いざバグるその時までは…)
2021/05/19(水) 13:45:54.49ID:nuPY3Cay
>>632
まあ今時のシェル環境なら絵文字も実際なしじゃないと個人的には思う。
ただ、滅多にないといってもポータビリティ損うのは嫌だから自分はやらないがw

>>633
edかw
ありがとう、覚えておく。

>>634
いや、タブが不適切な場合がありうることは、端から除外してないよ。
標準ツールの実装や文字としての意味合いなどから考えて、ベストだと言ってるので、
そういう特殊な状況がありうることは指摘されるまでもないよw

>>636
awk実装なら欲しい、それw
csvparseなんてコマンドも昔sourceforgeにあって、一時期入れてた。C実装だったので、
でかいファイルを扱うときに重宝したけど、あんまりできがよくなかったんで、今は…
あとC++が書けるなら、boostライブラリ(11標準に入ってるかも)でエスケープ処理できる
パーサを簡単に書けるやつがあったんで、それで挑戦って手もあるかもw
自分は、そんなことを考えているうちに、>>619のq(-text-as-data)を見付けてしまったので、
以後はこれに頼ってるw
2021/05/19(水) 16:24:49.16ID:MofjHbZu
>>623
>一番使われたであろうソースコード記述でもタブを嫌いスペースが主流だったりするしな

カーネルのソースコードは主流じゃないってことですよね、わかります
641デフォルトの名無しさん
垢版 |
2021/05/19(水) 17:37:46.30ID:NrDqbXHa
while IFS=$'¥t' readでTSV読むと空文字が飛ばされるんだけど
どうしたらいいの?
642デフォルトの名無しさん
垢版 |
2021/05/19(水) 18:07:23.61ID:isp/WQPk
絶対入らないであろう制御文字とか別の文字にsedで置換してから処理すればいいんじゃね?
643デフォルトの名無しさん
垢版 |
2021/05/19(水) 18:09:29.66ID:isp/WQPk
その話を>>634でしたんだけど>>639はわかってない気がするねw
2021/05/20(木) 07:49:17.82ID:46+G9eEq
> 日本語では、「分かる(understand)」と「分ける(divide)」とは同じ字を充てます。つまり理解することと分類するということは同義です。

???

英語では、「分かる(understand)」と「分ける(divide)」とは異なる単語を充てます。つまり理解することと分類するということは全く別です。

となるのでは?w
2021/05/20(木) 12:53:36.47ID:ensXejIN
divide も「分類する」という意味に取ることはできる。分類が理解ならば。
2021/05/20(木) 13:17:23.56ID:ALA05zio
綴りが同じでも意味が違う場合がある
意味が同じでも別の綴りで表現することもある

言葉の常識だな
2021/05/22(土) 08:35:59.42ID:eaqGXRkT
>>618だとうまくいかないので訂正する
read_xlsx.to_csv(os.getenv("HOME") + "/Downloads/time_en_jp.csv", index=None, header=True, sep='~')'
ではなくて
read_xlsx.to_csv(os.getenv("HOME") + "/Downloads/time_en_jp.csv", index=None, header=True, sep="~")'
648デフォルトの名無しさん
垢版 |
2021/05/22(土) 08:45:20.64ID:eaqGXRkT
#!/bin/sh
# >>614の拡張機能を使ってダウンロードした英語字幕をDeepLで翻訳するスクリプト
# 翻訳すると短いなと思ったら英文の適当なところに改行を入れる
# . $HOME/venv/english/bin/activate
python3 -c 'import glob, os, pandas; \
get_filename = glob.glob(os.getenv("HOME") + "/Downloads/*.xlsx"); \
read_xlsx = pandas.read_excel(get_filename[0], engine="openpyxl"); \
read_xlsx.to_csv(os.getenv("HOME") + "/Downloads/time_en_jp.csv", index=None, header=True, sep="~"); \
read_xlsx.to_html(os.getenv("HOME") + "/Downloads/time_en_jp.html", index=None, header=True)'
mkdir --parents $HOME/Downloads/Excel; mv $HOME/Downloads/*.xlsx "$HOME/Downloads/Excel"
xdg-open "$HOME/Downloads/time_en_jp.html"
cat "$HOME/Downloads/time_en_jp.csv" | cut --delimiter='~' --fields='2' > "$HOME/Downloads/en.txt"
# pandoc "$HOME/Downloads/en.txt" -o "$HOME/Downloads/en.docx"
# 英語字幕の文字数は30分動画で約2万
en_05k=$( cat "$HOME/Downloads/en.txt" | sed -z "s/\n/ /g" | cut --characters="1-5000" )
en_10k=$( cat "$HOME/Downloads/en.txt" | sed -z "s/\n/ /g" | cut -c "4900-9900" )
for subtitle in "$en_05k" "$en_10k" "$en_15k" "$en_20k"; do
if [ -z "$subtitle" ]; then break
else xdg-open $( echo '/pj/ne#rotalsnart/moc.lpeed.www//:sptth' | rev )"$subtitle"; sleep 21; fi; done
2021/05/22(土) 09:02:39.62ID:QJRx2RSn
クソコード邪魔すぎ何だこりゃ?
2021/05/22(土) 11:03:50.76ID:eaqGXRkT
>>648
#!/bin/sh
# クリップボードにコピーしたurlをファイルに追記
CLIPB=$(xclip -o)
mkdir --parents $HOME/Pictures/ss
echo $CLIPB >> $HOME/Pictures/ss/urls.txt

#!/bin/sh
# 追記したページのスクリーンショットを取得後にログを残してurls.txtを初期化、閲覧編集用のアプリを起動
mkdir -p $HOME/Pictures/ss
while read url
# 書き込む余白を多く取りたければ1280以上の横幅を指定
do google-chrome --headless --disable-gpu --hide-scrollbars --window-size=1280,15210 \
--screenshot="$HOME/Pictures/ss/ss$(date +"%H%M%S").png" "$url"
done < "$HOME/Pictures/ss/urls.txt"
date >> "$HOME/Pictures/ss/food.log"
cat "$HOME/Pictures/ss/urls.txt" >> "$HOME/Pictures/ss/food.log"
: > "$HOME/Pictures/ss/urls.txt"
wine "$HOME/irfanview/i_view64.exe" &
xdg-open $( echo '=q?/moc.ogkcudkcud//:sptth' | rev )"!hatebu あとで読む"
2021/05/22(土) 11:11:15.99ID:/00w7bM8
よくわからんけどrevは5chの規制避けかな
2021/05/23(日) 18:35:11.52ID:TMBaqh21
>>650
#!/bin/sh
# 区切り文字が^のcsvファイルから3列目を抽出
while IFS='^' f1 f2 f3
do
echo "$f3"
done < $HOME/Documents/file.csv
echo -n "$IFS"
xdg-open $( echo '/pj.oc.ihcinuhc.www//:sptth' | rev )"article/215479"
653デフォルトの名無しさん
垢版 |
2021/06/02(水) 23:41:48.90ID:CFdyIdLe
スクリプトのシバンで#!/bin/bashを使うのに抵抗があっていつも#!/bin/shと書くんだけど
#!/bin/shは実際何が呼ばれてるか確認する方法ある?
2021/06/03(木) 02:30:25.50ID:Xmy19u29
file /bin/sh
2021/06/03(木) 02:36:09.69ID:Ers5yK+g
Ubuntu 18.04 では、

file /bin/sh
/bin/sh: symbolic link to dash

readlink -f /bin/sh
/bin/dash

ls@ -l /bin/sh
lrwxrwxrwx 1 root root 4 5月 21 2019 /bin/sh -> dash

ただし、ls の特定のオプションは書き込めないので、@を入れました

ll /bin/sh
lrwxrwxrwx 1 root root 4 5月 21 2019 /bin/sh -> dash*

ただし、ll は、~/.bashrc 内で定義されているエイリアス。
alias ll='ls -alF'
2021/06/03(木) 03:13:59.17ID:Xmy19u29
dashいいよね
time /bin/sh looooop.sh
という手も…
制御構文と算術並べて回すとbashの6倍〜くらい速い

もしbashのshモードなら、あえてshとして呼ぶ意味は多分ない
shにリネームしても--posixで呼んでも速くなったりはしないので
単に機能制限するだけ
2021/06/03(木) 04:24:00.37ID:R+Tga64P
bashの--posixなら多分機能制限しない
posix準拠の動きに変えるだけ
2021/06/03(木) 14:26:02.44ID:jx+ISKqI
>>656
なくはない。
何らかのbシェルベースのシェルが起動するコトを期待する、と言う意味がある。
そこがつまり#!/bin/dashと書くな、という理由だよ。
ポータビリティというのは結局スクリプトを書く側が担保してやるしかないものさ。
659653
垢版 |
2021/06/03(木) 19:13:59.15ID:smLJNlVA
こんなん出ました
dashだそうです
root@rock64:~# file /bin/sh
-bash: file: command not found
root@rock64:~# readlink -f /bin/sh
/bin/dash
2021/06/03(木) 23:17:43.27ID:jx+ISKqI
>>659
なに?ubuntuってfileコマンドないの?w
うへ。何のパッケージインストールすりゃいいんだ?w
打てば教えてくれるのか?w
まあ、滅多に使わないけどさ…w
2021/06/04(金) 00:17:07.85ID:3WbYfw6G
$ apt-file search -x '(/usr)?/bin/file$'
file: /usr/bin/file
2021/06/04(金) 18:08:41.76ID:gVy5NQ7F
>>660
最近はクロス環境とか多いからfileは結構出番ないすか? これどれのバイナリー? みたいな
2021/06/04(金) 19:10:54.58ID:3cSNOYzv
クロス開発で異なるプラットフォームのバイナリが
バラバラにばらまかれて調べないといけなくなる状況がわからん
ちゃんとディレクトリとかファイル名とかでわけて
混ざらないように作れよ
適当にやってるからわからなくなるんだよ
664653
垢版 |
2021/06/04(金) 22:37:23.88ID:jwl5S2DP
>>660
debianベースらしいけど見ての通りrock64というシングルボードコンピュータ用だから
色々省かれてるんでしょうね
まあaptで標準的なものは入るので
2021/06/04(金) 22:55:40.20ID:n50ApA7d
なるほどw
いろいろありがとう >>661 >>664
RedHat系でずっと来てるもんで、ubuntuは新参でして…w
結構、細かいところでググぅっとなるw
2021/06/05(土) 00:08:43.42ID:wpsN2NXu
これを機にPOSIX準拠を目指すといいでござる
ただしPOSIX原理主義だけは見てはいけないでござる
あれはエセPOSX宗教でござる
667デフォルトの名無しさん
垢版 |
2021/06/06(日) 19:16:29.89ID:JMlL8BLG
プログラムの勉強のためにshellのコマンド(ex cd・cp・find ...etc)が
どう書かれているか中身を見たいのですが、バイナリのため文字化けしてて見れません。

これを人が読めるように戻すにはどうしたらよいでしょうか?
またshellのコマンドはプログラム言語は何で書かれているのでしょうか?
2021/06/06(日) 19:25:46.16ID:a60f9MS4
$ objdump -d -j .text /usr/bin/cp
2021/06/06(日) 19:47:31.05ID:czQb8XNZ
>>667
> shellのコマンドはプログラム言語は何で書かれているのでしょうか
だいたい全部と言っていいほど、Cだな
ほぼ全部OSSなんだから、全てのコマンドのソースがネットに普通に置いてある
670デフォルトの名無しさん
垢版 |
2021/06/06(日) 19:48:12.73ID:P8Y1M++D
>>669
それはLinuxだろ
2021/06/06(日) 19:50:10.61ID:czQb8XNZ
>>670
BSDもだけど。macOSもな
672デフォルトの名無しさん
垢版 |
2021/06/06(日) 19:53:49.73ID:P8Y1M++D
なんかずれてるな
673デフォルトの名無しさん
垢版 |
2021/06/06(日) 19:55:06.72ID:P8Y1M++D
オープンソースとそうでないものがあって、そもそもはオープンソースでない方が元。
2021/06/06(日) 19:55:15.47ID:czQb8XNZ
お前が何を噛みついてるのかわからん
お前がズレてるんだろうがぁ
2021/06/06(日) 19:59:04.19ID:czQb8XNZ
>>673
イミフ。何を言いたいの?
shellのコマンド(ex cd・cp・find ...etc)=一般的なコマンドは、>>669の通りだけど
OSSでないそうでないものって何?
2021/06/06(日) 20:01:57.37ID:wmjhjcQW
>>667
それらの基本的なコマンドはLinuxが作ってるんじゃなくて
GNUが作ってる。Linuxそれを採用してるだけ

それらの基本的なコマンドはだいたいcoreutilsの中に詰め込まれてる
https://github.com/coreutils/coreutils/tree/master/src
ただし一部は別だったりする。例えばfindはfindutils
cdはシェルで実装されてるからbashとかのソースコードを見ないとわからない

Linux以外を見たければそのOSを作ってるサイトとかに書いてある
2021/06/06(日) 20:03:14.27ID:wmjhjcQW
>>674
世界で一番最初に作られたcpを見つけだせ!
とかいいたんじゃね?www
2021/06/06(日) 20:04:40.72ID:wmjhjcQW
しかしオープンソースじゃないcpってあるんだろうか?w
unixのソースコードも公開されてたよね?
2021/06/06(日) 20:05:20.51ID:czQb8XNZ
>>677
それでも、イミフだわあwOSSやんww
最初の(?)UNIXもソース提供だったな。それもネットに丸ごと今でもあったりするな
2021/06/06(日) 20:11:51.24ID:a60f9MS4
System V とか Microsoft Xenix とか BSDI のコマンドとかだったりして
681デフォルトの名無しさん
垢版 |
2021/06/06(日) 20:24:40.79ID:JMlL8BLG
>669 676
ありがとうございます。GitHubでソースコード拝見しましたが
C言語難しいですね。
682デフォルトの名無しさん
垢版 |
2021/06/06(日) 22:11:42.25ID:aDY6ROlo
標準出力の速度を制限したり、通信速度を表示するコマンドってないでしょうか?
2021/06/06(日) 23:47:07.17ID:2q78RNEI
https://mevius.5ch.net/test/read.cgi/unix/1533154936/435
https://mao.5ch.net/test/read.cgi/linux/1555068129/41
2021/06/06(日) 23:58:07.43ID:///+rfU8
https://www.google.com/search?q=%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E9%81%85%E5%BB%B6+%E3%82%B7%E3%83%9F%E3%83%A5%E3%83%AC%E3%83%BC%E3%82%BF

コマンドとしてはないやろう。
2021/06/07(月) 02:17:17.72ID:pO0RV8yO
Pipe Viewer とか
http://www.ivarch.com/programs/pv.shtml
686デフォルトの名無しさん
垢版 |
2021/06/07(月) 11:24:53.90ID:4bgMFjRA
>>685
ありがとうございました!
687デフォルトの名無しさん
垢版 |
2021/06/08(火) 14:08:09.66ID:OYNrrHpJ
誰かいます?質問いいですか?
688デフォルトの名無しさん
垢版 |
2021/06/08(火) 16:02:21.82ID:CHrXnr0w
ff fb 20
689デフォルトの名無しさん
垢版 |
2021/06/08(火) 19:32:55.59ID:VAaMDIwe
.bashrcのaliasでnohupしたいんだがどう書けばいいの?

これだと上手くいかなかった
alias unko='sudo nohup sh -c '¥''time /unko/unchi.sh '¥'' &'
690デフォルトの名無しさん
垢版 |
2021/06/09(水) 10:49:19.85ID:Zc888NJs
>>689
それって sudo してるからパスワード入力が必要になるが、最後に & 付いてるからシェルに戻って来ちゃうからうまく行かんのでは?
普通にコマンドラインから入力してもうまく行かんと思うんだが。1度sudoで何かを動かした後でパスワード入力しなくて良い状態になっている時ならできるだろうけど。
691デフォルトの名無しさん
垢版 |
2021/06/09(水) 14:08:40.45ID:HNZZx/kM
>>690
確かに!
事前に試した時はその前にsudoしてたからパスワード聞かれなかっただけだわ
2021/06/13(日) 19:52:58.76ID:5F9QidAB
sudo でワイルドカード使いたいときって
sudo sh -c "hoge *"
をイディオムだと思って使うのが良いですかね?
他のやり方ってありますか?
2021/06/13(日) 20:33:30.15ID:ZhJARNOF
>>692
ワイルドカードの使いかたによるやろ。
ワイルドカード処理を自分で行うアプリ(gitとか)なら不要やし。

イディオムではなく、ワイルドカード処理をどれに任せるのかを考えるべき。
2021/06/14(月) 11:12:16.03ID:KZOl1vP3
イディオムってなんだよ? 何も考えたくないって言ってんのか?
正しいコードを書くだけの話だろ
2021/06/14(月) 12:55:12.73ID:0x3Kpqg0
その「正しいコード」とやらが、初心者にはちょっと難しいことはわかる。

凝ったことをやるときに、シェル組み込みのコマンドや機能は混乱のもとやからしゃあない。
2021/06/14(月) 15:51:02.64ID:KZOl1vP3
俺が突っ込みたいのは「イディオム」って言葉だよ
仕組みを理解したくないってのがバレバレなんだよ

上司「なんでこんなコードにしたの?」
馬鹿「知りません。イディオムです!」

っていいたいのバレバレやろ?
2021/06/14(月) 16:13:33.51ID:lTAIWsCW
すみません
sh -c は何も sudo でワイルドカードを使うためだけに存在する構文ではないので、イディオムと申しました
2021/06/14(月) 16:18:29.41ID:lTAIWsCW
sudoが使えるユーザが利用者で、実行時にパスワードを求める想定です

このときにワイルドカードを使うための、その「正しいコード」とはどのようなものですか、というのが質問です
2021/06/14(月) 19:26:11.00ID:hx6guc/Q
sudoでもワイルドカード使えるし
echo /etc/*.conf
ってしてみろ
shellの機能を使ってるのがわかってない
shellのオーナーはrootじゃなくユーザー
2021/06/14(月) 21:27:46.24ID:KZOl1vP3
正しいコードを聞くんじゃなくて、
シェルスクリプトを勉強しろって言ってんの

コード聞いて終わりにするだろ

上司「なんでこんなコードにしたの?」
馬鹿「知りません。5ちゃんねるでこれが正しいって聞きました!」
2021/06/14(月) 21:29:27.91ID:0x3Kpqg0
>>699
なんのためのsudoなの?w
起動側のワイルドカード処理ではダメなケースが多かろう。
2021/06/14(月) 21:32:42.19ID:0x3Kpqg0
>>700
ほっとけよ。
それでもべつにええがな。

そもそも、ムリなヤツにはムリやし、できるヤツなら勝手にやる。
2021/06/14(月) 21:42:49.75ID:TBcjiJdx
どの回答も想像を絶するレベルの低さでワロタ


>>693
どれに任せるかって、質問者が想定してんのはフツーにシェルだろ

>>699
アホ

>>700
何に発狂してんのか分からんが少なくとも質問者の「イディオム」って語の使い方は正しいし、お前は何ら質問に答えていない
分からんなら無理してレスすんな

>>692
こだわりがあって避けたいのでない限りそれで良い
一般に使える、記述量が少ないあるいは分かりやすいやり方は特にない
あともう分かってるだろうがこのスレ終わってるからわざわざここで質問するな
2021/06/14(月) 21:47:07.04ID:KZOl1vP3
どこがイディオムなんだ?ただのワイルドカードだろ
*がワイルドカードで終わる話なんだが?
うん。はいおわた。そこにイディオムはありません。

https://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%87%E3%82%A3%E3%82%AA%E3%83%A0

イディオム(英語: idiom、フランス語: idiome、ドイツ語: Idiom)とは、
単語における一定の配列での連結の総称である。言語の類型によっては、
単語に準ずる形態素や表意性を持つ文字がこの役割を担うこともある。
この連結によって、慣習的に用例と意味が固定しており、字面から意味を推測できないことも多い。
2021/06/14(月) 21:51:20.88ID:XErzM4Zs
↑ 本題とは関係ない変なこだわりっぷりはキチガイ
2021/06/14(月) 22:01:38.26ID:KZOl1vP3
本題の答え *がワイルドカード
あとは書いたように動く
イディオムなんてない
2021/06/14(月) 22:07:17.88ID:RVbOy7mU
>>701
sudoはsudo cmdのcmdの実行をroot権限にするだけ
echo *.confもechoにしてみたらいろんなの渡されてびっくりだよ
shellはあらかじめ余計な処理をする
shellを実行してるのはuser
2021/06/14(月) 22:19:23.20ID:XErzM4Zs
>あらかじめ余計な処理
余計といえば余計だが、その余計なおかげでechoなどは何もしなくてもいいんだけど
POSIXに展開はルールは明文化されてるから一度読めばいいと思う
2021/06/14(月) 22:38:14.31ID:0x3Kpqg0
>>703
> >>693
> どれに任せるかって、質問者が想定してんのはフツーにシェルだろ

そんな想定ができるヤツは、あんな質問をしないし、「イディオム」とは言うまい。
想像を絶する想像力のなさでワロタ。w

> あともう分かってるだろうがこのスレ終わってるからわざわざここで質問するな

おまえは、回答するな。
2021/06/14(月) 22:38:16.95ID:lTAIWsCW
>>704
いや誰もワイルドカードのことはイディオムとは呼んでいなくて、sh -c $command をさも sudo でワイルドカードを使うための構文のように使ってるのがイディオム的だという話なんだが、もしかしてアタマが特別お悪い?


>>706
> 本題の答え
おもろいなぁキミ笑
2021/06/14(月) 22:42:35.98ID:0x3Kpqg0
>>707
sudoであえてshを実行する意味がわかってないやろ?
2021/06/14(月) 22:43:09.07ID:XErzM4Zs
>>710
人格が変わりすぎだろうw
It’s a common idiom to use env to find bash even if it’s been installed in another directory
と同じような感覚で使ったんだろう?そもそもは。とは思ってたけど
しかし人格が変わりすぎwww
2021/06/14(月) 22:43:39.18ID:TBcjiJdx
>>709
なんでなんの関係もないお前が反応してんの
もしかしてID:KZOl1vP3と同一人物でID切り替えながら荒らしてんの?
2021/06/14(月) 22:45:44.34ID:lTAIWsCW
>>712
その文が何なのかは知りませんが、まあそんな感じです
ごく普通の用法ですよね?
2021/06/14(月) 22:51:30.90ID:XErzM4Zs
>>712
別にいいだろうがw
>>703の冒頭の余計なこと書いてるんだし。あんなの書く癖に>>713なんて書いちゃうんだな
やっぱり小心者故の虚勢だったかと思うぞw

>>714
まあ(そんなに)間違ってはないだろうどうな
ごく普通の用法と言われれればどうかなあ??あんま使わない使われてないかな
(そう目にすることはない、Web上のプログラミング的な色々なとこでは。使ってるとこもあるだろうけど)
2021/06/14(月) 22:53:20.37ID:XErzM4Zs
>>715
>>712
ではなくて
>>713
2021/06/14(月) 22:55:27.91ID:TBcjiJdx
>>715
> そんな想定ができるヤツは、あんな質問をしないし、「イディオム」とは言うまい。

いやこんなにも論理的に破綻していてかつイディオムという語の意味を理解してない奴が同じタイミングで二人もいるって恐怖でしかないんだが
2021/06/14(月) 22:58:00.42ID:XErzM4Zs
別に居ても不思議じゃないけどw
2021/06/15(火) 03:36:25.29ID:fYgQamCV
>>713
ふつうに考えて、荒らしはおまえの方だな。w

>>717
> いやこんなにも論理的に破綻していてかつイディオムという語の意味を理解してない
ただ主張するのではなく、どのように破綻しているのかを述べよ。
2021/06/15(火) 04:54:46.12ID:UNOhr6//
>>719
> ただ主張するのではなく、どのように破綻しているのかを述べよ。

では、
>>709
> そんな想定ができるヤツは、あんな質問をしないし、「イディオム」とは言うまい。
がどう破綻しているか述べる

質問者は「一般ユーザが展開したワイルドカード」と「root が展開したワイルドカード」が違うのを知っているからこそ「sudo でワイルドカードを使いたい」と思い至ったのであって、この時点でワイルドカードの展開はシェルが担うという前提を持っている
その上で「ワイルドカードの展開をroot のシェルに委ねられないか」というのが元の質問なわけだね
従って、
> そんな想定ができるヤツは、あんな質問をしない
というのは偽だ
なんせ事実として質問者は「そんな想定」を持った上で「あんな質問」をしているのだから

また、いくつかの説明や例文がこれまでに出ているように、質問者のイディオムという語の用法は全く間違っていないし広く使われているものと合致するので、
> 「イディオム」とは言うまい
というのも頓珍漢も甚だしい
(もちろん質問者のイディオムという語の使い方が間違っていることをあなたたちが客観的に示すということはあっても良い。できるものならご自由にどうぞ)
そもそも「こういう知識レベルの人間はこういう語を使わない」なる命題が常に真なわけないでしょう
コンピュータの知識と日用語の語彙に何らかの相関があったとして、それは「そういう傾向がある」というだけなのでね

以上のことから、>>709は事実から説明される事柄と尽く反対のことを言っていて、全体的に偽なので、論理的に破綻しているといえる
2021/06/15(火) 11:08:32.71ID:ic6VniVo
>>692
環境を引き継ぎたければsubshellで
(sudo hoge *)
2021/06/15(火) 11:50:21.12ID:vhbon9Jn
>>699
そのための全ての展開に優先するaliasですよ
user/pwdを保存しておいて、su/sudo&好きにcdしてそこで*を展開
hogeはシェル関数にしておいて、末尾に元のユーザーへsu/pwd復元コード
2021/06/15(火) 11:56:27.22ID:vhbon9Jn
エイリアスはパースの第一段階なので、su root; cd some/dir; hoge *に渡る*はsu/cd後のものになります、言葉不足ごめん

ファイル名展開はパラメータ展開よりも後なので、他の展開で仕込んでもいいかも
2021/06/15(火) 11:57:34.70ID:vhbon9Jn
>>723はalias fuga=に突っ込むコマンドです
2021/06/15(火) 12:03:49.18ID:fYgQamCV
>>720
> 質問者は「一般ユーザが展開したワイルドカード」と「root が展開したワイルドカード」が違うのを知っている
それは>>692に書かれていない。
おまえの決めつけにすぎないので、以降の長文は全部ムダ。w

まあ、質問者の「イディオムだと思って使う」の意味次第ではあるか。
個人的には、理屈がわかってればそのように「思って」は使わない。
2021/06/15(火) 12:32:19.46ID:Uk8DlJ/9
またID切り替えて恥晒し続けるのか

昨日は他スレでも同じようなやつがいたな
2021/06/15(火) 14:22:06.77ID:fYgQamCV
>>726
自分の敵は全部同一人物扱いか。w
2021/06/15(火) 14:48:09.92ID:D4jRQBdQ
>>721
権限も引き継ぐから何もやってないのと同じ
2021/06/15(火) 15:23:52.83ID:uDm4jDy6
>>726
XXな人が使うイディオム
2021/06/16(水) 08:06:02.87ID:drc75L4c
微妙に関係しそうだから恥をしのんで
()のサブシェルで手軽にサブシェルのID得る方法ってないかな?
パラメタ展開をエイリアスで遅延テクは、エイリアスが行頭に来る必要があるので、おもむろに書ける()の利点が無くなるかなと
2021/06/16(水) 09:57:22.10ID:up1ZHWjO
echo $$
ではダメなの?
2021/06/16(水) 10:13:45.13ID:drc75L4c
>>731
()の中の$$は親シェルのpidを返すのよ
それこそsh -cに(適当にエスケープした)文字列としてecho $$を渡せって話だけど、折角分かりやすい()構文があるのだから、その範囲内で何かワークアラウンドできないなと
733デフォルトの名無しさん
垢版 |
2021/06/17(木) 17:40:01.55ID:uOhhE14V
このようなファイルがあります。
先頭の単語+デリミタ(今回はカンマ)以降の文字を全て削除したい場合は
sedでどのように書けばいいでしょうか?

one,no need word, no need word
two,no need word, no need word
theree,no need word, no need word
four,no need word, no need word
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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