Unix & Linux

Linux、FreeBSDおよび他のUn * xのようなオペレーティングシステムのユーザーのためのQ&A

3
指定された行番号でsed操作を実行します
行番号が事前に割り当てられている特定の行を操作する簡単な方法があるかどうか疑問に思っています。 ファイルの1、7、14、16行目を出力したいとしましょう。 sed -n '1p;7p;14p;16p' input_file しかし、操作が印刷だけではなく、同じ長いコマンドを4回書きたくない場合、これはさらに複雑になります(そして、はい、同じbash変数を4回代入することで、この長いsedコマンドを作成できることを知っていますが、それは十分に理想的ではありません...)、すなわち sed -n '1{long_command};7{long_command};14{long_command};16{long_command}' input_file 私のファイルのこれらの特定の行で操作を行う方法はありますか?私は次のようなものを期待しています、 sed -n '1,7,14,16p' これは確かに現在の形式では機能しません。 どんな助けでもありがたいです。「いいえ、それは不可能です。」説明付きは私が受け入れる答えでもあります。
8 sed 

2
Linuxファイルシステム階層にREADMEがないのはなぜですか?
Linuxファイルシステム階層(FHS)には、多くの重要なディレクトリが含まれています。たとえば/sys/class/input、PS / 2キーボード設定で遊んでいるところを発見しました。 しかし、これらの重要なディレクトリはすべて別の場所に文書化されているためman /sys/class/input、特定の時点で何が起こるかを説明するようには機能しません。 README階層にファイルを配置して、人々が特定のレベルで何が行われているのかを学習し、内容を操作しやすくしませんか?デバイスが独自READMEのをマウントすることさえできれば、それは本当に素晴らしいことです。

2
共通のヘッダーを使用して2つのファイルの行をマージするにはどうすればよいですか?
ヘッダーとして存在する共通データに基づいて2つのファイルをマージしたい。 以下はその例です ファイル1 >Feature scaffold1 1 100 g 101 200 g 201 300 g >Feature scaffold2 1 100 g 01 500 g >Feature scaffold3 10 500 g >Feature scaffold4 10 300 g ファイル2 >Feature scaffold1 500 500 r 900 1000 r >Feature scaffold2 200 300 r >Feature scaffold3 100 200 …

1
`md5sum`がインターネットと同じハッシュを与えないのはなぜですか?
文字列 "a"のmd5ハッシュを見つけたいのですが、実行echo "a" | md5sumすると、インターネットを検索した場合(たとえば、DuckDuckGoまたは最初に見つけた検索結果を使用した場合)に得られるものとは別のハッシュが得られます。 実行echo "a" | md5sumすると「60b725f10c9c85c70d97880dfe8191b3」になりますが、「0cc175b9c0f1b6a831c399e269772661」である必要があります。 「60b725f10c9c85c70d97880dfe8191b3」の逆ハッシュルックアップを行うと、「a」が表示されます。
8 echo  hashsum 

4
bashで配列値をシフトする方法
例として6つのマウントポイントフォルダーを構築する /data/sdb /data/sdc /data/sdd /data/sde /data/sdf /data/sdg だから私たちは配列を使ってこの簡単なbashスクリプトを書きました folder_mount_point_list="sdb sdc sdd sde sdf sdg" folderArray=( $folder_mount_point_list ) counter=0 for i in disk1 disk2 disk3 disk4 disk4 disk5 disk6 do folder_name=${folderArray[counter]} mkdir /data/$folder_name let counter=$counter+1 done 今、私たちはせずに、コードを変更したいカウンタとしましょう= $カウンタ=カウンタ+ 1 次の配列値を取得するために各ループを配列にシフトすることは可能ですか? のようなものとして ${folderArray[++]}

6
終了コードではなく戻り値に基づいてパイプラインを構築するエレガントな方法?
ステータスコードが役に立たない場合、標準出力からの出力に基づいてパイプラインを構築する方法はありますか? ユースケースではなく、シェルスクリプトの範囲内の質問に答える方がいいと思います。私がやろうとしていることは、国と言語コードに基づいて名前を推測することにより、リポジトリで利用可能な最も具体的なパッケージを見つけることです。 これを例にとると、 $PACKAGE1=hunspell-en-zz $PACKAGE2=hunspell-en 最初の推測はより適切ですが、存在しない可能性があります。この場合、最初のオプション()が存在しないため、hunspell-en($PACKAGE2)を返します。hunspell-en-zz$PACKAGE1 apt-cacheのパイプライン apt-cacheコマンドが実行できる場合は常に、シェルによって終了コード0として定義されるコマンドが成功を返します(のドキュメントからapt-cache) apt-cacheは通常の操作ではゼロを返し、エラーの場合は10進数の100を返します。 これにより、パイプラインでのコマンドの使用がより困難になります。通常、私は404に相当するパッケージ検索でエラーが発生することを期待しています(curlまたはで発生しますwget)。パッケージが存在するかどうかを確認し、存在しない場合は別のパッケージにフォールバックしたい。 最初のコマンドが成功を返すため、これは何も返しません(したがって、||neverのrhs は実行されません)。 apt-cache search hunspell-en-zz || apt-cache search hunspell-en apt-cache search 2つの引数 これは、apt-cacheその引数のANDを取るため、何も返しません。 apt-cache search hunspell-en-zz hunspell-en のドキュメントから apt-cache 別々の引数を使用して、AND結合された複数の検索パターンを指定できます。 したがって、これらの引数の1つが明らかに存在しないため、これは何も返しません。 質問 apt-cacheタスクに戻りコードが役に立たない場合に見られるような規則を処理するためのシェルイディオムは何ですか?そして、成功はSTDOUT上の出力の存在によってのみ決定されますか? に似ている 何も見つからなかったときに検索を失敗させる どちらも同じ問題に起因しています。そこで選択された答えはfind -z、残念なことに、ここで適用できる解決策ではなく、ユースケース固有のものです。ヌル終了を使用せずにイディオムやパイプラインを構築することについての言及はありません(のオプションではありませんapt-cache)

1
カーネル4.13へのアップグレード後、電源がオフのときにバッテリーが消耗する
カーネル4.13にアップグレードした後、電源を切っている間に私のラップトップのバッテリーが消耗し始めました(1日で約30%)。カーネル4.12またはWindows 8.1からラップトップを起動した場合、これは発生しなかったため、問題は明らかに新しいカーネルバージョンに関連しています。 ウェイクオンラン(WoL)が原因で、以前は同様の問題がありました。ただし、それはずっと前にWoLを永久的に無効にすることで解決されました。ethtoolWoLがまだ無効になっていることで簡単に確認できます。 poweroffメニューからラップトップをシャットダウンすると、WoLが再度有効になる可能性がありますか?確かに、ハードシャットダウンを強制した場合(つまり、電源ボタンを押したままにした場合)、バッテリーの消耗は観察されません。ただし、この仮説を検証するのに十分なスキルがありません。 誰かがこの問題をデバッグするのを手伝ってくれるなら素晴らしいです。

5
Kali Linuxに特定のバージョンのGCCをインストールする方法
この質問は、Googleで簡単に見つけられるいくつかの質問やその他の場所で適切に対処されているようですが、以下で説明する理由により、解決策は満足のいくものではありません。しかし、完了のために、いくつかの関連リンクを含めました。 /ubuntu/138284/how-to-downgrade-a-package-via-apt-get /ubuntu/428772/how-to-install-specific-version-of -some-package / 428778 /ubuntu/26498/choose-gcc-and-g-version ... その他。 ただし、この質問は、Galiの非常に特定のバージョンをKali Linuxにインストールすることに関するものです。これは、特定のパッケージとしては容易に入手できないようです。特に、問題はバージョン6.3.0のインストール方法に関するものです。特定のプログラムをコンパイルするにはこのバージョンが必要なので、https://www.reddit.com/r/Monero/comments/6d0ah8/xmrig_miner_new_release/ (おまけの質問として、別のバージョンのGCCを使用せずにこの特定の問題を修正するより健全な方法がある場合は、お気軽に回答してください。ただし、この質問は一般的なものであり、関係なくそれを行う方法を知りたいです上記のプログラムを正しくリンクさせる方法) gccなどのパッケージのインストールに使用できるバージョンは、次のようにして決定できます。 apt-cache showpkg gcc 使用可能なバージョンを「バージョン:」の下に一覧表示します。例: 4:7.2.0-1d1 4:4.9.2-2 インストールは発行と同じくらい簡単です apt-get install gcc:4:4.9.2-2 これにより、古いバージョン4:4.9.2-2がインストールされます。これは、7.2.0-1d1のインストールが存在する場合、それを(私は信じて)上書きするだけです。 バージョン4:4.9.2-2を使用できるようにするdeb http://old.kali.org/kali sana main non-free contribには、/etc/apt/sources.listファイルに追加して を実行する必要がありましたapt-get update。 ただし、必要なバージョンがリストにない場合はどうなりますか? 私はさまざまなソース、たとえばhttp://snapshot.debian.org/や、Google検索からのその他のさまざまな質問やウェブサイトで見つけたものなどを試してい ます。 それらのほとんどは、例えば次のように、私に無視またはエラーを与えます Ign:3 http://snapshot.debian.org/archive/debian/20091004T111800Z lenny InRelease これが機能する場合でも、特定のバージョンをインストールすることは非常に悪いアプローチのようです。任意のソースを追加すると、特定のバージョンが必要にならない場合があるためです。 snapshot.debian.orgでgccを検索すると、非常に古いバージョンのみが表示されます。http://snapshot.debian.org/package/gcc/ 私は最終的にこのアプローチに不満を抱き、ソースtarballからGCC 6.3.0をコンパイルしました。コンパイルは成功しましたが、それをインストールする方法に直面しました。私は、実行中には慎重だmake install、私はそれが改ざんされます恐れるようaptとdpkg、おそらくシステムを破ります。 代わりに、ビルドディレクトリから直接実行しようとしました。PATHの最初のエントリとしてビルドディレクトリを追加しようとしましたが、機能しませんでした。次に、名前を変更/usr/bin/gccして/usr/bin/gcc、gcc-6.3.0実行可能ファイルが存在する場所へのシンボリックリンクを作成しようとしました。これにより、次の問題が発生します。 cc: error trying to …

2
lsは「一致なし」を無視します
と呼ばれるフォルダ内のfoldername、拡張子がtest、atestまたはのすべてのファイルを一覧表示しますbtest。 私の当面の考えは走ることでした ls ./foldername/*.{a,b,}test 拡張機能atestに何もない場合を除き、これは正常に機能しますzsh: no matches found: ./foldername/*.atest。その場合、エラーが発生します。 このエラーを無視して、存在するファイルを印刷する方法はありますか? これはZSHとBASHの両方で機能するために必要です。

5
64ビットプロセッサを搭載した32ビットOSに64ビットプログラムをインストールする
私は興味がある。64ビットプロセッサを搭載した32ビットOSに64ビットプログラムをインストールすることはできますか? 私はラズベリーpi 3でLinuxを実行していて、MongoDBの新しいバージョンをインストールしようとしています。 armv7l GNU/Linux PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)" NAME="Raspbian GNU/Linux" VERSION_ID="9" VERSION="9 (stretch)" ID=raspbian ID_LIKE=debian
8 linux  arm  64bit  32bit 

1
RANDOMをシードでバッシュしますか?
私は$((1 + RANDOM % 1000))乱数を生成するために使用しています。 同様のことをすることは可能ですが、シードを提供することはできますか? 同じシードを指定すると、同じ乱数が常に出力されるようにするには?
8 bash  random 

1
ネストされたコマンドの格納されたリターンコードで終了すると、DashとBashで異なるリターンコードが発生するのはなぜですか?
ランニング bash -c 'bash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;' で結果test1コンソールに印刷されてecho $?印刷するには1、コマンドが内部でどのように返す必要がありますので、正確である私の理解でいる[b/d]ash -cのに対し、返さ dash -c 'dash -c "echo test1; exit 1;" &> /tmp/x; buildresult=$?; tail -n 100 /tmp/x; exit $buildresult;' 結果は同じ出力になりますが、0に従って戻りますecho $?。 シェルとポータブルシェルプログラミングの理解を深めるために、この違いを理解したいと思います。 Ubuntu 17.10(Artful Aardvark)でbash4.4.12およびdash0.5.8-2.3ubuntu1 を使用しています。

1
UNIXパイプの反対側のプロセスの名前?
2つのプロセスがパイプで接続されている場合、 > cmd1 | cmd2 cmd1パイプの反対側のプロセスの名前(またはPID)(またはPID)を確認する方法はありますcmd2か() また、その逆、cmd2の名前/ PIDを取得する方法はありますcmd1か? 私はそこにあることを知っているisatty(3)一方の側についてもう少し知るための方法があるかどうか、私は疑問に思ったので、ターミナル出力がに行く(または入力から来ている)かどうかをチェックします。
8 linux  process  pipe  proc 

3
なぜこの方法でgrepできないのですか?
「disable = yes」という行を「disable = no」に変更して、次のファイルに入れます。 [root@centos2 ~]# cat /etc/xinetd.d/tftp service tftp { ... server_args = -s /var/lib/tftpboot disable = yes per_source = 11 ... } 私はこれを試しました: [root@centos2 ~]# grep 'disable = yes' /etc/xinetd.d/tftp [root@centos2 ~]# 私のマウスでスペースをコピーするだけで、それは何もグレップしません... 「無効化」と「=」の間の要素が何であり、どのようにしてわかりますか?いくつかのスペースですか?集計? 私は次の正規表現を使用してgrepできることを知っています: [root@centos2 xinetd.d]# grep -E 'disable.+= yes' /etc/xinetd.d/tftp disable = yes [root@centos2 xinetd.d]# …
8 sed  grep 

2
読み取り専用メモリマップ領域にダーティページがあるのはなぜですか?
(たとえば)次のコマンドを実行して、メモリマップページのリストを取得します。 pmap -x `pidof bash` 私はこの出力を得ました: いくつかの読み取り専用ページが「ダーティ」としてマークされている、つまり、ライトバックを必要とするように書かれているのはなぜですか?それらが読み取り専用である場合、プロセスはそれらに書き込むことができないはずです...(提供されている例では、ダーティページは常に4 KBですが、異なる値を持つ他のケースが見つかりました) / proc / pid / smaps もチェックしましたが、そのページは「Private Dirty」と記述されています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.