Linux命令總結(jié)1

大數(shù)據(jù)技術(shù)之linux
第一章:linux系統(tǒng)簡(jiǎn)介與安裝部署
1.1發(fā)展背景

Linux 內(nèi)核最初只是由芬蘭人林納斯?托瓦茲(Linus Torvalds)在赫爾辛基大學(xué)上學(xué)時(shí)出于個(gè)人愛好而編寫的。Linux 是一套免費(fèi)使用和自由傳播的類 Unix 操作系統(tǒng),是一個(gè)基于 POSIX 和 UNIX 的多用戶、多任務(wù)、支持多線程和多 CPU 的操作系統(tǒng)。Linux 能運(yùn)行主要的 UNIX 工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。它支持 32 位和 64 位硬件。Linux 繼承Unix 以網(wǎng)絡(luò)為核心的設(shè)計(jì)思想,是一個(gè)性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。
目前市面上較知名的發(fā)行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等,其中以centos在企業(yè)中使用最廣。

現(xiàn)在企業(yè)使用的主流版本是centos7系列,隨著國(guó)家國(guó)產(chǎn)化的的要求,一些國(guó)產(chǎn)操作系統(tǒng)也開始在一些國(guó)企央企以及軍隊(duì)項(xiàng)目中使用,比如中標(biāo)麒麟,銀河麒麟等國(guó)產(chǎn)化操作系統(tǒng),在選擇這些操作系統(tǒng)的時(shí)候要注意軟件與linux內(nèi)核版本的適用性,本質(zhì)來說國(guó)產(chǎn)化操作系統(tǒng)還是基于redhat的內(nèi)核。

1.2linux與windows的區(qū)別
1.免費(fèi)開源
2.模塊化程度高
3.廣泛的硬件支持
4.安全穩(wěn)定
5.多用戶,多任務(wù)
6.良好的可移植性

1.3Centos下載地址
官網(wǎng)下載鏈接:http://isoredirect.centos.org/centos/7/isos/x86_64/
阿里云站點(diǎn):http://mirrors.aliyun.com/centos/7/isos/x86_64/

1.4VM與linux的安裝
詳情安裝步驟見下面安裝文檔,雙擊可打開

第二章:linux文件與與目錄結(jié)構(gòu)
2.1 Linux文件
Linux系統(tǒng)中一切皆文件。
2.2 Linux目錄結(jié)構(gòu)
/bin 二進(jìn)制可執(zhí)行命令
/dev 設(shè)備特殊文件
/etc 系統(tǒng)管理和配置文件
/etc/rc.d 啟動(dòng)的配置文件和腳本
/home 用戶主目錄的基點(diǎn),比如用戶user的主目錄就是/home/user,可以用~user表示
/lib 標(biāo)準(zhǔn)程序設(shè)計(jì)庫,又叫動(dòng)態(tài)鏈接共享庫,作用類似windows里的.dll文件
/sbin 超級(jí)管理命令,這里存放的是系統(tǒng)管理員使用的管理程序
/tmp 公共的臨時(shí)文件存儲(chǔ)點(diǎn)
/root 系統(tǒng)管理員的主目錄
/mnt 系統(tǒng)提供這個(gè)目錄是讓用戶臨時(shí)掛載其他的文件系統(tǒng)
/lost+found這個(gè)目錄平時(shí)是空的,系統(tǒng)非正常關(guān)機(jī)而留下“無家可歸”的文件(windows下叫什么.chk)就在這里
/proc 虛擬的目錄,是系統(tǒng)內(nèi)存的映射??芍苯釉L問這個(gè)目錄來獲取系統(tǒng)信息。
/var 某些大文件的溢出區(qū),比方說各種服務(wù)的日志文件
/usr 最龐大的目錄,要用到的應(yīng)用程序和文件幾乎都在這個(gè)目錄

第三章:VI與VIM編輯器
3.1vi簡(jiǎn)介
vi是“Visual interface”的簡(jiǎn)稱,它在Linux上的地位就仿佛Edit程序在DOS上一樣。它可以執(zhí)行輸出、刪除、查找、替換、塊操作等眾多文本操作,而且用戶可以根據(jù)自己的需要對(duì)其進(jìn)行定制。Vi不是一個(gè)排版程序,它不象Word或WPS那樣可以對(duì)字體、格式、段落等其他屬性進(jìn)行編排,它只是一個(gè)文本編輯程序。 vi沒有菜單,只有命令,且命令繁多。
Vi有三種基本工作模式:

  • 命令模式
  • 文本輸入模式
  • 末行模式

命令行模式
任何時(shí)候,不管用戶處于何種模式,只要按一下ESC鍵,即可使Vi進(jìn)入命令模式;我們?cè)趕hell環(huán)境(提示符為$)下輸入啟動(dòng)Vi命令,進(jìn)入編輯器時(shí),也是處于該模式下。在該模式下,用戶可以輸入各種合法的Vi命令,用于管理自己的文檔。此時(shí)從鍵盤上輸入的任何字符都被當(dāng)做編輯命令來解釋,若輸入的字符是合法的Vi命令,則Vi在接受用戶命令之后完成相應(yīng)的動(dòng)作。但需注意的是,所輸入的命令并不在屏幕上顯示出來。若輸入的字符不是Vi的合法命令,Vi會(huì)響鈴報(bào)警。

文本輸入模式
在命令模式下輸入插入命令i、附加命令a 、打開命令o、修改命令c、取代命令r或替換命令s都可以進(jìn)入文本輸入模式。在該模式下,用戶輸入的任何字符都被Vi當(dāng)做文件內(nèi)容保存起來,并將其顯示在屏幕上。在文本輸入過程中,若想回到命令模式下,按鍵ESC即可。
末行模式
末行模式也稱ex轉(zhuǎn)義模式。在命令模式下,用戶按“:”鍵即可進(jìn)入末行模式下,此時(shí)Vi會(huì)在顯示窗口的最后一行(通常也是屏幕的最后一行)顯示一個(gè)“:”作為末行模式的提示符,等待用戶輸入命令。多數(shù)文件管理命令都是在此模式下執(zhí)行的(如把編輯緩沖區(qū)的內(nèi)容寫到文件中等)。末行命令執(zhí)行完后,Vi自動(dòng)回到命令模式。
3.2vim基礎(chǔ)操作
vim是從 vi 發(fā)展出來的一個(gè)文本編輯器 。代碼補(bǔ)完、編譯及錯(cuò)誤跳轉(zhuǎn)等方便編程的功能特別豐富

進(jìn)入插入模式:
i: 插入光標(biāo)前一個(gè)字符
I: 插入行首
a: 插入光標(biāo)后一個(gè)字符
A: 插入行未
o: 向下新開一行,插入行首
O: 向上新開一行,插入行首

進(jìn)入末行模式
在命令模式下,用戶按“:”鍵即可進(jìn)入末行模式

退出
:q 退出
:q! 退出并不保存
:w 保存
:wq 保存并退出
:x 保存并退出

查找命令:
/: str查找
n: 下一個(gè)
N:上一個(gè)

替換命令:
把a(bǔ)bc全部替換成123

末行模式下,將當(dāng)前文件中的所有abc替換成123。如果不使用 g,則只會(huì)替換每一行的第一個(gè) abc
:%s/abc/123/g

末行模式下,將第一行至第10行之間的abc替換成123
:1, 10s/abc/123/g

vim里執(zhí)行 shell 下命令:
末行模式里輸入!,后面跟命令

進(jìn)入命令模式:
ESC:從插入模式或末行模式進(jìn)入命令模式
移動(dòng)光標(biāo):
h: 左移
j: 下移

k: 上移
l: 右移
M: 光標(biāo)移動(dòng)到當(dāng)前屏幕的中間行
L: 光標(biāo)移動(dòng)到當(dāng)前屏幕最后一行行首
gg: 光標(biāo)移動(dòng)文件開頭
G: 光標(biāo)移動(dòng)到文件末尾
G: 移動(dòng)到指定行,行號(hào)G (擴(kuò)展:打開文件時(shí)跳轉(zhuǎn)指定行,vi 文件名 +行數(shù))
w: 向后一次移動(dòng)一個(gè)字
b: 向前一次移動(dòng)一個(gè)字
{: 按段移動(dòng),上移
}: 按段移動(dòng),下移
Ctr-d: 向下翻半屏
Ctr-u: 向上翻半屏
Ctr-f: 向下翻一屏
Ctr-b: 向上翻一屏

撤銷命令:
u: 一步一步撤銷
Ctr-r: 反撤銷

刪除命令:
x: 刪除光標(biāo)后一個(gè)字符,相當(dāng)于 Del
X: 刪除光標(biāo)前一個(gè)字符,相當(dāng)于 Backspace
dd: 刪除光標(biāo)所在行,n dd 刪除指定的行數(shù)
D: 刪除光標(biāo)后本行所有內(nèi)容,包含光標(biāo)所在字符
d0: 刪除光標(biāo)前本行所有內(nèi)容,不包含光標(biāo)所在字符
dw: 刪除光標(biāo)開始位置的字,包含光標(biāo)所在字符

復(fù)制粘貼:
yy: 復(fù)制當(dāng)前行,n yy 復(fù)制 n 行
p: 在光標(biāo)所在位置向下新開辟一行,粘貼

替換操作:
r: 替換當(dāng)前字符
R: 替換當(dāng)前行光標(biāo)后的字符

文本行移動(dòng):

: 文本行右移
<<: 文本行左移

重復(fù)命令:
.: 重復(fù)上一次操作的命令

可視模式:
v: 按字符移動(dòng),選中文本
V: 按行移動(dòng),選中文本可視模式可以配合 d, y, >>, << 實(shí)現(xiàn)對(duì)文本塊的刪除,復(fù)制,左右移動(dòng)
3.3終端實(shí)用技巧
vim 文件名
按 i 進(jìn)入編輯,需要修改哪塊按上下左右鍵可移動(dòng)
修改完畢后按【ESC】鍵退出,需要保存退出按 :wq 不保存退出:q!

第四章 : linux常用基本命令
4.1基礎(chǔ)快捷鍵
ctrl + c 停止進(jìn)程
ctrl+l 清屏;徹底清屏是:reset
ctrl + q 退出
善于用tab鍵補(bǔ)全 提示(更重要的是可以防止敲錯(cuò))
上下鍵 查找執(zhí)行過的命令
ctrl +alt linux和Windows之間切換
4.2文件命令

pwd 顯示當(dāng)前工作目錄的絕對(duì)路徑

ls,ll,ll -a

cd 進(jìn)入到某一個(gè)目錄下

mkdir 創(chuàng)建文件夾

rmdir 刪除文件夾

touch 創(chuàng)建文件

cp 復(fù)制文件/文件夾

cp -r 遞歸復(fù)制,多級(jí)目錄

mv 移動(dòng)文件夾/重命名

rm 刪除文件

rm -rf 強(qiáng)制刪除文件不需要確認(rèn)

cat 查看文件

more 查看文件

less 查看文件

echo 輸出

head 查看文件頭部

tail 查看文件末尾

tail -f 實(shí)時(shí)查看文件末尾

nl 文件帶行號(hào)標(biāo)準(zhǔn)輸出

> 覆蓋

>> 追加

ln -s 目標(biāo)目錄 軟鏈接地址 創(chuàng)建軟鏈接

rm -rf 軟鏈接地址 刪除軟連接
ln -snf 新目標(biāo)目錄 軟鏈接地址 修改軟連接

history 查看已經(jīng)執(zhí)行過歷史命令

文本處理類的命令:
wc
wc [option] [file]...
-l: 統(tǒng)計(jì)行數(shù)
-c: 統(tǒng)計(jì)字節(jié)數(shù)
-w;統(tǒng)計(jì)單詞數(shù)
tr
tr: 轉(zhuǎn)換字符或刪除字符
tr '集合1' '集合2'
tr -d '字符集合'
cut
This is a test line.
-d字符:指定分隔符
-f#: 指定要顯示字段
單個(gè)數(shù)字:一個(gè)字段
逗號(hào)分隔的多個(gè)數(shù)字:指定多個(gè)離散字段
-:連續(xù)字段,如3-5;

例子:
準(zhǔn)備一個(gè)測(cè)試文件,內(nèi)容如下:

cat test.txt
Hello World! I am maqian!
I am now in guangzhou!
Today is so hot, but i still have a fever!
這里是一行中文。
cut -c

顯示第1個(gè)和第2個(gè)字符

cut test.txt -c "1,2"
-d和-f選項(xiàng)

以空格分開每一行并輸出第1個(gè)和第3個(gè)字段

cut test.txt -f "1,3" -d " "

sort
按字符進(jìn)行比較
sort [option] file...
-f: 忽略字符大小寫;
-n: 比較數(shù)值大??;
-t: 指定分隔符
-k: 指定分隔后進(jìn)行比較字段
-u: 重復(fù)的行,只顯示一次;
準(zhǔn)備數(shù)據(jù):

cat sort.txt
Apple
Cut
Blue
Cut
Apple

排序:sort sort.txt
去重:sort -u sort.txt

uniq
移除重復(fù)的行
-c:顯示每行重復(fù)的次數(shù)
-d:僅顯示重復(fù)過的行
-u: 僅顯示不曾重復(fù)的行

4.3系統(tǒng)信息命令

date 查看當(dāng)前系統(tǒng)時(shí)間

data -s 修改時(shí)間

w 顯示登陸用戶

uname -a 查看系統(tǒng)內(nèi)核

cat /proc/cpuinfo 查看cpu信息

cat /proc/meminfo 查看內(nèi)存信息

4.4壓縮/解壓命令

tar -xvf file.tar 解壓.tar結(jié)尾的

tar -zxvf file.tar.gz 解壓.tar.gz文件

tar -cf file.tar file 創(chuàng)建包含files的文件file.tar

gzip -d file.gz 將file.gz解壓縮為file

4.5網(wǎng)絡(luò)命令

ping host(主機(jī)名) 網(wǎng)絡(luò)是否連通

ifconfig 查看本機(jī)ip等信息

telnet ip 端口 查看端口是否占用

(沒有這個(gè)命令執(zhí)行 yum -y install telnet )

wget file 下載文件

tcpdump tcp port 端口 抓包tcp

hostname 查看主機(jī)名

4.6權(quán)限命令
1.文件或目錄權(quán)限包括:

2.文件權(quán)限命令:

chmod 777 file 為所有用戶添加讀,寫,執(zhí)行權(quán)限

chmod 755 file 為所有者添加rwx權(quán)限,為組和其他用戶添加rx權(quán)限

3.文件所屬用戶和用戶組權(quán)限命令:

chown hadoop:hadoop file 將file的用戶和用戶組都改為hadoop

4.7用戶管理命令
useradd 用戶名 添加新用戶
useradd -g 組名 用戶名 給某個(gè)組創(chuàng)建用戶
passwd 用戶名 設(shè)置用戶密碼
cat /etc/passwd 查看創(chuàng)建了那些用戶
Su 用戶名 切換用戶
userdel 用戶名 刪除用戶但保存用戶主目錄
userdel -r 用戶名 用戶和用戶主目錄,都刪除
whoami 顯示自身用戶名稱
who am i 顯示登錄用戶的用戶名
usermod -g 更改用戶組 用戶名

設(shè)置普通用戶具有root權(quán)限,可以使用sudo
1.添加hadoop用戶,并對(duì)其設(shè)置密碼。
[root@hadoop101 ~]#useradd hadoop
[root@hadoop101 ~]#passwd hadoop
2.修改配置文件
[root@hadoop101 ~]#vi /etc/sudoers
修改 /etc/sudoers 文件,找到下面一行(91行),在root下面添加一行,如下所示:

Allow root to run any commands anywhere

root ALL=(ALL) ALL
hadoopALL=(ALL) ALL
或者配置成采用sudo命令時(shí),不需要輸入密碼

Allow root to run any commands anywhere

root ALL=(ALL) ALL
hadoopALL=(ALL) NOPASSWD:ALL
修改完畢,現(xiàn)在可以用hadoop帳號(hào)登錄,然后用命令 sudo ,即可獲得root權(quán)限進(jìn)行操作。

4.8用戶組管理命令
groupadd 組名 添加組
groupdel 組名 刪除組
groupmod -n 新組名 老組名 指定工作組的新組名
cat /etc/group 查看創(chuàng)建了哪些組
4.9搜索查找命令

  1. find 查找文件或者目錄
    常用:find / -name file 查找 /目錄下file文件
    2.grep 過濾查找及“|”管道符(詳細(xì)使用見下一章中的grep)
    1.管道符,“|”,表示將前一個(gè)命令的處理結(jié)果輸出傳遞給后面的命令處理
    2.grep常常跟在|的后面做過濾查找
    3.反轉(zhuǎn) grep -v
    4.示例

查找某文件在第幾行 ls | grep -n test

查找某進(jìn)程 ps -ef | grep PID

查看日志中含有errer cat file |grep error

3.which 查找命令
查找命令在那個(gè)目錄下
1.基本語法
which 命令
2.案例實(shí)操
which ll
4.find詳解
由于find具有強(qiáng)大的功能,所以它的選項(xiàng)也很多,其中大部分選項(xiàng)都值得我們花時(shí)間來了解一下。即使系統(tǒng)中含有網(wǎng)絡(luò)文件系統(tǒng)( NFS),find命令在該文件系統(tǒng)中同樣有效,只要你具有相應(yīng)的權(quán)限。
在運(yùn)行一個(gè)非常消耗資源的find命令時(shí),很多人都傾向于把它放在后臺(tái)執(zhí)行,因?yàn)楸闅v一個(gè)大的文件系統(tǒng)可能會(huì)花費(fèi)很長(zhǎng)的時(shí)間(這里是指30G字節(jié)以上的文件系統(tǒng))。
一、find 命令格式
1、find命令的一般形式為;
find pathname -options [-print -exec -ok ...]
2、find命令的參數(shù);
pathname: find命令所查找的目錄路徑。例如用.來表示當(dāng)前目錄,用/來表示系統(tǒng)根目錄,遞歸查找。
-print: find命令將匹配的文件輸出到標(biāo)準(zhǔn)輸出。
-exec: find命令對(duì)匹配的文件執(zhí)行該參數(shù)所給出的shell命令。相應(yīng)命令的形式為'command' { } ;,注意{ }和\;之間的空格。
-ok: 和-exec的作用相同,只不過以一種更為安全的模式來執(zhí)行該參數(shù)所給出的shell命令,在執(zhí)行每一個(gè)命令之前,都會(huì)給出提示,讓用戶來確定是否執(zhí)行。
find命令選項(xiàng)
-name 按照文件名查找文件。
-perm 按照文件權(quán)限來查找文件。
-prune 使用這一選項(xiàng)可以使find命令不在當(dāng)前指定的目錄中查找,如果同時(shí)使用-depth選項(xiàng),那么-prune將被find命令忽略。
-user 按照文件屬主來查找文件。
-group 按照文件所屬的組來查找文件。
-mtime -n +n 按照文件的更改時(shí)間來查找文件,-n表示文件更改時(shí)間距現(xiàn)在n天以內(nèi),+n表示文件更改時(shí)間距現(xiàn)在n天以前。find命令還有-atime和-ctime 選項(xiàng),但它們都和-m time選項(xiàng)。
-nogroup 查找無有效所屬組的文件,即該文件所屬的組在/etc/groups中不存在。
-nouser 查找無有效屬主的文件,即該文件的屬主在/etc/passwd中不存在。
-newer file1 ! file2 查找更改時(shí)間比文件file1新但比文件file2舊的文件。
-type 查找某一類型的文件,諸如:
b - 塊設(shè)備文件。
d - 目錄。
c - 字符設(shè)備文件。
p - 管道文件。
l - 符號(hào)鏈接文件。
f - 普通文件。
-size n:[c] 查找文件長(zhǎng)度為n塊的文件,帶有c時(shí)表示文件長(zhǎng)度以字節(jié)計(jì)。
-depth 在查找文件時(shí),首先查找當(dāng)前目錄中的文件,然后再在其子目錄中查找。
-fstype 查找位于某一類型文件系統(tǒng)中的文件,這些文件系統(tǒng)類型通??梢栽谂渲梦募?etc/fstab中找到,該配置文件中包含了本系統(tǒng)中有關(guān)文件系統(tǒng)的信息。
-mount 在查找文件時(shí)不跨越文件系統(tǒng)mount點(diǎn)。
-follow 如果find命令遇到符號(hào)鏈接文件,就跟蹤至鏈接所指向的文件。
另外,下面三個(gè)的區(qū)別:
-amin n 查找系統(tǒng)中最后N分鐘訪問的文件
-atime n 查找系統(tǒng)中最后n24小時(shí)訪問的文件
-cmin n 查找系統(tǒng)中最后N分鐘被改變文件狀態(tài)的文件
-ctime n 查找系統(tǒng)中最后n
24小時(shí)被改變文件狀態(tài)的文件
-mmin n 查找系統(tǒng)中最后N分鐘被改變文件數(shù)據(jù)的文件
-mtime n 查找系統(tǒng)中最后n*24小時(shí)被改變文件數(shù)據(jù)的文件
4、使用exec或ok來執(zhí)行shell命令
使用find時(shí),只要把想要的操作寫在一個(gè)文件里,就可以用exec來配合find查找,很方便 在有些操作系統(tǒng)中只允許-exec選項(xiàng)執(zhí)行諸如ls或ls -l這樣的命令。大多數(shù)用戶使用這一選項(xiàng)是為了查找舊文件并刪除它們。建議在真正執(zhí)行rm命令刪除文件之前,最好先用ls命令看一下,確認(rèn)它們是所要?jiǎng)h除的文件。
exec選項(xiàng)后面跟隨著所要執(zhí)行的命令或腳本,然后是一對(duì)兒{},一個(gè)空格和一個(gè)\,最后是一個(gè)分號(hào)。為了使用exec選項(xiàng),必須要同時(shí)使用print選項(xiàng)。如果驗(yàn)證一下find命令,會(huì)發(fā)現(xiàn)該命令只輸出從當(dāng)前路徑起的相對(duì)路徑及文件名。
例如:為了用ls -l命令列出所匹配到的文件,可以把ls -l命令放在find命令的-exec選項(xiàng)中

find . -type f -exec ls -l {} ;

上面的例子中,find命令匹配到了當(dāng)前目錄下的所有普通文件,并在-exec選項(xiàng)中使用ls -l命令將它們列出。
在/logs目錄中查找更改時(shí)間在5日以前的文件并刪除它們:
find logs -type f -mtime +5 -exec rm {} \; 記住:在shell中用任何方式刪除文件之前,應(yīng)當(dāng)先查看相應(yīng)的文件,一定要小心!當(dāng)使用諸如mv或rm命令時(shí),可以使用-exec選項(xiàng)的安全模式。它將在對(duì)每個(gè)匹配到的文件進(jìn)行操作之前提示你。 在下面的例子中, find命令在當(dāng)前目錄中查找所有文件名以.LOG結(jié)尾、更改時(shí)間在5日以上的文件,并刪除它們,只不過在刪除之前先給出提示。 find . -name ".conf" -mtime +5 -ok rm { } ;
< rm ... ./conf/httpd.conf > ? n
按y鍵刪除文件,按n鍵不刪除。
任何形式的命令都可以在-exec選項(xiàng)中使用。
在下面的例子中我們使用grep命令。find命令首先匹配所有文件名為“ passwd
”的文件,例如passwd、passwd.old、passwd.bak,然后執(zhí)行g(shù)rep命令看看在這些文件中是否存在一個(gè)itcast用戶。

find /etc -name "passwd*" -exec grep "itcast" { } ;

itcast:x:1000:1000::/home/itcast:/bin/bash
選項(xiàng)詳解
1.使用name選項(xiàng)
文件名選項(xiàng)是find命令最常用的選項(xiàng),要么單獨(dú)使用該選項(xiàng),要么和其他選項(xiàng)一起使用。
可以使用某種文件名模式來匹配文件,記住要用引號(hào)將文件名模式引起來。
不管當(dāng)前路徑是什么,如果想要在自己的根目錄HOME中查找文件名符合*.txt的文件,使用~作為 'pathname'參數(shù),波浪號(hào)~代表了你的HOME目錄。
find ~ -name "*.txt" -print 想要在當(dāng)前目錄及子目錄中查找所有的‘ *.txt’文件,可以用: find . -name ".txt" -print
想要的當(dāng)前目錄及子目錄中查找文件名以一個(gè)大寫字母開頭的文件,可以用:
find . -name "[A-Z]*" -print 想要在/etc目錄中查找文件名以host開頭的文件,可以用: find /etc -name "host
" -print
想要查找HOME目錄中的文件,可以用: find ~ -name "*" -print 或find . -print
要想讓系統(tǒng)高負(fù)荷運(yùn)行,就從根目錄開始查找所有的文件:
find / -name "*" -print 如果想在當(dāng)前目錄查找文件名以兩個(gè)小寫字母開頭,跟著是兩個(gè)數(shù)字,最后是.txt的文件,下面的命令就能夠返回例如名為ax37.txt的文件:find . -name "[a-z][a-z][0-9][0-9].txt" -print
2、用perm選項(xiàng)
按照文件權(quán)限模式用-perm選項(xiàng),按文件權(quán)限模式來查找文件的話。最好使用八進(jìn)制的權(quán)限表示法。
如在當(dāng)前目錄下查找文件權(quán)限位為755的文件,即文件屬主可以讀、寫、執(zhí)行,其他用戶可以讀、執(zhí)行的文件,可以用:
$ find . -perm 755 -print
還有一種表達(dá)方法:在八進(jìn)制數(shù)字前面要加一個(gè)橫杠-,表示都匹配,如-007就相當(dāng)于777,-006相當(dāng)于666

ls -l

find . -perm 006

find . -perm -006

-perm mode:文件許可正好符合mode
-perm +mode:文件許可部分符合mode
-perm -mode: 文件許可完全符合mode
3、忽略某個(gè)目錄
如果在查找文件時(shí)希望忽略某個(gè)目錄,因?yàn)槟阒滥莻€(gè)目錄中沒有你所要查找的文件,那么可以使用-prune選項(xiàng)來指出需要忽略的目錄。在使用-prune選項(xiàng)時(shí)要當(dāng)心,因?yàn)槿绻阃瑫r(shí)使用了-depth選項(xiàng),那么-prune選項(xiàng)就會(huì)被find命令忽略。
如果希望在/apps目錄下查找文件,但不希望在/apps/bin目錄下查找,可以用:
find /apps -path "/apps/bin" -prune -o -print 4、使用find查找文件的時(shí)候怎么避開某個(gè)文件目錄 比如要在/home/itcast目錄下查找不在dir1子目錄之內(nèi)的所有文件 find /home/itcast -path "/home/itcast/dir1" -prune -o -print 避開多個(gè)文件夾 find /home \( -path /home/itcast/f1 -o -path /home/itcast/f2 \) -prune -o -print 注意(前的\,注意(后的空格。 5、使用user和nouser選項(xiàng) 按文件屬主查找文件,如在HOME目錄中查找文件屬主為itcast的文件,可以用:
find ~ -user itcast -print 在/etc目錄下查找文件屬主為uucp的文件: find /etc -user uucp -print
為了查找屬主帳戶已經(jīng)被刪除的文件,可以使用-nouser選項(xiàng)。這樣就能夠找到那些屬主在/etc/passwd文件中沒有有效帳戶的文件。在使用-nouser選項(xiàng)時(shí),不必給出用戶名; find命令能夠?yàn)槟阃瓿上鄳?yīng)的工作。
例如,希望在/home目錄下查找所有的這類文件,可以用:
find /home -nouser -print 6、使用group和nogroup選項(xiàng) 就像user和nouser選項(xiàng)一樣,針對(duì)文件所屬于的用戶組, find命令也具有同樣的選項(xiàng),為了在/apps目錄下查找屬于itcast用戶組的文件,可以用: find /apps -group itcast -print
要查找沒有有效所屬用戶組的所有文件,可以使用nogroup選項(xiàng)。下面的find命令從文件系統(tǒng)的根目錄處查找這樣的文件
find / -nogroup -print 7、按照更改時(shí)間或訪問時(shí)間等查找文件 如果希望按照更改時(shí)間來查找文件,可以使用mtime,atime或ctime選項(xiàng)。如果系統(tǒng)突然沒有可用空間了,很有可能某一個(gè)文件的長(zhǎng)度在此期間增長(zhǎng)迅速,這時(shí)就可以用mtime選項(xiàng)來查找這樣的文件。 用減號(hào)-來限定更改時(shí)間在距今n日以內(nèi)的文件,而用加號(hào)+來限定更改時(shí)間在距今n日以前的文件。 希望在系統(tǒng)根目錄下查找更改時(shí)間在5日以內(nèi)的文件,可以用: find / -mtime -5 -print
為了在/var/adm目錄下查找更改時(shí)間在3日以前的文件,可以用:
$ find /var/adm -mtime +3 -print
8、查找比某個(gè)文件新或舊的文件
如果希望查找更改時(shí)間比某個(gè)文件新但比另一個(gè)文件舊的所有文件,可以使用-newer選項(xiàng)。它的一般形式為:
newest_file_name ! oldest_file_name

其中,!是邏輯非符號(hào)。
9、使用type選項(xiàng)
在/etc目錄下查找所有的目錄,可以用:
find /etc -type d -print 在當(dāng)前目錄下查找除目錄以外的所有類型的文件,可以用: find . ! -type d -print
在/etc目錄下查找所有的符號(hào)鏈接文件,可以用
find /etc -type l -print 10、使用size選項(xiàng) 可以按照文件長(zhǎng)度來查找文件,這里所指的文件長(zhǎng)度既可以用塊(block)來計(jì)量,也可以用字節(jié)來計(jì)量。以字節(jié)計(jì)量文件長(zhǎng)度的表達(dá)形式為N c;以塊計(jì)量文件長(zhǎng)度只用數(shù)字表示即可。 在按照文件長(zhǎng)度查找文件時(shí),一般使用這種以字節(jié)表示的文件長(zhǎng)度,在查看文件系統(tǒng)的大小,因?yàn)檫@時(shí)使用塊來計(jì)量更容易轉(zhuǎn)換。 在當(dāng)前目錄下查找文件長(zhǎng)度大于1 M字節(jié)的文件: find . -size +1000000c -print
在/home/apache目錄下查找文件長(zhǎng)度恰好為100字節(jié)的文件:
find /home/apache -size 100c -print 在當(dāng)前目錄下查找長(zhǎng)度超過10塊的文件(一塊等于512字節(jié)): find . -size +10 -print
11、使用depth選項(xiàng)
在使用find命令時(shí),可能希望先匹配所有的文件,再在子目錄中查找。使用depth選項(xiàng)就可以使find命令這樣做。這樣做的一個(gè)原因就是,當(dāng)在使用find命令向磁帶上備份文件系統(tǒng)時(shí),希望首先備份所有的文件,其次再備份子目錄中的文件。
在下面的例子中, find命令從文件系統(tǒng)的根目錄開始,查找一個(gè)名為CON.FILE的文件。
它將首先匹配所有的文件然后再進(jìn)入子目錄中查找。
find / -name "CON.FILE" -depth -print 12、使用mount選項(xiàng) 在當(dāng)前的文件系統(tǒng)中查找文件(不進(jìn)入其他文件系統(tǒng)),可以使用find命令的mount選項(xiàng)。 從當(dāng)前目錄開始查找位于本文件系統(tǒng)中文件名以XC結(jié)尾的文件: find . -name "*.XC" -mount -print
練習(xí):請(qǐng)找出你10天內(nèi)所訪問或修改過的.c和.cpp文件。
find命令的例子;
1、查找當(dāng)前用戶主目錄下的所有文件:
下面兩種方法都可以使用
findHOME -print
find ~ -print 2、讓當(dāng)前目錄中文件屬主具有讀、寫權(quán)限,并且文件所屬組的用戶和其他用戶具有讀權(quán)限的文件; find . -type f -perm 644 -exec ls -l { } ;
3、為了查找系統(tǒng)中所有文件長(zhǎng)度為0的普通文件,并列出它們的完整路徑;
find / -type f -size 0 -exec ls -l { } \; 4、查找/var/logs目錄中更改時(shí)間在7日以前的普通文件,并在刪除之前詢問它們; find /var/logs -type f -mtime +7 -ok rm { } ;
5、為了查找系統(tǒng)中所有屬于root組的文件;
find . -group root -exec ls -l { } \; 6、find命令將刪除當(dāng)目錄中訪問時(shí)間在7日以來、含有數(shù)字后綴的admin.log文件。 該命令只檢查三位數(shù)字,所以相應(yīng)文件的后綴不要超過999。先建幾個(gè)admin.log*的文件 ,才能使用下面這個(gè)命令 find . -name "admin.log[0-9][0-9][0-9]" -atime -7 -ok rm { } ;
7、為了查找當(dāng)前文件系統(tǒng)中的所有目錄并排序;
$ find . -type d | sort
三、xargs
xargs - build and execute command lines from standard input
在使用find命令的-exec選項(xiàng)處理匹配到的文件時(shí), find命令將所有匹配到的文件一起傳遞給exec執(zhí)行。但有些系統(tǒng)對(duì)能夠傳遞給exec的命令長(zhǎng)度有限制,這樣在find命令運(yùn)行幾分鐘之后,就會(huì)出現(xiàn) 溢出錯(cuò)誤。錯(cuò)誤信息通常是“參數(shù)列太長(zhǎng)”或“參數(shù)列溢出”。這就是xargs命令的用處所在,特別是與find命令一起使用。
find命令把匹配到的文件傳遞給xargs命令,而xargs命令每次只獲取一部分文件而不是全部,不像-exec選項(xiàng)那樣。這樣它可以先處理最先獲取的一部分文件,然后是下一批,并如此繼續(xù)下去。
在有些系統(tǒng)中,使用-exec選項(xiàng)會(huì)為處理每一個(gè)匹配到的文件而發(fā)起一個(gè)相應(yīng)的進(jìn)程,并非將匹配到的文件全部作為參數(shù)一次執(zhí)行;這樣在有些情況下就會(huì)出現(xiàn)進(jìn)程過多,系統(tǒng)性能下降的問題,因而效率不高;
而使用xargs命令則只有一個(gè)進(jìn)程。另外,在使用xargs命令時(shí),究竟是一次獲取所有的參數(shù),還是分批取得參數(shù),以及每一次獲取參數(shù)的數(shù)目都會(huì)根據(jù)該命令的選項(xiàng)及系統(tǒng)內(nèi)核中相應(yīng)的可調(diào)參數(shù)來確定。
來看看xargs命令是如何同find命令一起使用的,并給出一些例子。
下面的例子查找系統(tǒng)中的每一個(gè)普通文件,然后使用xargs命令來測(cè)試它們分別屬于哪類文 件

find . -type f -print | xargs file

在當(dāng)前目錄下查找所有用戶具有讀、寫和執(zhí)行權(quán)限的文件,并收回相應(yīng)的寫權(quán)限:

ls -l

find . -perm -7 -print | xargs chmod o-w

ls -l

用grep命令在所有的普通文件中搜索hello這個(gè)詞:

find . -type f -print | xargs grep "hello"

用grep命令在當(dāng)前目錄下的所有普通文件中搜索hello這個(gè)詞:

find . -name * -type f -print | xargs grep "hello"

注意,在上面的例子中, \用來取消find命令中的*在shell中的特殊含義。
find命令配合使用exec和xargs可以使用戶對(duì)所匹配到的文件執(zhí)行幾乎所有的命令。
4.10 磁盤分區(qū)掛載命令
df -h 查看磁盤使用/剩余空間
fdisk -l 磁盤分區(qū)
mount 掛載
umount 卸載
4.11進(jìn)程管理命令
UID 用戶ID
PID 進(jìn)程ID
ps aux | grep xxx 查看系統(tǒng)中所有進(jìn)程
ps -ef | grep xxx 可以查看子父進(jìn)程之間的關(guān)系
kill -9 PID 強(qiáng)制殺死進(jìn)程
top 查看所有進(jìn)程/cpu/內(nèi)存/負(fù)載
netstat -anp |grep 進(jìn)程號(hào) 查看該進(jìn)程網(wǎng)絡(luò)信息
netstat -nlp | grep 端口號(hào) 查看網(wǎng)絡(luò)端口號(hào)占用情況

4.12 crond 系統(tǒng)定時(shí)任務(wù)
Crontab -e 編輯定時(shí)文件
詳情見網(wǎng)頁文檔:
https://blog.csdn.net/qq_22172133/article/details/81263736

實(shí)例操作:

4.13 rpm包管理與yum源
1.rpm相關(guān)命令:
rpm -qa|grep 包名 查找已經(jīng)安裝的rpm某包
rpm -ivh 包名 安裝rpm包
rpm -e 包名 刪除rpm包
rpm -e --nodeps 軟件包 刪除rpm包不檢查依賴
2.yum源管理:詳情見鏈接文檔
https://blog.csdn.net/qingfenggege/article/details/80394564
3.yum在線安裝lrzsz上傳下載工具
yum -y install lrzsz
4.14 SSH免密
1.ssh是什么?
SSH(SecureShell),是建立在應(yīng)用層基礎(chǔ)上的安全協(xié)議,其SSH客戶端適用于多種平臺(tái),可以有效防止遠(yuǎn)程管理過程中的信息泄露問題。
2.配置hadoop用戶ssh免密:
ssh-keygen -t rsa
三臺(tái)機(jī)器在hadoop用戶下,執(zhí)行以下命令將公鑰拷貝到node01服務(wù)器上面去
ssh-copy-id node01
node01在hadoop用戶下,執(zhí)行以下命令,將authorized_keys拷貝到node02與node03服務(wù)器
cd /home/hadoop/.ssh/
scp authorized_keys node02:PWD scp authorized_keys node03:PWD
4.15 nohup
nohup 是 no hang up 的縮寫,就是不掛斷的意思。
nohup命令:如果你正在運(yùn)行一個(gè)進(jìn)程,而且你覺得在退出帳戶時(shí)該進(jìn)程還不會(huì)結(jié)束,那么可以使用nohup命令。該命令可以在你退出帳戶/關(guān)閉終端之后繼續(xù)運(yùn)行相應(yīng)的進(jìn)程。
在缺省情況下該作業(yè)的所有輸出都被重定向到一個(gè)名為nohup.out的文件中。
常規(guī)用法:
nohup command > myout.file 2>&1 &
說明:2>&1是將標(biāo)準(zhǔn)錯(cuò)誤(2)重定向到標(biāo)準(zhǔn)輸出(&1),標(biāo)準(zhǔn)輸出(&1)再被重定向輸入到myout.file文件中。

4.16關(guān)閉防火墻
systemctl stop firewalld.service 關(guān)閉防火墻
systemctl status firewalld.service 查看防火墻狀態(tài)
systemctl disable firewalld.service 禁止開啟啟動(dòng)防火墻

第五章: linux三劍客grep,awk,sed

1.grep 更適合單純的查找或匹配文本

2. sed 更適合編輯文本

3. awk 更適合格式化文本,對(duì)文本進(jìn)行較復(fù)雜格式處理

5.1 grep
1.作用
Linux系統(tǒng)中g(shù)rep命令是一種強(qiáng)大的文本搜索工具,它能使用正則表達(dá)式搜索文本,并把匹 配的行打印出來。grep全稱是Global Regular Expression Print,表示全局正則表達(dá)式版本,它的使用權(quán)限是所有用戶。
grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的擴(kuò)展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它們把所有的字母都看作單詞,也就是說,正則表達(dá)式中的元字符表示回其自身的字面意義,不再特殊。linux使用GNU版本的grep。它功能更強(qiáng),可以通過-G、-E、-F命令行選項(xiàng)來使用egrep和fgrep的功能。
2.格式
grep [options]
3.主要參數(shù)
grep --help

[options]主要參數(shù):
-c:只輸出匹配行的計(jì)數(shù)。
-i:不區(qū)分大小寫。
-h:查詢多文件時(shí)不顯示文件名。
-l:查詢多文件時(shí)只輸出包含匹配字符的文件名。
-n:顯示匹配行及 行號(hào)。
-s:不顯示不存在或無匹配文本的錯(cuò)誤信息。
-v:顯示不包含匹配文本的所有行。
--color=auto :可以將找到的關(guān)鍵詞部分加上顏色的顯示。
pattern正則表達(dá)式主要參數(shù):
\: 忽略正則表達(dá)式中特殊字符的原有含義。
^:匹配正則表達(dá)式的開始行。
: 匹配正則表達(dá)式的結(jié)束行。 \<:從匹配正則表達(dá) 式的行開始。 \>:到匹配正則表達(dá)式的行結(jié)束。 [ ]:?jiǎn)蝹€(gè)字符,如[A]即A符合要求 。 [ - ]:范圍,如[A-Z],即A、B、C一直到Z都符合要求 。 .:所有的單個(gè)字符。 *:有字符,長(zhǎng)度可以為0。 4.grep命令使用簡(jiǎn)單實(shí)例 grep ‘test’ d*
顯示所有以d開頭的文件中包含 test的行。

$ grep ‘test’ aa bb cc
顯示在aa,bb,cc文件中匹配test的行。

$ grep ‘[a-z]{5}’ aa
顯示所有包含每個(gè)字符串至少有5個(gè)連續(xù)小寫字符的字符串的行。

grep ‘w\(es\)t.*\1′ aa 如果west被匹配,則es就被存儲(chǔ)到內(nèi)存中,并標(biāo)記為1,然后搜索任意個(gè)字符(.*),這些字符后面緊跟著 另外一個(gè)es(\1),找到就顯示該行。如果用egrep或grep -E,就不用”\”號(hào)進(jìn)行轉(zhuǎn)義,直接寫成’w(es)t.*\1′就可以了。 5.grep命令使用復(fù)雜實(shí)例 明確要求搜索子目錄: grep -r 或忽略子目錄: grep -d skip 如果有很多輸出時(shí),您可以通過管道將其轉(zhuǎn)到’less’上閱讀: grep magic /usr/src/Linux/Documentation/* | less
這樣,您就可以更方便地閱讀。
有一點(diǎn)要注意,您必需提供一個(gè)文件過濾方式(搜索全部文件的話用 *)。如果您忘了,’grep’會(huì)一直等著,直到該程序被中斷。如果您遇到了這樣的情況,按 ,然后再試。
下面還有一些有意思的命令行參數(shù):
grep -i pattern files :不區(qū)分大小寫地搜索。默認(rèn)情況區(qū)分大小寫,
grep -l pattern files :只列出匹配的文件名,
grep -L pattern files :列出不匹配的文件名,
grep -w pattern files :只匹配整個(gè)單詞,而不是字符串的一部分(如匹配’magic’,而不是’magical’),
grep -C number pattern files :匹配的上下文分別顯示[number]行,
grep pattern1 | pattern2 files :顯示匹配 pattern1 或 pattern2 的行,
例如:grep "abc|xyz" testfile 表示過濾包含abc或xyz的行
grep pattern1 files | grep pattern2 :顯示既匹配 pattern1 又匹配 pattern2 的行。

grep -n pattern files 即可顯示行號(hào)信息

grep -c pattern files 即可查找總行數(shù)
這里還有些用于搜索的特殊符號(hào):
< 和 > 分別標(biāo)注單詞的開始與結(jié)尾。
例如:
grep man * 會(huì)匹配 ‘Batman’、’manic’、’man’等,
grep ‘<man’ * 匹配’manic’和’man’,但不是’Batman’,
grep ‘<man>’ 只匹配’man’,而不是’Batman’或’manic’等其他的字符串。
‘^’:指匹配的字符串在行首,
‘$’:指匹配的字符串在行尾,

5.2 sed
Linux sed 命令是利用腳本來處理文本文件。
sed 可依照腳本的指令來處理、編輯文本文件。
Sed 主要用來自動(dòng)編輯一個(gè)或多個(gè)文件、簡(jiǎn)化對(duì)文件的反復(fù)操作、編寫轉(zhuǎn)換程序等。
參數(shù)說明:
-e<script>或--expression=<script> 以選項(xiàng)中指定的script來處理輸入的文本文件。
-f<script文件>或--file=<script文件> 以選項(xiàng)中指定的script文件來處理輸入的文本文件。
-h或--help 顯示幫助。
-n或--quiet或--silent 僅顯示script處理后的結(jié)果。
-V或--version 顯示版本信息。
動(dòng)作說明:
a :新增, a 的后面可以接字串,而這些字串會(huì)在新的一行出現(xiàn)(目前的下一行)~
c :取代, c 的后面可以接字串,這些字串可以取代 n1,n2 之間的行!
d :刪除,因?yàn)槭莿h除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而這些字串會(huì)在新的一行出現(xiàn)(目前的上一行);
p :打印,亦即將某個(gè)選擇的數(shù)據(jù)印出。通常 p 會(huì)與參數(shù) sed -n 一起運(yùn)行~
s :取代,可以直接進(jìn)行取代的工作哩!通常這個(gè) s 的動(dòng)作可以搭配正規(guī)表示法!例如 1,20s/old/new/g 就是啦!
實(shí)例
注意:sed -e是修改輸出終端,sed -i才是在源文件修改!??!
實(shí)操案例:

1.sed -e 與sed -i

在testfile文件的第四行后添加一行,并將結(jié)果輸出到標(biāo)準(zhǔn)輸出,在命令行提示符下輸入如下命令:
sed -e 4a\newLine testfile
首先查看testfile中的內(nèi)容如下: cat testfile #查看testfile 中的內(nèi)容
自己vim testfile文件將下列內(nèi)容輸入做測(cè)試用。
HELLO LINUX! Linux is a free unix-type opterating system.
This is a linux testfile!
Linux test
Are you ok

You is pig
使用sed命令后,輸出結(jié)果如下:
sed -e 4a\newline testfile #使用sed 在第四行后添加新字符串
那如果是要在第二行前:
nl /etc/passwd | sed '2i drink tea'
將第2-5行的內(nèi)容取代成為No 2-5 number:
nl /etc/passwd | sed '2,5c No 2-5 number'

2. sed -s 替換

把is 換成are:
sed 's/is/are/g' testfile

3.sed -d 刪除

刪除頭三行: sed '1,3d' testfile刪除包含pig的行:
sed '%pig%d' testfile
刪除所有空白行 sed '/^/d' testfile

sed -n

顯示5-10行:
sed -n '5,10p' testfile

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容