1. 程式人生 > >Linux 基本指令的操作和所學的 匯總(五節續)

Linux 基本指令的操作和所學的 匯總(五節續)

exec 相對 時間戳 odk 基本 添加 提示信息 his 追加

先說道面試題

實例一:只查看test.txt文件(100行)內第20到第30行的內容(企業面試) 4 + 2種 方法

(1)seq 30 >/my/et.txt
head -30 /my/et.txt | tail -11
(2)sed -n ‘20,30‘ p et.txt (sed功能增刪該查   -n  取消默認輸出 按規則輸出打印(p))
(3)awk ‘ NR>19&&NR<31‘ et.txt ({if(NR>=20 && NR<=30) print $1}可以替換 ‘’ 內的內容意思相同)
(4) grep 
A  除了顯示匹配到的一行外 ,並顯示該行之後的num行   例子: grep  20 -A 10  a.txt
B  除了顯示匹配到的一行外 ,並顯示該行之前的num行   例子: grep  30 -B 10  a.txt
C  除了顯示匹配到的一行外 ,並顯示改行之前的num行   例子: grep  25 -C  5  a.txt

一條指令 將/my/a.txt 復制到 /temp/a.txt 後不提示信息

(1)\cp  /my/a.txt   /temp/a.txt
(2)/bin/cp   /my/a.txt   /temp/a.txt
(3)unalias cp      ---->  (該條功能不建議使用,服務器重啟後 失效 )
          cp  /my/a.txt   /temp/a.txt 

把/my 目錄及其子目錄中使用擴展名為‘ .sh’結尾的文件中包含 oldboyde 字符串全部替換成 oldgirl;

創建測試數據
[[email protected] ~]# cd  /my
[[email protected] my]# echo ‘oldboy‘ >/test/a.sh
-bash: /test/a.sh: No such file or directory
[[email protected] my]# echo ‘oldboy‘ >test/a.sh 
[[email protected] my]# echo ‘oldboy‘ >test.sh  
[[email protected] my]# echo ‘oldboy‘ >t.sh  
[[email protected] my]# tree
.
├── 8.txt
├── ett.txt
├── new1
│   └── new2
│       └── new3
├── new2
│   └── new2
│       └── new3
├── test
│   └── a.sh
├── test.sh
└── t.sh
測試開始替換數據
[[email protected] my]#find -type f -name ‘*.sh‘|xargs sed ‘s#oldboy#oldgirl#g‘ (只是替換但尚未修改)
oldgirl
oldgirl
oldgirl
[[email protected] my]# find -type f -name ‘*.sh‘|xargs sed -i ‘s#oldboy#oldgirl#g‘
(加 -i 直接替換修改)
[[email protected] my]#find -type f -name ‘*.sh‘|xargs  cat 信息流  給cat   
oldgirl
oldgirl
oldgirl
(不加xargs  直接變成數據流 交給cat)
[[email protected] ~]# find /my -type f -name ‘*.sh‘| cat         
/my/test/a.sh
/my/t.sh
/my/test.sh

五星級別的命令 :

linux 三劍客之

grep  \ awk \  sed;他們都有過濾字符串的功能;
grep :查找過濾最擅長
awk :處理列擅長(NF  :代表字段  NR:代表 記錄  一個記錄代表一行)
sed :   擅長添加、替換、修改、刪除 、

幫助指令:

ifconfig   查看網卡鏈接信息---- 相同於 ip addr 
man  命令        Linux  指令
--help    簡潔 版 幫助
help  命令        內置指令幫助

操作查看目錄指令:

mkdir 創建目錄

全名稱:make directorys    :
mkdir   (/data)是創建的目錄;或者 cd  /; mkdir  data
第一個指令 是 直接創建 目錄 在根  " / "下 :  mkdir  /data  ;
第二個是 進入根" / "下直接創建   :cd /; mkdir data
例子: mkdir  /myfile    或者     cd  /; mkdir  myfile    
#### 遞歸創建目錄    
mkdir   -p   /my/new1/new2
#### 多重創建
[[email protected] ~]# mkdir /yyn/{335,336,3365}/yyn -p
[[email protected] ~]# tree /yyn
/yyn
├── 332
│   └── yyn
├── 335
│   └── yyn
├── 336
│   └── yyn
└── 3365
    └── yyn

ls 列表

ll :查看該目錄下的文件總個數

指令規則:命令 【參數選項】【文件或路徑】
ls  -ld   (參數  l   和  d)  多參數可以直接連起來操作    前面 加  “ - ”
參數  l   (long)      長格式       
參數 d (directorys) 查看目錄
例子: ls  -l    \    ls  -d   \    ls -ld()   ls  /data (進入目錄下查看)

cd 改變目錄路徑

全名稱 :change directory 
相當路徑:沒有從根 " / " 開始    cd   data
絕對路徑:從根 " / "  開始      cd  /etc
例子:  cd  /etc ;  cd  data  

pwd 打印工作目錄(顯示當前所在路徑)

全名稱  :print work  directory 
例子:  pwd     輸出結果:/directory   / (那個文件)

touch 創建文件及更新時間戳

若文件不存在   touch  file.txt  
若文件存在  更新時間戳(文件的時間屬性)  ;
例子: touch   /myfile/file.txt 
touch  另外  
touch {1..10}.txt  創建
mv  `find  /my -type f -name " *.txt  "  ` /data

vi 編輯文件

vi  file.txt     
vi  後跟 操作的文件  ; 回車進入待編輯狀態
按 " a "或 " i  " 字母 進入編輯狀態  ; 編輯好之後
按 鍵盤   Esc  回到  待編輯狀態;
輸入  " :wq "  保存和退出 編輯  回到  命令行模式;
不想保存: 輸入 :q     
強制退出 輸入   :q!   
解釋   wq  :  w(write) 、q (Quit) ;

vim 復雜編輯器

功能復雜,高亮,自動縮進,寫腳本(shell  / python 腳本用)
vim  file.txt
按 " a "或 " i  " 字母 進入編輯狀態  ; 編輯好之後
按 鍵盤   Esc  回到  待編輯狀態;
輸入  " :w "  保存後再按":q"退出 編輯  回到  命令行模式;

echo 覆蓋或追加內容 配合 " 重定向 > " , " 追加 >>"

echo    ‘ I am study Linux now; ‘ >myfile.txt
echo  {a..z}  myfile.txt   相當於 序列  seq 部分功能
解釋:echo 後面跟  文件內容    " > "  代表重定向到    那個文件  
或者其他" > " 後的文件若存在 會 先清空 該文件的內容   
後  寫入 " > " 前面的 內容 ;
此 "  >  " 指令  操作  危險   ,在操作前  請先備份 ,
再操作;若想追加  則用   "  >>   "
例子: echo ‘I drop in love river with you; ‘>>myfile.txt

cat 查找,單行和多行文本添加

Linux 常用的指令功能:

查看網卡連接設置
cat   /etc/sysconfig/network-scripts/ifcfg- ens34    網卡名稱 
cat  >myfile.txt 回車 後編輯輸入  I love you  in my life;在按  Ctrl  + C   或   D 結束編輯;
[[email protected] myfile]# cat >>myfile.txt<<my     : (多行追加實例:)
 i love you in mylife;
do you want to mirry with me?
my(my  可以換成任意,但必須頂格寫)
[[email protected] myfile]# cat myfile.txt   (實例顯示的結果:)
I studying Linux now;
i love you in mylife;
do you want to mirry with me?
Cat 其它用法: 多行文本輸入
cat  >> /my/a.txt << my
123
123
456
my

特殊符號 < 、< <、>、>> 的說明:箭頭的指向代表數據的流向

‘>‘ 或 (0\1\2)> 輸出重定向:把前面的內容輸入到後面,會清除原有的文件內容;(有 1 沒有都一樣)
例子 :>myfile.txt      (清空原有內容)    echo ‘ i love you ‘ >myfile.txt

‘>>‘ 或  (0\1\2)>>   追加輸出重定向:把前面的內容追加到後面,不會清除原有文件內容; 
例子:echo ‘I drop in love river with you; ‘>>myfile.txt

0< 或 <     輸入重定向  : 把文件或文本內容   輸入給  前面的命令;
例子:
[[email protected] myfile]# echo ‘ 1 2 3 4 ‘>myfile.txt
[[email protected] myfile]# cat myfile.txt
 1 2 3 4 
[[email protected] myfile]# xargs -n 2 <myfile.txt  (xargs -n 2  理解為:2個一個單位分組)
1 2
3 4

0<< 或 <<   輸入追加重定向
[[email protected] myfile]# cat >>myfile.txt<<my     : (多行追加實例:)
i love you in mylife;
do you want to mirry with me?
my

數字的說明:
標準輸入(stdin):        代碼為0 ,使用 0< 或 0<< ,數據(輸入的數據)流向從右到左
例子: cat  < myfile.txt
標準正常輸出(stdout):代碼為1 ,使用 1> 或 1>> ,數據(正確的數據)流向從左到右
例子: echo  oldbook >myfile.txt     echo  oldbooks >> myfile.txt
標準錯誤輸出( stderr ):   代碼為2 ,使用 2> 或 2>> ,數據(錯誤的數據)流向從左到右  
echo oldbook > myfile.text  2>b.txt     意思是:正確的數據輸出到 myfile.txt,錯誤的輸出到b.txt
cho odkbb > a.txt 2>‘&‘     意思是: 正確或者錯誤都輸出到 a.txt
cho  oooddd  &>a.txt        意思是: 正確或者錯誤都輸出到 a.txt
echo  shuikm  &>>a.txt      意思是:正確或者錯誤輸出追加到 a.txt

xargs 分組

xargs -n  number <wenjian   分組
echo 1 2 3 4 5 6 7 8 >a.txt
例子:xargs  -n   3 <a.txt

cp 拷貝

cp  file  /temp  把某個文件或目錄拷貝到 某個地方
例子:  cp  a.txt  /temp/      相對路徑拷貝
[[email protected] myfile]# cp /myfile/a.txt  /my
cp: overwrite `/my/a.txt‘? y
若拷貝目錄需要 加參數  " -r   遞歸拷貝 "
" -a  相對於  ;
-p: 保持屬性 ;
-d:鏈接文件  
-r  "拷貝目錄  
在拷貝時 ,讓系統 不提示覆蓋信息  
cp 前 加 " \ " ;或者  寫全路徑  
例子:/bin/cp  /my/a.txt   /temp/ a.txt
                     \cp  -r /myfile  /temp   

rm remove

rm    -f(force)強制   -r(recuresive) 遞歸刪除目錄   /  mydirectory
rm -fr /{1,2,3,4,5,6,7,8} 

mv 移動文件和目錄

mv  file.txt  /temp    原位置文件就沒有了

find 查找

find  查找   -type f (什麽類型)  -name (叫什麽名字)  " file.txt"   -exec(做什麽動作)
find  /myfile   -type f  -name  ‘ myfile.txt ‘    -exec  rm {} \;
! 取反的意思    find  /myfile   -type f ! -name  ‘ myfile.txt‘ 
-a(and) 交集    find  /myfile   -type f  -name  ‘ myfile.txt‘ -a ‘a.txt‘    默認是交集
-o (or) 並集      find  /myfile   -type f  -name  ‘ myfile.txt‘  -o ‘a.txt‘
上面例子是:找到/myfile 目錄下file類型的myfile.txt 文件 ‘ {} 內容 ‘刪除操作
find  /myfile   -type f  -name  "*.txt "  | xargs rm -f 
把查找的內容  放到一行上  進行刪除
find  +  rm   刪除該目錄下其他文件  但保留指定文件
find  /my  -type f !- name ‘ 8.txt‘  -exec  rm -f {} \;

grep 過濾 -v 排除後面的

grep  【內容】  【 文件】     顯示【內容】          例子:grep   123  a.txt
v  過濾排除的內容顯示除了過濾以外的內容              例子: grep  -v   123  a.txt 
A  除了顯示匹配到的一行外 ,並顯示該行之後的num行     例子: grep  20 -A 10  a.txt
B  除了顯示匹配到的一行外 ,並顯示該行之前的num行     例子: grep  30 -B 10  a.txt
C  除了顯示匹配到的一行外 ,並顯示改行之前後的num行   例子: grep  25 -C  5  a.txt

head 頭部 tail 尾部

head  -num   a.txt   讀取前 num 行  從a.txt文件
例子:head  -10  a.txt  讀取前10行數據

tail  -num   a.txt   讀取後 num 行  從a.txt文件
例子: tail  -10 a.txt 讀取後10行數據

有個 a.txt 文件內容100行,要求讀取20-30行
例子:head  -30  a.txt | tail -11   

安裝軟件包

    yum   install   【參數】【y/n  代表  是否提示】
     yum install tree -y 

別名 的作用:alias \ unalias

給危險指令加防護 防止誤操作
簡化命令
alias  查看和設置系統現有的別名設置別名
unalias   取消現有的別名
unalias  cp  取消cp  -i  的別名
[[email protected] /]# alias rm=‘echo this command does not allow to use‘
[[email protected] /]# rm
this command does not allow to use
[[email protected] /]# alias net=‘cat /etc/sysconfig/network-scripts/ifcfg-eth0‘
[[email protected] /]# net
DEVICE=eth0
HWADDR=00:0c:29:54:22:9d
TYPE=Ethernet
UUID=f0212429-d0c9-4ff5-9d33-8c7231d5664c
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp
USERCTL=no
PEERDNS=yes
IPV6INIT=no

seq 序列

seq  num                    默認從1開始num結束
seq  -s  " " num                橫著從1開始num結束;  -s  指定分隔符   默認  \n
seq  num1  num2         從num1開始到num2結束
seq  num1  num2   num3      從 num1 開始到 num3 結束 間隔 num2
    橫著輸出打印
    [[email protected] ~]# seq -s " " 10  
    1 2 3 4 5 6 7 8 9 10
    [[email protected] my]# seq 10 |xargs -n 3 
    (seq num 默認從1開始num結束,xargs -n num 分組)
    1 2 3
    4 5 6
    7 8 9
    10
    [[email protected] my]# seq 3 10 |xargs -n 3
    (seq num1 num2 從num1開始到num2結束,xargs -n num 分組)
    3 4 5
    6 7 8
    9 10
    [[email protected] my]# seq 1 2 20 |xargs -n 3
    (seq num1 num2 num3 從 num1 開始到 num3 結束 間隔 num2,xargs -n num 分組)
    1 3 5
    7 9 11
    13 15 17
    19

sed

語法:
        sed  ‘ s#1#2#g‘  et.txt   
                        1 , 2  把 1 的內容, 替換成 2 的內容 
                        # 號  是分隔符   ,可以 / 或者  @ 替換  
    參數:
    -n   取消默認輸出    
                            sed -n ‘20,30‘p /my/ett.txt 
    -i   修改文件內容
                             sed -i ‘s#oldboy#oldgirl#g‘ test.sh  t.sh  test/a.sh
    -e   允許多項修改
    功能:
    p   打印           
                             sed -n ‘20,30‘p /my/ett.txt 
    g  和  s 聯合是 表示當前行全局匹配替換
                             sed -i ‘s#oldboy#oldgirl#g‘ test.sh  t.sh  test/a.sh   原理是這樣)
                            (1) sed -i ‘s#oldboy#oldgirl#g‘ `find /my -type f -name "*.sh"`
                            (2) find /my -type f -name "*.sh |xargs  sed -i ‘s#oldboy#oldgirl#g‘
    s  查找並替換  
                             sed -i ‘s#oldboy#oldgirl#g‘ test.sh  t.sh  test/a.sh  (原理是這樣)
                             (1) sed -i ‘s#oldboy#oldgirl#g‘ `find /my -type f -name "*.sh"`
                             (2) find /my -type f -name "*.sh |xargs  sed -i ‘s#oldboy#oldgirl#g‘

Linux 基本指令的操作和所學的 匯總(五節續)