探検


くだらねえ質問はここに書き込め! Part 235

■ このスレッドは過去ログ倉庫に格納されています
2019/02/08(金) 08:40:59.71ID:UJyGuae0
まずは2ch-Linux-Beginnersを読みましょう。
いろいろとまとめられているので(・∀・)イイ!!
http://www12.atwiki.jp/linux2ch/

読んでも解決しなかったら、質問を書きこむ前にここを読もう。
http://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 234
http://mao.5ch.net/test/read.cgi/linux/1542376726/
2019/03/03(日) 01:56:55.32ID:fPz8Jd4p
そんなこと言い出したらほとんどのOSSが自己満でしょ
FirefoxやLinuxみたいな大規模で有能なほんの少数のソフトウェアを除いて。
2019/03/03(日) 13:19:46.13ID:UGPBP+FA
>>422
それは単にgithubがアニメーションGIFしか埋め込めないのが原因なだけだな
GitHub Pagesなどを使えばよい。

あんたの言うことが理由であれば、
・一時停止もできればよい
・勝手にループしなければよい
・音声や字幕での解説があればよい

と言ってるわけで、
https://asciinema.org/ がそれを実現している。

一時停止できるし、進んだり戻ったりできるし、
字幕の変わりに端末に文章打って説明しているし、
おまけにその文章はコピペできる
2019/03/03(日) 13:22:46.68ID:UGPBP+FA
ついでにいうと、静止画は
「音声や字幕での解説もないから画面のどこに注目したらいいのか、何が起こったのか把握しづらい」

動画であれば、今まさに動いているところに注目すればいいし、
何が起こるのかの答えは、まさに今起こってること
426login:Penguin
垢版 |
2019/03/03(日) 15:51:14.16ID:GL/x8v0j
>>387
何でこれで奇数行の改行だけ指定できてるの?
427login:Penguin
垢版 |
2019/03/03(日) 16:17:57.95ID:xXhcvp/H
>>426
https://www.oreilly.co.jp/books/4900900583/
読もうぜ
428login:Penguin
垢版 |
2019/03/03(日) 18:01:50.94ID:wVI0WKYZ
>>426
奇数行の改行を明示的に「指定」しているわけじゃなくて

 2行取り込む(sedが自動的に読み込んだ1行 + Nコマンドで次の1行)
 取り込んだ2行に対してsコマンドで置換
 
という繰り返しで「2行ずつ処理している」から
結果として奇数行の改行だけが置換されている
2019/03/03(日) 18:49:29.50ID:kO1wr2V9
>>426
morituriのブログ : sed Nコマンドの動作 (次の行を読み込んで、パターンスペースに追加)【Linuxコマンド】
http://blog.livedoor.jp/morituri/archives/52036613.html
430login:Penguin
垢版 |
2019/03/03(日) 20:11:04.93ID:UqI4bcRz
何となく解ったような気はしてるけど
いまいち理解できないのが

$ echo "1234\n1234\n1234\n1234\n1234" | sed -e 'N;s/23/__/1'
1__4
1234
1__4
1234
1234

これ何で5行目は変換されないの?
2019/03/03(日) 20:31:20.92ID:NJPd5Ggk
5行目どころか1行しか無いが?

$ echo "1234\n1234\n1234\n1234\n1234" | sed -e 'N;s/23/__/1'
1234\n1234\n1234\n1234\n1234
2019/03/03(日) 20:31:36.35ID:fPz8Jd4p
>>425
いや静止画であっても
プロンプトを適切に表示したり「結果」のタブを作ったりと幾らでも分かりやすくできる
Pythonのチュートリアルなんて動画じゃないけどすごい明快だし。

寧ろ再生できる端末が限られ,トラフィックを占有する動画を説明に使うってちょっとおかしい。
2019/03/03(日) 20:39:19.49ID:NJPd5Ggk
>>432
言い方でごまかしてるだけだなw

静止画だと
プロンプトを適切に表示したり「結果」のタブを作ったりしなければ
わかりやすく出来ない。

動画だとそんな事する必要がない

Pythonのチュートリアルぐらい頑張らないと静止画で明快にできない
動画だともっと明快に作れるのに

動画でもGIFを見れない端末など無いし、asciinemaが必要なのはJavaScriptぐらい
トラフィックもごく僅かで、こんなのが問題になる環境なんてまずない
2019/03/03(日) 21:16:08.86ID:JKjo8bnw
>>430
次の行を読み込めないから無視される
これはPOSIXにも規定されてる
2019/03/03(日) 21:21:43.90ID:JKjo8bnw
>>431
商用UNIXのechoはLinuxのechoとは挙動が違ってデフォルトでエスケープシーケンスが解釈されるんだよ
2019/03/03(日) 21:29:23.35ID:5VsFSgTe
>>433
動画だと結果を待たなきゃいけないっていうのが俺は面倒。

だったら結果のところまで動画を進めればいい、って話になるんだろうけど、
それなら最初から最後まで全部表示されてたほうが楽じゃない?と思う。

$ cd /
$ ls
bin boot dev etc home init lib lib64 media mnt opt proc root run sbin snap srv sys tmp usr var

って書いてあったら、/でlsしたんだなとわかる。
これで十分だし、解説不足ならコメント入れてくれれば十分。
2019/03/03(日) 21:41:41.89ID:NJPd5Ggk
>>436
だから動画はさらっと見せるためのもので
静止画も両方用意するんだよ。
2019/03/03(日) 21:43:52.07ID:9Mm0s4s/
>>431
echoに-eをつけて実行

echo -e "1234\n1234\n1234\n1234\n1234" | sed -e 'N;s/23/__/1'
2019/03/03(日) 21:44:23.70ID:NJPd5Ggk
cdとかlsとかそんな誰もが動作と結果がわかってる
コマンドの動画なんか用意しないって

例えば、asdfとかいう新しいバージョン管理ツールがあったとして
ソースコードのcloneからブランチ作成、コミット、pushなどの
一連の流れをざっと見せるために使うんだって
2019/03/03(日) 21:45:20.58ID:NJPd5Ggk
>>438
うん知ってる。

1234の最後に\nをつけて実行
2019/03/03(日) 22:03:07.48ID:gEetPgqU
普通のディストロじゃイヤ
Guix とかもっとヘンタイなやつ
ないですかw
2019/03/03(日) 22:04:21.17ID:3tvdzx1X
>>427
横レスですが、20年以上も前の書籍なんですね。
Unix系って、一度覚えた知識は20年先でも使えるの凄いと思う。数百円の古本見付けて絶対買うわ。
443login:Penguin
垢版 |
2019/03/03(日) 22:55:35.09ID:UqI4bcRz
>>435
Linuxのechoなんてものは無い
444login:Penguin
垢版 |
2019/03/03(日) 23:14:02.34ID:wVI0WKYZ
>>430
N の仕様
次の行がないときに N が実行されるとその時点で終了する
(GNU sed の man ばかり見てたから知らなかった…いい加減 info の使い方覚えないと)

しかもPOSIX仕様の場合は、残ったパターンスペースを印字せず終了する

$ printf "1234\n1234\n1234\n1234\n1234\n" | sed --posix -e 'N;s/23/__/1'
1__4
1234
1__4
1234

http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html
> If no next line of input is available, the N command verb shall
> branch to the end of the script and quit without starting a new
> cycle or copying the pattern space to standard output.
445login:Penguin
垢版 |
2019/03/03(日) 23:15:07.21ID:wVI0WKYZ
>>430 >>444
N の代わりに $!N と書けばいいみたい
https://www.gnu.org/software/sed/manual/sed.html#N_005fcommand_005flast_005fline

printf "1234\n1234\n1234\n1234\n1234\n" | sed -e '$!N;s/23/__/1'
printf "1234\n1234\n1234\n1234\n1234\n" | sed --posix -e '$!N;s/23/__/1'

これならどちらでも
1__4
1234
1__4
1234
1__4
と出力される

$!N は
$(最終行) !(以外の行で) Nコマンド
の意
446login:Penguin
垢版 |
2019/03/04(月) 02:07:47.33ID:qG7RObuf
そのposix仕様の動作なら良いんだけど
最後の余った行が出力されてるのに置換が適用されないのは
s コマンドをすり抜けてることになるから
やっぱり変だと思う
行が消えるか置換されるかのどちらかにしてほしい
2019/03/04(月) 03:15:09.86ID:7jirzQsK
だったら N を使わなければいい。
まず置換して出力してから n だ。
2019/03/04(月) 03:32:05.04ID:86pOm4tz
>>437
最初と言ってること違ってるぞw
「動画だけで十分」じゃねえのかよ。

「動画も静止画も必要」なんだとして、どちらか一つを選ぶのなら
俺は静止画のほうがいいと思うけどね。
2019/03/04(月) 06:35:36.38ID:gp7c1w5E
> 「動画だけで十分」じゃねえのかよ。

どこに動画だけで十分なんて書いてあるの?

>>416でも
> 動画用意したからって、文章も用意すればいいだけだし
ってかいてあるし
2019/03/04(月) 06:36:19.08ID:gp7c1w5E
> 「動画も静止画も必要」なんだとして、どちらか一つを選ぶのなら
> 俺は静止画のほうがいいと思うけどね。

だから両方作るって話なのに、
勝手に条件変えるなよ
2019/03/04(月) 08:23:40.99ID:2krvDloK
処理する行の指定ってどうすれば
seq -w 10を2行間隔で文字入れたりsleep挟みたい
2019/03/04(月) 09:16:27.47ID:lRT8jSxX
>>451
まず sleep 入れる方。やり方は、色々あると思うけれど、たとえば、
seq -w 10 | { while read r; do echo $r; sleep 2; done }
間隔を開けて、そこに文字を入れる方は、上の "sleep 2" の代わりに echo を入れればよい。
2019/03/04(月) 11:06:20.36ID:2krvDloK
>>452
まさにこれだわ�dクス
ループする時は複合コマンド使った方とかあるの?
2019/03/04(月) 11:06:40.42ID:Tw+wpVSX
hoge=fuga ; export hoge は export hoge=fuga と等価ですよね?
わざわざ前者の書き方をしているスクリプトを見かけますが何か意味あるんですか?
2019/03/04(月) 11:14:03.07ID:zBAP+DEh
>>453
複合コマンドにする必要ないし。これと同等

seq -w 10 | while read r
do
 echo $r
 sleep 2
done
2019/03/04(月) 11:20:36.79ID:zBAP+DEh
>>454
それの場合は等価だけど、分けて書いたほうが安全な場合がある

#!/bin/sh
set -e # エラーで止まるようにする
foo() { echo foo; return 1; } # エラーを返す

a=$(foo) # fooがエラーを返すのでここで止まる
export a=$(foo) # fooがエラーを返しても止まらない。aにはfooが入る
2019/03/04(月) 12:11:46.77ID:pa7KIWw2
>>437
ヒドイwww
458login:Penguin
垢版 |
2019/03/04(月) 16:34:54.76ID:V4TXU+mW
交互 cat ってできますか?
具体的な動作としては

$ cat file1
abcde
fghij$ cat file2
1234
5678
$ cat file3
あいうえお
かきくけこ
$ ./hogecat file1 file2 file3
abcde
1234
あいうえお
fghij5678
かきくけこ

こんな感じで自作してみましたが
簡単にできる方法があるならそちらを採用したいです
2019/03/04(月) 17:11:39.45ID:86pOm4tz
>>456
これ知らんかったわ
2019/03/04(月) 18:23:08.35ID:zBAP+DEh
>>459
shellcheck使うと良いよ。これも警告してくれる。
2019/03/04(月) 18:38:28.74ID:uZI6VJZX
>>458
pasteで区切り文字を改行にする、かな
2019/03/04(月) 19:40:15.81ID:SUIRuvuW
>>456
ありがとうございます。
exportだと返り値が隠蔽されるのは知りませんでした。

shellcheckいいですね。人様に渡すときは使うようにします。
ちなみにCentOS7でEPELリポジトリから入れたバージョン0.3だと、今回のチェック(SC2155)は引っかかりませんでした。
0.4以降だと大丈夫でした。
2019/03/04(月) 20:38:39.25ID:zBAP+DEh
> exportだと返り値が隠蔽されるのは知りませんでした。

exportがというより変数代入なら止まる。と言った方がいいけどね。
だから echo $(foo) とかもfooでエラーが起きても止まらない。

exportもechoも$(foo)はコマンドの引数だけど
a=$(foo) 変数代入は引数ではない。という違い。


shellcheck薦めておいてなんだけど、shellcheck disableで無視したほうが
いい場合が結構あるので注意。他の言語だと警告は無効化せずに
対応することが多いけど、shellcheckは問題ないようなものまで警告してくる
(というか言語仕様的に問題あるかどうか判断が難しいのだろう)
464login:Penguin
垢版 |
2019/03/04(月) 21:24:15.16ID:WFwFDhrz
zipパス忘れた
助けて。Mint18 64bit
465login:Penguin
垢版 |
2019/03/04(月) 21:35:52.39ID:WFwFDhrz
助けて助けて。助けて。嘘じゃないよ
ナニが封印されちゃうぅうww ちょっww ごめww
zipパス はやくぅぅうwww
466login:Penguin
垢版 |
2019/03/04(月) 22:34:26.85ID:F/LYKhNF
WindowsのFirefox・Thunderbirdのプロファイルフォルダと
LinuxのFirefox・Thunderbirdのプロファイルフォルダって互換性あるんですか?
2019/03/04(月) 22:44:02.93ID:GV7+AJm8
ある
468login:Penguin
垢版 |
2019/03/04(月) 22:45:19.85ID:F/LYKhNF
あるんだ?
改行コードとかは手動で直すのですか?
2019/03/04(月) 22:47:08.02ID:SUIRuvuW
>>463
ありがとうございます。勉強になります。
set -e してればエラーで即止まってくれるから安心、って思い込むのは色々と危険ですね
2019/03/04(月) 23:18:09.47ID:GV7+AJm8
>>468
改行コードってメールの?
自動判別じゃなきゃ自分か他人の手で変換する必要があるかもね
2019/03/07(木) 23:44:59.33ID:9RX327Te
変数に複数行を格納しておいて、
複数行が格納された変数から指定行を取り出す方法ってありすまか?

ls
hoge
fuga

$var=`ls`

echo $1行目
hoge

echo $2行目
fuga
2019/03/07(木) 23:48:39.45ID:9RX327Te
>>471
すみません、例に書いたコマンドは
実際には出来ないのですが、こんな感じで〜っていう動作イメージを示すものです
2019/03/07(木) 23:49:23.13ID:9RX327Te
>>471
何度もすみません・・・
シェル種類はbashでお願いします・・・
2019/03/08(金) 02:56:36.15ID:rNX8CX31
配列使うんじゃダメなの?
2019/03/08(金) 03:17:55.21ID:Zt7EQAZk
>>471
var=`ls`
set $var
echo ${1}
echo ${2}
とか
2019/03/08(金) 07:05:23.68ID:BVim9Nbp
>>474
>>475
配列を使うことで出来ました、ありがとうございます

>>474
まだ・・勉強初めて間もないので、配列という変数を知りませんでした
477名無し
垢版 |
2019/03/08(金) 19:55:49.21ID:Kiof5Lak
Redhatでルートテーブルのデフォゲを冗長化させたいです
ラウンドロビンとかフェイルオーバーとか何かで出来る手段ありませんか?
2019/03/08(金) 22:03:15.67ID:+GKEL25f
>>477
デフォゲ側をVRRPとかで冗長化するのが普通じゃね?
2019/03/10(日) 17:34:39.89ID:Q4jz2qvH
始点と終点を指定してその間を表示するコマンドってある?
$ echo foobar | CMD 1 4でfoobみたいな
本当は文字のfとbを直接指定したいけど
2019/03/10(日) 17:45:51.74ID:ITXMjVzW
cut でできるよ。UNIX ではかなり大昔から使われてる 。
2019/03/10(日) 17:46:36.84ID:owtNoBg1
>>479
cut -c1-4
482login:Penguin
垢版 |
2019/03/10(日) 18:05:17.71ID:hdFHnQ1x
>>174
だっせ
483login:Penguin
垢版 |
2019/03/10(日) 18:10:46.71ID:hdFHnQ1x
>>454
分けて書けば、コメントアウトできるじゃん
484login:Penguin
垢版 |
2019/03/10(日) 18:15:08.76ID:hdFHnQ1x
>>476
配列は使うな
移植性が悪い
485login:Penguin
垢版 |
2019/03/10(日) 18:22:11.16ID:hdFHnQ1x
sed 's/f\([^b]*\)/&1/g'
486login:Penguin
垢版 |
2019/03/10(日) 18:25:30.43ID:hdFHnQ1x
間違えた
sed 's/\(f[^b]*\)/&1/g'
487login:Penguin
垢版 |
2019/03/10(日) 18:28:26.77ID:hdFHnQ1x
何に使うんやろ?
何かのレコードだったら、記号で区切った方がいいよん
488login:Penguin
垢版 |
2019/03/10(日) 18:54:16.80ID:hdFHnQ1x
>>454
すまん、テキトーだった
将来hogeの値が条件によって変わるような場合に備えて
すべての場所でexportを書くのを避けるためだ
489login:Penguin
垢版 |
2019/03/10(日) 18:55:57.64ID:hdFHnQ1x
sed 's/\(f[^b]*\)/\1/g'
こっちだ
490login:Penguin
垢版 |
2019/03/10(日) 19:18:01.30ID:+N9fwbyB
配列が一番簡単だと思うけど、全部カンマ区切りの文字列にすると言う方法もあり?
2019/03/10(日) 20:12:23.21ID:gxxV1MPC
>>484
移植性っつってもBashやKshくらいどのシステムにもインストールできるでしょ。
質問者の発言から察するに,(勝手にソフトウェアをインストールできないような)仕事としてのシステム管理者であるとは思えないし。
2019/03/10(日) 20:19:59.55ID:uosO+70u
shはどこにでも入ってるから
普段はbashでもスクリプトはshで
走るようにすれば移植性なんて気にしなくていい
2019/03/10(日) 22:57:55.30ID:SLI/47nQ
>>492
そうとも限らない。
各シェルの互換性は完璧ではない
2019/03/10(日) 23:05:28.69ID:SLI/47nQ
>>475
それじゃだめ。

>>471
> 変数に複数行を格納しておいて、
> 複数行が格納された変数から指定行を取り出す方法ってありすまか?

これぐらいサクッと出来ないとな(他の人へ)

#!/bin/sh

var=$(
echo a b c
echo d e f
echo g h i
)

IFS='
'
set -- $var
echo "${2}"
2019/03/11(月) 01:56:17.52ID:b7KJyx3Q
>>494
echo d e f って出力されないですね。
echo を取ると not found って出ます。
だめじゃないですか?
2019/03/11(月) 03:42:05.50ID:RJEgJ+jJ
>>495
馬鹿かお前。

$( ・・・ ) の中にlsって書いたら
lsって文字が出るとでも思ってんのか?

馬鹿か?
2019/03/11(月) 08:01:43.00ID:lgCKDORY
>>494
「それじゃだめ」と言う程の問題かな。
lsの結果に「filename with space」とか「-o file」みたいな
Unix的に優しくないファイル名があった場合にだけ困るだけっしょ。
2019/03/11(月) 08:21:52.13ID:or879oOQ
>>492
Debian系がashを使ってるって知った時どう思った?
2019/03/11(月) 08:27:21.19ID:RJEgJ+jJ
>>497
誰がファイル名の話だと言ったんだ?
2019/03/11(月) 09:03:17.78ID:fdNo7ExV
>>498
shが入ってないと思ってるのか?
2019/03/11(月) 09:09:57.46ID:fdNo7ExV
ごめん、入ってないみたいだな、、、
2019/03/11(月) 09:16:05.93ID:UtVUpMB8
Linux 4.0 から最近出た 5.0 まで、全てのアップデートが「些末な問題」なわけだが、今後大幅なアップデートがあるとしたらいつどのような更新になるのでしょうか。
2019/03/11(月) 10:00:52.61ID:20xOvXJ8
shは*shのシンボリックリンクになってて、たいてい動くようになってるんじゃないの?
2019/03/11(月) 11:17:34.60ID:lgCKDORY
>>502
もしかして更新ログの最終行だけ見てない?
2019/03/11(月) 11:45:05.79ID:UtVUpMB8
>>504
いいえ。Linusの発言だけ見ています。
2019/03/11(月) 11:55:52.43ID:lgCKDORY
あ,ネタだったのか。マジレスしちゃった恥かしいw
2019/03/11(月) 12:18:12.87ID:D4lrX8xX
>>504のどこがマジレスやねん。
2019/03/11(月) 12:22:32.05ID:fdNo7ExV
>>503
いや、だからshとの互換性は怪しい、って話をしてる
2019/03/11(月) 13:32:48.92ID:b7em+55Q
すみませんperlのソースを読み込んで関数名と関数の行数をこういう感じで一覧に表示してくれるコマンドってありませんか?ググったんですが一向に見当たりません
なければ自作するしかない……
$ <command> a.pl
sub1 12
sub2 3
sub3 56
2019/03/11(月) 13:41:13.11ID:NlOV+m0j
perlで作ればいいじゃん
2019/03/11(月) 15:03:11.62ID:X+iurEOE
>>509
コマンドは知らないな、vimでできそうだけどbashで帰りとして使いたいってことでしょ。
2019/03/11(月) 15:06:51.54ID:D4lrX8xX
>>493
/bin/sh スクリプトが他シェルで互換性が無いというのは、例えばどんなん?
bash4スクリプトがbash2で動かんとかのレベルなら、まぁ個人的には拘らんくてええかな?
2019/03/11(月) 15:19:51.10ID:5chXzScl
>>512

echo コマンドの違いと移植性の問題
https://fumiyas.github.io/2013/12/08/echo.sh-advent-calendar.html

10. 移植性のあるシェルプログラミング
https://web.sfc.wide.ad.jp/~sagawa/gnujdoc/autoconf-2.59/autoconf-ja_10.html
2019/03/11(月) 15:20:31.18ID:5chXzScl
>>509
ctags
2019/03/11(月) 15:41:21.39ID:mMEYG+/o
perl -ne '( $disp = /^sub\s+(\S+)/ .. /^}/ ) || next; if ( $disp == 1){ $name = $1; } elsif ( $disp =~ /E0/ ){ print("$name $disp\n");}'
2019/03/11(月) 16:34:07.38ID:lgCKDORY
ctagsのオプションにそんなんなかった?
2019/03/11(月) 17:16:44.33ID:Vc4czoA6
vimでさテキストファイル開いてから終了すると
端末の表示が元に戻るじゃん?
あれどうやってるの?
2019/03/11(月) 18:21:52.93ID:lgCKDORY
>>517
https://vim-jp.org/vimdoc-ja/options.html#%27norestorescreen%27
こことか読むといいかもね。
2019/03/11(月) 18:33:02.70ID:lgCKDORY
ちなみに俺のところの
t_teは「^[[?10491^[[23;0;0t」つまり
DECRSTのプライベートモード1049番とDECRSTの23番(端末のタイトルをスタックから復元)になってた。
520517
垢版 |
2019/03/11(月) 18:44:47.41ID:FnPcS+A1
それじゃなくて1049を使ってるのかー
1じゃなくてlな
2019/03/11(月) 18:51:51.63ID:FnPcS+A1
表は見つけてたけど、くっそわかりづれぇわ
https://ttssh2.osdn.jp/manual/ja/about/ctrlseq.html

1. エスケープシーケンスがESCから始まって、
2. ESCの次が [ だったら CSIシーケンスになって
3. [ の次が ? だったら DEC/xterm 拡張モードで
4. ? の次が 1049 だから代替画面バッファで
5. 3の続きとして、最後が h だと 代替画面バッファの有効で l が解除 かよ

なげーわ。

てか色々できるけどここらへんまともに動くんか?
2019/03/11(月) 19:27:09.24ID:lgCKDORY
>>520
ん?1049って書いてるぞ? と思ったらなぜか
最初のやつだけ10491になってたw
■ このスレッドは過去ログ倉庫に格納されています

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