Linux 基本指令的操作和所學的 匯總(五節續)
阿新 • • 發佈:2019-05-04
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 基本指令的操作和所學的 匯總(五節續)