1. 程式人生 > >linux查詢檔案位置,vi編輯基本操作,檔案許可權變更

linux查詢檔案位置,vi編輯基本操作,檔案許可權變更

whereis <程式名稱>

查詢軟體的安裝路徑

-b 只查詢二進位制檔案

-m 只查詢幫助檔案

-s 只查詢原始碼

-u 排除指定型別檔案

-f 只顯示檔名

-B <目錄> 在指定目錄下查詢二進位制檔案

-M <目錄> 在指定目錄下查詢幫助檔案

-S <目錄> 在指定目錄下查詢原始碼

locate <檔名稱>

在檔案索引資料庫中搜索檔案

-d <資料庫路徑> 搜尋指定資料庫

updatedb

更新檔案索引資料庫

find [路徑] <表示式>

查詢檔案

-name <表示式> 根據檔名查詢檔案

-iname <表示式> 根據檔名查詢檔案,忽略大小寫

-path <表示式> 根據路徑查詢檔案

-ipath <表示式> 根據路徑查詢檔案,忽略大小寫

-amin <分鐘> 過去N分鐘內訪問過的檔案

-atime <天數> 過去N天內訪問過的檔案

-cmin <分鐘> 過去N分鐘內修改過的檔案

-ctime <天數> 過去N天內修改過的檔案

-anewer <參照檔案> 比參照檔案更晚被讀取過的檔案

-cnewer <參照檔案> 比參照檔案更晚被修改過的檔案

-size <大小> 根據檔案大小查詢檔案,單位b c w k M G

-type <檔案型別> 根據檔案型別查詢檔案。b 塊裝置 c 字元裝置 d 目錄 p 管道檔案 f 普通檔案 l 連結 s 埠檔案

-user <使用者名稱> 按歸屬使用者查詢檔案

-uid <uid> 按UID查詢檔案

-group <群組名> 按歸屬群組查詢檔案

-gid <gid> 按GID查詢檔案

-empty 查詢空檔案

從檔案內容查詢匹配指定字串的行:

$ grep "被查詢的字串" 檔名

從檔案內容查詢與正則表示式匹配的行:

$ grep –e “正則表示式” 檔名

查詢時不區分大小寫:

$ grep –i "被查詢的字串" 檔名

查詢匹配的行數:$ grep -c "被查詢的字串" 檔名

從檔案內容查詢不匹配指定字串的行:$ grep –v "被查詢的字串" 檔名

從根目錄開始查詢所有副檔名為.log的文字檔案,並找出包含”ERROR”的行

find / -type f -name "*.log" | xargs grep "ERROR"

系統查詢到httpd.conf檔案後即時在螢幕上顯示httpd.conf檔案資訊。 

find/-name"httpd.conf"-ls

在根目錄下查詢某個檔案

find . -name "test"

在某個目錄下查詢包含某個字串的檔案

grep -r "zh_CN" ./

儲存命令
按ESC鍵 跳到命令模式,然後:
:w   儲存檔案但不退出vi

:w file 將修改另外儲存到file中,不退出vi

:w!   強制儲存,不推出vi

:wq  儲存檔案並退出vi

:wq! 強制儲存檔案,並退出vi

:q 不儲存檔案,退出vi

:q! 不儲存檔案,強制退出vi

:e! 放棄所有修改,從上次儲存檔案開始再編輯

使用vi編輯器編輯長檔案時,常常是頭昏眼花,也找不到需要更改的內容。

這時,使用查詢功能尤為重要。

方法如下:

1、命令模式下輸入“/字串”,例如“/Section 3”。

2、如果查詢下一個,按“n”即可。

要自當前游標位置向上搜尋,請使用以下命令:

/pattern Enter

其中,pattern表示要搜尋的特定字元序列。

要自當前游標位置向下搜尋,請使用以下命令:

?pattern Enter

按下 Enter鍵後,vi 將搜尋指定的pattern,並將游標定位在 pattern的第一個字元處。例如,要向上搜尋 place一詞,請鍵入:

vi 查詢替換大全

vi/vim 中可以使用 :s 命令來替換字串。以前只會使用一種格式來全文替換,今天發現該命令有很多種寫法(vi 真是強大啊,還有很多需要學習),記錄幾種在此,方便以後查詢。

:s/vivian/sky/ 替換當前行第一個 vivian 為 sky

:s/vivian/sky/g 替換當前行所有 vivian 為 sky

:n,$s/vivian/sky/ 替換第 n 行開始到最後一行中每一行的第一個 vivian 為 sky

:n,$s/vivian/sky/g 替換第 n 行開始到最後一行中每一行所有 vivian 為 sky

n 為數字,若 n 為 .,表示從當前行開始到最後一行

:%s/vivian/sky/(等同於 :g/vivian/s//sky/) 替換每一行的第一個 vivian 為 sky

:%s/vivian/sky/g(等同於 :g/vivian/s//sky/g) 替換每一行中所有 vivian 為 sky

可以使用 # 作為分隔符,此時中間出現的 / 不會作為分隔符

:s#vivian/#sky/# 替換當前行第一個 vivian/ 為 sky/

:%s+/oradata/apras/+/user01/apras1+ (使用+ 來 替換 / ): /oradata/apras/替換成/user01/apras1/

1.:s/vivian/sky/ 替換當前行第一個 vivian 為 sky

:s/vivian/sky/g 替換當前行所有 vivian 為 sky

2. :n,$s/vivian/sky/ 替換第 n 行開始到最後一行中每一行的第一個 vivian 為 sky

:n,$s/vivian/sky/g 替換第 n 行開始到最後一行中每一行所有 vivian 為 sky

(n 為數字,若 n 為 .,表示從當前行開始到最後一行)

3. :%s/vivian/sky/(等同於 :g/vivian/s//sky/) 替換每一行的第一個 vivian 為 sky

:%s/vivian/sky/g(等同於 :g/vivian/s//sky/g) 替換每一行中所有 vivian 為 sky

4. 可以使用 # 作為分隔符,此時中間出現的 / 不會作為分隔符

:s#vivian/#sky/# 替換當前行第一個 vivian/ 為 sky/

5. 刪除文字中的^M

問題描述:對於換行,window下用回車換行(0A0D)來表示,Linux下是回車(0A)來表示。這樣,將window上的檔案拷到Unix上用時,總會有個^M.請寫個用在unix下的過濾windows檔案的換行符(0D)的shell或c程式。

· 使用命令:cat filename1 | tr -d “^V^M” > newfile;

· 使用命令:sed -e “s/^V^M//” filename > outputfilename。需要注意的是在1、2兩種方法中,^V和^M指的是Ctrl+V和Ctrl+M。你必須要手工進行輸入,而不是貼上。

· 在vi中處理:首先使用vi開啟檔案,然後按ESC鍵,接著輸入命令:%s/^V^M//。

· :%s/^M$//g

如果上述方法無用,則正確的解決辦法是:

· tr -d "r" < src >dest

· tr -d "15" dest

· strings A>B

6. 其它

利用 :s 命令可以實現字串的替換。具體的用法包括:

:s/str1/str2/ 用字串 str2 替換行中首次出現的字串 str1

:s/str1/str2/g 用字串 str2 替換行中所有出現的字串 str1

:.,$ s/str1/str2/g 用字串 str2 替換正文當前行到末尾所有出現的字串 str1

:1,$ s/str1/str2/g 用字串 str2 替換正文中所有出現的字串 str1

:g/str1/s//str2/g 功能同上

從上述替換命令可以看到:g 放在命令末尾,表示對搜尋字串的每次出現進行替換;不加 g,表示只對搜尋

字串的首次出現進行替換;g 放在命令開頭,表示對正文中所有包含搜尋字串的行進行替換操作。

查詢到結果後,如何退出查詢呢?輸入:noh命令。

vim 編輯可以在命令模式輸入  :wq!   儲存退出
可以用chmod 命令修改檔案許可權。
    chmod命令是非常重要的,用於改變檔案或目錄的訪問許可權。使用者用它控制檔案或目錄的訪問許可權。該命令有兩種用法。一種是包含字母和操作符表示式的文字設定法;另一種是包含數字的數字設定法。
用法:
文字設定法:
chmod [who] [+ | - | =] [mode] 檔名¼
命令中各選項的含義為:
操作物件who可是下述字母中的任一個或者它們的組合:
u 表示逗使用者(user)地,即檔案或目錄的所有者。
g 表示逗同組(group)使用者地,即與檔案屬主有相同組ID的所有使用者。
o 表示逗其他(others)使用者地。
a 表示逗所有(all)使用者地。它是系統預設值。
操作符號可以是:
+ 新增某個許可權。
- 取消某個許可權。
= 賦予給定許可權並取消其他所有許可權(如果有的話)。
設定mode所表示的許可權可用下述字母的任意組合:
r 可讀。
w 可寫。
x 可執行。
X 只有目標檔案對某些使用者是可執行的或該目標檔案是目錄時才追加x 屬性。
s 在檔案執行時把程序的屬主或組ID置為該檔案的檔案屬主。方式逗u+s地設定檔案      的使用者ID位,逗g+s地設定組ID位。
t 儲存程式的文字到交換裝置上。
u 與檔案屬主擁有一樣的許可權。
g 與和檔案屬主同組的使用者擁有一樣的許可權。
o 與其他使用者擁有一樣的許可權。
檔名:以空格分開的要改變許可權的檔案列表,支援萬用字元。
在一個命令列中可給出多個許可權方式,其間用逗號隔開。例如:chmod g+r,o+r example 使同組和其他使用者對檔案example 有讀許可權。
數字設定法:
數字表示的屬性的含義:
0表示沒有許可權
1表示可執行許可權
2表示可寫許可權
4表示可讀許可權
然後將其相加。所以數字屬性的格式應為3個從0到7的八進位制數,其順序是(u)(g)(o)
如果想讓某個檔案的屬主有逗讀/寫地二種許可權,需要把4(可讀)+2(可寫)=6(讀/寫)


比如給一個shell檔案增加可執行許可權:

      chmod +x test3.sh

因為要裝pl/sql所以要查詢tnsnames.ora檔案。。看看怎麼查這個檔案在linux下的哪個目錄

find / -name tnsnames.ora

查到:

/opt/app/oracle/product/10.2/network/admin/tnsnames.ora /opt/app/oracle/product/10.2/network/admin/samples/tnsnames.ora

還可以用locate 來查詢

locate tnsnames.ora 結果是:

/opt/app/oracle/product/10.2/hs/admin/tnsnames.ora.sample /opt/app/oracle/product/10.2/network/admin/tnsnames.ora /opt/app/oracle/product/10.2/network/admin/samples/tnsnames.ora  

一.通過檔名查詢法:

舉例說明,假設你忘記了httpd.conf這個檔案在系統的哪個目錄 下,甚至在系統的某個地方也不知道,則這是可以使用如下命令:   find / -name httpd.conf   這個命令語法看起來很容易就明白了,就是直接在find後面寫上 -name,表明要求系統按照檔名查詢,最後寫上httpd.conf這個目標檔名即可。稍等一會系統會在計算機螢幕上顯示出查詢結果列表:   etc/httpd/conf/httpd.conf   這就是httpd.conf這個檔案在Linux系統中的完整路徑。查詢成功。   如果輸入以上查詢命令後系統並沒有顯示出結果,那麼不要以為系統沒有執行find / -name httpd.conf命令,而可能是你的系統中沒有安裝Apache伺服器,這時只要你安裝了ApacheWeb伺服器,然後再使用find / -name httpd.conf就能找到這個配置檔案了。

  二.無錯誤查詢技巧:      在Linux系統中“find”命令是大多數系統使用者都可以使用的命令,並不是ROOT系統管理員的專利。但是普通使用者使用“find”命令時也有可 能遇到這樣的問題,那就是Linux系統中系統管理員ROOT可以把某些檔案目錄設定成禁止訪問模式。這樣普通使用者就沒有許可權用“find”命令來查詢這 些目錄或者檔案。當普通使用者使用“find”命令來查詢這些檔案目錄是,往往會出現"Permissiondenied."(禁止訪問)字樣。系統將無法 查詢到你想要的檔案。為了避免這樣的錯誤,我們可是使用轉移錯誤提示的方法嘗試著查詢檔案,例如輸入:   find / -name access_log 2>/dev/null   這個方法是把查詢錯誤提示轉移到特定的目錄中去。系統執行這個命令後,遇到錯誤的資訊就直接輸送到stderrstream2 中,access_log2就是表明系統將把錯誤資訊輸送到stderrstream2中,/dev/null是一個特殊的檔案,表明空的或者錯誤的信 息,這樣查詢到的錯誤資訊將被轉移了,不會再顯示了。   在Linux系統查詢檔案也會遇到這樣一個實際問題。如果我們在整個硬碟,這個系統中查詢某個檔案就要花費相當長的一段時間,特別是大型Linux系 統和容量較大的硬碟,檔案放在套嵌很深的目錄中的時候。如果我們知道了這個檔案存放在某個大的目錄中,那麼只要在這個目錄中往下找就能節省很多時間了。使 用find /etc -name httpd.conf就可以解決這個問題。上面的命令就是表示在etc目錄中查詢httpd.conf這個檔案。這裡再說明一下“/”這個函式符號的含 義,如果輸入“find /”就是表示要求Linux系統在整個ROOT目錄下查詢檔案,也就是在整個硬碟上查詢檔案,而“find /etc”就是隻在 etc目錄下查詢檔案。因為“find /etc”表示只在etc目錄下查詢檔案,所以查詢的速度就相應要快很多了。

  三.根據部分檔名查詢方法:

 例如我們知道某個檔案包含有srm這3個字母,那麼要找到系統中所有包含有這3個字母的檔案是可以實現 的,輸入:   find /etc -name '*srm*'   這個命令表明了Linux系統將在/etc整個目錄中查詢所有的包含有srm這3個字母的檔案,比如absrmyz,tibc.srm等等符合條件的檔案都能顯示出來。如果你還知道這個檔案是由srm 這3個字母打頭的,那麼我們還可以省略最前面的星號,命令如下:   find/etc -name 'srm*'   這是隻有像srmyz這樣的檔案才被查找出來,像absrmyz或者absrm這樣的檔案都不符合要求,不被顯示,這樣查詢檔案的效率和可靠性就大大增強了。

  四.根據檔案的特徵查詢方法:      如果只知道某個檔案的大小,修改日期等特徵也可以使用“find”命令查找出來,這和WINDOWS系統中的“搜尋”功能是基本相同的。在微軟的“搜 索”中,“搜尋助理”使得搜尋檔案和資料夾、印表機、使用者以及網路中的其他計算機更加容易。它甚至使在Internet上搜索更加容易。“搜尋助理”還包 括一個索引服務,該服務維護了計算機中所有檔案的索引,使得搜尋速度更快。使用“搜尋助理”時,使用者可以指定多個搜尋標準。例如,使用者可以按名稱、型別及 大小搜尋檔案和資料夾。使用者甚至可以搜尋包含特定文字的檔案。如果使用者正使用Active Directory,這時還可以搜尋帶有特定名稱或位置的印表機。   例如我們知道一個Linux檔案大小為1,500bytes,那麼我們可是使用如下命令來查詢find /-size 1500c,字元c表明這個要查詢的檔案的大小是以bytes為單位。如果我們連這個檔案的具體大小都不知道,那麼在Linux中還可以進行模糊查詢方式 來解決。例如我們輸入find /-size+10000000c這個命令,則標明我們指定系統在根目錄中查找出大於10000000位元組的檔案並顯示出來。命令中的“+”是表示要求系 統只列出大於指定大小的檔案,而使用“-”則表示要求系統列出小於指定大小的檔案。下面的列表就是在Linux使用不同“find"命令後系統所要作出的 查詢動作,從中我們很容易看出在Linux中使用“find”命令的方式是很多的,“find”命令查詢檔案只要靈活應用,絲毫不比在WINDOWS中查 找能力差。

  find / -amin -10 # 查詢在系統中最後10分鐘訪問的檔案   find / -atime -2 # 查詢在系統中最後48小時訪問的檔案   find / -empty # 查詢在系統中為空的檔案或者資料夾   find / -group cat # 查詢在系統中屬於groupcat的檔案   find / -mmin -5 # 查詢在系統中最後5分鐘裡修改過的檔案   find / -mtime -1 #查詢在系統中最後24小時裡修改過的檔案   find / -nouser #查詢在系統中屬於作廢使用者的檔案   find / -user fred #查詢在系統中屬於FRED這個使用者的檔案      下面的列表就是對find命令所可以指定檔案的特徵進行查詢的部分條件。在這裡並沒有列舉所有的查詢條件,參考有關Linux有關書籍可以知道所有find命令的查詢函式。

  -amin n   查詢系統中最後N分鐘訪問的檔案   -atime n   查詢系統中最後n*24小時訪問的檔案   -cmin n   查詢系統中最後N分鐘被改變狀態的檔案   -ctime n   查詢系統中最後n*24小時被改變狀態的檔案   -empty   查詢系統中空白的檔案,或空白的檔案目錄,或目錄中沒有子目錄的資料夾   -false   查詢系統中總是錯誤的檔案   -fstype type   查詢系統中存在於指定檔案系統的檔案,例如:ext2 .   -gid n   查詢系統中檔案數字組 ID 為 n的檔案   -group gname   查詢系統中檔案屬於gnam檔案組,並且指定組和ID的檔案。