エイリアスをインストールせずにlocate
小規模システムで検索するのと同じ結果を得るにはどうすればよいですか?
find
同じ出力を生成できると想像できるため、エイリアスは次のようになります。
alias locate="find / -name"
しかし、これは検索と同じように機能しないようです。
locate test
その名前のファイルのみが検索されます。正確に検索時に呼び出されると、そのファイルをtest
含むすべてのファイルが検索されます。
解決策
使用:
locate *test*
ベストアンサー1
ルックアップ速度への大きな影響を改善するには、位置決めなどをシミュレートできます。
alias locate="if [ ! -e /tmp/locate.db -a ! -e /tmp/locate.lockdb ]
then touch /tmp/locate.lockdb
trap \"rm /tmp/locate.lockdb; rm /tmp/locate.db; exit\" SIGHUP SIGINT SIGTERM
find /|tee /tmp/locate.db
chmod 666 /tmp/locate.db
rm /tmp/locate.lockdb
elif [ -e /tmp/locate.lockdb ]
then find /
else cat /tmp/locate.db
fi|grep "
もちろん権限の問題です!ただし、データベースに対していくつかのsetuidコマンドを作成し、tee
スーパーcat
ユーザーモードとより良い場所でデータベースに書き込む方が良いでしょう/tmp
。
locate.db
ほとんどのシングルユーザーまたは少数のユーザーシステムでは、手頃な価格の選択肢は各ユーザーをプログラミングすることです$HOME
。
別の良いエイリアスは、更新/検索が可能であることです。まあ、結局私はこのニックネームがオリジナルよりも良い位置にあると思います。)
alias relocate="if [ ! -e /tmp/locate.lockdb ]
then rm /tmp/locate.db
fi
locate "
編集する 実際、リターゲティングも上記のターゲティングエイリアスのように使用する必要があると思います。パラメータなしで再配置を使用すると、エラーが発生します。relocate "no file to search for"
検索したくなくデータベースのみを更新したい場合に使用することをお勧めします。
いいですね。その照会も設定する必要があります。しかし、その後、場所パックを捨てることができます。引数は参照点grep
に渡されなければなりません。sed
.
初心者の注意点: ここで setuid について話すとき同様のツールにSETUIDフラグを設定しないでください tee
、cat
またはfind
。これはシステムのセキュリティ抜け穴になります!私の言葉は、このエイリアスに適したツールを提供するために、setuidモードで制限された方法で動作するこれらの単純なコマンドの安全な代替策を書くことです。