Unix & Linux

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

5
特定のパスにあるファイルを除外して `grep`を実行する
./test/main.cpp検索からファイルを除外したい。 ここに私が見ているものがあります: $ grep -r pattern --exclude=./test/main.cpp ./test/main.cpp:pattern ./lib/main.cpp:pattern ./src/main.cpp:pattern パイプとフィルターの配置で複数のコマンドを使用することで、必要な出力を取得できることは知っていますが、grepネイティブに必要なものを理解するための引用/エスケープがありますか?

4
apt-cacheポリシーの出力がパイプされないのはなぜですか?
理由がわからない $ apt-cache policy foo N: Unable to locate package foo だが $ apt-cache policy foo 2>&1 | grep . 空です。 後者の呼び出しのどこで間違った仮定をしていますか? 元のタスク:apt-cache policyおそらく出力を処理する必要があります:-) UPD: foo私の例で使用されているものは、インデックスに存在しないパッケージ名に置き換えることができますapt-get。 UPD 2: 回避策のある答えがあります。ソリューションが機能しない+50理由を説明した人には、追加の報奨金が授与され2>&1ます。
12 shell  apt  pipe 

3
ブートパーティションをlvmに配置することが推奨されないのはなぜですか?
LVMベースのパーティションにブートパーティションを配置することは推奨されないことをどこかで読みました。しかし、とにかくやっています。それから私がこれに直面した唯一の問題は、時々新しいLinuxディストリビューションをインストールし、それをlvmにブートパーティションに置いたときに、grubがそれを検出できないことです。このgrub-mkconfigコマンドは通常、grub.cfgファイルの生成時に間違いを犯します。しかし、これがlvmベースのブートパーティションで唯一の問題である場合は、問題ないと思います。私はそれを修正する方法を知っているので、ブートするために目的のブートパーティションに適切なアドレスを与えるだけで、その後すべてがうまくいきます。 それでは、これ以外にlvmが問題を引き起こす可能性があるものはありますか?私の意見では、lvmは非常に柔軟性があり、システムの速度を低下させなかったためです。
12 boot  partition  lvm 

1
大文字と小文字を区別しないファイルシステムは、大文字と小文字の両方のファイル名をどのように表示しますか?
この質問は、先日、ファイル名に関して意見のあるフレームワークに依存する開発プロジェクトに取り組んでいたときに思いつきました。フレームワーク(ここでは無関係)は、大文字が最初のファイル名を表示することを望んでいました。これは私に考えさせられました。 大文字と小文字を区別しないファイルシステムで、extFATまたはHFS +(具体的には大文字と小文字を区別しない)と言うと、ファイルシステムはファイル名の大文字と小文字の両方の同じファイルへのアクセスをどのように提供します。 例えば: $ cd ~/Documents $ pwd /home/derp/Documents $ cd ../documents $ pwd /home/derp/documents $ cd ../docuMents $ pwd /home/derp/docuMents $ cd ../DOCUMENTS $ pwd /home/derp/DOCUMENTS $ cd ../documentS $ pwd /home/derp/documentS これらのコマンドはすべて同じディレクトリに解決されます。この動作、具体的pwdにbashはこの場合の関数からの出力は、私が見たいと思うものを私に見せているだけですか? もう一つの例: $ ls ~/Documents Derp.txt another.txt whatThe.WORLD ここでのファイルシステムは、ユーザーまたはプログラムによって作成された元のファイル名のケースを報告します。 正しい大文字と小文字のASCII文字の任意の組み合わせでアクセスできるように、ファイルシステムスタックのどの時点で、人間が読み取れるファイル名が作成時に保存されますか(大文字と小文字など)。これはどこか正規表現のトリックなのでしょうか、それとも何か他のことが起こっているのでしょうか? 編集:私が興味を持っている動作は、さらに研究した後、大文字と小文字を区別しないファイルシステムで見つかったようです...

2
CUPSクライアントはPPDをローカルにインストールする必要がありますか?
CUPSクライアントはPPDをローカルに追加する必要がありますか、つまり、それらを渡す必要がありlpadmin -Pますか?これらのクライアントは、ローカルプリントサーバーを介してリモートプリントサーバー(ipp://)に印刷しますが、ベストプラクティスに従ってセットアップされていると想定しています(管理していません)。Linux PCです。リモートプリントサーバー上の生のキューを扱っているとは思わない。 私の質問はこれと同じように聞こえますが、私の理解では、ドライバとPPDは同じものではなく、PPDはプリンタの一種の「機能リスト」であり、いくつかのPostScriptコマンドを使用する方法です。サーバーの仕事のように思えますが、これを明確に示すものを見つけるのに苦労しました。
12 cups 

7
kshのバージョンを安全に入手するにはどうすればよいですか?
kshスクリプト内からkshのバージョンを安全に取得するにはどうすればよいですか? 私は次の解決策を見ました: ksh --version echo ${.sh.version} echo $KSH_VERSION そして、適切な状況を考えると、これらはそれぞれ正常に機能します。しかし、私は完璧ではないケースに関心があります。 具体的には、古いバージョンのkshを使用しているいくつかのマシンがありますが、私の目的のために、機能が大幅に不足しています。とにかく、バージョンを(プログラムで)チェックする理由は、kshバージョンが性能の低いバージョンの1つであるかどうかを確認するためです。もしそうなら、あまり素晴らしいコードではないブランチを実行したいです。 しかし、問題のあるマシンでは、シェルの無能さはバージョンのチェックにまで及びます... 試してみるとksh --version、何も表示されず、ksh!の新しいインスタンスが開きます。 私が試みるならecho ${.sh.version}、kshこれを捨てることができない構文エラーとしてこれを扱います2> /dev/null。 $ echo ${.sh.version} 2> /dev/null ksh: ${.sh.version}: bad substitution もちろんecho $KSH_VERSION正常に動作するように見えます-クラッシュしないことを意味します-これらのマシンでは空白です。また、私は見たどこかKSH_VERSIONのみで設定されているがpdksh。 質問: kshプログラムでバージョンを安全に確認するにはどうすればよいですか?ここでの目的のために、実際のバージョン番号が何であるかは気にしませんksh。それがの古いバージョンであるかどうかだけです。 で$KSH_VERSION十分に良いですか?空白の場合、ksh必然的に古いバージョンですか?他のフォーラムは正しいのkshですか? これを確認する方法はまったくありませんか?



2
Fedora 21でデフォルトでVirtualBoxプロバイダーを使用する
今のところ、私がvagrantを使用するときはいつでも、それlibvirtはプロバイダーとして使用しようとします。デフォルトでVirtualBoxを使用したい。 vagrant-libvirt インストールされていません。 次のように、一部のコマンドが機能しないため、面倒ですvagrant status: [florian@localhost local]$ vagrant status The provider 'libvirt' could not be found, but was requested to back the machine 'foobar'. Please use a provider that exists. [florian@localhost local]$ vagrant status --provider=virtualbox An invalid option was specified. The help for this command is available below. Usage: vagrant …

2
bashスクリプトの実行中にモジュールを読み込むことができないのはなぜですか?
モジュールを使用してシステム上のパッケージを制御python/2.7.2し、モジュールとしてインストールしました。単純なpython実行可能ファイルがpython_exe.pyあり、これを単純な「駆動」スクリプトから呼び出しますrunit.sh。runit.shスクリプトは次のようになります。 #!/bin/bash module load python/2.7.2 arg1=myarg1 arg2=15 arg3=$5 /path/to/python_exe.py -a $arg1 -b $arg2 -c $arg3 しかし、実行したばかりのとき./runit.sh、「モジュール:コマンドが見つかりません」というメッセージが表示されます。source runit.shただし、Iの場合、モジュールは正しくロードされます。どうしてこれなの?
12 bash  shell  python 


6
ロケート検索でディレクトリを除外する
locateファイルシステム内のパスを見つける検索。 多くの場合、ファイルのみ、またはディレクトリのみに関心があることをアプリオリに知っています。 「検索」検索は多くの場合、多くの結果を返します。出力を短縮するのに役立つため、結果にタイプの1つのみを含めると便利です。 しかし、ファイルまたはディレクトリのいずれかを除外するより興味深い議論があります。結果パスのリストは、理論だけでなくあいまいになる可能性があるためです。 以下の例は実際のケースであり、珍しいものではありません。 $ locate --regex --basename "xfce4-keyboard-overlay$" /usr/local/bin/xfce4-keyboard-overlay /usr/local/share/xfce4-keyboard-overlay OK、私たちは何かを見つけました!しかし...ファイル、またはディレクトリ? $ file /usr/local/bin/xfce4-keyboard-overlay /usr/local/bin/xfce4-keyboard-overlay: bash script それはファイルです... $ file /usr/local/share/xfce4-keyboard-overlay /usr/local/share/xfce4-keyboard-overlay: directory 2番目はそうではありません。 このあいまいさにより、パスの長いリストが読みにくくなるため、たとえば、のコマンドラインオプションを使用して、ディレクトリを除外することは本当に便利ですlocate。 このようなものはありますか?ディレクトリのフィルターがロケートとは別の場合でも? 少なくとも、スクリプトを使用して、チェックするすべてのファイル名を繰り返すことができます-これは遅いかもしれません。
12 files  find  directory  locate 

1
スワップuuidを見つける方法
私は襲撃を設定しています。sdaインストール中に使用し、私はちょうどのパーティションテーブルコピーされたsdaにsdbそうように: $ sudo sfdisk -dL /dev/sda > partition_table_sda $ sudo sfdisk /dev/sdb < partition_table_sda しかし、私はそれsdaがスワップスペースのUUIDを持っていることに気付きますが、sdbそうではありません: $ sudo blkid /dev/sda5: UUID="vvvvvvvv-wwww-xxxx-yyyy-zzzzzzzzzzzz" TYPE="swap" /dev/sda1: UUID="vvvvvvvv-wwww-xxxx-yyyy-zzzzzzzzzzzz" TYPE="ext4" /dev/sdb1: UUID="vvvvvvvv-wwww-xxxx-yyyy-zzzzzzzzzzzz" TYPE="ext4" パーティションは正しく見えますが、欠落しているのはuuidだけです: $ sudo fdisk -l Disk /dev/sda: 500.1 GB, 500107862016 bytes 255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors Units = sectors …
12 partition  swap  uuid 

1
いつ実行可能バイナリの文字列を編集できますか?
実行可能なバイナリがあります。それを呼び出しましょうa.out。バイナリに文字列が含まれていることがわかります $ strings a.out ... /usr/share/foo .... 文字列/usr/share/fooをに変更する必要があります/usr/share/bar。文字列をsed?に置き換えることはできますか? sed -i 's@/usr/share/foo@/usr/share/bar@' a.out これは安全なことのように見えます。これは、文字列が同じ長さでない場合にも機能しますか?

2
キーボードのみを使用して、以前の端末コマンドからの出力を保存できますか?
GUIなしでライブCDからddコマンドを実行する(または同様の「やり直すのが難しい」シナリオを描く)のに、最後の2時間を費やしました。私が持っているのは私の信頼できる「マルチウィンドウ」(CTRL+ALT+F#)Bashターミナルだけです。 悲しいかな、コマンドの実行中に、ddいくつかの厄介なエラーメッセージと、もう少し詳しく説明したい情報を捨てました。データを書き込むことができるUSBドライブが接続されていますが、コマンドの実行後にテキストファイルとして保存された以前の出力を取得するにはどうすればよいですか? これがすてきなGUI内のターミナルエミュレータであった場合、マウスを使用してテキストを選択し、コピーし、ドキュメントに貼り付けるだけでした。そして、コマンドがエラーを生成することを知っていたなら、そもそもそれをファイルにパイプアウトしていたはずですが、残念ながら、追加の出力は驚きでした。 コマンドを再実行せずに、以前のコマンドのテキスト出力をファイルに保存するにはどうすればよいですか?これも可能ですか?

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