エイリアスを見つけるには、検索を使用します。

エイリアスを見つけるには、検索を使用します。

エイリアスをインストールせずに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フラグを設定しないでください teecatまたはfind。これはシステムのセキュリティ抜け穴になります!私の言葉は、このエイリアスに適したツールを提供するために、setuidモードで制限された方法で動作するこれらの単純なコマンドの安全な代替策を書くことです。

答え2

function locate_f()
{
        find / -path "*$1*" //Edit:path (as Gilles stated)
}
alias locate=locate_f

答え3

努力する

alias locate="find / | grep "

これは検索とまったく同じでなければなりませんが、もちろん速度ははるかに遅くなります。

答え4

1)すべてのユーザーにグローバルにエイリアスを追加します。

echo 'alias locate="grep $1 /var/locate/locate.db"' >> /etc/bashrc

デフォルトでは、より直感的なパラメータ選択を可能にするシェルスクリプトを指すことができます。非常に簡単な検索を探しているなら、これで十分です。

2)毎日実行するCron Jobを追加します。

/etc/cron.daily
#!bin/bash
if [[ ! -d /var/locate ]]; then
     mkdir /var/locate
fi
locatedb=/var/locate/locate.db
rm -f $locatedb
for DIRS in `ls /|grep -v "proc"`
do
   find /$DIRS -type f >> $locatedb 2>&1 /dev/null
done

mlocateをインストールしなくても、mlocateと同じ結果が得られます。私はCentOSでテストしました。結果はほぼ同じです。

関連情報