Unix & Linux

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

2
大きなワードリストで重複を削除する最も速い方法は?
大きなワードリストを重複排除する必要があります。いくつかのコマンドを試して、こことここでいくつかの研究を行いました。そこでは、単語リストを重複排除する最も速い方法はawkを使用しているように見えることを説明しています。 awk-> O(n)?sort-> O(n log n)? しかし、これは真実ではないようだ。私のテスト結果は次のとおりです。 sort -u input.txt -o output.txt 実数0m12.446s ユーザー0m11.347s sys 0m0.906s awk '!x[$0]++' input.txt > output.txt 実数0m47.221s ユーザー0m45.419s sys 0m1.260s したがって、sort -uを使用すると3.7倍高速になります。どうしてこれなの?重複排除を行うためのさらに速い方法はありますか? ***********アップデート******** 誰かがコメントで指摘したように、私の単語リストはすでにある程度ソートされている可能性があります。この可能性を排除するために、このPythonスクリプトを使用して 2つのワードリストを生成しました。 List1 = 7 Mb List2 = 690 Mb 結果AWK: List1を リアル0m1.643s ユーザー0m1.565s sysの0m0.062s List2 実2m6.918s ユーザー2m4.499s sys 0m1.345s 結果SORT: List1 …
14 bash  awk  performance  sort 

4
行ごとの単語数で行を並べ替える
与えられた入力: hello: world foo bar baz bar: baz: bin boop bop fiz bang beep bap: bim bam bop boatkeeper: poughkeepsie 次のように、一番上で、少なくとも最後で、ほとんどの単語に並べ替えたいと思います: baz: bin boop bop fiz bang beep hello: world foo bar baz bap: bim bam bop boatkeeper: poughkeepsie bar: sortまたは他のツールでこれを行うにはどうすればよいですか?

3
シェルコマンドを使用してファイルから列または複数の列を削除するにはどうすればよいですか?
私のファイル、 ARCHIVE B1_NAME B2_NAME B3_NAME ELEMENT INFO_NAM WERT PROCID -------- -------- -------- -------- -------- -------- ---- ------ 15MinAvg AIRSS 33-GIS DMDMGIS1 I MvAvr15m 1123 CP 15MinAvg AIRSS 33-GIS DMDMGIS1 P MvAvr15m 2344 CP 15MinAvg AIRSS 33-GIS DMDMGIS1 Q MvAvr15m 4545 CP 15MinAvg AIRSS 33-GIS DMDMGIS2 I MvAvr15m 6576 CP 15MinAvg …


3
Systemd postgresql起動スクリプト
私はpostgresqlを2番目のサーバーにインストール中です 以前にpostgresqlをインストールしてから、提供されたスクリプトを使用しました ./contrib/start-scripts/linux 正しいディレクトリに配置 # cp ./contrib/start-scripts/linux /etc/rc.d/init.d/postgresql92 # chmod 755 /etc/rc.d/init.d/postgresql92 その後、期待どおりに実行できました # service postgresql92 start しかし、新しいマシンはSystemdを使用しており、これを行うにはまったく異なる方法があるようです 私はこれをハックして何かを台無しにしたくないので、誰かが同じ結果を達成する方法の正しい方向に私を向けることができるかどうか疑問に思っていました

3
viで制御文字(^ @、^ M、^ I…)を検索および置換する
/proc/some_proc_id/cmdline私のubuntuマシンからこの行をコピーしました、 java^@-jar^@/usr/lib/selenium/selenium-server-standalone.jar^@-port^@4444^@-trustAllSSLCertificates^@ どういうわけか、スペース文字は^@viで表されます。コマンドを使用してスペース文字に置き換えようとしましたが、 :%s#^@# #g しかし、それは言いpattern not found ^@ます。 特にカラット記号で始まる特殊文字をどのように置き換えることができますか?

4
passwdファイルのstarはどういう意味ですか?
起動する必要のあるコンピューターがありますが、パスワードは偽物のようです。さらに、書き込み用にドライブをマウントできず、mipsプロセッサであるため、別のマシンに固定して実行することはできません。 とにかく、passwdファイルには、ユーザー名の後に星印が付いたこのようなユーザーがいます。それは空白のパスワードまたは何を意味しますか? root:8sh9JBUR0VYeQ:0:0:Super-User,,,,,,,:/:/bin/ksh sysadm:*:0:0:System V Administration:/usr/admin:/bin/sh diag:*:0:996:Hardware Diagnostics:/usr/diags:/bin/csh daemon:*:1:1:daemons:/:/dev/null bin:*:2:2:System Tools Owner:/bin:/dev/null uucp:*:3:5:UUCP Owner:/usr/lib/uucp:/bin/csh sys:*:4:0:System Activity Owner:/var/adm:/bin/sh adm:*:5:3:Accounting Files Owner:/var/adm:/bin/sh lp:VvHUV8idZH1uM:9:9:Print Spooler Owner:/var/spool/lp:/bin/sh nuucp::10:10:Remote UUCP User:/var/spool/uucppublic:/usr/lib/uucp/uucico auditor:*:11:0:Audit Activity Owner:/auditor:/bin/sh dbadmin:*:12:0:Security Database Owner:/dbadmin:/bin/sh rfindd:*:66:1:Rfind Daemon and Fsdump:/var/rfindd:/bin/sh

1
systemdサービスファイル内でbashパラメーターの展開が機能しないのはなぜですか?
私が使用しようとしていますsystemdのがEnvironmentFile、それがファイルに設定されている場合、コマンドにオプションを追加します。ユニットファイルには次のものがあります。 ExecStart=/usr/bin/bash -c "echo ${PORT:+port is $PORT}" サービスを開始しても何もエコーしません。 以下は期待どおりに機能します。 ExecStart=/usr/bin/bash -c "echo port is $PORT" これは、ファイルが正しく読み取られることを意味します。 パラメーターの置換はコマンドラインでも機能します。 $ PORT=1234 bash -c 'echo ${PORT:+port is $PORT}' port is 1234 私は何が欠けていますか?

2
ディレクトリの所有者を変更する方法
編集:問題は、Appleがアクセス許可を使用してバックアップをマークし、ユーザーがそれらを変更できないようにすることです(おそらくセキュリティ機能)。使用するchmod -RN <dir>ことで、重要なデータを持つすべてのフォルダーからACLデータを削除しました。これにより、自分を所有者にして適切な権限を適用することができました。 元の質問 私は非常に大きなバックアップ(> 700GB)を持っていますが、今では間違った許可(クリーンインストール中にUIDが変更された、長い話)があり、それらを変更する必要があります。時間のかかるオプションは、各フォルダーを手動で移動してアクセス許可を変更することですが、これには時間がかかります。 chown自分をすべての重要なデータの所有者にしてchmod 700から、それらすべてのフォルダーrwxで自分だけにアクセス許可を与えるために使用したいと思います。 理想的な解決策はfind、正規表現に一致するフォルダー(現在のフォルダー)を再帰的に検索し.*/[DCV].*|Pictures|M[ou].*て、UIDを所有者にし、アクセス許可を700に設定する方法です。 私が把握できない重要なビット: ただし、実行しようとするchown Me DirectoryNameとが取得されchown: DirectoryName: Operation not permittedます。 私が見つけたものはすべて、ディレクトリではなくファイルのパーミッションの変更に関連しています。たぶん私はこれを間違った方法で見ていますか? 私のUID rwxと---他のすべての人にUIDを与える方法がないことを教えてくれます。 どうすればこれを達成できますか?Mac OS X 10.10.3を実行しています。 これはUNIX / Linuxフォーラム(およびMacを実行している)であることは知っていますが、この質問はシェル、、、および権限の使用に関するものでchownありchmod、ここに投稿されたソリューションはすべてのUNIXベースのOSに適用されます。投稿されたソリューションにより、古いバックアップがTime Machineに再表示されることが望ましいでしょう。 すぐに返信してくれたすべての人に感謝しますがchown、何らかの理由でディレクトリで動作しないようです。これが.sparsebundleネットワークドライブ上のディスクイメージであるという事実は関連していますか?外付けドライブと同じだと思いました。

3
シェルでの日付検証
シェルスクリプトで以下の日付形式を検証したい 2015-Jul-13 私は使用date -d "2015-Jul-13" +"%Y-%b-%d"していますが、そのエラーを与える date: invalid date '2015-Jul-13'

3
KDEパネルからランチャーを削除するにはどうすればよいですか?
この質問は非常に簡単なので、グーグルで答える方がはるかに簡単だと思いますが、残念ながらここでそれを尋ねるしかありません。私がやりたいのは、サバイヨンのKDE 4パネルで不要になったランチャーを削除することです。 下のスクリーンショットでは、左下にGoogle Chrome、Terminator、Konsoleのアイコン(ランチャーを表す)がこの順序で表示されています。Konsoleランチャーを削除したいです。自分で見つけた唯一の解決策は、パネル全体を削除し、新しいパネルを作成してから、必要なランチャーを追加し、不要なランチャーを除外することです。私のランチャーのリストが成長し続けるにつれて、このソリューションは時間とともにますます退屈になります。したがって、誰かが持っている場合、よりシンプルなソリューションを好む理由です。 私にとって最も自然な解決策は、不要なランチャーを右クリックしてランチャーを削除するオプションを見つけることですが、これはKonsoleランチャーを右クリックして取得するメニューです。 「アイコン設定」をクリックすると、これが表示されます : これは、Konsoleランチャーに使用されるデスクトップ構成ファイルのオプションに過ぎず、KDEパネルからランチャーを削除することとは関係ありません。
14 kde4  panel  sabayon 

2
Aptは、ユーザーがソースからインストールしたソフトウェアに必要なパッケージを削除できますか?
Aptは、リポジトリまたは*.debファイルからインストールされたパッケージ間の依存関係を処理します。しかし、ユーザーが最初にファイル./configure && make && make installを作成せずにソースからコンパイルおよびインストールしたソフトウェアについてはどう.debでしょうか?Aptがそのようなソフトウェアに必要なパッケージを削除する可能性はありますか?ソースからソフトウェアをインストールしますか、/optそれとも/usr/local違いがありますか?

1
1つの端末を終了するときに他の端末のbash履歴を更新する
ここで求められているように私は、この質問が曖昧にされていません知って更新し続ける(と重複こちら)。 私が達成しようとしていることは少し異なります。入力するたびlsにプロンプトをファイルに書き換えるという考えが好きではありません(history -a; history -c; history -r)。 終了時にファイルを更新したいと思います。それは簡単です(実際にはデフォルトです)が、書き換える代わりに追加する必要があります: shopt -s histappend ここで、端末が閉じられたときに、更新を認識できるように、開いたままになっている他のすべてのものを作成したいと思います。 入力$PS1するたびにチェックすることなくこれを行うことを好みcommandます。何らかの信号をキャプチャする方が良いと思います。どうしますか?不可能な場合は、おそらく簡単cronjobですか? このパズルをどのように解決できますか?

2
Linux Ephemeral Portの範囲を変更することの安全性
Linuxボックスに次の一時ポート範囲が表示されます。 sysctl net.ipv4.ip_local_port_range net.ipv4.ip_local_port_range = 32768 61000 ポート範囲を16000前後から開始するように拡張したいのですが、ここで簡単に質問します。コンテキスト内の範囲を他のアプリケーションに変更することはどれくらい安全ですか。他のアプリケーションはこの変更の影響を受けますか?アプリケーションは、指定されたポート範囲のポートを使用している場合にのみ影響を受けることを理解しています。しかし、一般的に、この種の問題はどのように対処されますか?
14 linux  ip 

1
ディレクトリ内の2つの同一ファイルを示す「ls」
だからどういうわけか、コマンドlsはディレクトリ内の2つの同一のファイルを表示しているようです。 $ ls -Blah /System/Library/LaunchDaemons total 32 drwxr-xr-x 266 root wheel 8.8K Jun 18 10:41 . drwxr-xr-x 79 root wheel 2.6K Mar 31 12:28 .. [redacted] -rw-r--r-- 1 root wheel 715B Jun 18 10:36 tftp.plist -rw-r--r-- 1 root wheel 715B Jun 18 10:35 tftp.plist ファイルの1つを移動、名前変更、編集などできますが、もう1つはそこにあるようにも見えません。bashタブ補完でも同じファイルが表示されます。 たとえば、次を入力してからヒットする TAB $ sudo mv …
14 bash  osx  ls 

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