Bash - GNU Project - Free Software Foundation
https://www.gnu.org/software/bash/
Bashでプログラミング [転載禁止]©2ch.net
1ピラフ
2015/10/04(日) 00:11:42.24ID:KQhWWZXy2015/11/23(月) 17:17:23.97ID:HMW3Nv9o
echo -e \\0055e
2015/11/23(月) 17:25:37.43ID:m+EccjTy
あー、うん、せやね。
-eだけじゃなくて-nもだめだし-eneもだめ
さて$aに任意の文字が入っている時、それをechoで問題なく出力するにはどうするか?
もちろん、$aに \e[33m のような文字列が入っていることがあるが、
printf "%s\n" $a と同じようにそのまま出力するというのが条件。
とまで書かないといかんよね。
-eだけじゃなくて-nもだめだし-eneもだめ
さて$aに任意の文字が入っている時、それをechoで問題なく出力するにはどうするか?
もちろん、$aに \e[33m のような文字列が入っていることがあるが、
printf "%s\n" $a と同じようにそのまま出力するというのが条件。
とまで書かないといかんよね。
89login:Penguin
2015/11/24(火) 10:07:24.30ID:xf2Nfg3B bashでは知らないけどzshでは
echo e- |rev
とすると表示できたよ。
echo e- |rev
とすると表示できたよ。
2015/11/24(火) 14:55:58.31ID:jlJmLfSH
a="-e"
echo "$a" |rev
zshでも表示されねーじゃねーかwww
echo "$a" |rev
zshでも表示されねーじゃねーかwww
91login:Penguin
2015/11/24(火) 15:25:38.09ID:xf2Nfg3B echo $'\0'$a
92login:Penguin
2015/11/24(火) 15:35:52.95ID:xf2Nfg3B いや、その条件ならa='e-'にしてrevするべきだろ。
2015/11/24(火) 15:38:52.15ID:jlJmLfSH
条件は $a に -e が入っている場合なんですが?
もちろん $a には-e だけじゃなくて、-n や -ene や
e-が入っていることもあります。
もちろん $a には-e だけじゃなくて、-n や -ene や
e-が入っていることもあります。
2015/11/24(火) 15:44:01.15ID:jlJmLfSH
95login:Penguin
2015/11/24(火) 15:46:08.87ID:xf2Nfg3B そんな偉そうに言われてもな。89にたいする90の解答って..
96login:Penguin
2015/11/24(火) 15:46:57.54ID:xf2Nfg3B そりゃ増えるよ。見たまんま増やしてるのだから。
2015/11/24(火) 16:11:17.98ID:jlJmLfSH
? ネタ回答はいらんって話だよ。
2015/11/24(火) 23:41:07.34ID:zPMHS13p
Bashでツールを作ったんですけど、ここで紹介するのありですか?
ソースコードはかなりまじめに書いています。
ドキュメントと仕上げでもう少しだけ時間が掛かりそうですけど。
ソースコードはかなりまじめに書いています。
ドキュメントと仕上げでもう少しだけ時間が掛かりそうですけど。
99ピラフ ◆9Jro6YFwm650
2015/11/24(火) 23:51:49.15ID:uXBTKSJE >>98
┓┏
(^ω^) アリだっ!
┌.ゝ .ノ┐
┌'、_丿┐
┛ ┗
┓┏
(^ω^) アリだっ!
┌.ゝ .ノ┐
┌'、_丿┐
┛ ┗
2015/11/25(水) 00:23:32.51ID:ndEs85Cz
つ 穴を塞ぐ
2015/11/25(水) 00:43:00.55ID:cNzVYyHb
>>99
じゃあ、終わったら連絡しますね。
じゃあ、終わったら連絡しますね。
2015/11/25(水) 15:14:14.21ID:zaXwxH/w
>>72
> while (( i <= 3 )); do
> echo pilaf
> (( i++ ))
> done
((i++)) 【let i=++】と
((i+=1)) 【let i=i+1】と
i=$((i+1)) は
厳密には違う。
i=0; ((i++)); echo $? => 1
i=0; ((i+=1)); echo $? => 0
i=0; i=$((i+1)); echo $? => 0
i=-1; ((i++)); echo $? => 0
i=-1; ((i+=1)); echo $? => 1
i=-1; i=$((i+1)); echo $? => 0
set -e をしていると、その場で終了してしまうことになる。
計算のみの用途として、安心して使えるのは i=$((i+1)) だ
> while (( i <= 3 )); do
> echo pilaf
> (( i++ ))
> done
((i++)) 【let i=++】と
((i+=1)) 【let i=i+1】と
i=$((i+1)) は
厳密には違う。
i=0; ((i++)); echo $? => 1
i=0; ((i+=1)); echo $? => 0
i=0; i=$((i+1)); echo $? => 0
i=-1; ((i++)); echo $? => 0
i=-1; ((i+=1)); echo $? => 1
i=-1; i=$((i+1)); echo $? => 0
set -e をしていると、その場で終了してしまうことになる。
計算のみの用途として、安心して使えるのは i=$((i+1)) だ
2015/11/25(水) 15:20:15.61ID:zaXwxH/w
よく見たらこの例はiが1から始まってるから大丈夫か。
104ピラフ ◆9Jro6YFwm650
2015/11/25(水) 23:57:59.28ID:qKKURXkV >>102
((φ(・Д´・ *)ホォホォ 勉強になります!!
((φ(・Д´・ *)ホォホォ 勉強になります!!
105ピラフ ◆9Jro6YFwm650
2016/01/01(金) 01:37:32.67ID:OSOvSqc1 ○
/⌒\ (__)
\●/(__)/⌒\
∩ (・∀・ )\●/ あけおめ
Y  ̄ ||y||  ̄`''φ
Lノ /ニ|| ! ソ >
乂/ノ ハ ヽー´
`ー-、__|
/⌒\ (__)
\●/(__)/⌒\
∩ (・∀・ )\●/ あけおめ
Y  ̄ ||y||  ̄`''φ
Lノ /ニ|| ! ソ >
乂/ノ ハ ヽー´
`ー-、__|
106ピラフ ◆9Jro6YFwm650
2016/01/01(金) 01:42:34.66ID:OSOvSqc1 曜日の定数を自動生成しちゃう
for i in $(seq 0 6); do
date -d "$i days" "+%A %w"
done | sort -k 2 | sed -e "s/ /=/" | sed -e "s/^/readonly /"
for i in $(seq 0 6); do
date -d "$i days" "+%A %w"
done | sort -k 2 | sed -e "s/ /=/" | sed -e "s/^/readonly /"
107ピラフ ◆9Jro6YFwm650
2016/01/01(金) 01:43:48.83ID:OSOvSqc1 >>106
結果がこれ
readonly Sunday=0
readonly Monday=1
readonly Tuesday=2
readonly Wednesday=3
readonly Thursday=4
readonly Friday=5
readonly Saturday=6
結果がこれ
readonly Sunday=0
readonly Monday=1
readonly Tuesday=2
readonly Wednesday=3
readonly Thursday=4
readonly Friday=5
readonly Saturday=6
2016/01/05(火) 14:14:58.50ID:tOHAFEvw
2016/01/05(火) 19:46:11.96ID:btsG67QP
bash使うなら曜日名は配列に格納しておいて入ってくる引数を添字として使えばいいんでないの?
110login:Penguin
2016/02/06(土) 12:04:35.15ID:yPG1W7x/ PATH の中に空の : があると、カレントディレクトリがコマンドサーチパスに含まれてしまいますが、
環境変数が空であった等の理由により、空の : (ex /usr/local/sbin::/usr/local/bin など)が
パスに含まれてしまうことはよくあります。
カレントディレクトリがコマンドサーチパスに含まれるのはセキュリティーホールになりかねないので、
PATHに空の : が含まれないようにしたいのですが、よい方法はないでしょうか?
環境変数が空であった等の理由により、空の : (ex /usr/local/sbin::/usr/local/bin など)が
パスに含まれてしまうことはよくあります。
カレントディレクトリがコマンドサーチパスに含まれるのはセキュリティーホールになりかねないので、
PATHに空の : が含まれないようにしたいのですが、よい方法はないでしょうか?
2016/02/06(土) 15:12:52.27ID:OQYFu5/W
よくあるなんてことはない
2016/02/06(土) 15:34:21.77ID:ToE+zhkT
変数が空なら何も入れないようにすればいいじゃないですか?
2016/02/06(土) 15:37:43.31ID:ToE+zhkT
そもそもPATHに使われる環境変数が空であることはありえないはずなんだがね。
普通PATHに使われる変数には、定数として決め打ちのパスが代入されているはず。
なぜならば、空が入る可能性があるということは、
空以外の任意の文字列が入るということだろう?
であれば、環境変数に "./" が入ることがあるかもしれないし
"/malware/" という値が入るかもしれない。
カレントディレクトリだけを不正だって意味は無い。
普通PATHに使われる変数には、定数として決め打ちのパスが代入されているはず。
なぜならば、空が入る可能性があるということは、
空以外の任意の文字列が入るということだろう?
であれば、環境変数に "./" が入ることがあるかもしれないし
"/malware/" という値が入るかもしれない。
カレントディレクトリだけを不正だって意味は無い。
2016/02/06(土) 17:53:03.07ID:yPG1W7x/
>空であることはありえないはずなんだがね。
そうなんですか、現在の環境じゃインストール後、マニュアル操作で PATH をいじっていないので、
そういうもんだと思っていたのですが、何か問題があるようですね。
どこでそうなってるいるか調べてみます。
そうなんですか、現在の環境じゃインストール後、マニュアル操作で PATH をいじっていないので、
そういうもんだと思っていたのですが、何か問題があるようですね。
どこでそうなってるいるか調べてみます。
115110,114
2016/02/06(土) 20:27:21.72ID:yPG1W7x/ わかりました。
<アプリ名>_HOME=<アプリのインストールパス> # この <アプリ名>_HOME は関連ツールから参照される
PATH=$PATH:<アプリ名>_HOME/bin
みたいな記述で、最初の 「<アプリ名>_HOME」 のスペルが間違っていました。
このアプリをすぐ使っていれば気づいたはずですが、インストールした後ほかが忙しくて
ほったらかしにしていたので気づかなかったというオチです。
どうもお騒がせしました。
<アプリ名>_HOME=<アプリのインストールパス> # この <アプリ名>_HOME は関連ツールから参照される
PATH=$PATH:<アプリ名>_HOME/bin
みたいな記述で、最初の 「<アプリ名>_HOME」 のスペルが間違っていました。
このアプリをすぐ使っていれば気づいたはずですが、インストールした後ほかが忙しくて
ほったらかしにしていたので気づかなかったというオチです。
どうもお騒がせしました。
2016/02/09(火) 22:51:43.16ID:1eA4ku59
配列の代入(複製)というのはどうやればできるのでしょうか。
117login:Penguin
2016/03/08(火) 14:41:04.49ID:ZfpEki75 x='123'
y=`date +%m | sed 's/^0//' `
z= expr $y "*" 1000 + $x
cat k-m | sed 's/PPP/$z/'
で ファイル k-mのPPP値を3123に変えたいのですが
$zではだめです。
どうしたらいいでしょう。
y=`date +%m | sed 's/^0//' `
z= expr $y "*" 1000 + $x
cat k-m | sed 's/PPP/$z/'
で ファイル k-mのPPP値を3123に変えたいのですが
$zではだめです。
どうしたらいいでしょう。
2016/03/08(火) 14:48:48.74ID:B0X8XFR+
119login:Penguin
2016/03/08(火) 15:49:59.75ID:ZfpEki75 すまん
echo 'port=PPP' > test
cat test
x=2
sed 's/PPP/'"$x"'/' test
は問題ない。
長いファイルではダメなのかな?
echo 'port=PPP' > test
cat test
x=2
sed 's/PPP/'"$x"'/' test
は問題ない。
長いファイルではダメなのかな?
2016/03/08(火) 17:54:50.78ID:B0X8XFR+
cat test の意味は?
必要最小限にしないからわからんのよ。
testの中身の文字もさ、限界ギリギリまで減らしてみて
必要最小限にしないからわからんのよ。
testの中身の文字もさ、限界ギリギリまで減らしてみて
2016/03/08(火) 17:55:43.82ID:B0X8XFR+
修正
限界ギリギリまで減らした状態での
動く場合 と 動かない場合 の
2つのパターンを書いてみて
限界ギリギリまで減らした状態での
動く場合 と 動かない場合 の
2つのパターンを書いてみて
122login:Penguin
2016/03/10(木) 09:06:25.61ID:gEv7eiQN k1の内容が
media_dir=/home/foge/Downloads/
network_interface=eth0
port=PPP
serial=6810
で 、シェルクリプトが
z=55555
sed 's/PPP/'
media_dir=/home/foge/Downloads/
network_interface=eth0
port=PPP
serial=6810
で 、シェルクリプトが
z=55555
sed 's/PPP/'
123login:Penguin
2016/03/10(木) 09:49:42.62ID:gEv7eiQN あれ 尻切れとんぼ
z=5555
sed 's/PPP/'"$z"'/' k1 の時はOK。
x='123'
y=`date +%m | sed 's/^0//' `
z= expr $y "*" 1000 + $x
echo $z
sed 's/PPP/'"$z"'/' k1 はだめ
z=5555
sed 's/PPP/'"$z"'/' k1 の時はOK。
x='123'
y=`date +%m | sed 's/^0//' `
z= expr $y "*" 1000 + $x
echo $z
sed 's/PPP/'"$z"'/' k1 はだめ
2016/03/10(木) 09:57:45.77ID:1kGddc4A
だからね。
動くやつはそれでいいよ。
動かない方、どこまで想定通りに動いているのか?
想定通りに動いているところは省略して、
想定通りに動いていない所だけ書いてって話をしてるんだよ。
動くやつはそれでいいよ。
動かない方、どこまで想定通りに動いているのか?
想定通りに動いているところは省略して、
想定通りに動いていない所だけ書いてって話をしてるんだよ。
125login:Penguin
2016/03/10(木) 10:56:36.03ID:gEv7eiQN 了解
echo $z
で確かに$zには想定とおりの値がでてくる。
しかし sed 's/PPP/'"$z"'/' k1 はだめ。
'"$z"' がいけないと思う。 だが 分からない。
echo $z
で確かに$zには想定とおりの値がでてくる。
しかし sed 's/PPP/'"$z"'/' k1 はだめ。
'"$z"' がいけないと思う。 だが 分からない。
126login:Penguin
2016/03/10(木) 11:24:11.01ID:gEv7eiQN きたならしく 一応できた。 ./s4 `./s5` で。
k1 は既出。 minisldaのポートを安全改善のため毎月変えようと思って
cat s4
awk '{sub("PPP", "'$1'" ); print $0;}' k1
cat s5
x='10000'
y=`date +%m | sed 's/^0//' `
z= expr $y "*" 10 + $x
echo $z
k1 は既出。 minisldaのポートを安全改善のため毎月変えようと思って
cat s4
awk '{sub("PPP", "'$1'" ); print $0;}' k1
cat s5
x='10000'
y=`date +%m | sed 's/^0//' `
z= expr $y "*" 10 + $x
echo $z
127login:Penguin
2016/03/10(木) 11:56:18.43ID:NdYWsqwM それは echo ではなく expr が出力している。
z=`expr $y "*" 1000 + $x`
sed "s/PPP/$z/" k1
でいいんじゃないの? これでちゃんと動いたよ。
z=`expr $y "*" 1000 + $x`
sed "s/PPP/$z/" k1
でいいんじゃないの? これでちゃんと動いたよ。
128login:Penguin
2016/03/10(木) 12:28:00.31ID:gEv7eiQN shellが違うんでしょうね、うちでは 下ではエラー expr: syntax error
z=`expr $y "*" 1000 + $x`
echo $z
使ってるのは OS :armbian で シェルは わからない
z=`expr $y "*" 1000 + $x`
echo $z
使ってるのは OS :armbian で シェルは わからない
129login:Penguin
2016/03/10(木) 22:00:45.11ID:NdYWsqwM 多分、勘違いしているのはここ。
z= expr $y "*" 10 + $x
これは一時的に環境を変更した上でコマンドを起動するための構文。
bash の man の 2520 行目辺りに書かれている。
この場合は環境変数 z に空文字列をセットして expr を起動する。
そして、それが終わったらもう z は存在しない。
だから echo では何も出力されない。
z= expr $y "*" 10 + $x
これは一時的に環境を変更した上でコマンドを起動するための構文。
bash の man の 2520 行目辺りに書かれている。
この場合は環境変数 z に空文字列をセットして expr を起動する。
そして、それが終わったらもう z は存在しない。
だから echo では何も出力されない。
2016/03/25(金) 11:08:22.48ID:BrsvjcQb
環境変数 $BASH_COMMAND で最後に実行したコマンドが取得できますが
ほんとに最後に実行したコマンドなので
ls | cat
みたいにしたときに当然ながら cat しか取れません
最後に実行したときのコマンドラインに打った文字列
を取得するにはどうしたらよいでしょうか
ほんとに最後に実行したコマンドなので
ls | cat
みたいにしたときに当然ながら cat しか取れません
最後に実行したときのコマンドラインに打った文字列
を取得するにはどうしたらよいでしょうか
2016/03/25(金) 11:21:48.13ID:Wj6xxs6s
historyあたりで頑張るとか
2016/03/25(金) 11:33:33.72ID:BrsvjcQb
133login:Penguin
2016/03/31(木) 08:26:58.05ID:gSxvuyP1 Windows10搭載ってまじかよ
2016/03/31(木) 12:19:44.47ID:lhT3jASv
2016/04/01(金) 10:00:39.79ID:+PxKnYGY
curlでAPI叩いてるんだけど返事帰ってくるまでCreating..........みたいに....を増やしたい
どういうふうに書けばいい?
どういうふうに書けばいい?
2016/04/01(金) 10:23:48.01ID:2l1U0Mzg
2016/04/01(金) 10:48:52.54ID:+PxKnYGY
1秒ごとにチェックして生きてたら....を出力死んでたらそのままみたいなことか
やってみるわ
やってみるわ
138login:Penguin
2016/04/01(金) 16:24:42.97ID:YrmxN89w windowsでbaプロできるようになるみたいですね(´・ω・`)
2016/04/01(金) 19:49:29.08ID:opN9G6gR
HOGEDIR="${HOME}/path/to/directory" のように既存のディレクトリへのpathを変数に入れたら下記のような感じで実在チェックした方がいいんでしょうか?
自分は転ばぬ先の杖だと思って(事実、何度かtypoしてます)書くようにしていますが……
if test ! -d "$HOGEDIR"; then
echo '$HOGEDIR is *NOT* a Directory!' 1>&2
exit 1
fi
自分は転ばぬ先の杖だと思って(事実、何度かtypoしてます)書くようにしていますが……
if test ! -d "$HOGEDIR"; then
echo '$HOGEDIR is *NOT* a Directory!' 1>&2
exit 1
fi
2016/04/01(金) 20:48:16.55ID:pqGjBE9F
変数に入れるかどうかは実在チェックの必要性に変化を与えるものではない
2016/04/01(金) 21:01:52.69ID:FfS85Ldg
だがその実在性が極めて疑わしい性的な穴隙に変化を与えられた私はそれに入れる事を夢想し夢精するものである
2016/04/02(土) 12:51:53.29ID:2K6xkzqa
セキュリティにも穴はあるんだよな・・・
143login:Penguin
2016/05/09(月) 14:51:55.56ID:tGlvk2AC exec 3>$1
みたいにファイルディスクリプタを指定するとき
すでに使われるディスクリプタ番号を避けたいんだけど
どうしたらいいの?
みたいにファイルディスクリプタを指定するとき
すでに使われるディスクリプタ番号を避けたいんだけど
どうしたらいいの?
2016/05/09(月) 15:18:10.05ID:1X5m9uCK
Bash詳説みたいな本ないかな?
やっぱオライリーか…
やっぱオライリーか…
2016/05/10(火) 04:31:28.39ID:D4kfzW96
open とか、複製する dup でも、未使用のファイルディスクリプタを使う
146login:Penguin
2016/05/22(日) 16:49:48.48ID:q7UTLg4q SoftwareDesign 6月号、1,220円 + 税
特集、Bash 再入門・MySQL
特集、Bash 再入門・MySQL
2016/05/22(日) 17:04:20.44ID:uBlhVZDB
>>145
どうやって?
どうやって?
2016/05/23(月) 08:00:46.64ID:MmvCX7kr
最近の言語に慣れると
コマンドラインベースの言語って理解しにくいね
コマンドを文字型変数として理解しようとしてハマる
コマンドラインベースの言語って理解しにくいね
コマンドを文字型変数として理解しようとしてハマる
2016/05/25(水) 19:15:04.18ID:A0i8LpMi
debianとかubuntuにはwhiptailなんてのがデフォルトであるらしい
今まで選択候補をcat -b >&2してからread REPLY </dev/ttyしていたのをさっそく書き換えてみた
けっこうすっきり書けて個人的には大満足
今まで選択候補をcat -b >&2してからread REPLY </dev/ttyしていたのをさっそく書き換えてみた
けっこうすっきり書けて個人的には大満足
2016/07/19(火) 14:21:22.35ID:W6/OJD/n
コンソールにできたバイナリを16進で出力するにはどうしたら良いですかね
2016/07/19(火) 15:29:25.71ID:yBnV/0hR
>>150
hexdumpやodで出力すればいいんじゃないですかね
hexdumpやodで出力すればいいんじゃないですかね
152login:Penguin
2016/09/07(水) 13:04:02.24ID:Zv6pU7x4 背景色を一気に変更したい
2016/09/08(木) 01:20:29.54ID:4a9rtSBz
「linux 端末 色」で検索!
154login:Penguin
2017/11/07(火) 14:00:12.38ID:3IDunlyg 関数を定義したshファイルを実行したあと、その関数を使いたいんだけど
どうしたらいいの?
どうしたらいいの?
2017/11/07(火) 14:24:33.56ID:As8jAu29
2017/11/08(水) 06:57:36.00ID:N8l/Vn75
>>154
.
.
157login:Penguin
2017/12/29(金) 13:13:26.87ID:S/CsVkMC 誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。
グーグル検索⇒『宮本のゴウリエセレレ』
2UMY6SSHSE
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。
グーグル検索⇒『宮本のゴウリエセレレ』
2UMY6SSHSE
2018/02/15(木) 07:37:05.23ID:m3isa15O
☆ 私たち日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
159login:Penguin
2018/05/22(火) 11:10:50.11ID:Czl6p0FW 僕の知り合いの知り合いができた副業情報ドットコム
関心がある人だけ見てください。
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
FOJ8E
関心がある人だけ見てください。
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
FOJ8E
160login:Penguin
2018/08/15(水) 15:18:59.23ID:dfDlag4t てst
161login:Penguin
2018/08/15(水) 15:20:23.48ID:dfDlag4t html form で書き込み送信URLエンコードされた文字列をURLデコードした後
変数Aに格納したあと 改行コードを html改行コードに変換したいのですが 改行コードがバイナリコードで格納されているため
変換がうまくできません bash でうまく変換するコードってなにかないですか?
変数Aに格納したあと 改行コードを html改行コードに変換したいのですが 改行コードがバイナリコードで格納されているため
変換がうまくできません bash でうまく変換するコードってなにかないですか?
162login:Penguin
2018/08/15(水) 15:21:00.64ID:dfDlag4t html form で書き込み送信URLエンコードされた文字列をURLデコードした後
変数Aに格納したあと 改行コードを < b r >に変換したいのですが 改行コードがバイナリコードで格納されているため
変換がうまくできません bash でうまく変換するコードってなにかないですか?
変数Aに格納したあと 改行コードを < b r >に変換したいのですが 改行コードがバイナリコードで格納されているため
変換がうまくできません bash でうまく変換するコードってなにかないですか?
163login:Penguin
2018/08/15(水) 17:04:04.34ID:dfDlag4t 解決しました
なぜか sed のパイプで変換できなかった
trのパイプで変換してなんとかなりました
なぜだろう?
なぜか sed のパイプで変換できなかった
trのパイプで変換してなんとかなりました
なぜだろう?
2018/08/16(木) 19:43:27.04ID:I7VrLkNo
>163
sedで改行をどうこうするのは意外とハイレベルな知識が要るからかな
単に改行を置換したいだけならtr使うほうが筋がいいと思う
sedで改行をどうこうするのは意外とハイレベルな知識が要るからかな
単に改行を置換したいだけならtr使うほうが筋がいいと思う
165login:Penguin
2018/08/17(金) 21:35:15.57ID:jq4Ra/PN >>164
urlエンコードから飛んできた文字列をURLデコードした後の文字列はecho
なんかで出力しても隠れてみえない \n が見えない
アスキーコードで書かれた文字列はsedじゃ無理?のようなきがする
urlエンコードから飛んできた文字列をURLデコードした後の文字列はecho
なんかで出力しても隠れてみえない \n が見えない
アスキーコードで書かれた文字列はsedじゃ無理?のようなきがする
2018/08/17(金) 21:45:02.38ID:x+SQYw9w
POSIXのコマンドも今の人達が再設計すれば
もっと良いものが作れるんだろうな
もっと良いものが作れるんだろうな
2018/08/18(土) 00:38:01.74ID:hWfi1+lO
素直にUnix2dos、dos2unix使おう、な?
2019/05/21(火) 23:09:17.57ID:oXRLq/xt
eval使って文字列内で実行するコマンドの返却値も標準出力も取りたいんですがどうしたらいいですか?
evalに渡すのはcurlでhttp取得なんですがurlが変わるのでそこを変数から実行したいんですが$?はevalの結果でcurlのものが取れないんです
evalに渡すのはcurlでhttp取得なんですがurlが変わるのでそこを変数から実行したいんですが$?はevalの結果でcurlのものが取れないんです
169login:Penguin
2020/01/02(木) 23:47:15.29ID:Vb52hemx mysqlで特定の接頭辞がつくテーブルを検索し一括で削除したいのですが、クォーテション処理でうまく動作してくれません
grepで特定の接頭辞を検索してxargsで引数を渡してるのですが、xargs以降のエスケープしたりシングル・ダブルクォートと入れ替えたり
してるのですがうまくいきません。(-pで実行コマンドも確認しました。)
どなたかうまい書き方が分かる方いませんか?
mysql -u ユーザー名 -p -e 'SHOW TABLES FROM テーブル名' |grep 接頭辞_* |xargs -pI '{}' mysql -u ユーザー名 -p -e 'DROP TABLE テーブル名.\'{}\''
grepで特定の接頭辞を検索してxargsで引数を渡してるのですが、xargs以降のエスケープしたりシングル・ダブルクォートと入れ替えたり
してるのですがうまくいきません。(-pで実行コマンドも確認しました。)
どなたかうまい書き方が分かる方いませんか?
mysql -u ユーザー名 -p -e 'SHOW TABLES FROM テーブル名' |grep 接頭辞_* |xargs -pI '{}' mysql -u ユーザー名 -p -e 'DROP TABLE テーブル名.\'{}\''
2020/01/04(土) 17:21:02.76ID:E3O62f92
実際に使って知ってる人が助けてくれるんじゃないかと思って見てたけど来ないね。
まあ、「うまくいきません」だけじゃ無理か。
同様なことを SQLite でやるとしたらこんな感じかな。
dbname='test.db'
prefix='a'
echo .table | sqlite3 "$dbname" | tr -s ' ' '\012' |
sed -e "/^$prefix/!d" -e 's/^/drop table / ; s/$/;/ ;' |
sqlite3 "$dbname"
一般的な話として、引数で渡すためにはシェルの文法に従う必要があるから
それを大変だと思うならパイプを使えばいいと思うよ。
そういう使い方ができる場合はね。
3 日近く経ってるし、もう自分で解決してるよね。
まあ、「うまくいきません」だけじゃ無理か。
同様なことを SQLite でやるとしたらこんな感じかな。
dbname='test.db'
prefix='a'
echo .table | sqlite3 "$dbname" | tr -s ' ' '\012' |
sed -e "/^$prefix/!d" -e 's/^/drop table / ; s/$/;/ ;' |
sqlite3 "$dbname"
一般的な話として、引数で渡すためにはシェルの文法に従う必要があるから
それを大変だと思うならパイプを使えばいいと思うよ。
そういう使い方ができる場合はね。
3 日近く経ってるし、もう自分で解決してるよね。
171login:Penguin
2020/01/05(日) 20:01:18.77ID:IPuUazgK そもそも何が問題なのかわからんしなぁ
xargs使う理由もわからんし。俺ならそんな使い方しない。
たくさんのDROP TABLE文で埋め尽くされたSQLファイルを作ってを実行するとかさぁ
いやテーブル名羅列するだけでいいのか
grepでテーブル名引っ張るとかあり得んし。
SHOW TABLES FROMはこの場合に適切なんだっけ?
ああ、思い出したINFORMATION SCHEMA.TABLESとかあったなぁ
ともかくシェルスクリプトでやることじゃないよね
なんのために問い合わせが得意なRDBMS使ってるのさ?
xargs使う理由もわからんし。俺ならそんな使い方しない。
たくさんのDROP TABLE文で埋め尽くされたSQLファイルを作ってを実行するとかさぁ
いやテーブル名羅列するだけでいいのか
grepでテーブル名引っ張るとかあり得んし。
SHOW TABLES FROMはこの場合に適切なんだっけ?
ああ、思い出したINFORMATION SCHEMA.TABLESとかあったなぁ
ともかくシェルスクリプトでやることじゃないよね
なんのために問い合わせが得意なRDBMS使ってるのさ?
2020/01/06(月) 00:00:10.35ID:FtTPVMr3
「LIKE」句を使って、テーブル名で絞り込む。
最後に「meta」で終わるテーブルだけを表示したい
mysql> SHOW TABLES FORM wordpress LIKE "%meta";
「mysql show tables」で検索!
最後に「meta」で終わるテーブルだけを表示したい
mysql> SHOW TABLES FORM wordpress LIKE "%meta";
「mysql show tables」で検索!
173login:Penguin
2020/01/08(水) 21:40:32.43ID:l1od5Fw+ >>170, 171, 172
レスが遅くなって申し訳ありません。
CMSのインストール・削除のトライアンドエラーを
繰り返しているうちにテーブルが増えてきてしまった次第です。
やりたいことは、たくさんあるテーブルの中から
特定の接頭辞が付くテーブルだけを検索し削除したいです。
`drop table from 〇〇`でググるとかなりの割合の方が
bashでmysqlのコマンドを書いて力技で削除しているようでした。
当方もそれに習って色々試したのですが、
うまく動作せずに困っておりました。
こういった場合の無駄なくシンプルに削除するに
適切なコマンドはどうしたらよいのでしょうか?
レスが遅くなって申し訳ありません。
CMSのインストール・削除のトライアンドエラーを
繰り返しているうちにテーブルが増えてきてしまった次第です。
やりたいことは、たくさんあるテーブルの中から
特定の接頭辞が付くテーブルだけを検索し削除したいです。
`drop table from 〇〇`でググるとかなりの割合の方が
bashでmysqlのコマンドを書いて力技で削除しているようでした。
当方もそれに習って色々試したのですが、
うまく動作せずに困っておりました。
こういった場合の無駄なくシンプルに削除するに
適切なコマンドはどうしたらよいのでしょうか?
2020/01/08(水) 22:01:09.19ID:i7Ggys1A
なんでわざわざ手間がかかることするかね?自動化したいんじゃないだろ?
>>172みたいに該当するテーブル一覧でもだして、テキストエディタでも使って
drop table from table1
drop table from table2
drop table from table3
とかいうSQL作って、それを実行すりゃいいやん
シンプルにしたいんだろ?なんでわざわざxargsとか使って複雑なものを作ろうとしてるんだ
自動化したいなら↑の内容を一つづつ自動化しろ。いっぺんにやろうとすんなよ。
1. テーブル一覧を、drop table from ○○にしやすいようにテーブル名のみの出力にしろ
2. テーブル名のリストをdrop table from ○○のリストに変換するスクリプトを作れ
3. そのスクリプトの出力をmysqlコマンドに流せ
これだけだろ
> ググるとかなりの割合の方が
ググるとかなりの割合の方が馬鹿なだけ
>>172みたいに該当するテーブル一覧でもだして、テキストエディタでも使って
drop table from table1
drop table from table2
drop table from table3
とかいうSQL作って、それを実行すりゃいいやん
シンプルにしたいんだろ?なんでわざわざxargsとか使って複雑なものを作ろうとしてるんだ
自動化したいなら↑の内容を一つづつ自動化しろ。いっぺんにやろうとすんなよ。
1. テーブル一覧を、drop table from ○○にしやすいようにテーブル名のみの出力にしろ
2. テーブル名のリストをdrop table from ○○のリストに変換するスクリプトを作れ
3. そのスクリプトの出力をmysqlコマンドに流せ
これだけだろ
> ググるとかなりの割合の方が
ググるとかなりの割合の方が馬鹿なだけ
175login:Penguin
2020/01/09(木) 15:44:04.89ID:2gXyzp52 >>174
詳しいアドバイスありがとうございます!
本当に目から鱗です。
レスを見て2分で解決しました。
bashで力技で何時間も悪戦苦闘していたのが
悲しくなるくらい呆気なさでした。
本当に的確なアドバイスありがとうございます!
詳しいアドバイスありがとうございます!
本当に目から鱗です。
レスを見て2分で解決しました。
bashで力技で何時間も悪戦苦闘していたのが
悲しくなるくらい呆気なさでした。
本当に的確なアドバイスありがとうございます!
176login:Penguin
2020/02/09(日) 12:27:07.05ID:TdA6OoR0 やってることが複雑になったと感じたら、最初に戻って考え直すことだ。
177login:Penguin
2020/09/12(土) 14:17:52.81ID:uRW97DpA バッシュの教科書って本買おうとしたけど、どこでも売り切れてて人気みたい
2020/09/12(土) 15:05:18.55ID:f1Nswvqc
売れなかったから廃盤になるんやで
179login:Penguin
2021/05/27(木) 01:02:31.31ID:m06R9ufF こういったケースの空白文字がある場合のワンライナーはどう書けばいいですか??
・特定のディレクトリの中にある大量のファイル
・ファイルは全て同じ拡張子(.mp3)
・拡張子の直前にランダムのID何文字か付いている(例 -48antiO81n5Dq)
・全てのIDを取り除きリネームしたい
自分で作成したのですが最後のmvで躓いています。。
空白文字があるとそこでファイル名を分割されてうまく動作しません。
```bash
find . -type f -name "*.mp3"|grep "\-[a-zA-Z0-9-]*.mp3$"|sed "s/\-[a-zA-Z0-9-]*.mp3$/.mp3/"|xargs -n2 mv
```
・特定のディレクトリの中にある大量のファイル
・ファイルは全て同じ拡張子(.mp3)
・拡張子の直前にランダムのID何文字か付いている(例 -48antiO81n5Dq)
・全てのIDを取り除きリネームしたい
自分で作成したのですが最後のmvで躓いています。。
空白文字があるとそこでファイル名を分割されてうまく動作しません。
```bash
find . -type f -name "*.mp3"|grep "\-[a-zA-Z0-9-]*.mp3$"|sed "s/\-[a-zA-Z0-9-]*.mp3$/.mp3/"|xargs -n2 mv
```
2021/05/27(木) 12:15:42.12ID:+SArHOBh
慣れてる人ならともかくリネームとかいう取り返しのつかない作業を
findとxargsでやりたくないな
俺ならリスト生成してmvするわ
mv "aaa aaa-48antiO81n5Dq.mp3" "aaa aaa.mp3"
mv "bbb bbb-48antiO81n5Dq.mp3" "bbb bbb.mp3"
mv "ccc ccc-48antiO81n5Dq.mp3" "ccc ccc.mp3"
みたいなシェルスクリプトを生成して実行する
実行前に目視で確認できるし、場合によっては手動で修正すればいいし
findとxargsでやりたくないな
俺ならリスト生成してmvするわ
mv "aaa aaa-48antiO81n5Dq.mp3" "aaa aaa.mp3"
mv "bbb bbb-48antiO81n5Dq.mp3" "bbb bbb.mp3"
mv "ccc ccc-48antiO81n5Dq.mp3" "ccc ccc.mp3"
みたいなシェルスクリプトを生成して実行する
実行前に目視で確認できるし、場合によっては手動で修正すればいいし
2021/05/27(木) 13:40:55.77ID:EyeK5jGy
そもそもファイル名に空白が入ってなければ正しく動くのか?
aaa-48antiO81n5Dq.mp3
bbb-48antiO81n5Dq.mp3
というファイルがあったら sed の出力は
aaa.mp3
bbb.mp3
となるように思うのだが。いろいろつっこみたいが、とりあえず
find . -type f | xargs -d '\n' rename 's/-[a-zA-Z0-9-]*\.mp3$/.mp3/'
とするのが手っ取り早いと思う。
でもいきなりこんなことはしたくないね。
少なくともファイル名の衝突くらいはチェックしないと。
aaa-48antiO81n5Dq.mp3
bbb-48antiO81n5Dq.mp3
というファイルがあったら sed の出力は
aaa.mp3
bbb.mp3
となるように思うのだが。いろいろつっこみたいが、とりあえず
find . -type f | xargs -d '\n' rename 's/-[a-zA-Z0-9-]*\.mp3$/.mp3/'
とするのが手っ取り早いと思う。
でもいきなりこんなことはしたくないね。
少なくともファイル名の衝突くらいはチェックしないと。
2021/05/28(金) 15:39:24.70ID:RtkQ3VQL
どこに空白が入っているの?
例示して
例示して
2021/06/04(金) 21:38:34.04ID:i0A1vKtk
空白入るなら、ダブルクォートをエスケープして入れてやればいい、と。
そもそもxargs使わんといけんの?
ふつうにこんなんじゃだめか?
find . -type f -name "*.mp3"|grep "\-[a-zA-Z0-9-]*.mp3$" \
| while read i;do \
echo mv -v \"$i\" \"`echo $i|sed '"s/\-[a-zA-Z0-9-]*.mp3$/.mp3/'`\"; \
done
で、そもそもfind使うなら、-nameじゃなくて-regex使った方がよくない?
grepはそのためだよな?(ってまあ、俺もgrep使うような気がするけどw)
で、さらにfind使うなら、xargsよりは-execの方がベターだ。
で、そうすっとこれが多分模範回答
find . -type f -regex "\./\-[a-zA-Z0-9-]*.mp3$" \
-exec echo mv -v \"{}\" \"`echo {}|sed 's/\-[a-zA-Z0-9-]*.mp3$/.mp3/'`\" \;
で、いずれもmvの前にechoを入れてるので、よさげだったら、echoを削って祈ってw
そもそもxargs使わんといけんの?
ふつうにこんなんじゃだめか?
find . -type f -name "*.mp3"|grep "\-[a-zA-Z0-9-]*.mp3$" \
| while read i;do \
echo mv -v \"$i\" \"`echo $i|sed '"s/\-[a-zA-Z0-9-]*.mp3$/.mp3/'`\"; \
done
で、そもそもfind使うなら、-nameじゃなくて-regex使った方がよくない?
grepはそのためだよな?(ってまあ、俺もgrep使うような気がするけどw)
で、さらにfind使うなら、xargsよりは-execの方がベターだ。
で、そうすっとこれが多分模範回答
find . -type f -regex "\./\-[a-zA-Z0-9-]*.mp3$" \
-exec echo mv -v \"{}\" \"`echo {}|sed 's/\-[a-zA-Z0-9-]*.mp3$/.mp3/'`\" \;
で、いずれもmvの前にechoを入れてるので、よさげだったら、echoを削って祈ってw
2021/11/11(木) 18:26:58.40ID:wR3FRIZb
(´-`).。oO(>>1 は、いなくなったか…)
2022/01/11(火) 19:24:30.28ID:JlzCBGqO
if文で文字列を正規表現にマッチしたら抽出、という処理を作りたいのですが、
マッチしたら一つ目の文字列は抽出出来ましたが、二つ目以降マッチしたものが抽出できません
どうコードを書けば良いのでしょうか
マッチしたら一つ目の文字列は抽出出来ましたが、二つ目以降マッチしたものが抽出できません
どうコードを書けば良いのでしょうか
2022/01/12(水) 22:51:42.05ID:uKLEW53q
[[ foo-bar =~ (foo)-(bar) ]] && echo ${BASH_REMATCH[2]}
的な?
0にマッチ全体、カッコでグループ化すればn番目の部分マッチが1以降に入る
barが出るはず
的な?
0にマッチ全体、カッコでグループ化すればn番目の部分マッチが1以降に入る
barが出るはず
レスを投稿する
ニュース
- 第三次世界大戦?AI攻撃で社会麻痺?11/2に政府が全国民に最低3日分の備蓄を緊急要請 [♪♪♪★]
- 新給付、年収119万円以下は年5千円案 [首都圏の虎★]
- 吉原ソープランド「麗嬢グループ」の会長逮捕、売春場所提供容疑 売り上げ30億円超 [少考さん★]
- カズレーザー、「ガソリンスタンドの入り方知らない」給油で困惑「教習所でなんで教えないんだろう?」 [muffin★]
- マイナ保険証を持たない人に届く資格確認書。病院の窓口で出せば受診できる [♪♪♪★]
- 「おっせーな!早くしろよ!」紅白6度出場グループ SNSで過去の“横柄な態度”を告発されるも本人降臨、真摯な対応に称賛の嵐 [muffin★]
- 【悲報】Z世代が選ぶ「理想の上司」、2位にスティーブ・ジョブズ [769931615]
- VIVANTを考察してる人いるけどあれ何?伏線(笑)てくらい浅い作りだけど考察することあるの? [472617201]
- 初セックスって失敗するもんなの? [369521721]
- 「りくりゅうペア」って急激にオワコンになったよな。こいつらがまた話題になることってあるんだろうか? [773738893]
- 慶應学長「国立大の学費を150万にせよ。恵まれた者には義務がある」 [961870172]
- なんつうか、驚くほど凄いスピードで野球離れが加速してない?もはや誰一人として街で野球の話なんかしてなくね…😅 [591180291]