002-檢視某軟體是否已安裝以及位置

weixin_33896726發表於2017-06-07

1. which命令

查詢出相關命令是否已經在搜尋路徑中,例子如下:

$which gcc           #顯示出GNC的C編譯器安裝在哪個目錄
/usr/bin/gcc         #返回結果

注意:如果which沒有找到要找的命令,可以試試whereis,該命令搜尋更大的範圍的系統目錄。有些系統上的which命令不顯示使用者沒有執行許可權的檔案。例如

$which ipppd
/usr/bin/which :no ipppd in (/bin: /usr/bin: /sbin:/usr/sbin)

$whereis ipppd
ipppd: /usr/sbin/ipppd

$ls -l /usr/sbin/ipppd
-rwx------   1  root   root    124924     Feb   3         2000   /usr/sbin/ipppd

2. locate命令

        locate命令用於查詢檔案,它比find命令的搜尋速度快,它需要一個資料庫,這個資料庫由每天的例行工作(crontab)程式來建立。當我們建立好這個資料庫後,就可以方便地來搜尋所需檔案了。

        即先執行:updatedb(無論在那個目錄中均可,可以放在crontab中 )後在 /var/lib/slocate/ 下生成 slocate.db 資料庫即可快速查詢。在命令提示符下直接執行#updatedb 命令即可。

$locate signal.h
/usr/include/asm/signal.h
/usr/include/linux/signal.h
/usr/include/signal.h
/usr/include/sys/signal.h

3. rpm命令

如果使用者知道自己要查詢到軟體包的名字,可以直接使用下面的命令。這個命令只在支援rpm的linux版本上有效,如redhat,centos,fedora和suse等。

$rpm -q python    #查詢檢查系統是否安裝了python
python-1.5.2-27

或者:

$rpm -qa| grep   python     #這是兩個命令的結合

rpm的其他用法:

rpm -qa           #列出所有安裝了的包
rpm -e package    #刪除某個包
rpm -qi package   #查詢某個包
rpm -qf command   #根據程式查詢包的名字
rpm -ql package   #查詢某個包所有的安裝檔案

4. dpkg命令

如果使用者知道自己要查詢到軟體包的名字,也可以使用下面的命令。這個命令只在支援dpkg的linux版本上有效,如ubuntu等。

$dpkg -l|grep mysql

5. yum命令

yum的引數很多,以下是用於查詢軟體包的命令。但是也只支援特定的髮型版本,centos下最常用的命令

$yum list                 #列出所指定的軟體包,後可以加上你想查詢的軟體包的名字【yum list|grep wget】
$yum list installed      #列出所有已安裝的軟體包【yum list installed|grep wget】
$yum info installed       #列出所有已安裝的軟體包資訊【yum info installed|grep wget】

6. whereis命令

whereis是查詢檔案或者命令的所在目錄

$whereis pwd    #查詢pwd命令所在的目錄

7. find命令

這個命令可用來查詢系統是否安裝了指定的軟體包,更重要的是也可以查詢自己對軟體包名稱記憶不是很清晰的軟體包。而且我想是這是所有linux和unix都支援的。find的查詢範圍很廣,功能強大,再搭配用正則表達,效果很好,不過建議儘量縮小搜尋範圍,減少系統壓力,畢竟,當系統檔案多了,搜尋耗費時間和資源的。

$find / -name "python"    #從根目錄開始查詢包含”python“這個字元的檔案和資料夾。

find的詳細使用有如下例子:

#在當前目錄下查詢,查詢深度為一,查詢以.jpg結尾檔案,並將其轉化
$find . -maxdepth 1 -name *.jpg -print -exec convert

#搜尋以 '.rpm' 結尾的檔案並定義其許可權
$find / -name *.rpm -exec chmod 755 '{}' \;	

#從 '/' 開始進入根檔案系統搜尋檔案和目錄
$find / -name file1	

#羅列一個系統中所有使用了SUID控制的檔案
$find / -perm -u+s

#搜尋屬於使用者 'user1' 的檔案和目錄
$find / -user user1	

#搜尋以 '.rpm' 結尾的檔案,忽略光碟機、捷盤等可移動裝置
$find / -xdev -name \*.rpm

#從一個目錄查詢並複製所有以 '.txt' 結尾的檔案到另一個目錄
$find /home/user1 -name '*.txt' | xargs cp -av --target-directory=/home/backup/ --parents

#在目錄 '/ home/user1' 中搜尋帶有'.bin' 結尾的檔案
$find /home/user1 -name \*.bin

#搜尋在過去100天內未被使用過的執行檔案
$find /usr/bin -type f -atime +100

#搜尋在10天內被建立或者修改過的檔案
$find /usr/bin -type f -mtime -10

#查詢所有以 '.log' 結尾的檔案並做成一個bzip包
$find /var/log -name '*.log' | tar cv --files-from=- | bzip2 > log.tar.bz2

相關文章