Unix & Linux

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


7
リダイレクトの使用方法を思い出すにはどうすればよいですか?
私は何を知っている program > /dev/null 2>&1 します。それはへの出力をリダイレクト/dev/nullし、2>&1出力が送信された同じ場所にエラー出力をリダイレクトするための手段。 私の問題は、それを覚えていないので、常にグーグルで検索する必要があることです。 だから、私がしようと&2>1、1>2&、1>&2私はそれをグーグルまで...私はすべての組み合わせを試してみてください... 簡単に覚えるコツは何ですか?
40 shell 

7
任意のコマンドに対して、プロンプトを使用して機密データをbashで渡す方法はありますか?
sha1passコマンドラインで機密性の高いパスワードのハッシュを生成するために使用していたとします。のsha1pass mysecretハッシュを生成するために使用できますmysecretが、これにmysecretは現在bash履歴にある欠点があります。mysecretおそらくpasswd-styleプロンプトを使用して、プレーンテキストでの表示を回避しながら、このコマンドの最終目標を達成する方法はありますか? また、機密データをコマンドに渡すためにこれを行う一般的な方法にも興味があります。メソッドは、機密データが引数(inなど)として、sha1passまたはSTDINで何らかのコマンドに渡されると変更されます。 これを達成する方法はありますか? 編集:この質問は多くの注目を集めており、いくつかの良い答えが下に提供されています。要約は次のとおりです。 あたりとしてKusalanandaの答え@、理想的には、ユーティリティのコマンドライン引数としてパスワードや秘密を与える必要はないだろう。これは彼が説明したようにいくつかの点で脆弱であり、STDINで秘密の入力を取得できる、より良く設計されたユーティリティを使用する必要があります。 @vfbsilvaの答えは、bashの履歴に物事が保存されるのを防ぐ方法を説明しています @Jonathanの答えは、プログラムがSTDINでその秘密データを取得できる限り、これを達成するための完全に良い方法を説明しています。そのため、この答えを受け入れることにしました。sha1pass私のOPでは例に過ぎませんが、STDINでデータを取得するより優れたツールが存在するという議論が確立されました。 @R ..内のノート彼の答えは、変数のコマンド拡張を使用することであるない安全。 要約すると、適切に設計され、適切に動作するプログラムがあることを考えると、@ Jonathanの回答が最良のソリューションであるため、@ Jonathanの回答を受け入れました。コマンドライン引数としてパスワードまたはシークレットを渡すことは基本的に安全ではありませんが、他の答えは単純なセキュリティ上の懸念を軽減する方法を提供します。

5
実行されないソースとなるシェルスクリプトを定義する方法
ユーザーsourceが実行するのではなく、シェルスクリプトを定義しています。 たとえばファイル拡張子を使用して、これが事実であることをユーザーに示唆する従来の方法またはインテリジェントな方法はありますか? ファイル自体に書き込むことができるシェルコードはありますか?これにより、ソースの代わりにメッセージがエコーされ、実行されると終了するため、ユーザーがこの明らかな間違いを避けるのを助けることができますか?
40 bash  shell 



5
フォルダーに触れることなくファイルから実行権限を再帰的に削除する方法は?
NTFSドライブにバックアップを作成しましたが、このバックアップが本当に必要であることがわかりました。ただし、NTFSドライブはアクセス許可を台無しにしました。各ファイルを手動で修正せずに通常の状態に復元したいと思います。 問題の1つは、突然すべてのテキストファイルに実行権限が付与されたことです。これは間違っています。だから私は試しました: sudo chmod -R a-x folder\ with\ restored\ backup/ ただしx、ディレクトリから権限も削除されるため、ディレクトリが読めなくなるため、間違っています。 この場合の正しいコマンドは何ですか?

9
ハードリンクの使用例?[閉まっている]
どのような状況で、ソフトリンクではなくハードリンクを使用したいでしょうか?私は個人的に、ソフトリンクよりもハードリンクを使いたい状況に出くわしたことは一度もありませんし、ウェブを検索するときに出会った唯一のユースケースは同一ファイルの重複排除です。

5
TCPリスナーを作成する方法は?
はじめに:ポートが使用可能かどうかを確認できるbash関数を作成し、特定の最大ポート番号までfalseの場合は1ずつ増やします。たとえば、ポート500が使用できない場合、550までの501の可用性がチェックされます。 目的:このbash関数をテストするには、LISTEN状態のポートの範囲を作成する必要があります。 試行: Windowsでは、次のPowerShellコマンドを使用してLISTENポートを作成できます。 PS C:\Users\u> netstat -nat | grep 1234 PS C:\Users\u> $listener = [System.Net.Sockets.TcpListener]1234 PS C:\Users\u> $listener.Start(); PS C:\Users\u> netstat -nat | grep 1234 TCP 0.0.0.0:1234 0.0.0.0:0 LISTENING InHost PS C:\Users\u> $listener.Stop(); PS C:\Users\u> netstat -nat | grep 1234 PS C:\Users\u> これに基づいて、私はCentOSで同じことを行うことができるコマンドについて考えていましたが、理由がわからず、この問題を解決する解決策を見つけることなくGoogleを始めました。 予想される回答:LISTENポートを作成できるコマンドを含む回答を受け入れて投票します。コマンドが実行されると、ポートはLISTEN状態のままになります。 [user@host ~]$ ss -nat | …
40 shell  networking  tcp 

1
PDFを別のページサイズに変換(US Letter-> A4)
単純なUS Letter文書を印刷しようとしていますが、何らかの理由で、リストごとに複数のページを印刷するときにA4に適切に収めることができません。 私はpdfを次のものを使用して変換しようとしました: gs -o print.pdf -sDEVICE=pdfwrite -sPAPERSIZE=a4 -dFIXEDMEDIA -pPDFFitPage -dCompatibilityLevel=1.4 input.pdf しかし、これは文書に何の影響も与えないようであり、米国の手紙として表示されます。 PDFをA4形式に変換する方法はありますか?

2
CFLAGSおよびLDFLAGSを「configure」に追加する正しい構文は何ですか?
OpenVPNソースtarballを使用してOpenBSD 5.5にOpenVPNをインストールしたいと思います。 ここの指示に従って、lzoをインストールする必要があります CFCC = "-I / usr / local / include" LDFLAGS = "-L / usr / local / lib"ディレクティブを "configure"に追加します。そうしないと、gccはそれらを見つけられません。 OpenBSDで上記のことを行う方法についてのガイドをグーグルで探しましたが、何もありません。 これは私がやろうとしていることです: ソースtarballを新しく作成したディレクトリに展開します コマンド./configure CFLAGS = "-I / usr / local / include" LDFLAGS = "-L / usr / local / lib"を発行します。 コマンドmakeを発行します コマンドmake installを発行します 次の構文のうち正しいものはどれですか? ./configure CFLAGS="-I/usr/local/include" …


9
プロセスを強制終了し、PIDが再利用されていないことを確認する方法
たとえば、次のようなシェルスクリプトがあるとします。 longrunningthing & p=$! echo Killing longrunningthing on PID $p in 24 hours sleep 86400 echo Time up! kill $p トリックを行う必要がありますか?プロセスが早期に終了し、そのPIDがリサイクルされた可能性があることを除いて、いくつかの罪のないジョブが代わりにシグナルキューで爆弾を取得することを意味します。実際にはこれは問題になる可能性がありますが、それでも私は心配しています。長時間実行しているものをハッキングして、それ自体を落とす、またはFSでPIDを保持/削除することはできますが、ここでは一般的な状況を考えています。
40 process  kill 

1
共有ライブラリのロードとRAM使用量
Linuxが共有ライブラリを管理する方法について疑問に思っています。(実際、2009年にリリースされたDebianベースのディストリビューションである256MB RAMで実行されるMaemo Fremantleについて話しています)。 libQtCore.so.4にリンクし、そのシンボルを使用する(クラスと関数を使用する)2つの実行可能ファイルがあるとします。簡単にするために、それらをaおよびと呼びましょうb。両方の実行可能ファイルが同じライブラリにリンクすると仮定します。 最初に起動しaます。ライブラリをロードする必要があります。それは全体でロードされていますか、それとも必要な部分のみメモリにロードされていますか(各クラスを使用しないため、使用されたクラスに関するコードのみがロードされています) その後、起動しbます。aまだ実行されていると仮定します。blibQtCore.so.4にもリンクし、使用するクラスのa一部を使用しaますが、で使用されないクラスも使用します。ライブラリは、二重(別途ロードされますaと別途b)?または、すでにRAMにある同じオブジェクトを使用します。場合bの使用は新たなシンボルとaすでに実行されているRAMは、共有ライブラリの増加によって使用されていないのだろうか?(または、違いはわずかです)

4
bashrcでローカル関数を作成するにはどうすればよいですか?
.bashrcには反復的なコードが含まれていたため、関数を使用して単純化しました do_stuff() { local version=$1 export FOO_${version}_X="17" export FOO_${version}_Y="42" } do_stuff '5.1' do_stuff '5.2' ただし、シェルを使用する場合、「do_stuff」名がスコープ内にあるため、タブ補完してその機能を実行できます(環境変数を台無しにする可能性があります)。.bashrc内でのみ「do_stuff」を表示する方法はありますか?
40 bash  bashrc 

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