トップページLinux
191コメント59KB
Bashでプログラミング [転載禁止]©2ch.net
0141login:Penguin
垢版 |
2016/04/01(金) 21:01:52.69ID:FfS85Ldg
だがその実在性が極めて疑わしい性的な穴隙に変化を与えられた私はそれに入れる事を夢想し夢精するものである
0142login:Penguin
垢版 |
2016/04/02(土) 12:51:53.29ID:2K6xkzqa
セキュリティにも穴はあるんだよな・・・
0143login:Penguin
垢版 |
2016/05/09(月) 14:51:55.56ID:tGlvk2AC
exec 3>$1
みたいにファイルディスクリプタを指定するとき
すでに使われるディスクリプタ番号を避けたいんだけど
どうしたらいいの?
0144login:Penguin
垢版 |
2016/05/09(月) 15:18:10.05ID:1X5m9uCK
Bash詳説みたいな本ないかな?
やっぱオライリーか…
0145login:Penguin
垢版 |
2016/05/10(火) 04:31:28.39ID:D4kfzW96
open とか、複製する dup でも、未使用のファイルディスクリプタを使う
0146login:Penguin
垢版 |
2016/05/22(日) 16:49:48.48ID:q7UTLg4q
SoftwareDesign 6月号、1,220円 + 税

特集、Bash 再入門・MySQL
0148login:Penguin
垢版 |
2016/05/23(月) 08:00:46.64ID:MmvCX7kr
最近の言語に慣れると
コマンドラインベースの言語って理解しにくいね
コマンドを文字型変数として理解しようとしてハマる
0149login:Penguin
垢版 |
2016/05/25(水) 19:15:04.18ID:A0i8LpMi
debianとかubuntuにはwhiptailなんてのがデフォルトであるらしい
今まで選択候補をcat -b >&2してからread REPLY </dev/ttyしていたのをさっそく書き換えてみた
けっこうすっきり書けて個人的には大満足
0150login:Penguin
垢版 |
2016/07/19(火) 14:21:22.35ID:W6/OJD/n
コンソールにできたバイナリを16進で出力するにはどうしたら良いですかね
0151login:Penguin
垢版 |
2016/07/19(火) 15:29:25.71ID:yBnV/0hR
>>150
hexdumpやodで出力すればいいんじゃないですかね
0152login:Penguin
垢版 |
2016/09/07(水) 13:04:02.24ID:Zv6pU7x4
背景色を一気に変更したい
0153login:Penguin
垢版 |
2016/09/08(木) 01:20:29.54ID:4a9rtSBz
「linux 端末 色」で検索!
0154login:Penguin
垢版 |
2017/11/07(火) 14:00:12.38ID:3IDunlyg
関数を定義したshファイルを実行したあと、その関数を使いたいんだけど
どうしたらいいの?
0155login:Penguin
垢版 |
2017/11/07(火) 14:24:33.56ID:As8jAu29
>>154
汎用的に使う関数なら ~/.bashrc に書いて
あとは普通に関数名で実行すればいいだけ
function foo {
}

ならfooで呼び出し。
0157login:Penguin
垢版 |
2017/12/29(金) 13:13:26.87ID:S/CsVkMC
誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。

グーグル検索⇒『宮本のゴウリエセレレ』

2UMY6SSHSE
0158login:Penguin
垢版 |
2018/02/15(木) 07:37:05.23ID:m3isa15O
☆ 私たち日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
0159login:Penguin
垢版 |
2018/05/22(火) 11:10:50.11ID:Czl6p0FW
僕の知り合いの知り合いができた副業情報ドットコム
関心がある人だけ見てください。
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

FOJ8E
0160login:Penguin
垢版 |
2018/08/15(水) 15:18:59.23ID:dfDlag4t
てst
0161login:Penguin
垢版 |
2018/08/15(水) 15:20:23.48ID:dfDlag4t
html form で書き込み送信URLエンコードされた文字列をURLデコードした後
変数Aに格納したあと  改行コードを html改行コードに変換したいのですが 改行コードがバイナリコードで格納されているため
変換がうまくできません bash でうまく変換するコードってなにかないですか?
0162login:Penguin
垢版 |
2018/08/15(水) 15:21:00.64ID:dfDlag4t
html form で書き込み送信URLエンコードされた文字列をURLデコードした後
変数Aに格納したあと  改行コードを < b r >に変換したいのですが 改行コードがバイナリコードで格納されているため
変換がうまくできません bash でうまく変換するコードってなにかないですか?
0163login:Penguin
垢版 |
2018/08/15(水) 17:04:04.34ID:dfDlag4t
解決しました

なぜか sed のパイプで変換できなかった

trのパイプで変換してなんとかなりました


なぜだろう?
0164login:Penguin
垢版 |
2018/08/16(木) 19:43:27.04ID:I7VrLkNo
>163
sedで改行をどうこうするのは意外とハイレベルな知識が要るからかな
単に改行を置換したいだけならtr使うほうが筋がいいと思う
0165login:Penguin
垢版 |
2018/08/17(金) 21:35:15.57ID:jq4Ra/PN
>>164
urlエンコードから飛んできた文字列をURLデコードした後の文字列はecho
なんかで出力しても隠れてみえない \n が見えない
アスキーコードで書かれた文字列はsedじゃ無理?のようなきがする
0166login:Penguin
垢版 |
2018/08/17(金) 21:45:02.38ID:x+SQYw9w
POSIXのコマンドも今の人達が再設計すれば
もっと良いものが作れるんだろうな
0167login:Penguin
垢版 |
2018/08/18(土) 00:38:01.74ID:hWfi1+lO
素直にUnix2dos、dos2unix使おう、な?
0168login:Penguin
垢版 |
2019/05/21(火) 23:09:17.57ID:oXRLq/xt
eval使って文字列内で実行するコマンドの返却値も標準出力も取りたいんですがどうしたらいいですか?

evalに渡すのはcurlでhttp取得なんですがurlが変わるのでそこを変数から実行したいんですが$?はevalの結果でcurlのものが取れないんです
0169login: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 テーブル名.\'{}\''
0170login:Penguin
垢版 |
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 日近く経ってるし、もう自分で解決してるよね。
0171login:Penguin
垢版 |
2020/01/05(日) 20:01:18.77ID:IPuUazgK
そもそも何が問題なのかわからんしなぁ
xargs使う理由もわからんし。俺ならそんな使い方しない。
たくさんのDROP TABLE文で埋め尽くされたSQLファイルを作ってを実行するとかさぁ
いやテーブル名羅列するだけでいいのか

grepでテーブル名引っ張るとかあり得んし。
SHOW TABLES FROMはこの場合に適切なんだっけ?
ああ、思い出したINFORMATION SCHEMA.TABLESとかあったなぁ

ともかくシェルスクリプトでやることじゃないよね
なんのために問い合わせが得意なRDBMS使ってるのさ?
0172login:Penguin
垢版 |
2020/01/06(月) 00:00:10.35ID:FtTPVMr3
「LIKE」句を使って、テーブル名で絞り込む。
最後に「meta」で終わるテーブルだけを表示したい

mysql> SHOW TABLES FORM wordpress LIKE "%meta";

「mysql show tables」で検索!
0173login:Penguin
垢版 |
2020/01/08(水) 21:40:32.43ID:l1od5Fw+
>>170, 171, 172
レスが遅くなって申し訳ありません。

CMSのインストール・削除のトライアンドエラーを
繰り返しているうちにテーブルが増えてきてしまった次第です。

やりたいことは、たくさんあるテーブルの中から
特定の接頭辞が付くテーブルだけを検索し削除したいです。

`drop table from 〇〇`でググるとかなりの割合の方が
bashでmysqlのコマンドを書いて力技で削除しているようでした。
当方もそれに習って色々試したのですが、
うまく動作せずに困っておりました。

こういった場合の無駄なくシンプルに削除するに
適切なコマンドはどうしたらよいのでしょうか?
0174login:Penguin
垢版 |
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コマンドに流せ

これだけだろ

> ググるとかなりの割合の方が
ググるとかなりの割合の方が馬鹿なだけ
0175login:Penguin
垢版 |
2020/01/09(木) 15:44:04.89ID:2gXyzp52
>>174
詳しいアドバイスありがとうございます!
本当に目から鱗です。

レスを見て2分で解決しました。
bashで力技で何時間も悪戦苦闘していたのが
悲しくなるくらい呆気なさでした。

本当に的確なアドバイスありがとうございます!
0176login:Penguin
垢版 |
2020/02/09(日) 12:27:07.05ID:TdA6OoR0
やってることが複雑になったと感じたら、最初に戻って考え直すことだ。
0177login:Penguin
垢版 |
2020/09/12(土) 14:17:52.81ID:uRW97DpA
バッシュの教科書って本買おうとしたけど、どこでも売り切れてて人気みたい
0178login:Penguin
垢版 |
2020/09/12(土) 15:05:18.55ID:f1Nswvqc
売れなかったから廃盤になるんやで
0179login: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
```
0180login:Penguin
垢版 |
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"

みたいなシェルスクリプトを生成して実行する
実行前に目視で確認できるし、場合によっては手動で修正すればいいし
0181login:Penguin
垢版 |
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/'
とするのが手っ取り早いと思う。
でもいきなりこんなことはしたくないね。
少なくともファイル名の衝突くらいはチェックしないと。
0182login:Penguin
垢版 |
2021/05/28(金) 15:39:24.70ID:RtkQ3VQL
どこに空白が入っているの?

例示して
0183login:Penguin
垢版 |
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
0184login:Penguin
垢版 |
2021/11/11(木) 18:26:58.40ID:wR3FRIZb
(´-`).。oO(>>1 は、いなくなったか…)
0185login:Penguin
垢版 |
2022/01/11(火) 19:24:30.28ID:JlzCBGqO
if文で文字列を正規表現にマッチしたら抽出、という処理を作りたいのですが、
マッチしたら一つ目の文字列は抽出出来ましたが、二つ目以降マッチしたものが抽出できません
どうコードを書けば良いのでしょうか
0186login:Penguin
垢版 |
2022/01/12(水) 22:51:42.05ID:uKLEW53q
[[ foo-bar =~ (foo)-(bar) ]] && echo ${BASH_REMATCH[2]}
的な?
0にマッチ全体、カッコでグループ化すればn番目の部分マッチが1以降に入る
barが出るはず
0187login:Penguin
垢版 |
2022/01/12(水) 23:04:58.17ID:uKLEW53q
推測だけど、一つ目のマッチだけ見えているんじゃなく、全体のマッチだけ見えてるんじゃないか?
配列変数を添字なしで参照すると0番目の要素が返る、よくある罠

$BASH_REMATCH
= ${BASH_REMATCH[0]}
= foo-bar

違ったらすまん
0188login:Penguin
垢版 |
2022/06/20(月) 21:01:15.77ID:y2PJqfx1
nnn=111;mmm=0;echo $nnn | read mmm;echo $mmm
0
なんで?
0189login:Penguin
垢版 |
2022/06/29(水) 00:20:30.34ID:X2h/MJK6
昔からあるバグです
0190login:Penguin
垢版 |
2024/02/24(土) 13:44:13.05ID:NO8gqPUT
UIDとEUID を食い違いさせる方法って どんなのがありますか?
レスを投稿する


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