Linux實戰教學筆記04:Linux命令基礎

来源:http://www.cnblogs.com/chensiqiqi/archive/2016/12/25/6220588.html
-Advertisement-
Play Games

第四節:Linux命令基礎 標簽(空格分隔):Linux實戰教學筆記 第1章 認識操作環境 ![QQ20161225 [email protected] 38.5kB][1] root:當前登陸的用戶名 @分隔符 chensiqi:主機名 ~:當前路徑位置 用戶的提示符 1.1 Linux系統命令操作語法的 ...


第四節:Linux命令基礎

標簽(空格分隔):Linux實戰教學筆記


第1章 認識操作環境

QQ20161225-104727@2x.png-38.5kB

  • root:當前登陸的用戶名
  • @分隔符
  • chensiqi:主機名
  • ~:當前路徑位置
  • 用戶的提示符

1.1 Linux系統命令操作語法的格式

屏幕快照 2016-12-25 上午11.19.32.png-429.1kB

提示:

  1. 一般情況下命令中的[]表示可選,既命令的參數及文件是可選的。
  2. 參數選項===>一個命令的不同的功能(不同的條件)。

屏幕快照 2016-12-25 上午11.22.51.png-685.8kB

1.2 Linux目錄結構

QQ20161225-112602@2x.png-67.8kB

第2章 認識常用的Linux基礎命令

簡單粗暴貫穿常用命令,對命令使用框架有個整體認識

2.1 創建一個目錄/data

windows下麵

新建===>文件夾

Linux下麵

  • 創建目錄 ===>make directory===>mk dir ===>mkdir

mkdir /data 在當前目錄下創建子目錄
cd / 回到根目錄下
mkdir data 創建data子目錄

  • 查看目錄===>列表===>list===>ls

ls 查看當前目錄內容
ls -ld /data 查看/data目錄詳細內容
舉例
ls / 查看根目錄內容
ls -l / 查看根目錄下詳細內容

2.2相對路徑與絕對路徑

絕對路徑:從根開始的路徑

C:\Program Files (x86)\Microsoft Office

從根開始的路徑就是絕對路徑

絕對路徑:/etc/sysconfig/network-scripts/ifcfg-eth0

相對路徑:不從“/”根開始,而是把當前所在路徑當作根,目標文件或目錄距離當前路徑的“距離”。
示例:
QQ20161225-114958@2x.png-15.2kB
小結

多練
多給別人講解
討論相對路徑與絕對路徑

mkdir 創建目錄
ls 查看目錄內容
cd 進入xxxx
pwd 查看當前絕對路徑

2.3 在/data 下麵創建文件 chensiqi.txt

創建單個文件
屏幕快照 2016-12-25 上午11.56.08.png-13.8kB
創建多個文件
屏幕快照 2016-12-25 上午11.58.14.png-113.9kB

小結:

touch 觸摸 創建文件或修改文件時間戳(文件的屬性)

2.4 為chensiqi.txt 增加內容“I am studying linux"

vi===>直接寫入(關於vi和vim使用方法請自行查詢vim tutor)
echo進行追加
屏幕快照 2016-12-25 下午12.03.55.png-25.8kB
註意:
1,我們通常在直接操作文件前要備份文件
2,操作前先看一眼cat 一下

特殊符號:
“>” 重定向,清除原文件裡面所有內容,然後把內容追加到文件的末尾
“>>” 追加重定向,追加內容,到文件的尾部
“1>" 輸出重定向:把前面輸出的東西輸入到後邊的文件中,會清除文件原有內容。
“1>>" 追加輸出重定向:把前面輸出的東西輸入到後邊的文件中,不會清除文件原有內容,只是追加到最後一行。
屏幕快照 2016-12-25 下午12.20.32.png-24kB
<或0< 輸入重定向:後跟字元串(不常用)
<<或0<< 追加輸入重定向:後跟字元串(不常用) 2> 錯誤重定向:把錯誤信息輸入到後面的文件中,會刪除文件原有內容
2>> 錯誤追加重定向:把前面錯誤信息追加到後邊的文件中,不會清除文件原有內容
屏幕快照 2016-12-25 下午12.36.32.png-23.1kB

重定向小節:
重定向:改變命令執行時,數據傳輸的方向
箭頭方向就是數據方向===>水流方向
屏幕快照 2016-12-25 下午12.40.03.png-949kB

2.5 把chensiqi.txt拷貝到/tmp目錄下

windows複製粘貼

ctrl+c
ctrl+v

Linux下:
複製====>copy===>cp
屏幕快照 2016-12-25 下午1.26.13.png-29.4kB
小結:

cp 複製文件或目錄(預設不能拷貝目錄)
-r:遞歸,複製目錄,目錄及其子孫後代
-p:複製文件同時保持文件屬性不變,
-a ===-pdr

2.6 把/data 移動到 /root 目錄下麵

移動(搬家)====>move====>mv
屏幕快照 2016-12-25 下午1.52.53.png-101.8kB

cd /
mv /data /root
小結
/data ===> /data 及/data下麵的子孫後代
/data/===> /data下麵的子孫後代
註意:這裡目錄的移動,如果想僅僅移動目錄下麵文件而不移動目錄使用mv /data/* /root 即可

2.7 進入/root 目錄下的data目錄,刪除chensiqi.txt文件

刪除===> remove ====>rm
屏幕快照 2016-12-25 下午1.57.47.png-70.5kB

cd /root/data
rm chensiqi.txt 預設只能刪除文件
會提示是否刪除 y 即可
rm -f chensiqi.txt 免提示一律yes
註意:刪除前要思考操作後是否能夠恢復,若不能恢復擇應該先cp備份,或者採取移走mv的辦法進行刪除。

遞歸刪除

rm -rf data 刪除目錄必須加-r,-f免提示 刪除data目錄及目錄下的所有東西
註意:此命令非常危險,建議不用,採取移動mv的刪除方式(在linux跟目錄下建立一個垃圾箱文件夾,想刪除的都mv過來)
請熟記,運維人員的職責:安全穩定高效

小結:

rm 無尾碼只能刪除文件
-f 免提式強制刪除
-r 刪除目錄(遞歸刪除目錄下所有東西)
#慎用
替代方法:mv 移動文件或目錄

提高刪除的難度/門檻

通過find命令提高刪除的準確度
屏幕快照 2016-12-25 下午2.15.21.png-68.9kB
find data -type f -name "chensiqi.txt"
-type:查找的目標的類型
f : 文件類型
-name + 文件名:文件的名字
第一步:先找出文件
第二步:再刪除文件

find小結

find 查找範圍 -type 文件類型 f(file) d(directory) -name 文件名

管道
管道命令:xargs
之前的刪除文件操作還可以這麼處理:
屏幕快照 2016-12-25 下午2.29.29.png-82.3kB

  • 如果前一條命令沒法滿足你的需求,那麼需要續接一條命令來進行再處理,那麼就需要管道符+管道命令(| xargs)來續接命令。
  • 也就是說,將管道符 | 左邊的命令所執行的結果所為管道符 | 右邊的命令的執行範圍

2.8 討論

生產環境下,運維人員如何最大限度的避免誤刪除文件

  1. 修改或刪除數據前請務必備份,最好有異地備份,修改配置等先提交版本管理系統再發佈到線上
  2. 運維新手刪除應使用mv命令替代rm命令,無用的文件不要著急刪除,而是移動到回收站/tmp里觀察一段時間可以通過設置別名等手段屏蔽rm,這樣一旦直接用到rm命令就是意識到(當然真想用有手段可以越過別名)。
  3. 如果非要刪除數據,還可以find結合rm替代單純的rm,包括設定定時任務等動作執行清理。
  4. 如果非要使用rm刪除,請儘量先切換目錄再刪目錄下的數據,能不用通配符就不用通配符
  5. 如果必須要使用rm -rf 命令強制且遞歸刪除文件夾,最後的避免錯誤方法就是要用tab去不全文件夾名字,不要手敲任何字元,防止誤刪除
  6. 如果刪除的不是目錄,就不要用rm -rf,採用最小化的方法rm -f即可,甚至重要的少量文件,可以不用-f,以獲得確認刪除提示信息

總結:

a,刪除數據後,多數情況是可以恢復的,但會影響業務
b,例如:需要停機恢復,且數據丟了,較長時間用戶訪問不了對應數據了
c,恢復工具諸如ext3grep等
d.事情發生前未雨綢繆永遠比發生了在解決好得多
e,養成規範,專業科學的運維習慣,運維流程是避免當黑鍋俠的關鍵!

企業面試題
問:linux下刪除一個目錄下的所有文件,但保留一個指定文件
方法一:find(最重要必須會)
屏幕快照 2016-12-25 下午2.54.49.png-52.2kB

!:取反,也就是說刪除目錄下文件類型為f的所有文件但是排除-name為 file9 的文件

方法二:grep過濾內容
屏幕快照 2016-12-25 下午3.00.22.png-52kB

通過find查出所有目標文件夾下的文件內容後,通過管道 | grep 過濾-v排除掉目標內容後再 | xargs 將內容傳遞給rm命令進行刪除

方法三:命令嵌套命令
此方法只適用於刪除當前目錄下的內容
屏幕快照 2016-12-25 下午3.12.50.png-57.5kB

··符號(tab鍵上邊的~符號不按shift輸入就是)它的意思是取符號內的命令的執行結果。本方法的意思就是rm刪除掉··符號內的命令的執行結果的內容

2.9 退出到上級目錄刪除data目錄

屏幕快照 2016-12-25 下午3.17.42.png-88.3kB

cd /root/data 進入目錄
cd .. 退出當前目錄回到上一級目錄
find 找出目標data目錄
| xargs 傳遞給rm刪除

特殊符號

“.”(點):表示當前目錄/路徑
“..”:表示當前目錄的上級目錄
“#” :表示註釋(linux會無視,略過)

2.10 已知chensiqi.txt文件內容,去掉某行內容後,輸出結果

方法一:grep過濾
屏幕快照 2016-12-25 下午3.28.14.png-48.6kB

grep 過濾(預設)
cat chensiqi.txt | grep "I am chensiqi" 只看過濾的內容

-v: 排除
cat chensiqi.txt | grep -v "I am chensiqi" 排除內容後,看其他內容

方法二:通過head和tail拼接字元串
head:從頭開始查看文件內容,預設查看10行
tail:從結尾開始查看文件,預設查看10行
-n: n等於行數

屏幕快照 2016-12-25 下午3.42.47.png-88.5kB

&& :特殊符號,並且的意思,可以拼接字元串結果

方法三:awk 解決
屏幕快照 2016-12-25 下午3.49.07.png-61.2kB

!:取反

方法四:sed 解決
屏幕快照 2016-12-25 下午4.25.00.png-68.4kB

瞭解就好,以後再細說
/內容/d (刪除)
找到內容後,將內容刪除後再輸出

2.11 請用一條命令完成創建目錄/chensiqi/test,即創建/chensiqi 目錄及/chensiqi/test

屏幕快照 2016-12-25 下午4.43.06.png-85.5kB

2.12 已知/chensiqi 目錄下已經存在test.txt 文件,如何執行命令才能把/mnt/test.txt 拷貝到/tmp 下覆蓋掉/chensiqi/test.txt.而讓系統不提示是否覆蓋(root許可權)

屏幕快照 2016-12-25 下午4.54.45.png-49.7kB

/bin/cp:是複製命令的絕對路徑,通過絕對路徑來複制命令就不會有提示。

知識擴展

還記得我們的crond定時任務嗎,當用定時任務觸發腳本的時候,一般都要求腳本里的命令是絕對路徑的書寫方式(還不知道定時任務的,此處略過)

2.13 只查看ett.txt(共100行)內第20到第30行內容

方法一:head和tail通過管道符解決
屏幕快照 2016-12-25 下午5.13.19.png-95.9kB

head -30 文件路徑:查看目標文件前30行
tail -10 文件路徑:查看目標文件後10行
head -30 文件名 | tail -10 先查看目標文件前30行,再查看前30行內容的最後10行。

方法二:sed解決
屏幕快照 2016-12-25 下午5.20.49.png-73.8kB

sed ‘’ 目標文件名:預設輸出,全部內容
sed -n “行數p” 文件名:讀取目標文件的行數內容
sed -n "行數,行數p" 文件名:讀取目標文件的行數範圍的內容

方法三:awk解決
屏幕快照 2016-12-25 下午5.29.11.png-80.9kB

awk '行數' 目標文件名、
NR == 行數
&& 並且拼接字元串

知識擴展
grep命令在這裡無法解決該問題,grep命令主要是用來過濾內容的。而不能按行或者按列數來檢索。

grep -v :取反,排除
grep -A 10:(after) 顯示匹配行的後10行
grep -B 10:(before) 顯示匹配行的前10行
grep -C 5:顯示匹配的行的前後各5行

2.14 把/chensiqi目錄及子目錄下所有以擴展名.sh 結尾的文件,文件中包含 chensiqi的字元串全部替換為welcome

屏幕快照 2016-12-25 下午8.47.23.png-65.3kB

此題可通過find先找出目標文件
再用sed -i 直接對文件內容進行修改
sed -i 需要接收的是文件名,而“|”傳遞的是字元串,“| xargs”傳遞的才是文件名,如果不理解請繼續往後看,

2.15 討論

管道符 | 和管道命令 xargs的區別

  • | 傳遞文本,文字,字元串
  • | xargs 文字,文本,字元串==(變成)=>文件名

grep 過濾的是文件的內容,它過濾的是字元串,因此它天生就認識 管道符“|”
屏幕快照 2016-12-25 下午8.54.24.png-17.8kB

sed -i “s///g” 文件名:他後邊需要接的是文件的名字,因此他不能直接認識字元串
屏幕快照 2016-12-25 下午9.02.44.png-20.1kB
所以就需要通過xargs這個管道符命令來將字元串轉換成文件名
屏幕快照 2016-12-25 下午9.04.51.png-41.7kB
綜上,這就是“|”和“|xargs”的區別,請仔細理解,很重要




您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、概述 運行時變更就是設備在運行時發生變化(例如屏幕旋轉、鍵盤可用性及語言)。發生這些變化,Android會重啟Activity,這時就需要保存activity的狀態及與activity相關的任務,以便恢復activity的狀態。 為此,google提供了三種解決方案: 下麵會逐一介紹三種情況,其 ...
  • 查詢這塊是重中之重, 關係到系統反應時間. 項目做到後期, 都是要做性能測試和性能優化的, 優化的時候, 資料庫這塊是一個大頭. sql格式: select 列名/* from 表名 where 條件 group by 列 having 條件 order by 列 asc/desc; 這裡牽涉到一個 ...
  • 在平常備庫和資料庫遷移的時候,當遇到大的資料庫的時候在用exp的時候往往是需要好幾個小時,耗費大量時間。oracle10g以後可以用expdp來導出資料庫花費的時間要遠小於exp花費的時間,而且文件也要小很多。 1.使用expdp要先在資料庫中創建directory,並給相應的用戶read,writ ...
  • 查詢內嵌文檔 數據準備 方式1:查詢整個內嵌文檔 與普通查詢完全相同。但是,如果要查詢一個完整的子文檔,那麼子文檔必須精確匹配(順序以及個數都要一樣)。 > db.blog.find({"comments":{"author":"lf","votes":20}}) > 方式2:只針對其鍵/值對進行查 ...
  • 數據準備 find find的第一個參數決定了要返回哪些文檔,用於指定查詢條件。要不指定查詢文檔,預設就是{},指定多個鍵/值對,相當於sql的and。第二個參數來指定想要的鍵(預設情況下,"_id"總是顯示)。 查詢條件 And查詢 使用AND型查詢時,應儘可能用最少的條件來限定結果的範圍。 當然 ...
  • I'm using ubuntu14 LTS. Problems: 1. When run roscore, got a mistake and an advice to ping the localhost. 2. Nearly every time I run a directive with ...
  • 遠程管理控制方式: RDP(remote desktop protocol)協議; telnet; SSH(Secure Shell); RFB(Remote FrameBuffer)協議(圖形化遠程管理協議) VNC伺服器:Linux下實現RFB協議的遠程管理軟體。 安裝:yum install ... ...
  • nonblock函數的原型如下: nonblock函數主要完成以下工作: a.從標準輸入獲取狀態,存放在ttystate中 b.關閉the canonical mode,通過置0的方式實現。 c.通過ttystate設置標準輸入的狀態。 kbhit函數的原型如下: 該函數主要通過timeval和se ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...