21/02/04 12:41:51.48 Jn7zqfXf.net
自己紹介
831:デフォルトの名無しさん
21/02/07 19:23:43.78 95HB2PSV.net
$find . -type f -name '*.mp4' -exec sh -c "echo /Applications/Safari.app " \;
/Applications/Safari.app
/Applications/Safari.app
$find . -type f -name '*.mp4' -exec sh -c "echo $dirname /Applications/Safari.app " \;
/Applications/Safari.app
/Applications/Safari.app
$dirname /Applications/Safari.app
/Applications
どうして2番目の例ではdirnameが作用していないように見えるのですか?
832:デフォルトの名無しさん
21/02/07 19:26:54.39 yqZHDrnv.net
しらんけどダブクォだろ
833:デフォルトの名無しさん
21/02/07 19:30:49.83 urVbT3ji.net
$dirname /Applications/Safari.app
だと、dirnameという変数を展開しようとしてるだけだろ
dirnameというコマンドを実行するのではなく
コマンドプロンプトのとちょっと見分けづらいのでちゃんとスペースを置くべきだな
834:デフォルトの名無しさん
21/02/07 19:34:34.15 /Qje/xZk.net
何がしたいの?
835:デフォルトの名無しさん
21/02/07 19:39:40.46 urVbT3ji.net
さっぱりわからんなw
動作確認の途中なんだろう。findしても同じ結果出すだけだしな
そのうち {} とか入れたりするんだろうが、
実行したいなら $() だろう
-exec sh -c "
は
-exec sh -c '
でないとマズそうマズいだろうな
な感じかなあ
836:デフォルトの名無しさん
21/02/07 20:30:53.02 /kKFnkGm.net
${~} だろ
echo ${dirname}/Applications/Safari.app
837:デフォルトの名無しさん
21/02/07 23:59:19.31 rB7egHB7.net
パラメータ展開よりbasename/dirnameコマンドのほうが分かりやすいね
~$ DIR='/ChonChon/Chon.bak'
~$ basename $DIR
Chon.bak
~$ echo ${DIR##*/}
Chon.bak
~$ basename $DIR
Chon.bak
~$ echo ${DIR#*/}
ChonChon/Chon.bak
~$ echo ${DIR##*/}
Chon.bak
~$ echo ${DIR%/*}
/ChonChon
~$ echo ${DIR%%/*}
~$ dirname $DIR
/ChonChon
838:831
21/02/08 00:07:37.75 vQsk29JM.net
ありがとうございます
変数になっていることに気づいていませんでした
find -exec sh -cで複数コマンドを扱うのは諦めforを使って解決しました
>>833 スペースをどう置くとどう見分けやすくなりますか?
>>834 質問に関係ある部分だけ抜き出したので意味不明なものになっています
839:デフォルトの名無しさん
21/02/08 01:01:47.00 mwZivU/L.net
>>837
わかりやすさ vs 実行速度の話だね
さくっとコマンド入力する時はbasenameでいいけど
シェルスクリプトであればパラメーター展開のほうがいい
840:デフォルトの名無しさん
21/02/08 02:02:04.12 MxYuS/Yw.net
>>838
$ find . -type f -name '*.mp4' -exec sh -c "echo $dirname /Applications/Safari.app " ¥;
$ dirname /Applications/Safari.app
841:デフォルトの名無しさん
21/02/08 17:24:23.44 TrZhHLZT.net
# sudo apt install xclip
CLIPB=$(xclip -o)
echo $( basename $CLIPB )
842:デフォルトの名無しさん
21/02/08 19:08:48.56 0fSH6U0R.net
Ruby なら、glob を使う
# . で始まる、隠し directory, file を除く
glob_pattern = "C:/Users/Owner/Documents/*.csv"
Dir.glob( glob_pattern )
.select { |full_path| File.file?( full_path ) } # ファイルのみ
.each { |full_path| puts full_path }
出力
C:/Users/Owner/Documents/a.csv
C:/Users/Owner/Documents/b.csv
843:デフォルトの名無しさん
21/02/08 19:27:57.47 5qp7IeLu.net
すでにroot
844:デフォルトの名無しさん
21/02/08 19:29:24.19 5qp7IeLu.net
Rubyなら~
C:/
特異すぎ
845:デフォルトの名無しさん
21/02/08 20:15:13.87 luijRT1t.net
なぜ定期的にRubyが出てくるのか
846:842
21/02/08 20:50:44.33 0fSH6U0R.net
シェルスクリプトも、Windows 10, WSL2, Ubuntu 18.04, VSCode でやってる
Ruby は、Linux用・Windows用の両方を入れてる
847:デフォルトの名無しさん
21/02/08 20:53:25.78 kogF3g22.net
>>845
久しぶりだけどなw
なんて言われてるかは上の方であるな
トンチンカンなレスしてるとこからもトンチンカンな承認欲求なんだろう
848:831
21/02/09 16:10:25.08 KQyT9obu.net
>>840
ありがとうございます
849:デフォルトの名無しさん
21/02/10 14:26:08.93 BVEov/zu.net
Alpine?busyboxってコマンド追加した場合の競合どうなってるんですかね?
たとえばdateがGNU版と挙動が違うのでcoreutils追加したんですけど
元々/bin/dateだったのが追加後も/bin/dateのままなのに呼び出されるのはしっかりcoreutilsのに変わってます
macではdateとgdateで使い分けられたのでモヤモヤします
850:デフォルトの名無しさん
21/02/10 15:19:36.03 kdTQDXtx.net
汎用ではなくカスタマイズした環境前提だからそんなの気にしない
置き換わっても置き換わるのを知って作るそういう独自の環境を自ら望んで作る