Linux命令【第一篇】

?

1、創建一個目錄/data

記憶方法:英文make directorys縮寫后就是mkdir。

命令:

  1. mkdir /data
  2. cd /;mkdir data
  3. #提示:使用分號可以在一行內分割兩個命令。

實踐過程:

  1. 方法一:
  2. [root@oldboy66 ~]# mkdir /data
  3. #查看data目錄是否創建成功,ls是list列表的意思,-ld是ls的常用參數,是長格式查看目錄屬性,l表示長格式,d表示目錄
  4. [root@oldboy66 ~]# ls -ld /data
  5. drwxr-xr-x. 2 root root 4096 Nov 30 13:40 /data
  6. 方法二:
  7. #刪除方法一創建的目錄
  8. [root@oldboy66 ~]# rm -r /data
  9. #輸入y表示確認刪除,y是yes的縮寫
  10. rm: remove directory `/data'? y
  11. #進入根目錄/下
  12. [root@oldboy66 ~]# cd /
  13. #創建data目錄,不帶斜線/,因為已經進入了
  14. [root@oldboy66 /]# mkdir data
  15. #查看data目錄本身
  16. [root@oldboy66 /]# ls -ld data
  17. drwxr-xr-x. 2 root root 4096 Nov 30 13:44 data

總結:

cd后跟相對路徑或者絕對路徑,表示進入目錄,如果不跟任何東西,會進入當前用戶的家目錄。

相對路徑概念:不從/開始,而是從當前目錄開始,例如:data/,mnt/oldboy。

絕對路徑概念:從/開始的目錄,就叫絕對路徑,例如:/data/,/mnt/oldboy。

cd命令記憶方法:change directory。

mkdir [-mp] [目錄名稱] ?建立目錄

????-m:這個參數用來指定要創建目錄的權限,但是很少用,都會用chmod來處理。

????如:mkdir –m 777 /tmp/test,即建立一個權限為777的目錄。

????-p:這個參數用來遞歸創建目錄,mkdir的常用參數。

2、在/data下面建立一個文件oldboy.txt

命令:

  1. touch /data/oldboy.txt
  2. cd /data;touch oldboy.txt
  3. #創建文件也可以用echo等,只不過touch是專業的,也可用間接創建文件的命令,如vi,cat等。
  4. 例如:
  5. echo > /data/oldboy.txt
  6. > /data/oldboy.txt

實踐過程:

  1. 方法一:
  2. #在/data目錄下創建oldboy.txt
  3. [root@oldboy66 data]# touch /data/oldboy.txt
  4. #查看創建的oldboy.txt
  5. [root@oldboy66 data]# ls -l /data/oldboy.txt
  6. -rw-r--r--. 1 root root 0 Nov 30 14:04 /data/oldboy.txt
  7. 方法二:
  8. [root@oldboy66 /]# cd /data
  9. #如果同名文件存在,不會提示也不好覆蓋,會更新文件的時間戳
  10. [root@oldboy66 data]# touch oldboy.txt

總結:

touch"摸"。touch [文件名] 就是"摸"一下文件,如果文件不存在,就建立新文件,如果存在,就改變文件的訪問時間atime等時間戳信息。

路徑分隔區別:

windows的目錄分隔D:\PIC\oldboy。

linux的目錄分隔/data/。

3、為oldboy.txt增加內容為"I am studying linux"。

方法一:常規編輯方法

執行vi oldboy.txt進入vi編輯器(默認命令模式),點擊a或i進入編輯模式,敲入內容I am studying linux,然后按鍵盤上的esc鍵退出編輯模式(進入到命令模式),最后敲:wq保存并退出。wq解釋write quit。

此方法說明:

vi就是類似記事本一樣的linux下的常用編輯器,如果想功能更豐富可以用vim代替vi,vi/vim的內部有很多的命令技術點,例如i就是insert,進入插入編輯模式的狀態的意思,esc鍵是切換到命令模式,命令模式下可以敲冒號":"在后面才可以接命令參數,例如wq,w是write,q是quit。

vi 編輯器,相當于記事本,有編輯功能,但是較弱。

vim 復制編輯器,相當于emeditor,editplus,notepad++。

快捷鍵:TAB 命令、路徑補全。

方法二:單行或多行文本插入常用命令,內容都是存放到文件的尾部。

  1. echo "I am studying linux" >>/data/oldboy.txt

實踐過程:

  1. #特殊的編輯方法,通過echo命令使用單引號把引號的內容通過>>追加到/data/oldboy.txt,注意:是追加不是覆蓋
  2. [root@oldboy66 data]# echo "I am studying linux" >>/data/oldboy.txt
  3. #檢查追加的結果
  4. [root@oldboy66 data]# cat oldboy.txt
  5. I am studying linux

此法說明:

echo是一個打印輸出內容的一個常用命令,配合">或>>"可以為文件覆蓋及追加內容。">"意思為重定向,會清除文件里所有以前數據,">>"為內容追加,只在文件尾部追加需要的內容,還有一個較復雜不常用的類似命令printf。

特殊字符命令:

>重定向,會清除文件里所有以前的數據,增加

>>追加重定向,

方法三:寫腳本常用,追加多行,內容都放在文件的尾部。

  1. cat >>/data/oldboy.txt<<EOF
  2. I am studying linux
  3. EOF
  4. #注意:結尾的EOF要頂格寫,EOF也可以用別的字符替代,只要是一對就好。

方法二、方法三為命令行或腳本中常使用的辦法,都很重要。

方法二用于單行文本,方法三可以是多行文件,文本中如果有特殊字符,如$等需要用\轉義才行。

  1. echo '
  2. 111
  3. 222
  4. 333
  5. '>>oldboy.txt

方法四:

  1. [root@oldboy66 data]# cat >>/data/oldboy.txt
  2. I am studying linux

按ctrl+d或ctrl+c組合鍵兩遍結束編輯。此方法為特殊編輯方法。

總結:

echo是一個打印輸出內容的一個常用命令,配合">"或">>"可以為文件覆蓋或追加內容。echo $PATH打印出PATH的值。

重定向:意思是將"數據傳到其他地方"。將某個命令執行后本應該出現在屏幕的數據,傳輸到其他地方,執行命令時,這個命令可能會通過文件讀入數據,經過處理之后,再將數據輸出到屏幕。

>或1> 輸出重定向:把前面輸出的東西輸入到后邊的文件中,會刪除文件原有內容。

>>或1>> 追加重定向:把前面輸出的對象追加到后邊的文件中,不會刪除文件原有內容。

<或<0 輸入重定向:輸入重定向用于改變命令的輸入,后面指定輸入內容,前面跟文件名

<<或<<0 追加輸入重定向: 后跟字符串,用來表示"輸入結束",也可以ctrl+d來結束輸入。

2> 錯誤重定向:把錯誤信息輸入到后邊的文件中,會刪除文件原有內容。

2>> 錯誤追加重定向:把錯誤信息追加到后邊的文件中,不會刪除文件原有內容。

標準輸入(stdin):代碼為0,使用<或<<,數據流向從右向左。

標準正常輸出(stdout):代碼為1,使用>或>>,數據流向從左向右。

標準錯誤輸出(stderr):代碼為2,使用2>或2>>。

箭頭的方向就是數據流的方向。

特殊寫法:

  1. echo oldboy 2>a.txt 1>b.txt
  2. #2>&1 就是把標準錯誤重定向到標準輸出
  3. echo oldboy &>log.txt
  4. #也可以用>&
  5. echo oldboy >log.txt 2>&1

4、把oldboy.txt文件拷貝到/tmp下

命令:

  1. cd /data
  2. cp oldboy.txt /tmp/
  3. 提示:加cp -a,cp,-p保持屬性

總結:

cp [-aifpru] [源文件] [目標文件]

????-a:相當于-pdr

????-d:若源文件為鏈接文件(link file),則復制鏈接文件屬性而非檔案本身。

????-f:強制,若目標檔案已經存在且無法開啟,則移除后再嘗試。

????-i:若目標文件已經存在時,在覆蓋時會先詢問。

????-p:連同檔案的屬性一起復制過去,而非使用默認屬性。

????-r:遞歸,用于復制目錄。

????-u:若目標文件存在,則目標文件比源文件舊時才復制。

提示:如果源文件是多個,那么目的文件在最后,且是目錄。

cp的重要參數apr。

5、把/data目錄移動到/root下

命令:

  1. mv /data /root/
  2. 提示:如果希望帶目錄拷貝,盡量不要mv /data/ /root/,移動目錄時,源目錄結尾不要多余斜線。

總結:

mv [-ifu] [源文件/源目錄] [目的文件/目的目錄]

????-i:如果目的文件已存在,詢問是否覆蓋

????-f:強制執行,不會詢問

????-u:若目的文件存在,則比源文件新才會移動。

提示:如果源文件是多個,那么目的文件在最后,且是目錄。

如:f1、f2是文件,/d1、/d2是目錄

mv f1 f2:如果f2不存在,則相當于f1重命名為f2;如果f2存在,則f1重命名為f2,并覆蓋f2 。

mv f1 /d1:如果/d1不存在,則把f1移動到/下,并重命名為d1;如果/d1存在,則把f1移動到/d1下。

mv /d1 /d2:如果/d2不存在,則把/d1重命名為/d2;如果/d2存在,則把/d1移動到/d2下。

mv /d2 f1:如果f1不存在,則把/d2移動到當前目錄,并重命名為f1;如果f1存在,會提示f1是個文件,不能用目錄覆蓋。

6、進入root目錄下的data目錄,刪除oldboy.txt

命令:

  1. cd /root/data/
  2. rm oldboy.txt

刪除一個文件一般用rm oldboy.txt,此法會提示你確認。用rm –f oldboy.txt方法不會提示確認直接刪除,比較危險。

對于文件的刪除禁止用"rm –fr 文件名",這是殺雞用牛刀的做法,必須禁止掉,最多用"rm –f 文件名"。rm –fr 一般用來強制刪除目錄不提示,非常危險。

建議:

使用mv替代rm,也就是把文件移動到/tmp下,然后等/tmp分區將要滿時一次性刪除,減少犯錯。

find刪除

  1. [root@oldboy66 data]# find /root/data/ -type f -exec rm -f {} \;

在腳本中刪除文件或目錄時生產環境的使用方法一般為:

1、和xargs搭配用法

  1. #刪除15天以前的文件
  2. find . -type f -name "*.log" -mtime +15 |xargs rm -f
  3. #刪除目錄30天 慎用
  4. find . -type f -name "*.log" -mtime +30 |xargs rm -fr

2、使用find的-exec

  1. #在/logs目錄中查找更改時間在5日以前的文件并刪除它們
  2. find /logs -type f -mtime "*.log" -mtime +5 -exec rm {} \;

find命令的原理:

\ :特殊字符,讓一個有特殊意義的字符,脫掉馬甲。

.. :上級目錄

. :當前目錄

\. :代表.號

| :管道(把前一個命令結果的輸出交給后一個程序進行繼續處理)

-type :按文件類型查找

-name :按名字查找,查找的內容最好用雙引號括起來。

! :取反。

刪除目錄下除了oldboy.txt外的所有文件:

  1. [root@oldboy66 data]# find /root/data -type f ! -name "oldboy.txt" |xargs rm -f
  2. [root@oldboy66 data]# find /root/data/ -type f ! -name "oldboy.txt" -exec rm {} \;

linux面試題:刪除一個目錄下所有文件,但保留一個指定文件。

? ?

? ?

7、退出到上級目錄,刪除data目錄。

命令:

  1. cd ..或cd ../
  2. rm -r data或rmdir data
  3. #里面是空目錄不需要用-rf。

總結:

.. :相對路徑,表示當前目錄的上一級目錄,例如:/mnt/oldboy,mnt就是oldboy的上級目錄。

. :相對路徑,表示當前目錄,即當前命令行的目錄。

rm [-irf] [文件/目錄] ?刪除文件/目錄

????-i:詢問用戶是否正確刪除,用y或n來回答。

????-r:刪除目錄時加該選項,刪除目錄及目錄下的文件和目錄。

????-f:強制刪除,不用確認。

rmdir [-p] [目錄名] ?用來刪除空目錄,-p表示遞歸刪除目錄,目錄里不能有文件或者目錄

如:/a/b/c

rmdir /a/b/c :會刪除/a/b/c,而/a/b還在。

rmdir –p /a/b/c :會刪除/a,/a/b,/a/b/c。

但是rmdir /a,rmdir –p /a/b都會出錯,提示:Directory not empty。

8、限定輸出

已知文件test.txt內容為:

test

liyao

oldboy

請給出打印test.txt內容時,不包含oldboy字符串的目錄。

方法一:

head:頭部,取文件的前N行,默認前10行,取出前三行-3 。

  1. [root@oldboy66 ~]# head -2 test.txt

方法二:

grep:過濾器,把想要的或者不想要的分離開,-v排除。

  1. [root@oldboy66 ~]# grep -v "oldboy" test.txt

提示:也可以使用cat test.txt|grep –v "oldboy",這個命令雖然能實現,但是執行效率差很多。

方法三:

sed:刪除,d表示delete刪除,p表示print打印,-n取消sed的默認輸出,-i改變文件內容。

????sed –n '/過濾的內容/處理的命令' 文件

  1. [root@oldboy66 ~]# sed -e '/oldboy/d' test.txt
  2. [root@oldboy66 ~]# sed /oldboy/d test.txt
  3. [root@oldboy66 ~]# sed -e /^oldboy/d test.txt
  4. [root@oldboy66 ~]# sed -n /[^oldboy]/p test.txt

? ?

方法四:

awk:

  1. [root@oldboy66 ~]# awk /[^oldboy]/ test.txt

9、用一條命令完成創建目錄/oldboy/test,即創建/oldboy目錄和/oldboy/test目錄

命令:

  1. mkdir -p /oldboy/test

實踐過程:

  1. #遞歸創建目錄,一般第一級目錄不存在時用-p,否則報錯mkdir: cannot create directory `/oldboy/test': No such file or directory
  2. [root@oldboy66 /]# mkdir -p /oldboy/test

安裝系統補裝工具命令:

yum安裝或者rpm安裝、源代碼安裝

更新補丁執行(生產環境盡量不做,除非有已知的安全漏洞):

yum update

安裝tree:

  1. [root@oldbo [root@oldboy66 /]# yum install tree -y
  2. #查詢tree
  3. [root@oldboy66 /]# rpm -qa tree
  4. tree-1.5.3-3.el6.x86_64
  5. [root@oldboy66 /]# tree oldboy/
  6. oldboy/
  7. └── test
  8. 1 directory, 0 files

tree:顯示目錄樹結構

yum:linux里的包管理器,yum可以幫助解決依賴問題。

例如:yum install tree -y,作用下載tree包,然后調用rpm命令安裝tree包,如果需要依賴包,會自動下載并提前安裝。

rpm: -ivh(安裝顯示輸出)

rpm –ivh 包名.rpm(提前下載好),rpm安裝的最大問題是無法解決依賴問題。

10、已知/tmp目錄下存在test.txt文件,如何執行命令才能把/mnt/test.txt拷貝到/tmp下覆蓋掉/tmp/test.txt,而linux系統不提示是否覆蓋(root權限下)。

命令:

方法一:

/bin/cp /mnt/test.txt /tmp/test.txt

方法二:

\cp /mnt/test.txt /tmp/test.txt

提示:此題就是屏蔽掉系統默認的對應命令別名,默認執行cp的操作是調用了別名的,所以提示覆蓋。

cp命令默認是不會提示overwrite,但是cp的-i選項會提示,而一般Linux的用戶環境文件~/.bashrc中會把cp命名成alias cp='cp -i'。這樣在Linux下輸入cp命令實際上運行的是cp –i,加上一個"\"符號或者寫cp全路徑/bin/cp就是讓此次的cp命令不使用別名(cp -i)運行。

別名概念:

輸入alias查找當前別名。

  1. [root@oldboy66 /]# alias
  2. alias cp='cp -i'
  3. alias l.='ls -d .* --color=auto'
  4. alias ll='ls -l --color=auto'
  5. alias ls='ls --color=auto'
  6. alias mv='mv -i'
  7. alias rm='rm -i'
  8. alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

取消別名設置:unalias(臨時生效,重啟失效)

  1. [root@oldboy66 /]# unalias cp
  2. [root@oldboy66 /]# alias
  3. alias l.='ls -d .* --color=auto'
  4. alias ll='ls -l --color=auto'
  5. alias ls='ls --color=auto'
  6. alias mv='mv -i'
  7. alias rm='rm -i'
  8. alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

添加別名設置:

  1. [root@oldboy66 /]# alias cp='cp -i'
  2. [root@oldboy66 /]# alias
  3. alias cp='cp -i'
  4. alias l.='ls -d .* --color=auto'
  5. alias ll='ls -l --color=auto'
  6. alias ls='ls --color=auto'
  7. alias mv='mv -i'
  8. alias rm='rm -i'
  9. alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

自定義別名oldboy:

  1. #設置oldboy為別名,執行echo I am oldboy linux
  2. [root@oldboy66 /]# alias oldboy="echo I am oldboy linux"
  3. #查看oldboy別名
  4. [root@oldboy66 /]# alias|grep oldboy
  5. alias oldboy='echo I am oldboy linux'
  6. [root@oldboy66 /]# oldboy
  7. I am oldboy linux
  8. #取消oldboy別名
  9. [root@oldboy66 /]# unalias oldboy
  10. [root@oldboy66 /]# alias|grep oldboy

自定義rm:

  1. [root@oldboy66 /]# alias rm='echo "rm can not be used,pls use mv"'
  2. [root@oldboy66 /]# alias|grep rm
  3. alias rm='echo "rm can not be used,pls use mv"'
  4. [root@oldboy66 /]# rm -fr /root/oldboy/
  5. rm can not be used,pls use mv -fr /root/oldboy/

方法三:

unalias cp

cp /mnt/test.txt /tmp/test.txt

提示:命令行處理別名僅在當時生效,重啟系統后失效。

alias:查看以及定義別名

unalias:取消別名

~:用戶的家目錄,針對root,~就代表/root。

別名的配置文件,針對root用戶/root/.bashrc;所有用戶生效,/etc/bashrc或/etc/profile定義,生效執行soure /etc/bashrc或/etc/profile。

別名的作用:

1、通過給危險命令加一別保護參數,防止人為誤操作。

2、把很多復雜的字符串或命令變成一個簡單的字符串或命令。

11、只查看ett.txt文件(100行)內第20到第30行的內容。

命令:

sequence == seq序列

  1. #打印1到3
  2. [root@oldboy66 tmp]# seq 3
  3. 1
  4. 2
  5. 3
  6. #打印1到3
  7. [root@oldboy66 tmp]# seq 1 3
  8. 1
  9. 2
  10. 3
  11. 打印2到8
  12. [root@oldboy66 tmp]# seq 2 8
  13. 2
  14. 3
  15. 4
  16. 5
  17. 6
  18. 7
  19. 8
  20. #打印1到7的奇數
  21. [root@oldboy66 tmp]# seq 1 2 7
  22. 1
  23. 3
  24. 5
  25. 7
  26. #打印0到7的偶數
  27. [root@oldboy66 tmp]# seq 0 2 7
  28. 0
  29. 2
  30. 4
  31. 6

Usage: seq [OPTION]... LAST

or: seq [OPTION]... FIRST LAST

or: seq [OPTION]... FIRST INCREMENT LAST

-s:指定序列的分割符

  1. [root@oldboy66 tmp]# seq -s "--" 5
  2. 1--2--3--4--5
  3. [root@oldboy66 tmp]# seq -s "@" 5
  4. 1@2@3@4@5

生成ett文件,seq 100 >ett.txt。

  1. [root@oldboy66 tmp]# seq 100 >ett.txt

方法一:

tail:尾巴,取出文件的最后N行,默認最后10行,取最后三行-n 3 。

????-f:跟蹤一個文件的尾部實時變化(tail –f ett.txt)。

  1. [root@oldboy66 /]# head -30 ett.txt|tail -11
  2. [root@oldboy66 /]# tail -81 ett.txt|head -11

方法二:

  1. #效率高(首選)
  2. [root@oldboy66 tmp]# sed -n '20,30p' ett.txt
  3. [root@oldboy66 tmp]# sed -n 20,30p ett.txt

取出第30行:

  1. [root@oldboy66 tmp]# sed -n '30p' ett.txt

sed命令與選項:

sed強大的功能,是由以下多種命令和選項聯合工作的結果。sed通過指定某一地址來決定對哪些行來進行處理,如果沒有指定地址,sed默認處理標準輸入所有的行。地址的形式可以是數字,正則表達式,或兩種結合。如果給出的是由逗號連接的兩個地址,則表示sed要處理的內容就是該兩個地址之間的行。

sed命令就是用來處理那些由地址指定的輸入行。

命令

功能

a\

在當前匹配行的后面添加一行或多行文本內容

c\

更改當前匹配行的文本,替換成新的文本,原文本行內容消失

d

刪除當前模式空間所有的內容

D

刪除當前模式空間內第一個\n之前的內容

i\

在當前匹配行之前插入一行或多行文本內容

h

把模式空間的內容復制到保持空間,并覆蓋當前保持空間的內容

H

把模式空間的內容追加到保持空間,原保持空間的內容依舊存在(注意兩行之間的\n)

x

交換當前模式空間和當前保持空間的內容

g

與s聯合使用時,表示對當前行全局匹配替換

g

取出當前保持空間的內容,并將其復制到模式空間,覆蓋掉原模式空間的內容

G

取出當前保持空間的內容,并將其復制到模式空間,追加到原模式空間內容的后面(注意兩行之間的\n)

p

打印匹配行

P

打印當前模式空間內容,直到第一個換行符(\n)為止

n

讀取下一行內容,并復制到模式空間,取代原模式空間的內容

N

讀取下一行內容,并復制到模式空間,追加到原模式空間內容的后面(注意兩行之間的\n)

q

第一個模式匹配完成后退出或立即退出

r

從另一個文件中讀取文本,并加入到當前匹配行后面

s

常說的查找并替換,用一個字符串替換成另一個

w

將匹配的行寫入新的文件

y

將字符轉換為另一個字符(對正則表達式不能使用y命令)

!

對所選行以外的所有行進行相應處理

=

顯示匹配內容行的行號

? ?

sed選項:

選項

功能

-e

允許多項編輯

-f

后接sed腳本的文件名

-n

取消默認輸出

-i

修改文件內容

? ?

打印:

sed –n '2p' oldboy.txt (打印第二行)

sed –n '$p' oldboy.txt (打印最后一行)

sed –n '1,3p' oldboy.txt (打印第1到3行)

sed –n '/yass/'p oldboy.txt (打印匹配yass的行)

sed –n '4,/The/'p oldboy.txt (在第四行匹配模式The,若匹配,則打印)

sed –n '/\$/'p oldboy.txt (匹配元字符$)

sed –n '1,$'p oldboy.txt (打印整個文件,只需將執行范圍設為第一行到最后一行1,$,$意義最后一行)

sed –n '/.*ing/'p oldboy.txt (任意字符,使用模式/.*ing/查詢以ing結尾的任意單次)

sed –n '/movie/=' oldboy.txt (打印匹配行的行號)

sed –n –e '/movie/p' –e '/movie/=' oldboy.txt (打印匹配行的內容和行號)

sed '=' oldboy.txt|tail -2 (顯示行數或最大行號)

方法三:

  1. [root@oldboy66 tmp]# awk '{if(NR<31 && NR>19) print $1}' ett.txt
  2. [root@oldboy66 tmp]# awk '{if(NR<31 && NR>19) printf $1"\n"}' ett.txt

awk:一門語言,過濾內容(取列)

????awk '{print $1}' 文件 ?$1第一列,$2第二列

????awk –F "分隔符" '{print $1}' 文件 ?$1第一列,$2第二列,…,$(NF-1)(倒數第二列),$NF(最后一列)

案例:awk默認分隔符空格

  1. [root@oldboy66 tmp]# cat awk.txt
  2. oldboy oldgirl
  3. ddd fff
  4. [root@oldboy66 tmp]# awk '{print $1}' awk.txt
  5. oldboy
  6. ddd
  7. [root@oldboy66 tmp]# awk '{print $2}' awk.txt
  8. oldgirl
  9. fff

-F指定分隔符:

  1. [root@oldboy66 tmp]# awk -F ":" '{print $1}' /etc/passwd

指定輸出行之間的分隔符:

  1. [root@oldboy66 tmp]# awk -F ":" '{print $1 " " $3 "==" $5}' /etc/passwd

總結:

head [-n] [文件名]:后面直接跟文件名,顯示文件前10行。-n表示顯示文件前n行。

tail [-nf] [文件名]:后面直接跟文件名,顯示文件后10行。-n表示顯示文件后n行。

方法四:

  1. [root@oldboy66 tmp]# cat ett.txt|grep 20 -A 10
  2. [root@oldboy66 tmp]# cat ett.txt|grep 30 -B 10
  3. [root@oldboy66 tmp]# cat ett.txt|grep 25 -C 5

-A:除了顯示匹配的一行之外,并顯示該行之后的num行。

-B:除了顯示匹配的一行之外,并顯示該行之前的num行。

-C:除了顯示匹配的以后之外,并顯示該行前后各num行。

12、分析圖片服務日志,把日志(每個圖片訪問次數*圖片大小的總和)排行,取top10,也就是計算每個url的總訪問大小。

說明:這個功能可以用于IDC網站流量帶寬很高,然后通過分析服務器日志哪些元素占用流量過大,進而進行優化或裁剪該圖片,壓縮js等措施。

13、把/oldboy目錄及其子目錄下所有以擴展名.sh結尾的文件中包含./hostlists.txt的字符串全部替換為./idctest_iplist。

命令:

  1. [root@oldboy66 tmp]# find ./ -name "*.sh" -type f -exec sed -i 's#./hostlists.txt#./idctest_iplist#g' {} \;

解析:

sed替換:

sed –i 's#oldboy#oldgirl#g' a.txt

????s:查找并替換,用一個字符串替換成另一個。

????g:與s聯合使用時,表示對當前行全局匹配替換。

????-i:修改文件內容。

????#:分隔符,也可以用/、@等替換。

find查找:

find / -type f –name "a.txt"

組合:

替換當前目錄下面所有文件名為test.txt中的oldboy為oldgirl。

  1. [root@oldboy66 tmp]# find ./ -name "test.txt" -type f|xargs sed -i 's#oldboy#oldgirl#g'
  2. [root@oldboy66 tmp]# find ./ -name "test.txt" -type f -exec sed -i 's#oldboy#oldgirl#g' {} \;
  3. [root@oldboy66 tmp]# sed -i 's#oldboy#oldgirl#g' `find ./ -name "test.txt" -type f`

查看:

  1. [root@oldboy66 tmp]# find ./ -name "test.txt" -type f|xargs cat
  2. [root@oldboy66 tmp]# find ./ -name "test.txt" -type f -exec cat {} \;
  3. [root@oldboy66 tmp]# cat `find ./ -name "test.txt" -type f`

特殊字符總結:

符號

作用

>

輸出重定向符,重定向內容到文件,清除已有的內容,然后加入新內容,如果文件不存在還會創建文件

>>

追加輸出重定向符,>>追加內容到文件(中間無空格)

<

輸入重定向(箭頭朝向就是數據流的方向)

<<

追加輸入重定向

|

管道,就像一個真實管道一樣,例如:水管左邊進水,右邊流出來。其他的功能,egrep "3306|1521" /etc/services

\

轉義字符,讓有意義的字符脫掉它代表的意義。例如:正則里$表示以什么結尾,用\$表示$符號本身。

~

當前用戶的家目錄

.或./

一個點號是當前目錄,其他功能,正則,任意單個字符

..或../

兩個點號是當前目錄的上級目錄

/

根目錄,即linux里所有目錄的頂點。也是路徑分隔符,而windows里則為D:\工作目錄\

;

命令分隔符

{}

生成字符或數字序列(seq),一般配合echo等命令使用,find里的{}意思是前面命令的結果,mkdir stu{1..100}

!

1、!+字母,表示調出最近一次以此字母開頭的命令;2、!!表示使用最近一次操作的命令;3、!+數字,表示調出歷史的第幾條命令。

-

用戶上一次所在的目錄。-由OLDPWD變量控制。

? ?

常用快捷鍵:

tab命令或路徑補全鍵,如果。

ctrl+c終止當前任務命令或程序。

ctrl+d退出當前用戶環境。相當于exit、logout。

ctrl+l清屏。

ctrl+shift+c(ctrl+insert)ssh客戶端SecureCRT里復制的命令。

ctrl+a:到開頭

ctrl+e:到結尾

ctrl+u:剪切光標前

ctrl+k:刪除光標后

轉載于:https://www.cnblogs.com/yinshoucheng-golden/p/6118526.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456842.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456842.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456842.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Jenkins + gitlab webhook實現自動化部署

1、先在Jenkins安裝插件Gitlab Hook Plugin 和Build Authorization Token Root Plugin&#xff1b;2.插件安裝完成后在任務里添加token3、在gitlab上添加鉤子4、點擊測試鉤子或push代碼再看Jenkins已經在構建了就說明成功了&#xff08;也可以在瀏覽器直接執行這個URL&#xff…

多繼承以及MRO順序【super().的使用】

多繼承以及MRO順序 1. 單獨調用父類的方法 # codingutf-8print("******多繼承使用類名.__init__ 發生的狀態******") class Parent(object):def __init__(self, name):print(parent的init開始被調用)self.name nameprint(parent的init結束被調用)class Son1(Paren…

人工智能專業詞匯集

最近看到一篇關于AI專業詞匯總結的文章&#xff0c;感覺不錯&#xff0c;分享一下。 對應的詞匯項目地址為&#xff1a;https://github.com/jiqizhixin/Artificial-Intelligence-Terminology 本詞匯庫目前擁有的專業詞匯共計 500 個&#xff0c;主要為機器學習基礎概念和術語…

js 當前日期增加自然月

js 在日期不滿足的情況下就會自動加1個月&#xff0c;比如在當前時間為3月31號&#xff0c;傳入1&#xff0c;1兩個參數&#xff0c;預期結果為2月29日&#xff0c;但是結果輸出了3月2日。就是如果不滿就會溢出到下個月&#xff0c;后來看了api發現了setMonth有兩個方法&#x…

好雨云幫如何對接Git Server

前言 云幫目前支持對接GitLab、Gogs、Github,或者主流代碼托管平臺的公開項目&#xff0c;后期會考慮接入其他類型的Git服務。 私有云 GitLab是一個用于倉庫管理系統的開源項目&#xff0c;私有云服務里使用比較多的自建Git服務。 對接GitLab 通過應用市場進行安裝Gitlab 安裝G…

Python 生成requirement 使用requirements.txt

python項目中必須包含一個 requirements.txt 文件&#xff0c;用于記錄所有依賴包及其精確的版本號。以便新環境部署。requirements.txt可以通過pip命令自動生成和安裝生成requirements.txt文件 pip freeze > requirements.txt安裝requirements.txt依賴 pip install -r requ…

Source Insight上手教程

目錄Project的建立和工作區域同步查看定義查找引用查找調用Source Insight常用快捷鍵 目錄 最近剛參加工作&#xff0c;第一個任務就是查看項目的源碼&#xff0c;熟悉代碼結構。于是乎就簡單學習了Source Insight。在這里就轉載別人的文章當做自己的筆記&#xff0c;便于自己…

微信禁用右上角的分享按鈕,WeixinJSBridge API以及隱藏分享的子按鈕等菜單項

今天在做隱藏微信右上角的分享按鈕 百度查到的一串代碼&#xff0c;挺好用的 <!--禁用微信分享按鈕--><script>function onBridgeReady() {WeixinJSBridge.call(hideOptionMenu);}if (typeof WeixinJSBridge "undefined") {if (document.addEventListen…

python2.7無法使用pip(安裝easy_install)

python27和python36 共存時安裝pip方法&#xff0c;解決python27文件夾下沒有script文件方法 報錯&#xff1a; D:\PYTHON2.7>python ez_setup.py Downloading http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg Traceback (most recent call…

Codeforces 754E:Dasha and cyclic table

Codeforces 754E&#xff1a;Dasha and cyclic table 題目鏈接&#xff1a;http://codeforces.com/problemset/problem/754/E 題目大意&#xff1a;$A$矩陣&#xff08;$size(A)n \times m$&#xff0c;僅含a-z&#xff09;在整個平面做周期延拓&#xff0c;問$B$矩陣&#xff…

位運算中的左移和右移的計算詳解

最近在學習javaScrapt&#xff0c;在學到位運算符這部分的時候&#xff0c;突然發現看不懂書上的例子了。經過查找資料后&#xff0c;發現了一遍不錯的文章。分享一下&#xff1a; 正數的左移和右移 以3為例 3的二進制為 00000011 右移2位的時候將最右的11去掉左邊補00結果…

AC日記——字符串P型編碼 openjudge 1.7 31

31:字符串p型編碼 總時間限制: 1000ms內存限制: 65536kB描述給定一個完全由數字字符&#xff08;0,1,2,…,9&#xff09;構成的字符串str&#xff0c;請寫出str的p型編碼串。例如&#xff1a;字符串122344111可被描述為"1個1、2個2、1個3、2個4、3個1"&#xff0c;因…

javascript中的define用法

文章目錄1. AMD的由來2. AMD是什么3. AMD實例&#xff1a;如何定義一個模塊4. 匿名模塊5. 僅有一個參數的define6. Dojo中的AMD7. 結論最近由于工作需求只能快速學習JS&#xff0c;但在看代碼的時候發現許多東西都有疑問比如說代碼剛開始的define關鍵字的用法&#xff0c;剛好最…

解決:pip警告!DEPRECATION: The default format will switch to columns in the future.

pip警告&#xff01; DEPRECATION: The default format will switch to columns in the future. You can use --format(legacy|columns) (or define a format(legacy|columns) in your pip.conf under the [list] section) to disable this warning. pip升級到9.0.1后 查看pi…

PLSQL安裝配置

&#xff08;1&#xff09;解壓&#xff1a;plsql developer Oracle數據庫開發工具首先確保有oracle數據庫或者有oracle服務器&#xff0c;然后才能使用PLSQL Developer連接數據庫。&#xff08;2&#xff09;工具---首選項---連接----輸入OCI庫&#xff08;設置之后不用再裝or…

Mysql 學習筆記2

&#xff08;1&#xff09;MySQL查看表占用空間大小 //先進去MySQL自帶管理庫&#xff1a;information_schema //自己的數據庫&#xff1a;dbwww58com_kuchecarlib //自己的表&#xff1a;t_carmodelparamvalue mysql> use information_schema; Database changed mysql&g…

python程序打包為exe可執行文件

大家都知道&#xff0c;Python是一種腳本語言&#xff0c;也就是解釋型的語言&#xff0c;需要解釋器來進行解釋以后才可以執行&#xff0c;而Python源代碼需要在Python虛擬機上面運行&#xff0c;但是我們做好的程序&#xff0c;不可能給用戶使用的時候還讓他安裝一個Python環…

Backbone簡介

1. 前言 本文的目的&#xff0c;是幫助大家快速理解掌握Backbone的使用&#xff0c;但它并不是API&#xff0c;因此我不會將每一個方法都詳細地描述&#xff0c;但是我會告訴你如何學習它們。 這是一篇稍稍較長的技術文章&#xff0c;因為我想將我所了解的東西盡可能詳細地分享…

使用Android Studio搭建Android集成開發環境

一、Android Studio簡單介紹 2013年GoogleI/O大會首次發布了Android Studio IDE&#xff08;Android平臺集成開發環境&#xff09;。它基于Intellij IDEA開發環境&#xff0c;旨在取代Eclipse和ADT&#xff08;Android開發者工具&#xff09;為開發者提供更好的開發工具。既然G…

[Oracle]UNIX與Windows 2000上Oracle的差異(I)

作者&#xff1a;Ian Adam & David Stien, SAIC Ltd 日期&#xff1a;19-Dec-2003 出處&#xff1a;http://www.dbanotes.net翻譯&#xff1a;Fenng -----------------------------------------------------------------------------------------------------------------…