1 名前:login:Penguin mailto:sage [2019/10/04(金) 07:31:02.74 ID:Rnyv5utD.net] まずは2ch-Linux-Beginnersを読みましょう。 いろいろとまとめられているので(・∀・)イイ!! www12.atwiki.jp/linux2ch/ 読んでも解決しなかったら、質問を書きこむ前にここを読もう。 www12.atwiki.jp/linux2ch/?About 質問に対して答えてもらったら、お礼よりも、結果報告。 過去ログ検索 Google検索 https://www.google.com/search?hl=ja&as_q=検索語句&as_sitesearch=2ch.net%2Ftest%2Fread.cgi%2Flinux%2Fhttps://www.google.com/search?hl=ja&as_q=検索語句&as_sitesearch=5ch.net%2Ftest%2Fread.cgi%2Flinux%2F ※前スレ くだらねえ質問はここに書き込め! Part 237 mao.5ch.net/test/read.cgi/linux/1563027196/
144 名前:login:Penguin mailto:sage [2019/10/24(木) 07:36:26.07 ID:htrbp4UL.net] ×> cat filename | head -n +$(($START - 1)) > cat filename | tail -n +$START | sort ○> cat filename | head -n $(($START - 1)) > cat filename | tail -n +$START | sort
145 名前:login:Penguin mailto:sage [2019/10/24(木) 08:41:38.78 ID:aFdU4VfN.net] >>138 sedって万能なんすね sed -n "2,5p" foo.txt | sort sed -n "3,\$p" foo.txt | sort
146 名前:login:Penguin mailto:sage [2019/10/24(木) 10:33:43.46 ID:y4UJfKg2.net] Ruby なら、 # 末尾の改行を削除して、配列に読み込む ary = File.readlines( "a.txt", chomp: true ) # 2 〜 5行目や、3行目以降をソートする # 配列のインデックスは、0 から始まるので、1つずれる。-1 は最後の要素 puts ary[ 1..4 ].sort puts ary[ 2..-1 ].sort
147 名前:login:Penguin [2019/10/24(木) 13:00:09.46 ID:vBl3XMCx.net] 質問です。 gnome-disksをraspbianで使っています。 rootユーザーなら、操作の前にパスワードを聞かれることはありません。 一般ユーザーでも同じようにしたいと思って、sudo gnome-disks をしたのですが、 (gnome-disks:1409): Gtk-WARNING **: 12:46:49.597: cannot open display: というエラーとなりました。 なお、gksuという方法は廃止されてしまったようです。 一般ユーザーでもroot権限で特定のGUIアプリを動かす方法は何が最適でしょうか。
148 名前:login:Penguin mailto:sage [2019/10/24(木) 14:00:56.77 ID:vBl3XMCx.net] >>146 自己解決しました。 xhost + を予め実行しておく必要がありました。
149 名前:login:Penguin mailto:sage [2019/10/24(木) 19:33:57.32 ID:SIvO56h2.net] 超初歩的な質問で申し訳ないのですが、wslを使ってubuntuでstartxfce4とコマンドした後にwarningがたくさん出てくるのですがこういうものなのでしょうか? また xfce4が起動してbashの方でコマンドを打とうと思っても「$」が表示されておらず、コマンドが打てないのですが、どうしたら打てる状態にできるのでしょうか?
150 名前:login:Penguin mailto:sage [2019/10/24(木) 20:12:34.63 ID:JIRaBw0H.net] & そもそも新しい端末開けばいいだけの話では?
151 名前:login:Penguin mailto:sage [2019/10/25(金) 00:13:18.30 ID:RwV+js8P.net] そもそも、WSL は、xfce みたいなGUI を使えるの? 漏れは、CUI だけで、Ubuntu 16.04 を使っているけど ファイラーも、ranger というCUI を使っている
152 名前:login:Penguin mailto:sage [2019/10/25(金) 02:53:56.79 ID:PQuzrFkx.net] >>150 使えるしオーディオ再生とかもできる てか散々既出
153 名前:login:Penguin mailto:sage [2019/10/25(金) 05:05:19.72 ID:RwV+js8P.net] Windows10, WSL, Ubuntu 16.04 で、 Ruby で、すべてのパッケージの更新を書いているけど、 WARNING: apt does not have a stable CLI interface. Use with caution in scripts. と、Rubyから、apt コマンドを呼び出すのは良くないみたいなので、 aptを、apt-get に変えて作っていますが、 アップグレードできるパッケージを、一覧表示する、 apt list --upgradable と同じ機能の、apt-get は有りませんか? #!/usr/bin/ruby # sudo のパスワードを自動入力する puts `echo パスワード | sudo -S apt-get update` # アップグレードできるパッケージを、一覧表示する puts `apt list --upgradable` puts `sudo apt-get upgrade -y`
154 名前:login:Penguin [2019/10/25(金) 09:30:26.11 ID:wjgZzngK.net] 現在、cd, ls とか1日でしょっちゅう使うコマンドは.bashrcでヒストリー除外設定してます。 それとは別に、備忘録として次回のログイン時にはヒストリー履歴に必要ないmanとかwho等の単発コマンドや、自作バッチ等をsed用のパターンファイルに収めてあります。 そのファイルを使ってsedで.bash_historyにかけて該当するコマンドを削除して、実行結果自体は正しいと確認できています。 で質問です。 この作業をログアウト時にしたいのですが、.bash_logoutや.logoutに記述しても、ヒストリーのキャッシュから.bash_historyに書き込まれるタイミングが後に来るようで、パターンファイルのコマンドがもどってきます。直前にhistory -wをしてもだめです。 最後のシステムがヒストリーのキャッシュを.bash_historyに吐き出した後に、sed実行できればいいのですが、どのファイルに記述すればいいのでしょうか?
155 名前:login:Penguin mailto:sage [2019/10/25(金) 09:54:17.89 ID:ZYt79x2d.net] しらんけど、.bash_logoutとかで、端末切り離しても終了せずにバックグラウンドで動くスクリプト実行して 1秒後とかにヒストリ消すようにしたら動くんじゃね?しらんけど
156 名前:login:Penguin mailto:sage [2019/10/25(金) 10:19:45.97 ID:7I9s5J33.net] Lubuntu 18.10 烏賊 他のLubuntuには、「ディスク」があるのですが、なぜか自分の烏賊には、hddをフォーマットしたり、領域を操作するためのアプリが見つかりません。 ダウンロードする方法を教えて下さい。
157 名前:login:Penguin mailto:sage [2019/10/25(金) 10:44:34.87 ID:DsOIalUM.net] >>153 systemdのサービスファイル書いてExecStopで実行するとか?しらんけど
158 名前:login:Penguin [2019/10/25(金) 11:55:37.42 ID:h3N5NDxK.net] >>153 ログインのときに、やればいいんじゃないの?
159 名前:login:Penguin [2019/10/25(金) 11:58:56.84 ID:h3N5NDxK.net] >>141 ウインドウマネージャがパッケージにあれば、動くと思います なければ、ソースからビルドすれば動くと思います
160 名前:login:Penguin [2019/10/25(金) 12:00:11.63 ID:fdkloRFW.net] 縦の列を出力するコマンドの結果をパイプを通して横にしたいのですが躓いてます。 例: ls -l hoge | grep -E 'jpg|bmp' | awk{print $9}' | sed 's/\n/ /' これだと縦のリストままです。 改行をスペースにすればいいと思ったのですが、 標準出力ではだめなのですか?
161 名前:login:Penguin mailto:sage [2019/10/25(金) 12:00:59.99 ID:RwV+js8P.net] systemd のログアウトとか、 逆に、ログアウト時に処理せず、ログイン時に処理するとか
162 名前:login:Penguin mailto:sage [2019/10/25(金) 12:03:05.91 ID:RwV+js8P.net] 確か、縦横変換は、xargs じゃなかった?
163 名前:login:Penguin mailto:sage [2019/10/25(金) 13:04:28.71 ID:M6r4WUQ0.net] >>153 もしかしてと思って exec dash ってやってみたら書き込まれた。 ということは exec を使えばできる可能性が… でも bash の man に明確にそう書かれてはいない気がする。
164 名前:login:Penguin mailto:sage [2019/10/25(金) 13:10:01.95 ID:pMh/yvQj.net] $ seq 3 | xargs 1 2 3 xarrgsだけで使うとか盲点だった
165 名前:login:Penguin mailto:sage [2019/10/25(金) 13:42:09.89 ID:NnBWMM0A.net] 別にその程度なら、これでいいが echo $(seq 3)
166 名前:login:Penguin [2019/10/25(金) 13:42:44.24 ID:ew4plpxi.net] >>161 >>163 159です。おかげで解決しました ありがとうございました
167 名前:login:Penguin [2019/10/25(金) 13:49:46.27 ID:ew4plpxi.net] >>164 159です。 短いコマンド列ならパイプいらないんですね ありがとう (≧∀≦)ノ♪
168 名前:login:Penguin mailto:sage [2019/10/25(金) 15:01:20.34 ID:b/c/D3hz.net] >>153 history -wの後sedを呼んで、さらにhistory -cとhistory -rを呼ぶとかは?
169 名前:login:Penguin mailto:sage [2019/10/25(金) 20:22:42.08 ID:PcQV5FAs.net] sudo cpで何もオプションをつけずに実行して、 Aさんのファイル hoge.txt を、Bさんのファイル hoge.txt で、上書きコピーした時、 hoge.txt の所有者とかパーミッションは、Aさんの時のままみたいなんだけど、 これってどこかに仕様ある?
170 名前:login:Penguin [2019/10/25(金) 21:41:54.75 ID:6kDTaNGH.net] >>168 info cpの-pオプションのところに書いてある。 https://linuxjm.osdn.jp/info/GNU_coreutils/coreutils-ja_78.html >このオプションを使わない場合、コピー先ファイルがすでに存在している場合は、 その許可属性は変更されない。
171 名前:login:Penguin mailto:sage [2019/10/25(金) 21:46:02.55 ID:EL0TBdFz.net] >>169 ありがとう。これで安心できるw
172 名前:login:Penguin [2019/10/25(金) 21:51:40.62 ID:mq4pzYPG.net] 余計なことしないでデフォルトの挙動に慣れといた方がいいんじゃね
173 名前:168 = 170 mailto:sage [2019/10/25(金) 22:06:11.75 ID:EL0TBdFz.net] 俺のこと? なんか勘違いしてると思うけど、 例えば、 /etc以下のとあるファイルを相手に渡して 書き換えておいたから、これ cp して上書きしておいてって言って 相手が何も考えずに、sudo cp しちゃっても大丈夫だよねって話だよ
174 名前:login:Penguin [2019/10/25(金) 23:15:42.66 ID:ew4plpxi.net] ID変わっちゃいましたが>>153 です。 結局、>>157 さん>>160 さんのご指摘とおりログイン時に.bashrc内でsedを実行する事にしました。 結果も望んだ状態でした。 >>167 .bash_logout内で実行しましたが、なぜか再ログイン時には削除したはずのコマンドが蘇ってました。 >>154 >>156 >>162 権限の都合上、あまりシステムよりの終了タイミングで処理を噛ませらないので、今回は試せませんでした。 色々アドバイスしていただき、ありがとうございました
175 名前:login:Penguin mailto:sage [2019/10/26(土) 11:29:58.88 ID:aEAPGpq3.net] Linuxとは直接関係ないかもしれ
176 名前:ワせんが質問です。 何の関係もないLinuxサーバ用PCとWindowsデスクトップ用PCがあります。 HDD2台をサーバ用PCでRAID1にして構築した後 何かの拍子にそのHDD1個をデスクトップ用PCに入れるとすると ドライブはちゃんと認識されるのでしょうか。 ファイルシステムはext4で、デスクトップ用PCにはext4読み込みのためのソフトを入れることとします。 [] [ここ壊れてます]
177 名前:login:Penguin mailto:sage [2019/10/26(土) 11:46:24.23 ID:oNLsi5fR.net] 何でRAID組んだのかで違うでしょ
178 名前:login:Penguin mailto:sage [2019/10/26(土) 11:49:41.67 ID:ZfJ5IMnc.net] そこにHDDが2台あったから
179 名前:152 mailto:sage [2019/10/26(土) 12:06:45.41 ID:pXpNefp4.net] >>152 自己レス >アップグレードできるパッケージを、一覧表示する、 >apt list --upgradable >と同じ機能の、apt-get は有りませんか? apt-get のオプションにあった -u, --show-upgraded 更新パッケージ表示 - 更新される全パッケージを一覧表示します。設定項目: APT::Get::Show-Upgraded -V, --verbose-versions 更新・インストールするパッケージのバージョンをすべて表示します。設定項目: APT::Get::Show-Versions
180 名前:174 mailto:sage [2019/10/26(土) 13:35:21.28 ID:aEAPGpq3.net] >>176 サーバPCのPOST画面から出せるRAIDユーティリティです 厳密にはソフトウェアRAIDだそうで、管理情報がHDD上に残るとか もしかしてmdadmなら大丈夫なんでしょうか
181 名前:login:Penguin mailto:sage [2019/10/26(土) 13:51:18.58 ID:F14et2Hg.net] ミラーならやってみりゃいいじゃん
182 名前:login:Penguin mailto:sage [2019/10/26(土) 19:30:00.71 ID:mJoLKa9d.net] >>178 暗号化してなければ、RAID1ならハードウェアRAIDでもソフトウェアRAIDでも、他PCに接続すれば中身は見えるよ。
183 名前:login:Penguin mailto:sage [2019/10/26(土) 23:46:48.54 ID:IiUQELA0.net] 派生が大量にあるLinuxに対してBSDの派生が少ないのはなんでなんです?
184 名前:login:Penguin mailto:sage [2019/10/27(日) 00:06:29.57 ID:/drCSR+3.net] ユーザーがいないからやろ
185 名前:login:Penguin mailto:sage [2019/10/27(日) 00:23:47.66 ID:nwZsKjXo.net] Linuxは冷食弁当 BSDは手作り弁当 UNIXは二郎でいいか
186 名前:login:Penguin mailto:sage [2019/10/27(日) 01:40:42 ID:8NH89CAZ.net] >>182 Linuxの場合は自分の好きなようにしたいからディストリを色々起こしたって感じだからな
187 名前:login:Penguin mailto:sage [2019/10/27(日) 05:25:58.94 ID:ZjFaYx5E.net] 食べ物で例えるなとあれほど…
188 名前:login:Penguin mailto:sage [2019/10/27(日) 06:37:41.89 ID:QrTJsh8Q.net] >>181 ポリシーの違い
189 名前:login:Penguin mailto:sage [2019/10/27(日) 07:20:34.44 ID:0K1aGab+.net] BSDの派生が少ないんじゃなく、Linuxの派生の多さが異常なんだよ
190 名前:login:Penguin [2019/10/27(日) 12:52:04.73 ID:V2uhvpIm.net] すいません、 松田聖子のファイルが200以上あってファイル名が、 いちご畑でつかまえて.mp3 潮騒.mp3 電話でデート.mp3 なんで、行頭に三桁、あるいは四桁の連番を付けたいと思います。 001-いちご畑でつかまえて.mp3 002-潮騒.mp3 0213-電話でデート.mp3 調べたんですが、行頭に連番をつける方法が見つかりませんでした。 よろしくお願いします。
191 名前:login:Penguin mailto:sage [2019/10/27(日) 13:25:45.94 ID:dgTsOTGe.net] >>188 rename 's/^/sprintf("%03d-", ++$::t)/e' *.mp3 renameコマンドはDebian系ならrenameパッケージに入ってるやつね
192 名前:login:Penguin [2019/10/27(日) 16:03:08.34 ID:V2uhvpIm.net] >>189 遅くなりました。ありがとうございます。 200曲無事完了しました。手でやっていたらタイヘンだも〜〜〜 ありがとう。
193 名前:login:Penguin mailto:sage [2019/10/27(日) 18:17:28.51 ID:1EgYvHMw.net] 松田聖子が200以上か…
194 名前:login:Penguin mailto:sage [2019/10/27(日) 20:17:04.79 ID:vrbz31o7.net] キャリア30年以上あれば余裕でその位はあるだろう
195 名前:login:Penguin mailto:sage [2019/10/27(日) 22:13:55.48 ID:8NH89CAZ.net] >>191 俺は松田聖子は激しく上であんまり知らないが、5chには若い時から松田聖子が 好きってどおっさん世代は多いだろ。で、大ファンなら200以上持っていても不思議 ではない。
196 名前:login:Penguin mailto:sage [2019/10/28(月) 07:11:10.04 ID:DrC7/o+o.net] 松田聖子は、ユーミン(呉田軽穂)の名曲が多い コード進行も、半音下がりのクリシェを多用したり、 米国で言えば、David Foster に匹敵する時代! まあ、ユーミンは、女筒美京平と言われて、 林哲司は、日本のDavid Fosterと言われていたけど 日米英国も、MTV の影響か、80年代ポップスに名曲が多い
197 名前:login:Penguin [2019/10/28(月) 08:25:15.43 ID:HMUb8kSq.net] エスケープをかましたsedの使い方で質問があります $ echo -e "dog,\033[38;5;11m hoge\033[0m, cat" dog, hoge, cat <=== hogeだけ黄色で表示 $ echo -e "dog, hoge, cat" | sed -e "s/hoge/foo/" dog, foo, cat <=== 普通のsedの結果 この上記2つを組み合わせたいのですが エスケープキャラが色コードに変換されず、hogeの前にfooが食い込でます $ echo -e "dog, hoge, cat" | sed -e "s/hoge/\033[38;5;11mfoo\033[0m/" dog, hoge33[38;5;11mfoohoge33[0m, cat <=== ぐちゃぐちゃ この例でhogeから黄色のfooにsed変換するにはどうすればいいですか?
198 名前:login:Penguin mailto:sage [2019/10/28(月) 09:17:41.62 ID:lNAOad9p.net] >>195 bashから実行するなら echo -e 'dog, hoge, cat' | sed -e $'s/hoge/\033[38;5;11mfoo\033[0m/'
199 名前:login:Penguin mailto:sage [2019/10/28(月) 09:55:01.53 ID:XUE5MeKL.net] 役に立つかどうかわからないけど、参考にしてね。 $ echo "dog, hoge, cat" | > sed -e 's/hoge/\\033[38\;5\;11mfoo \\033[0m/' | > sed -e "s/^/'/" -e "s/$/'/" | > xargs echo -e
200 名前:login:Penguin mailto:sage [2019/10/28(月) 10:16:17.82 ID:gaVasQIf.net] 色コードを素直にredやgreenで扱える便利道具ってないの?
201 名前:login:Penguin mailto:sage [2019/10/28(月) 11:50:49.14 ID:5E0lMxSX.net] >>198 tput ただし大抵の環境で入ってるはずだが、入ってない環境もある。 見やすいが冗長。外部コマンドなので遅い。
202 名前:login:Penguin [2019/10/28(月) 14:05:13.29 ID:HMUb8kSq.net] >>196 「$」一文字ですごい。 この場合のクォーテーションで括られたパターンの外の$はどういう意味ですか? >>197 一行づつ読んで、2度めのsedでパターンの前後に「'」を足してる事を理解しました。 これを参考にして、元の例のシングルクォーテーションをリテラルに変更して echo -e '''dog,\033[38;5;11m hoge\033[0m, cat''' これで望んだ結果が出力されたました \(^o^)/
203 名前:login:Penguin [2019/10/28(月) 14:17:33.13 ID:HMUb8kSq.net] >>197 >> 200 でまちがって中間のコマンド履歴をうってました m(_ _ )m ただシングルクォーテーションが鍵なのがわかりました
204 名前:login:Penguin [2019/10/28(月) 14:31:46.32 ID:jxo+K6ql.net] Linuxのほうは公式のディストリってものがないからだろうな
205 名前:197 mailto:sage [2019/10/28(月) 21:30:39.09 ID:k8dpn6a1.net] >>200 >「$」一文字ですごい。 > この場合のクォーテーションで括られたパターンの外の$はどういう意味ですか? 洒落てますよね。私も、それでよかったのかと感心しました。 $'...' は、bash のクォートの一種です。man bash の「クォート (QUOTING)」を見てください。 この部分は、英語マニュアルの方がわかりやすいと思います。
206 名前:login:Penguin mailto:sage [2019/10/29(火) 12:35:22.88 ID:iAozzjoU.net] >>196 >echo -e 'dog, hoge, cat' | sed -e $'s/hoge/\033[38;5;11mfoo\033[0m/' \033 を、\e に代えても動く echo -e 'dog, hoge, cat' | sed -e $'s/hoge/\e[38;5;11mfoo\e[0m/'
207 名前:login:Penguin mailto:sage [2019/10/29(火) 13:21:09.12 ID:VPiAGyFh.net] echo -e 'dog, hoge, cat' | sed -e 's/hoge/^[[38;5;11mfoo^[[0m/' ただし ^[ は ctrl+v の後に escキーで入力
208 名前:login:Penguin mailto:sage [2019/10/29(火) 18:17:48.56 ID:HNRQ6y5r.net] sway使いはおらんのけ?
209 名前:login:Penguin mailto:sage [2019/10/29(火) 22:29:29.28 ID:pFWErwX/.net] ターミナルで折り返し改行されたときに上矢印押したら上の行に行けるようにできたりしませんかね。下矢印で下。ずーっと横長の移動しなくちゃいけないから辛いです。 それでもって一番上の行で上を押せば前の履歴に行くような普通の操作を実現したいです。 今使ってる環境はgnomeターミナル+tmux +zsh
210 名前:login:Penguin mailto:sage [2019/10/30(水) 23:58:54.89 ID:ukMyq2L7.net] xargsでaliasを使う方法ってないんだな 自作コマンドを使う方法はあるのに
211 名前:login:Penguin [2019/10/31(木) 00:50:56.71 ID:reP6OUR1.net] bashの配列で質問です。 空白で区切られた3つの要素を配列に代入 declare -a array=( "A B C" "C D E" "F G H" ); for ((i = 0; i < ${#array[@]}; i++)) { echo "array[$i] = ${array[i]}" } 結果は予想通り array[0] = A B C array[1] = D E F array[2] = G H I 今度は改行で区切られた3つの要素の内容を、awkで逆順した結果に「"」とつけて配列に代入。 declare -a array=( $(echo -e "A B C\nD E F\nG H I" | awk '{printf "\"%s %s %s\"\n", $3, $2, $1}') ); for ((i = 0; i < ${#array[@]}; i++)) { echo "array[$i] = ${array[i]}" } しかし、実際はクォーテーションの機能も無視され、空白でバラバラに区切られ配列に代入されてします。 array[0] = "C array[1] = B array[2] = A" … 略 … array[7] = H array[8] = G" 配列に代入しなければ期待通りの結果が出力されます。この結果を望んでいます。 echo -e "A B C\nD E F\nG H I" | awk '{printf "\"%s %s %s\"\n", $3, $2, $1}' "C B A" "F E D" "I H G" どうすれば配列の要素に上記の結果を代入することができますか?
212 名前:login:Penguin mailto:sage [2019/10/31(木) 00:56:01.59 ID:hpOp+iT/.net] >>209 配列なんか使うな。それはbashの拡張だ。 POSIXシェルには配列などというものはない。 外部コマンドの呼び出しなんだからそれはbashスクリプトの外の話だ bash専用機能である配列は使えない
213 名前:login:Penguin mailto:sage [2019/10/31(木) 01:02:37.89 ID:hpOp+iT/.net] そもそもシェルというものをわかっていない。 一般的な言語の関数は、引数で情報を与え、戻り値で情報をもらうものだが シェルというのは情報の入出力を標準入出力で行うものだ。 そしてシェルでは標準入出力の一行が一データ、複数のデータは複数の行数で表すのが基本だ 引数はこういうやり方もあるよという別解だと考えたほうがいい echo -e "A B C\nD E F\nG H I" | awk '{printf "\"%s %s %s\"\n", $3, $2, $1}' ↑つまりはこれが正しいということだ。 だからお前がやるべきことはそのbash依存した配列を 複数行のデータに変換することだ
214 名前:login:Penguin mailto:sage [2019/10/31(木) 01:07:04.68 ID:hpOp+iT/.net] >>209 話の前に、echo -e はやめとけ。それはbash依存だ。 エスケープシーケンスを使うならprintfを使ったほうがいい 簡単になおせる printf '%s\n' "A B C" "D E F" "G H I" | awk '{printf "\"%s %s %s\"\n", $3, $2, $1}' そしてbashの配列の代わりに位置パラメータを使えばいい set -- "A B C" "D E F" "G H I" printf '%s\n' "$@" | awk '{printf "\"%s %s %s\"\n", $3, $2, $1}'
215 名前:login:Penguin mailto:sage [2019/10/31(木) 01:10:51.96 ID:hpOp+iT/.net] どうしてもbashの配列を使いたいというのならこうだ。 declare -a array=( "A B C" "C D E" "F G H" ) printf '%s\n' "${array[@]}" | awk '{printf "\"%s %s %s\"\n", $3, $2, $1}' 考え方は位置パラメータ $@ を使うのと同じだ。 $@ の代わりに ${array[@]} になっただけだ。 言い換えると位置パラメータを複数使えるようになったのがbashの配列だ
216 名前:login:Penguin mailto:sage [2019/10/31(木) 01:11:21.35 ID:CucVKUrX.net] >>209 readarray
217 名前:login:Penguin mailto:sage [2019/10/31(木) 01:14:52.04 ID:niz424am.net] >>209 readarrayはパイプにするとサブシェルになってしまって動かないから例も置いとく readarray -t array < <(echo -e "A B C\nD E F\nG H I" | awk '{printf "%s %s %s\n", $3, $2, $1}')
218 名前:login:Penguin mailto:sage [2019/10/31(木) 01:19:51.44 ID:hpOp+iT/.net] readarrayもbashの拡張だ。そういうものは使わない シェルスクリプトはパイプで処理をつなげていくものだ declare -a array=( "A B C" "C D E" "F G H" ) printf '%s\n' "${array[@]}" | awk '{printf "\"%s %s %s\"\n", $3, $2, $1}' | while read -r line; do echo "$line" # $lineの加工処理とかなにか done こうすることで、出力とawkの加工と自前のreadの処理が並列で動く readarrayなどを使ってしまったら、一旦bashの配列に入れてしまうから 並列で動かなくなる。つまり遅くなる。 | while read はパイプでサブシェルになってしまって動かないから例も置いとく printf '%s\n' "${array[@]}" | awk '{printf "\"%s %s %s\"\n", $3, $2, $1}' | { i=0 while read -r line; do i=$((i + 1)) echo "$line" # $lineの加工処理とかなにか done echo "合計行数 $i" }
219 名前:login:Penguin mailto:sage [2019/10/31(木) 01:20:57.62 ID:hpOp+iT/.net] >>216 のように書くよりも関数にしたほうが分かりやすいがな func() { i=0 while read -r line; do i=$((i + 1)) echo "$line" # $lineの加工処理とかなにか done echo "合計行数 $i" } set -- "A B C" "D E F" "G H I" printf '%s\n' "$@" | awk '{printf "\"%s %s %s\"\n", $3, $2, $1}' | func
220 名前:login:Penguin mailto:sage [2019/10/31(木) 01:29:26.44 ID:8CGDUgWT.net] >>209 古いbashでreadarrayがなければ eval 'array=('"$(echo -e "A B C \nD E F\nG H I" | awk '{printf "\"%s %s %s\" ", $3, $2, $1}'
221 名前:login:Penguin mailto:sage [2019/10/31(木) 01:38:06.90 ID:8ldiWh95.net] >>218 のbash依存なし版はこっち。当たり前だけどちゃんと動くでw eval 'set -- '"$(printf '%s\n' "A B C" "D E F" "G H I" | awk '{printf "\"%s %s %s\" ", $3, $2, $1}')" printf '%s\n' "$@"
222 名前:login:Penguin [2019/10/31(木) 01:40:37.18 ID:9QFNPqD9.net] Windowsの感覚が抜けず、シェル上でディレクトリ名やファイル名を大文字小文字を区別せず打ってしまいます 直したいとは思うのですが、差し当たり大文字小文字が間違えていても修正や補完をしてくれるように出来るとありがたいです 何かそういう設定やツール等があれば教えてください
223 名前:login:Penguin mailto:sage [2019/10/31(木) 01:43:22.34 ID:8ldiWh95.net] あとLinuxならrev使ったほうが簡単だな set -- "A B C" "D E F" "G H I" printf '%s\n' "$@" | rev
224 名前:login:Penguin mailto:sage [2019/10/31(木) 01:53:30.01 ID:8ldiWh95.net] >>219 でもいいけど、正直evalを使うとエスケープやダブルクォートが 面倒になったりするからこっちのほうがいいかもな。(↓awkのダブルクォートを消した) printf '%s\n' "A B C" "D E F" "G H I" | awk '{printf "%s %s %s\n", $3, $2, $1}' | { set -- while read -r line; do set -- "$@" "$line" done printf '%s\n' "$@" } bashで配列に入れたければ頑張れw まあ、位置パラメータ(配列)に入れるよりも、その場で処理したほうが シェルスクリプトらしくて速くなるんだが おまけ、さらに短く printf '%s\n' "A B C" "D E F" "G H I" | awk '{print $3, $2, $1}' | { おまけ、さらに短く printf '%s\n' "A B C" "D E F" "G H I" | rev | {
225 名前:login:Penguin [2019/10/31(木) 03:19:09.95 ID:reP6OUR1.net] >>213 データを受けた後の一度ちがう処理が入って その上そのあとプロセス分岐するので、 一度フォーマット整形後に配列に変換して あとで個別にアクセスしたいと思っていました。 確かにこの方法だと配列に期待した形で代入されました。 >>214 >>215 readarrayは知りまでせんでした。勉強します。 >>218 >>219 これは勉強になります >>222 > bashで配列に入れたければ頑張れw がんばりますw 色々な表記方法でありがとうございます。 勉強になります。 みなさまありがとうございました (^人^)感謝♪
226 名前:login:Penguin mailto:sage [2019/10/31(木) 09:58:32.70 ID:HOpY20qN.net] >>220 bashは.inputrcにset completion-ignore-case Onでできるらしい あるいは.bashrcにbind 'set completion-ignore-case on' .inputrcだとreadline全体に影響するから後者の方がいいかも https://askubuntu.com/questions/87061/can-i-make-tab-auto-completion-case-insensitive-in-bash zshはqiitaにやり方が描いてあった https://qiita.com/watertight/items/2454f3e9e43ef647eb6b
227 名前:login:Penguin mailto:sage [2019/10/31(木) 10:13:09.17 ID:w4pP63KT.net] >>220 shopt -s cdspell dirspell cdspellはcdの引数の誤字脱字が1文字なら修正する cd /Va cd /Var cd /vaa cd /ar こんなのね dirspellはdirの誤字脱字が1文字ならタブ補完時に修正する ls -l /va/logs/ ここでタブを押すとls -l /var/log/になる あくまで一文字だけだからあまり宛にはできないけどね shoptにはcdなしで移動できるautocdもあるからいくつか設定しとくと便利 基本は小文字で打って後はタブ補完で勝手に入力させればいいよ
228 名前:login:Penguin mailto:sage [2019/10/31(Thu) 13:43:01 ID:ljvnXlxv.net] すいません質問です SparkyLinux 5.9 Xfce 64 bit に Software Boutique というパッケージマネージャを インストールするため https://snapcraft.io/install/software-boutique/debian を参考にインストールしてみた ( ターミナルで"software-boutique 0+git.9cc961a from Martin Wimpress (flexiondotorg) installed"まで表示されました ) のですが どうやったら Software Boutique を起動できるのでしょうか メニューでそれらしきところを探してみたのですが見当たりません よろしくお願いします
229 名前:login:Penguin mailto:sage [2019/10/31(木) 20:19:09.63 ID:HYxFHwOd.net] 別にbash依存でよくない? posix互換厳守にしようとすると面倒 将来bashが無くなっちゃうことってないだろ、無くなったらその時はその時だし
230 名前:login:Penguin mailto:sage [2019/11/01(金) 03:02:42.50 ID:FRerU7gf.net] ノートPCを起動するとGNU GrubのBASH画面で止まるようになりました 恐らくexitと入力すれば先へ進めるのですが、あいにくキーボードが半壊していて入力できません USBのキーボードは読み込んでくれず、BIOSに行くことも何故かできなくなりました 一応「ryodfghkl;'zxcvbnm,.」は入力することができますが何か突破口はありますか?
231 名前:login:Penguin mailto:sage [2019/11/01(金) 03:26:49.91 ID:xK4Ryk/p.net] USBメモリブートやUSBCDブートもやりましたがやはり最初から認識しないようで駄目でした PS/2キーボードは本体も刺す所もないです
232 名前:login:Penguin mailto:sage [2019/11/01(金) 03:27:39.73 ID:R2TKQ4dq.net] >>227 将来世の中からbashが消えて無くなることはないが、 bashが使われてない環境ってのは存在するよ。 bashを使わなければいけないという特別な理由があるならいいけど、 必要ないのに依存させる意味がない
233 名前:login:Penguin mailto:sage [2019/11/01(金) 03:53:46.79 ID:+wZq5vgs.net] 自分のプログラムが巡り巡ってbashのない環境で動かすことになる可能性があるかどうかってことだけだな 結論としては不要 必要になったらまたその時考えればいい
234 名前:login:Penguin mailto:sage [2019/11/01(金) 05:33:45.83 ID:WI3r7Akd.net] POSIX原理主義者はシェルスクリプトスレが引き取ったはずだし迷子かな
235 名前:login:Penguin mailto:sage [2019/11/01(金) 13:09:00.41 ID:BMKjWeTQ.net] POSIX原理主義者はどこにでもいる
236 名前:228 mailto:sage [2019/11/01(金) 16:20:27.36 ID:oYdI1LQt.net] 無事BIOS起動して自己解決しました
237 名前:login:Penguin mailto:sage [2019/11/01(金) 16:27:48.46 ID:qfES3rdP.net] >>235 良かったな。
238 名前:login:Penguin mailto:sage [2019/11/01(金) 19:24:40.57 ID:CYJonS8S.net] メールのspfって メールサーバA グローバルIP: aaa.aaa.aaa.aaa からリレーされて メールサーバB グローバルIP: bbb.bbb.bbb.bbb から各ドメインに配送する場合、 spfにはbbb.bb.bbb.bbbだけ登録しても有効? Recievedヘッダに入っていれば、最終の配送サーバのipアドレスだけ登録しても良いの?
239 名前:login:Penguin mailto:sage [2019/11/02(土) 14:11:37.25 ID:G/Y6LUFG.net] ちょっとした疑問ですが、 よく、YouTube で、セミナー動画を見るのですが、 長いコマンドをコピペするのに、時間が掛かる人がいるのですが、 使うコマンドを、あらかじめヒストリーに登録しておけないのですか?
240 名前:login:Penguin mailto:sage [2019/11/02(土) 14:16:26.03 ID:wcogQYm2.net] そういうアホの動画は見る必要ないですよ
241 名前:login:Penguin mailto:sage [2019/11/02(土) 15:06:19.73 ID:WQHwUzU+.net] カーネルの4.15.XX をインストールしないようにするには どうすれば良いですか? カーネルは5.0.xxを使用してるんで・・・
242 名前:login:Penguin [2019/11/02(土) 15:10:52.07 ID:ZIBjJAUd.net] >>237 そのためのエイリアス
243 名前:login:Penguin [2019/11/02(土) 15:36:21.97 ID:WYRryZM8.net] >>239 どういうこと?
244 名前:login:Penguin mailto:sage [2019/11/02(土) 15:49:16.60 ID:WQHwUzU+.net] >>241 4.15.XXをアップデートさせたくないのです(使用しないから) 削除はukuu-gtkで可能なんですが ・・・