初心者の質問相談にやさしく答えるスレ Part13
■ このスレッドは過去ログ倉庫に格納されています
聞き方が悪いから教えない、 とか、「俺は教育的目的から、わざと全部は教えないことにしている」 などという、下記スレに巣食っているロートルはお断り。 初心者に優しく応えようとする気のある人が、 今となってはバカバカしく思えるような質問相談にも優しく答えるスレです。 オススメLinuxディストリビューションは? Part77 https://mao.5ch.net/test/read.cgi/linux/1585131003/ 【初心者】Ubuntu Linux 128【本スレ】 https://mao.5ch.net/test/read.cgi/linux/1588073533/ 前スレ 初心者の質問相談にやさしく答えるスレ Part12 https://mao.5ch.net/test/read.cgi/linux/1559314687/ 禁止事項 ・トリを使おうとしている質問者に対して、そんなトリはやめろとかという、斜め上からのアドバイス ・質問者そっちのけでの昔語り(昔はもっと苦労したもんだ、今の若い者は…) ・知らないのに、使ったことないのに、知ったかぶりでの書き込み ・ググれという誰でも言えそうな忠告 ・俺は知ってるけど言わない等といった、実社会での扱われ方からの僻みから来る ・意地悪な言辞 で結局synthesize vはどうやって動かすんだ で結局synthesizer vはどうやって起動するんだ >>161 あの無駄な連打は何だったんだ・・・ ちゃんと読んだ方がいいのね 文字列の末尾でソートってどうやるんです? aaa.com/3 bbb.com/sub/2 ccc.com/sub/sub/1 みたいなURLや列が不揃いな場合 >>165 単純にバージョンソートってわけには行かないんですね。それなら ... 文字列の最後が「スラッシュ、数字、数字 ...」でないとうまく行かないけれど、一例を上げると、 sed 's|\(.*/\)\([0-9]\+$\)|\2 \1|' sample.txt |sort -n | sed 's|\([0-9]\+\) \(.*\)|\2\1|' >>165 $ awk -F/ '{print $NF,$0}' foo.txt | sort -n | cut -d" " -f2- ccc.com/sub/sub/1 bbb.com/sub/2 aaa.com/3 区切り決められて列順序を弄れるawkパイセン便利よ rsyncについての質問です hoge1のパソコンからhoge2のパソコンにtestsuruというディレクトリ同期させるために rsync -auv --delete ssh /home/hoge1/testsuru/ hoge2@aaa.bbb.ccc.ddd:/home/hoge2/testsuru_backup としたら rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1207) [sender=3.1.3] とエラー出ますが同期出来てます これは 1.ファイルの所有者を同期出来ませんよ 2.例えばテキストファイルで、hoge1はMousepadで開くと設定だが、hoge2にはMousepadが入ってない の時に起こるエラーと考えて良いのですか。不安なので。 >>169 see previous errors→私の頭では解りませんでした その後試したこと rsync -auv --delete -e ssh /home/hoge1/testsuru/ hoge2@aaa.bbb.ccc.ddd:/home/hoge2/testsuru_backup -eオプションを付ける→エラーなし rsync -auv --delete /home/hoge1/testsuru/ hoge2@aaa.bbb.ccc.ddd:/home/hoge2/testsuru_backup sshを記述しない→エラーなし 属性が転送出来ないという意味かとおもてたけど、よくわからないです。も少し調べてみます(_ _) $ mkdir DIR $ ln -s DIR linkDIR $ touch DIR/foo.txt ThunarでうっかりDIRとそのsymlnk間でファイルを移動したら見事に消えたわ windows10が入っているSSDとは別のSSDにUbuntu20.04を入れてデュアルブートにしました。BIOSから入る事はできるのですが、起動したときにどちらのOSに入るか選ぶ事ができません。どうすれOS選択画面が出せるでしょうか。マザーボードはASUSです >>172 ブートローダ(GRUB)を別のSSDに入れてるんだろう BIOS/UEFIからその別のSSDの起動優先順位を上げて、Linux側から(必要なら設定を書き換えて)update-grub 言ってる意味もわからないレベルなら素直にBIOS/UEFIのブートメニューから毎回選択してください 内蔵と外付けで分けてるならその都度bios入らないで起動オプションの方で起動したらgrubで選択するのと大して変わらない ような… grubで選択したいならgrub customizerでメニュー設定が楽 >>174 ありがとうございます。無事にos選択画面は出てきたのですが、windows10が表示されません。BIOSから起動はできます。os選択画面にwindows10を表示させる方法がわかる方はいらっしゃいますか? CSVを扱うソフトやコマンドってある? 化石PCなんでcalcだとちょっと重くて scpでファイルをコピーするとき、接続先のディレクトリの階層が深いとtabで補完できなくて打ち間違いしたりするのですが 何か良い方法ありませんか? vscodeでdockerイメージを読み込んでターミナル開くところまではいきました。ここからコードをうつ画面を出してpythonのプログラミングをしたいのですがよくわかりません。参考になるサイトなどあれば、教えて下さい >>178 Ruby で、CSV を扱える。例えば、 require 'csv' # 引数には、ファイルパスを渡す file_path = ARGV[ 0 ] # CSV ファイルを、1行ずつ処理する。列0・1 を表示する CSV.foreach( file_path ) do |row| puts "#{ row[ 0 ] } : #{ row[ 1 ] }" end >>178 何をしたいの? CSV データを表として画面に出力したいだけ? それなら、util-linux の "column -t" が使えるかもしれない。 新しいバージョンは、かなりいろいろな機能があって、便利になってる。man の新しい翻訳も以下にある。 http://linuxjm.osdn.jp/html/util-linux/man1/column.1.html >>182 ちょっと文章おかしかったですね。 言いたいことは、「tab補完が使えないとき、長いファイルパスを暗記して入力するのが大変」ということでした。 何かいい方法あればと思いまして、質問させていただいた限りです。 俺が使ってるcolumnはbsdmainutilsの方だけどこれでutil版も入れたらどうなる? 別パッケージで競合するコマンドなんて考えたことなかったわ >>188 やっぱりその方がいいですよね 今までめんどくさがってましたが、ちゃんと鍵作るようにします >>186 競合するコマンドがいくつもあるだけでなく、ライブラリの競合もあるみたいだし、 私としてはインストールするのは気持ちが悪いので、ソースをもらってきて、 make までして、インストールはせずに、使いたいものだけ alias して使っています。 ど素人の見当違いの質問かもしれませんが、是非お答え下さい。 mailbox形式のメールサーバーにおける、/var/spool/mailと〜/mail/mailboxの関係を明確につかめません。 ローカルドメインを宛先とするメールを受信するとまず/var/spool/mailに入り、その後muaでメールを受信すると〜/mail/mailboxにはいるのかなと思っているのですが、合っていますか? echo "hoge:foo" | base64 というコマンドを打ってから、何のコマンドを打っても(例lsなら) ls: line 1: hoge:foo: command not found と出て使えなくなりました $PATHには変な文字列は入ってませんでした どこの設定を壊してしまったんでしょうか? 端末の起動がもたつくようになった 関数は一つのファイルに大量に書くより外部ファイルとしてPATHを通した場所に置く方がいいんだろうか >>193 別ファイルにしたらそれを読み込む負担が増えるから悪くなることはあっても 良くなることはないような気がする 基本拾った関数やエイリアスは.bash_aliasに書いて巨大な関数やsh以外は~/binに置いてるがこれでいいよな? sedって/パターン/の文字区別無視は無理なんだろうか iが使えるのはsだけだし 質問がよくわからないんだけど、アドレスで正規表現を使う場合に、大文字小文字を区別したくないということ? info sed によれば、I フラグを使う手があるらしい。こんな具合。 $ sed -n '/foo/Ip' sample.txt コマンドラインで行の移動ってどうやるの $ seq 3 | CMD 1 3 2 みたいなん 何がしたいのか全然わからんが なんでもいいからとにかく行の順番を変えたいなら $ seq 3 | shuf >>200 $ ed -s <(seq 3) <<< $'3m1\n,p' ubuntu mate 20.04 +fcitx-mozcのかな入力環境下で「¥|-」キーを別のキーに割り当てたいんですが、半角のときは「¥」、かな入力のときは素直に「ー」を出せるようにするにはどこをいじったらいいでしょうか xmodmap -e 'keycode 51=yen bar' とやるだけでは「¥」は半角でそのまま出ますが「ー」はかな入力時にSHIFT+キーじゃないと出ません 「ー」をSHIFTなしで一回で出せるようにしたいのです mozcの方にかなテーブルがどこかにあるのかと思って探しましたがわかりませんでした 所有者がルートのファイルをsudo rm で削除できるのに sudo cat ルート所有のファイル > 新規ファイル ってやるとできないけどなぜなんですか? >>204 権限がありませんって出る あとコピーはできる >>204 > sudo cat ルート所有のファイル > 新規ファイル sudoの効力は「cat ルート所有のファイル」まで 「>」以降はsudoする前のシェルがやる 「echo hoge >新規ファイル」ができないのと同じ >>204 リダイレクトやパイプはsudo前のシェルが自分の権限で処理するので sudo sh -c "cat example.txt > output.txt"としてroot権限のシェルでリダイレクトを処理させるか sudo cat example.txt | sudo tee output.txtのようにteeで代用する vimでreadonlyのファイルを強制保存する時もtee使うんだよな sudo付け忘れた時とか よっぽどのことがない限り入る 多くの場合はグラホがうまく使えないとかあるけど でもここで聞くレベルじゃISO用意できなかったりするんじゃないの ちなみにいまどき無線LANが使えないってないわ これくらいのレベルならヤフオクで5000円くらいだからそっちで選べばいいと思う 複数行単位で逆順ってどうやる? $ seq 4 | CMD 3 4 1 2 こんなん seq 10 |tac |sed -n 'h;n;p;g;p' sed 版は行が偶数である必要があるので、基数でも構わないように awk 版。 seq 11 |tac |awk 'NR % 2 != 0 {line = $0; next}; {print $0"\n"line} END{if (NR % 2 != 0) print $0}' xargs で、行列変換できるのでは? a b c a b c >>212 例は2行単位のもの出しているけど、2行単位以外の複数行(3行とか4行との)単位でもやりたいのか? sedの基本は理解したが肝心の処理の流れが分からんわ パターンスペースだのホールドスペースだの 処理過程の行を表示する方法はないのかしら >>212 長くなれば配列使ってループで回す seq 4 | xargs | awk '{print $3 "\n" $4 "\n" $1 "\n" $2}' 自分ならスクリプト書いてwhile readしちゃうけどなあ ちなみにスクリプト書くのがえらいとは思ってない 仕事でシェル書ける?って聞かれたことあるけど当然あると答えるんだけど パイプを使った簡単な方法を思いつかないとメンテが大変なスクリプトを残すことになる まあ1行で書かれた難解なコマンドを解読するのも面倒なんだけどw >>218 自分が使ったわけではないけどsedsedつーのがあるらしい 自分は処理を想定して置換パターン考えるけど 思ってるように置換されないことはよくあって超テストしまくる 今はシェルスクリプト書くこと少ないんだけど あーこれ過去に悩んだわってのは結構多く解決したあとに思い出す >>221 ワンライナーの方が保守性が低いだろうに やっていることが複雑なプログラムは 結局何で書いても保守性は上がらない >>226 シャープは台湾資本のメーカーだから安心だな VARが複数行の場合はどうすれば? $ VAR=`seq 1`; seq 2 | sed "s/$VAR/@&/" @1 2 $ VAR=`seq 2`; seq 3 | sed "s/$VAR/@&/" sed: -e expression #1, char 3: `s' コマンドが終了していません VAR=`seq 2`; seq 3 | perl -0777 -pe "s/($VAR)/\@\$1/" sed でやるなら sed の文法に合わせる必要がある。 すなわち、改行をエスケープシーケンスに置き換える。 それをした上でも sed でやるには N や t を使う必要があるだろう。 そして多分、本当にやりたいことはそれではないだろう。 なにをしたいのか正直に書いたほうがいいと思う。 URLのメモがあって特定のURLの行頭に#を入れたいだけなんだ 実際のVARには対象行の文字列が入ってる sed ' /aaa/s/^/#/ /bbb/s/^/#/ ' foo.txt これを大量に書かずに済む方法はないかってこと hoge = PARAM1:VALUE1-0:VALUE1-1;VALUE1-2 こういうあたいを、最初の:区切り文字にするっていう方法ありますか? 具体的には、 hoge = PARAM1 と VALUE1-0:VALUE1-1;VALUE1-2 に分けるのが望みです。 関係あるかわかりませんが、実際には区切り文字の:は半角です、 半角コロンは視認性がすんごい悪かったので、視認性のため全角にしております。 よろしくお願いいたします。 >>232 改行されたURLのみのリストならこれで大丈夫なはず xargs -I{} sed '/{}/s/^/#/' < url_list.txt >>233 cut -d ':' -f 1 と cut -d ':' -f 2- でできるよ >>235 ありがとうございます。 N番目から最後までってのがあるんですね。 勉強になりました。 >>234 これじゃ動かんわ こっち sed 's|/|\\\\/|g' url_pattern_list |xargs -I{} sed '/{}/s/^/#/' url_list URL には . も含まれてると思うのだが、エスケープしなくていいのだろうか。 行全体のマッチじゃなくていいのだろうか。 パターンの数だけ sed を起動するよりもスクリプトファイルを作って それを実行する方が効率的でデバッグもしやすいのではなかろうか。 当人が判断すればいいことだが、ちょっと気になった。 >>238 >>230 の条件が 複数のマークする対象が変数に入っている、絶対にsedは使う、1ライナー なんだよ。 Linuxユーザーは超こだわりを持つ奴がおおいからな (なんで、そんなにこだわる? 基地外かよな奴が多いからな) Debian でディスクレスシステムもどき (USBメモリでBIOSモード起動、NASへiSCSIで接続してルートマウント) を作ったんですが、 シャットダウンや再起動しようとすると NIC が落とされるのが早いのか、処理がうまくいかないようです。 (シャットダウンシーケンス中なのに waiting for ifup for enp1s1 ( 1 min 30 sec ) ... みたいな感じ) 数分待てば再起動できるけど、どうにも時間がかかりすぎるのでなんとかしたいです。 たぶん NIC を落とさないようにするのかな、と思いつつも、どう検索したらいいのか分からずここに来ました。 分かる方、よろしくお願いします。 >>238 悪いこと言わないからここのスレタイを一度読んでみ? https://qiita.com/dankogai/items/ffc4f31a8a949bd7ec01 上記のサイトをみながらzfsについて勉強・検証しているのですが zfs snapshot tank@20201003 このコマンドは通るのですが、 上記のコマンドを打たずに以下のコマンドを打つと「WARNING: could not send tank@20201003: does not exist」と表示されます。 zfs snapshot tank@20201003 > tank@20201003.zfs 上記ページをみても書いていなかったので、シリアライズする際は一度スナップショットを取ってからしかできないという理解で間違いないですか? aa.html foo bb.html cc.html この中で連続するhtmlをsedで全消しするにはどうすれば? この例だと結果はaa.htmlとfooの2行ですが実際の行数は不定です あくまで特定の文字列を含む行が連続したら消すってことです >>247 わざわざsedを指定しているってことは、 sedでやることが一番重要なことなんだよ。 (sedでやっていないのはイラネよーーーだろ) おかげで、高脳案件になってしまっているからな。 >>246 最初から全部やりたいこと書けよ 誰かが答えたら行末じゃないとか言い出すんだろ sed で書いてみた。長いよ。 #!/bin/sed -nf /\.html/! { :print p b end } /\.html/ { # 文字列 html 1 行目 $ { # html のある 1 行目が最終行なら表示する p b end } h n /\.html/! { H g b print } /\.html/ { # 文字列 html 2 行目、4, 6 ... 行目 :loop n /\.html/! b print /\.html/ b loop # 文字列 html 3 行目、5, 7 ... 行目 } # 2 個目からのループの終わり } # 1 個目からのループ終わり :end sedのverboseモードってないだろうか 習熟できてないからなんでこんな結果になるんだってのが多くて 結果が出ない時もあるし >>250 rubyの人の書き方ににているが、ひょっとして,rubyの人? なんか、俺よりずっとsedに詳しい感じだな。 rubyできる人なら、それなりにシェルスクリプトができても不思議ではないだろうからな。 >>251 頭のいい人はsed,awk,正規表現とかをすげーなと言う感じで活用するんだろうが、 低脳の俺なんかは、どう書いたらいいんだ、なんでこんな結果になるんだ だからな Ruby で作った。ただし、ファイルを2回読んでるけど TEXT = <<'EOT' aa.html foo bb.html cc.html EOT # 文字列を含む行番号を、配列に入れる line_numbers = TEXT.each_line.with_object( [ ] ).with_index( 1 ) do | ( line, ary ), line_num | # 各行・蓄積変数・行番号 ary.push( line_num ) if line.include? "html" # 含む end # 上の配列から、連続している行番号だけを残す。2次元配列を平坦化する consecutive_numbers = line_numbers.chunk_while{ |prev, nxt| prev + 1 == nxt }. select { |ary| ary.length >= 2 }.flatten! unless consecutive_numbers puts "連続している行はありません!" return # 処理なし end results = TEXT.each_line.with_object( [ ] ).with_index( 1 ) do | ( line, ary ), line_num | # 各行・蓄積変数・行番号 if line_num == consecutive_numbers[ 0 ] consecutive_numbers.shift # 先頭の要素を取り除く else ary.push( line ) end end print results.join シェルスクリプト、sed, awk は、 覚えることが多くて、ややこしくて出来ない 漏れは可読性・保守性を優先してるから、Ruby しか書けない。 基本、Rubyだと英語のように読めるから plamo linux です mdadm: No devices listed in conf file were found. とメッセージが出てブートしなくなりました 昨日までちゃんとブートしていました 元に戻るにはどうすればいいんでしょうか >>252 こういうのは、パズルを解く感じで面白がっています (実用的だとは思わない)。 sed は、info sed をざっと読んだだけで、よく知りません。 でも、info sed はお読みになると良いと思います。 sed/awkなんてvi/emacsと同じで黎明期に先行者利益で広がっただけで今じゃ棺桶に片足突っ込んでるようなジジイがマウント取るために無理やり活かされてるゾンビみたいなもんだから今の時代そんなもん使わんでいいよ 当時その場の思いつきで作られた合理性の欠片もないオレオレインターフェースやナメクジレベルの鈍足パフォーマンスでメリットなんかないしググりゃちゃんと直感的なインターフェースにマトモなパフォーマンスのツールが他にいくらでもあるから >>255 どうもすみません 何度もやり直して、上手くいかず しばらく放置して電源を入れると 上手くブートしました 失礼 >>257 じゃあその方法で解決する方法を紹介してやりゃいいのにww >>260 ググれば? Linuxでフルパスからファイル名のみ取り出す方法 | 俺的備忘録 そもそも、変換元のPATHの出力をfindで行っているのであれば、「-printf」でファイル名だけを指定すればよい。 find ./ -printf "%f\n" 拡張子削除については、awkやsedを用いるとよいだろう。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる