12.12 &12.13 基礎命令練習一

12.12 &12.13

基礎命令練習一linux

內容:

1. mkdir  ls  pwd   cd   touch    vi/vim  echo   catshell

2. 輸出/出入重定向vim

3. EOF 起止符 往文件中寫入多行內容bash

4. xargs  -n    分組顯示運維

5. cp  rm  mvide

6. man幫助手冊學習

7./data  /data/區別網站

7. find   cdspa

8. grep  headtail  sed  awk  排除.net

9. head+tail  sed  awk  grep   顯示某幾行

10. 別名 alias   臨時  永久

11. sed 替換

第1章 建立一個目錄/data

1.1  mkdir命令     ==make  directory    建立目錄

mkdir /data

快捷鍵:tab 補全目錄或路徑

1.2 ls  -l   顯示詳細信息

[root@oldboy oldboy]# ls -l

total 5408

-rw-r--r--. 1 root root 2097152 Dec 15  2017 ;

-rw-r--r--. 1 root root 1282040 Nov 11  2017 1.log

-rw-r--r--. 1 root root      34 Dec 19  2017 ai.txt

 

1.3 絕對路徑與相對路徑的區別

絕對路徑:從根開始的路徑  如:/etc/hosts

相對路徑:不是從根開始的路徑   如:etc/hosts

 

cd    切換路徑

pwd   顯示當前工做目錄

第2章 /data下面建立文件oldboy.txt

2.1 touch   建立文件

touch  /data/oldboy.txt

第3章 oldboy.txt增長內容I am studying linux   ---3種方法)  (vi/vim   echo    cat

3.1 方法一:vi/vim

1. 打開文件

  vi  /data/oldboy.txt

2. 進入編輯模式(插入模式)

  按字母 i

3. 寫入

  I am studying  linux

4. 退出編輯模式

  Esc鍵

5. 保存並退出

 wq

6. 檢查---查看文件內容

cat /data/oldboy.txt

3.1.1 vim補充:

    i          編輯模式

    Esc        退出編輯模式,進入命令模式

    wq      保存退出

    : q!         強制退出不保存

 

 

3.2 方法二:echo    輸出到屏幕 把引號中內容顯示到屏幕上                

Vim    echo    >>     三個命令會自動建立文件

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

3.2.1 重定向(詳解)  改變命令執行時,數據輸出的方向

>>  或1>>  追加劇定向,增長到文件的結尾      (漏斗)

>   或 1>>    輸出重定向   清空內容,而後追加

>>  >  標準輸出重定向  標準追加輸出重定向   會把前面命令執行正確的內容 放 到一個文件中

 

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

2>>錯誤追加劇定向: 把前面錯誤信息追加到後邊的文件中,不會清除文件原有內容

例:

cho "lidao.blog.51cto.com" 2>>/data/error.txt

[root@oldboyedu-39 ~]# cho "lidao.blog.51cto.com" 2>>/data/error.txt

[root@oldboyedu-39 ~]# cat /data/error.txt

-bash: cho: command not found

-bash: cho: command not found

 

實例3-1  

同時把正確和錯誤的信息都記錄下來

#我想把執行對的結果放到文件中 /data/oldboy.txt

#我想把執行有錯誤的放到文件中 /data/oldboy.txt

echo lidao.blog.51cto.com 2>>/data/oldboy.txt  >>/data/oldboy.txt

echo "lidao.blog.51cto.com"  >>/data/oldboy.txt  2>&1

 ###/data/oldboy.txt 至關於日誌功能 ,兩條命令執行結果相同

3.3 方法三:cat  查看文件內容    向文件中追加多行

  cat >>/data/oldboy.txt<<EOF

I

am

Studying             向一個文件中追加多行

Linux

EOF

3.3.1 EOF 起始結束符號,遇到即中止,可任意相同記號

[root@oldboy oldboy]# cat >>mike.txt <<gao

> I

> love

> you

> gao

[root@oldboy oldboy]# cat mike.txt

I

love

you

 

3.3.2  <  0< 標準輸入重定向   告訴命令從哪裏獲取文件

<<  0<< 標準輸入追加劇定向

3.3.3 xargs    -n數字   指定顯示列數

[root@oldboy oldboy]# cat mike.txt

I

love

you

[root@oldboy oldboy]# echo "1 2 3 4 5 6 7 8 ">deny.txt

[root@oldboy oldboy]# cat deny.txt

1 2 3 4 5 6 7 8

[root@oldboy oldboy]# xargs -n2 <deny.txt

1 2                 前面的命令執行的是後面的文件

3 4

5 6                技巧:「漏斗」的輸出方向

7 8

 

第4章 oldboy.txt複製到/tmp

4.1 cp命令     複製

cp  /data/oldboy.txt  /tmp

4.2 想把整個目錄複製過去

cp  -r       遞歸複製,複製目錄及美容   一層一層複製目錄

 

  

第5章 Linux中查看幫助

5.1 man 命令     --上下鍵 空格   退出:q

圖片1.png 

5.2 網站命令學習

http://linux.51yip.com/

http://man.linuxde.net/

https://www.die.net/

 

5.3 運維習慣

操做前備份,操做後檢查

cp命令

 

 

第6章 /data目錄移動到/root

6.1 mv命令

mv  /data/   /root/

6.2 擴展:/data   和   /data/   的區別

/data    表示 /data 目錄 和目錄裏的內容

/data/   表示目錄裏的內容

 

第7章 進入/root目錄下的data目錄,刪除oldboy.txt 文件

7.1 rm命令

rm  oldboy.txt

參數:

-f   強制刪除(不提醒)      -r    遞歸刪除  

rm 參數能夠加在最後面

如:rm  /data/oldboy  -f

7.1.1 防止誤刪除

1.把危險的參數放在最後面

2.儘可能使用相對路徑刪除目錄

3.刪除命令複雜一些   find  |xargs

4.不要在/(根)下進行操做

5.給危險命令設置別名

6.把要刪除的文件先複製到/tmp

 

第8章 接第六題,退出上一級目錄,刪除data目錄

8.1 find命令的使用

8.1.1 語法:find  在×××  什麼類型   什麼名字

 例:find  /root/    -type  f     -name oldboy.txt

        查找  /root/目錄下 文件名字爲oldboy.txt

8.1.2 搭配: 1find |xargs      2*

1) find |xargs  

例: find /root/ -type f -name oldboy.txt |xargs ls -l

答案: find /root/ -type f -name oldboy.txt |xargs rm -f

注意:先查看,再刪除,避免誤操做

2* (星號) 表示全部,任意

例: find /root/ -type f -name *.txt

     查找/root/目錄下全部文件名爲。txt的文件

2cd 的用法

cd ..      進入當前目錄的上一級目錄

cd../../    進入當前目錄的上兩級目錄

cd.(點) 表示當前目錄

 

第9章 已知文件test.txt內容爲:           (五種方法)

test

lidao

oldboy

請給出輸出test.txt文件內容時不包含oldboy字符串的命令

 

9.1 方法一:grep 命令的用法    過濾

選項:  -v  排除

答案:grep -v oldboy /data/test.txt

9.2 方法二:head命令   顯示文件前幾行 默認爲爲前十行

選項: -n數字  或 -數字     顯示文件前幾行

答案:head -2 /data/test.txt

9.3 方法三:awk 命令   表示排除,取反

[root@oldboy oldboy]# awk '/oldboy/' /data/test.txt

oldboy

[root@oldboy oldboy]# awk '!/oldboy' /data/test.txt 

awk: !/oldboy

awk:   ^ unterminated regexp

[root@oldboy oldboy]# awk '!/oldboy/' /data/test.txt

test

lidao

9.4 方法四:sed命令  d 表示刪除

用法 d  表示刪除

[root@oldboy oldboy]# sed '/oldboy/d' /data/test.txt 

test

lidao

9.5 方法五:sed命令

[root@oldboy oldboy]# sed '3d' /data/test.txt

test

lidao

9.6 小結:

1. grep  過濾

2. head  tail

3. awk   sed

第10章 請用一條命令完成建立目錄/oldboy/test,即建立/oldboy目錄和/oldboy/test 目錄

10.1 mkdir命令     建立目錄

選項: -p   一次建立多級目錄

答案:mkdir  -p   /oldboy/test

第11章 已知/tmp下已存在test.txt文件。如何執行命令才能把/mnt/test.txt拷貝到/tmp下覆蓋/tmp/test.txt,而讓系統不提示覆蓋(root權限下)     直接覆蓋

11.1 建立環境

[root@oldboy-gao ~]# touch /mnt/test.txt /tmp/test.txt

11.2 方法一:  臨時取消別名   撬棍(反斜槓)

答案:\cp /mnt/test.txt /tmp/

11.3 方法二:   臨時取消別名    which   

使用命令的絕對路徑         which

which +命令   顯示命令的絕對路徑   命令的位置

[root@oldboy-gao ~]# which cp

alias cp='cp -i'

/bin/cp

答案:/bin/cp /mnt/test.txt /tmp/

 

11.4 方法三: 別名

別名    alias    顯示系統中全部別名

       alias  cp    顯示cp別名

11.4.1 alias做用

1. 給危險的命令上道保險

2. 經常使用的命令,複雜的命令簡單化

例:給rm命令設置別名command  bny

[root@oldboy-gao ~]# alias rm='echo command bny'   

等號左右沒有空格 ,右邊是命令,單引號

[root@oldboy-gao ~]# alias rm

alias rm='echo command bny'

[root@oldboy-gao ~]# rm /mnt

command bny /mnt

11.4.2 unalias  刪除別名   

11.4.3 永久設置別名

  配置文件/etc/profile

11.4.4 vim 快捷鍵

G  到達文件的最後一行

i   進入編輯模式

o   在當前行下面插入一個新行並進入編輯模式

實例11-1 [root@oldboy-gao /]# tail -2 /etc/profile

unset -f pathmun

alias cp='echo command bny'

使配置文件生效

[root@oldboy-gao /]# source /etc/profile

[root@oldboy-gao ~]# alias cp

alias cp='echo command bny'

[root@oldboy-gao /]# cp /oldboy

command bny /oldboy

[root@oldboy-gao /]#

普通用戶正常有用

xshell從新鏈接root用戶又變成alias cp=cp -i

解決:

11.4.5 修改文件:   /root/.bashrc

圖片2.png 

在三個別名前面加個#(註釋號)號,使其失效,這樣問題就解決了

小結alias   設置或顯示別名

      source  讓別名/配置生效

11.5 問題:

1. 若是配置文件裏設置一個,命令行臨時有設置一個,那個生效?

 答:若是從新鏈接  配置文件裏的生效

     不從新鏈接   命令行配置生效

11.5.1 注:xargs 不認識別名

第12章 只查看ett.txt文件(共100行)第20到第30行的內容(4種方法)

12.1 建立環境  Seq    生成行  sequence  數字序列

[root@oldboy oldboy]# seq 50 >ett.test

[root@oldboy oldboy]# tail -4 ett.test

47

48

49

50

12.2 方法一:  head -30 ett.txt | tail -11

[root@oldboy oldboy]# head -30 ett.test | tail -11

20

21

22

23

24

25

26

27

28

29

30

 

12.3 方法二:sed命令

選項: -n 取消默認輸出  默認輸出每一行的內容

p  pint  顯示

答案:sed -n 20,30p /oldboy/ett.test

  [root@oldboy oldboy]# sed -n '20,30p' ett.test 

20

21

22

23

24

25

26

27

28

29

30

12.4 方法三:awk命令

用法:NR==數字    行號

答案:awk NR==20,NR==30 ett.test

[root@oldboy oldboy]# awk 'NR==20,NR==30' ett.test 

20

21

22

23

24

25

26

27

28

29

30

 

12.5 方法四:grep (碰巧)

12.5.1 -A10   顯示當前內容及接下來的10

答案:grep -A10 20 /oldboy/ett.test

[root@oldboy oldboy]# grep -A10 "20" ett.test 

20

21

22

23

24

25

26

27

28

29

30

 

12.5.2 -B10     顯示當前內容及以前的10

答案:grep -B10 30 /oldboy/ett.test

[root@oldboy oldboy]# grep -B10 "30" ett.test 

20

21

22

23

24

25

26

27

28

29

30

12.5.3 -c35     顯當前內容及先後各5

grep -C5 35 /oldboy/ett.test

[root@oldboy oldboy]# grep -C5 "25" ett.test 

20

21

22

23

24

25

26

27

28

29

30

12.6 小結:

1. head+tail

2. sed

3. awk

4. grep

第13章 /oldboy目錄及其子目錄下全部以拓展名.sh結尾的文件中,文件包含oldboy的字符串所有替換爲oldgril

13.1 sed命令    -i 替換文件內容

用法:sed s#你要找誰#要替換成什麼#g

例:  sed s#oldboy#oldgirl#g  /oldboy/test.sh

在顯示器上顯示oldgril,不會修改文件

通常命令不能直接改變文件內容,須要加選項

防止誤操做

選項: -i   修改文件內容

例: sed -i s#oldboy#oldgirl#g  /oldboy/test.sh

     /oldboy/test.sh文件中oldboy改成oldgirl

13.2 建立環境
mkdir -p /oldboy/test
cd /oldboy
echo "oldboy">test/del.sh
echo "oldboy">test.sh
echo "oldboy">t.sh
touch oldboy.txt
touch alex.text找出你要處理的文件 
[root@oldboyedu43 oldboy]# find /oldboy/ -type f  -name "*.sh"
/oldboy/test.sh
/oldboy/test/del.sh
/oldboy/t.sh
替換一個文件 (oldboy ----> oldgirl )
[root@oldboyedu43 oldboy]# #sed  's#你要找誰#你要替換成什麼#g'
[root@oldboyedu43 oldboy]# cat /oldboy/test.sh 
oldboy
[root@oldboyedu43 oldboy]# sed  's#oldboy#oldgirl#g'     /oldboy/test.sh 
oldgirl
[root@oldboyedu43 oldboy]# cat /oldboy/test.sh 
oldboy
[root@oldboyedu43 oldboy]# #修改文件的內容 把文件的內容進行替換 修改
[root@oldboyedu43 oldboy]# sed  -i  's#oldboy#oldgirl#g'     /oldboy/test.sh 
[root@oldboyedu43 oldboy]# cat /oldboy/test.sh 
oldgirl

(1)find命令找到的文件 都交給sed命令進行替換
[root@oldboyedu43 oldboy]# find /oldboy/ -type f  -name "*.sh"|xargs sed 's#oldboy#oldgirl#g'     先別加選項-i  肯定正確
oldgirl
oldgirl
oldgirl

 

(2)修改文件內容
[root@oldboyedu43 oldboy]# find /oldboy/ -type f  -name "*.sh"|xargs sed -i 's#oldboy#oldgirl#g'  答案

6檢查
[root@oldboyedu43 oldboy]# find /oldboy/ -type f  -name "*.sh"|xargs cat
oldgirl
oldgirl
oldgirl

 

13.3 方法二

13.3.1 $() 先運行裏面的命令 把輸出結果留下來   $()====`` (反引號)

which mikdir  mkdir的位置

 

1. find找到你要處理的文件

 find /oldboy/ -type f -name "*.sh"

2. sed命令處理find命令找到的文件

 Sed s#oldboy#oldgirl#g $(find /oldboy/ -type f -name *.sh)

答案:Sed -i s#oldboy#oldgirl#g $(find /oldboy/ -type f -name *.sh)

4.查看

cat $(find ./ -type f -name "*.sh")

小結:

1. find |xargs

2. find $()

3. find -exec

13.4 方法三:find   -exec  {} \;

答案:

find /oldboy/ -type f -name "*.sh" -exec sed 's#oldgril#oldboy#g'    {}    \;

 find找到的命令放到花括號裏,再被sed 執行

 \;結束

 

小結:

1. sed  進行替換

2. find  |xargs

 

13.5 補充:

1.快捷鍵:

快速使用上個命令最後的文件名

esc  + . (點)

 

 

13.6 (管道)|xargs(管道xargs)的區別

13.6.1 管道傳遞的是文本內容, |xargs傳遞的是文件名稱


find  |xargs ls -ld##把前一個命令的結果,經過管道傳遞給後面的命令(ls -ld),傳遞的是文件名
find  | 命令    ##把前一個命令的結果,經過管道傳遞給後面的命令,傳遞的是普通的文本,文字,字符串

13.6.2 總結:

何時使用管道?

前一個命令沒法知足你,一個命令的結果不是你想要的

 

何時使用管道xargs

後面的命令,須要處理的是文件名

find  |xargs

13.7 三劍客

13.7.1 Sed  Linux三劍客老二   擅長取某一行

     P    ---print 顯示     -n 取消sed命令默認輸出

查找替換

   Sed  s###g’   -i   對文件內容進行替換和修改

 

13.7.2 awk  Linux三劍客老大     擅長取某一列

   NR==    ---行號

13.7.3 grep    過濾   在文件中找東西   Linux三劍客老三

   -v   排除

   -A10  顯示你所要內容及接下來的10

相關文章
相關標籤/搜索