初心者の質問相談にやさしく答えるスレ 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/ 禁止事項 ・トリを使おうとしている質問者に対して、そんなトリはやめろとかという、斜め上からのアドバイス ・質問者そっちのけでの昔語り(昔はもっと苦労したもんだ、今の若い者は…) ・知らないのに、使ったことないのに、知ったかぶりでの書き込み ・ググれという誰でも言えそうな忠告 ・俺は知ってるけど言わない等といった、実社会での扱われ方からの僻みから来る ・意地悪な言辞 >>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を用いるとよいだろう。 テキストファイルの1行目が特定の文字列だったら的な処理がしたくて if [ $(head -n 1 ./file.txt) = "ABC" ] こうやって書くとテキストファイルが空だった時にunary operator expectedでエラーになるんだけど 一旦変数に入れてやるなりしないとだめですかね "$変数"ならエラーにならないんだけど 環境 lubuntu18.04 xorg xmonadをダウンロードした後にログアウトしてlightDMでxmonadを選択してログインしたら何も映らなくなった 仮想コンソールは映る 再起動しても意味なし dmrcの中身をxmonadからlubuntuに戻しても意味なし コンソールからxinitrcを読み込んでstartxすればそのGUIは映るけど普通に起動すると駄目 なんが原因でどうしたらいいんでしょう? 知らんがlightDMを入れ直したら? sudo apt --reinstall install lightDM やってみるけど多分駄目だろうな DMは関係ないっぽい なんかいろいろ挙動が異常 >>265 役に立つかどうかわからないけれど、~/.xsession-errors と /vag/log/Xorg.0.log を まず見るところじゃないの。うちの場合は、Xfce4 だから、~/.xfce4-session.verbose-log なんてのもある。 おまえらカロリーメイトの特設サイトでコマンド打ってこいよ open jtalkのオンラインデモ、今音声出力出来るか すいませんtimedatectlコマンドはSystem clock synchronized: yes NTP service: active の場合、実行するだけで即座にNTPと同期してくれるのですか? >>271 ありがとう ntpdate要らなかったか update-grubを実行したドライブ内のOSだけ検出することって出来ますか? USBメモリに複数のディストリを入れています。 update-grubしたときにこのUSBメモリ以外は無視してほしいのです。 他を物理的に外したりBIOSで無効にしたり、あとでgrub編集するより、 最初から検出しない方法があればと思っています。 CMD| `cat -`をしたらCtlr+dで入力の終端を明示するけどこの操作を自動化できないです? >>275 CMDがどんなコマンドかわからんけど execとかそういう話? windowsにはどこにでも置けて単一で機能するexeがありますがLinuxにはないんです? もしくは一つのフォルダで完結するポータブル版 >>277 拡張子が exe ではないけど、単体で動作するモノは何処に置いても 動作するよ。 出力のプロセス置換って使う機会ないけどどんな時に使うんです? >>280 NGで元ネタ見れないけど appimageでしょ? あれの、注意点は appimage作った環境が ibusかFcitxかっで 日本語入力できるか、できないか って変わってくるんだけど… いまの、Ubuntuがibusだから 自分のマシンもibusにしとけば ほぼほぼ、ちゃんと使える って 環境が手に入る まともな日本語使えてないのに日本語入力必要なんだw Ubuntuとあるからappimageじゃなくてsnapことを語ってるのか? あと改行が気持ち悪い >>283 元ネタは、Linux には、 ・何処にでも置けて実行出来る exe のようなモノは無いか? ・一つのディレクトリで完結する実行環境は? だから、Windows のように個人専用環境を整えたいって ことじゃね?Windows で言う、PortableApp やらインストール 不要なアプリみたいなの。確かに Windows だと USB に 環境詰めてるけど、Linux では考えたことないな。 >>283 >>287 なんだこの変な読点の打ち方 「NGで元ネタ見れない」とか知らんよ 自分で登録したNGワードなんだから自分でなんとかしろよ >>289 NGいっぱいあるから、どれだか わかんないんだよ で Appimageググってみたの? なんか、外してた? 277 が何で NG なのかわからんけど、流れも読めないなら黙ってて。 >>291 流れってなに? どうせ、exeみたいに、単体で どこでも実行できるヤツないの? とか そんな話なんでしょ? だから、Appimageが、それだよ って書いただけじゃん しかも、Appimageで日本語入力できない時があるから それの説明までしてあげてるのに… >>293 流れって 改行が気持ち悪い って 話だったのかな? 改行だってね 無限にできるわけじゃ無いんだよ 改行多過ぎ って怒られて、書き込めない事もある Ubuntuを使っています。コマンド入力をしたことがなかったので色々と練習していたら 困ったことが起こりました。eogで画像を開いた後に端末がコマンドを受け付けなくなりました これは文字が入力できないという意味ではなく、エンターを押しても改行されるだけで次のコマンドの 受け付ける状態にならないという意味です。どうやって解決すればよいでしょうか もちろん端末を開き直せばそれでいいのですが >>295 eogがフロントで実行されてるから当然そうなる eogを手動で終了させるか $ eog hoge.png & みたいな感じでバックグラウンドで実行させればいい >>295 296 の判断が正しいとして (たぶん、正しい)、そういうときに、とりあえずすることを もう少し追加すると... 端末で Ctrl-z を押す (実行しているジョブの一時停止)。続いて端末から bg と 入力する (ジョブをバックグラウンドに移す)。それで、アプリケーションも端末も 使えるようになる。 >>296 >>297 ありがとうございました。バックやフロントという概念すら知らなかったので勉強します 帯域制限に関してご質問です。 送信元サーバ一台、受信サーバ3台(4台の各サーバのセグメントは違う) この場合送信元サーバから各セグメントに対して帯域制限を行うことができるのでしょうか? ※イメージ的にはWindowsのポリシーベースのQoSのような感じです。 >>299 相手ホストごとにVLAN切ってtcでできるんじゃないかな >>51 おそらく、 メモリ上に存在するだけだから再起動したら消え去るんじゃないかな。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる