Linux基礎命令和修改Linux終端輸出顏色


一、增

1、創建文件夾

1. 創建一個文件夾
mkdir test

2. 遞歸創建
在當前位置創建a/b/c
mkdir -p a/b/c

3. 遞歸創建a/b和c/d
mkdir  -p  a/b  c/d

4. 遞歸創建test/a,b,c三個文件夾
/test/a
/test/b
/test/c

mkdir -p test/{a,b,c}

 

2、創建普通文件

touch test.py

 

3、touch還可以修改文件的時間

touch -t '年月日時分秒' 文件   其中年和秒是可選的
touch -t '201901072220' test.py  2019年1月7日22點20分

 

二、查

1、 查看某個文件夾下的內容

1. ls命令的參數
-l   以樹樁顯示文件夾內容,詳細信息
-a   顯示隱藏內容
-la  顯示目錄內容的詳細信息,且顯示隱藏文件 

2. 示例
ls        --> 查看當前路徑下的內容
ls /tmp   --> 查看指定路徑下的內容

ls -l     --> 查看當前路徑下的內容的詳細信息
ls -a     --> 查看當前路徑下的內容,包括隱藏文件
ls -la      --> 查看當前路徑下的內容的詳細信息,包括隱藏文件

ls -l 簡寫 ll

 

2、查看當前所在的路徑

pwd

 

3、查看內容較少的文件的內容

1. 普通查看
cat test.py

2. 查看文件,顯示行號
cat -n test.py

3. 在每一行的結尾加上$符
cat -E test.py

4. 查看文件,顯示行號並在每一行的結尾加上$符
cat -n -E test.py

5. 追加內容
[root@localhost tmp]# cat >> test.py << EOF
> 嘿嘿嘿
> EOF

6. tac
tac就是cat倒過來寫,
輸出的內容也是倒過來輸出的

 

4、查看內容較多的文件

1. more
more命令用於查看內容較多的文本,例如要看一個很長的配置文件,cat查看內容屏幕會快速翻滾到結尾。
more命令查看文本會以百分比形式告知已經看到了多少,使用回車鍵向下讀取內容。

more /etc/passwd
空格space:翻頁
回車鍵:向下讀取內容
q鍵:退出more

缺點:more模式下,不能向前面翻頁

2. less
less /etc/passwd
[pagedown]: 向下翻動一頁
[pageup]:   向上翻動一頁

q鍵:退出less


同時查看多個文件
less /etc/passwd test.py

默認查看第一個文件
    輸入 n 后,切換到 test.py
    輸入 p 后,切換到/etc/passwd

 

5、通配符

查看/etc下的所有內容
ls /etc*

 

6、查看系統版本

# 查看系統的版本信息
cat /etc/os-release  # 查看系統的版本信息(通用)
cat /etc/redhat-release  # 查看紅帽系列的系統(不是紅帽系列的系統查看不到信息)

 

三、改

1、改變當前的目錄/位置

cd(change directory) 更改目錄 
.  當前目錄
.. 上一級目錄
~  家目錄
-  上一次所在的目錄
cd
~ cd - cd /home

 

2、移動

mv(move) 移動目錄/文件
mv  你想移動的對象  移動到哪
mv /tmp/test.py /home

 

3、改名

mv還有一個重命名的作用
mv 舊的文件名  新的文件名
mv test.py test2222.py

 

4、重定向輸出符

輸出 > 輸入
echo "Hello Linux" > test.py
ls > test.py

 

四、刪

刪除命令慎用!看好!
刪除命令慎用!看好!
刪除命令慎用!看好!

1. 參數  
-r  遞歸刪除目錄和內容
-i  需要刪除確認(rm命令默認就有-i參數)
-f  強制刪除,不需要確認

2. 刪除文件
rm  文件名
rm test.py

3. 刪除目錄
rm -r 目錄 需要刪除確認
rm -rf 目錄 不需要刪除確認

4. 刪除所有東西
rm -rf /路徑*  !!!!慎用

5.刪除空文件夾
rmdir 空文件夾

 

五、其他

0、命令提示符

1. 例如:[root@localhost tmp]# 
root:用戶名
@:占位符 
localhost:主機名
tmp:當前所在的路徑

2. 查看主機名
hostname

3. 修改主機名
hostnamectl set-hostname ZBJ  退出會話重新登錄后生效

4. 修改命令提示符
# 在linux中,變量只設置一次的話,只對當前會話生效,退出會話后失效
# 將這個表量寫入到這個文件中 /etc/profile 可永久生效, 例如PATH PS1
通過修改PS1變量來控制命令提示符的顯示 \u 用戶名 \h 主機名 \W 最后一位工作目錄 \w 絕對路徑工作目錄 \t 顯示24h制的時間 默認的PS1是:[\u@\h \W]\$
--> [用戶名@主機名 最后一位工作目錄]$ 我們可以修改 PS1="[\u@\h \w \t]\\$" --> [用戶名@主機名 絕對路徑工作目錄 時間]$
\\$:root用戶顯示 # 普通用戶顯示 $
5. 默認終端 linux系統默認有 f1-f7 7個終端,使用 ctrl + alt + f1~f7進行切換 默認 f1終端是 圖形化終端

 

1、創建普通用戶

useradd 用戶名 
passwd  用戶名

 

2、文本編輯

vi命令,就是linux下一個文本編輯器,如同windows的記事本
vim 這個命令就是加強版的記事本,notepad++

寫入文件內容
1.vi test.py    進入vi命令模式,輸入i命令,進入編輯模式

2.在編輯模式下寫入
    如果要讓python支持中文
    #coding:utf8
    print("愛是一道光,很開心!!" )

3.按下esc回到命令模式,退出編輯模式

4.輸入:wq! 寫入保存代碼
    :     進入底線命令模式
    :w   將文件內容寫入
    
    :q   不保存退出
    :q!  不保存強制退出
    
    :x   保存退出
    :wq! 強制保存退出

5.python test.py 執行代碼腳本

6. 顯示/隱藏行號
1. 顯示行號
:set number
或者
:set nu


2. 取消行號顯示
:set nu!

 

3、Xshell快捷鍵(鍵盤上的鍵)

tab  命令補全鍵
ctrl + d  退出會話 
ctrl + shift + r  快速登錄上一次的會話
ctrl + l  清理終端顯示(相當於clear)

 

4、便捷命令

clear 清屏
退出當前會話 logout

 

5、PATH

1. 類比windows中的環境變量
當你在系統中配置了python的環境變量,
當你在cmd中直接輸入python這個相對路徑的命令時,
系統就會去從path中一個一個去找,找到你配置的python的環境變量,然后執行這個目錄下python.exe,
因此你才能直接在cmd輸入python進入python解釋器,如果沒有配置環境變量,在cmd中也是可以執行的,
只是麻煩一些,需要輸入python解釋器的路徑\python,例如 C:\Python\Python36\python

注意
    path是有優先級的,且windows中環境變量以分號 ; 區分不同的環境變量。
    更重要的是,環境變量只能配置到目錄,不能是文件。

2. Linux中的環境變量
linux的變量定義,不能含有空格,環境變量以冒號 : 區分不同的環境變量。
linux的環境變量是一個大寫PATH的變量,查看當前環境變量:echo $PATH

 

6、時區修改

命令:tzselect
根據提示修改即可

 

7、stat命令

顯示文件或文件系統的狀態。
用法: stat  [參數]  文件

參數列表:
-L --dereference     跟隨鏈接
-f --file-system     顯示文件系統狀態而非文件狀態
-c --format=格式     使用指定輸出格式代替默認值,每用一次指定格式換一新行
   --printf=格式     類似 --format,但是會解釋反斜杠轉義符,不使用換行作輸出結尾。
                     如果你仍希望使用換行,可以在格式中加入"\n"
-t --terse           使用簡潔格式輸出
   --help            顯示此幫助信息並退出
   --version         顯示版本信息並退出

格式化輸出參數:
  %a    八進制權限
  %A   用可讀性較好的方式輸出權限


#實例1
[root@master tmp]# stat a.txt
  File: 'a.txt'
  Size: 0             Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 17348002    Links: 1
(權限)Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
(最近訪問)Access: 2018-07-10 15:30:00.000000000 +0800
(最近更改)Modify: 2018-07-10 15:30:00.000000000 +0800
(最近改動)Change: 2018-11-07 15:38:36.400989868 +0800
Birth: -

"""
用stat命令可以看到某個文件/文件夾的名稱、大小、權限等,
這里還需要注意三個時間:
Access:ATime ——文件的最近訪問時間,只要讀取(僅僅是訪問,沒有改動),ATime就會更新
Modify: MTime ——文件的內容最近修改的時間,當文件被修改的時,MTime就會更新
Change: CTime——文件屬性最近修改的時間,當文件的屬性被修改,包括權限,大小,屬性等等,CTime也就會更新
"""

# 實例2,顯示文件權限
[root@master tmp]# stat -c %a 1.txt
644
[root@master tmp]# stat -c %A 1.txt
-rw-r--r--

 

8、echo

echo命令用於在終端輸出字符串或變量提取后的值,格式是 echo 字符串|$變量
把內容顯示到終端上    
echo "你好,綠光"

把變量顯示到終端上
echo $PATH

把內容寫入文件
echo "你好,綠光" > /tmp/test.py

 

9、特殊符號

# 輸入/輸出 重定向符號
1.>     重定向符號,清空原文件所有內容,再寫入新的內容
2.>>    追加重定向,把新的內容追加到文件的結尾
3.<     輸入重定向,清空原文件所有內容,再寫入輸入的新內容
4.<<    輸入重定向,把輸入的新內容追加到文件的結尾

echo "綠光" > /tmp/test.py  # 會清空test.py原本的內容,再寫入新的內容
echo "是你" >> /tmp/test.py # 會在原本的內容后面追加新的內容

cat >> /tmp/test.py << EOF

ip addr > /tmp/test.py  #把命令執行結果信息,放入到文件中

 

 

10、cp拷貝

1. 拷貝test.py到/etc目錄下
cp test.py /etc/

2. 復制test.py順便改名為test2.py
cp test.py /etc/test2.py

3. 參數
cp -r 遞歸,復制目錄以及目錄的子孫后代
cp -p 復制文件,同時保持文件屬性不變    可以用stat
cp -a 相當於-pdr

遞歸復制test1文件夾,改名為test2
cp -r test test2

cp是個好命令,操作文件前,先備份
cp test.py test.py.bak

 

 

11、某些特殊的查

1. 查找命令文件的絕對路徑
which 命令
which ls 

2. 查看當前使用的用戶
whoami

3. 查看命令的幫助手冊
命令 --help   查看簡略的手冊
man  命令     進入less模式查看命令手冊

ls --help
man ls

4. 查看linux進程信息
命令:ps  # 相當於windows的任務管理器

參數:
    -e 顯示所有進程
    -f 全格式

示例:    
ps -e   顯示所有進程,且顯示進程所使用的環境變量。
ps -f   用ASCII字符顯示樹狀結構,表達程序間的相互關系


ps -ef  是用標准的格式顯示進程!!!
UID         PID   PPID   C    STIME    TTY          TIME       CMD
root         2      0    0    15:41     ?         00:00:00  [kthreadd]
root       87794  87790  0    17:18    pts/0      00:00:00    -bash

其中各列的內容意思如下:
UID    //用戶ID、但輸出的是用戶名 
PID    //進程的ID 
PPID   //父進程ID 
C      //進程占用CPU的百分比 
STIME  //進程啟動到現在的時間 
TTY    //該進程在那個終端上運行,若與終端無關,則顯示? 若為pts/0等,則表示由網絡連接主機進程。 
CMD    //命令的名稱和參數

ps -aux  是用BSD的格式來顯示,跟ps -ef相類似!!!


5. 查看端口
命令:netstat

參數:
    -a (all)顯示所有選項,netstat默認不顯示LISTEN相關
    -t (tcp)僅顯示tcp相關選項
    -u (udp)僅顯示udp相關選項
    -n 拒絕顯示別名,能顯示數字的全部轉化成數字。(重要)
    -l 僅列出有在 Listen (監聽) 的服務狀態

    -p 顯示建立相關鏈接的程序名(macOS中表示協議 -p protocol)
    -r 顯示路由信息,路由表
    -e 顯示擴展信息,例如uid等
    -s 按各個協議進行統計 (重要)
    -c 每隔一個固定時間,執行該netstat命令。 

示例:
列出所有端口:     netstat -a
列出所有tcp端口:  netstat -at
列出所有udp端口:  netstat -au

常用:
    netstat -tunlp

 

12、alias給命令設置別名

1. 查看系統默認有哪些別名
alias

可以看到一些命令的默認別名
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

查看某個命令的別名
alias rm

2. 別名作用
我們在linux中使用cp時候相當於執行了cp -i
-i:覆蓋已有文件或目錄之前先詢問用戶

別名是為了讓你在使用比較危險的操作,給你一些提示,防止你犯錯

3. 如何設置別名
alias rm="echo '別刪庫呀,跑路都跑不了!'"
下次出現rm命令時,就只會在終端顯示'別刪庫呀,跑路都跑不了!',而不會執行刪除操作了。
但是退出登錄后,再次登錄,rm命令的別名就會恢復為系統默認的別名。

4. 讓設置的別名永久生效
寫入到/etc/profile(針對登錄用戶的合同,設置環境變量)
第一步:vim /etc/profile #編輯文件
第二步:按大寫的G鍵,快速定位到最后一行
第三步:按小寫的o鍵,在當前行的下一行,創建一個新行,進入編輯模式
第四步:把這句代碼 source /etc/profile 寫在新行,保存退出 #讀取文件(合同生效)

5. 取消別名
unalias rm

 

13、find查找命令(在某個目錄下找某文件)

1. find語法
find 在哪里找(目錄) [找什么類型的文件] 要找的文件名是什么

2. 參數
-name 按照文件名查找文件
-type 查找某一類型的文件,諸如:
    f - 普通文件
    d - 目錄
    l - 符號鏈接文件(快捷方式)

    b - 塊設備文件
    c - 字符設備文件
    p - 管道文件
    
    s - socket文件

3. 例子
# 找到/etc下網卡的配置文件(名字是以 ifcfg開頭)
find /etc/ -name ifcfg*

# 找到/etc下所有名字以host開頭的文件(引號加不加都行)
find /etc/ -name 'host*'

# 找到/opt上一個名為settings.py
find /opt/ -name 'settings.py'

# 找出/tmp所有以 .txt結尾的文件
find /tmp/ -type f -name "*.txt"

 

14、grep(在某個段內容中找某個內容)

global search regular expression(RE) and print out the line,全面搜索正則表達式並把行打印出來,
是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來。

1. 語法
grep [參數] [--color=auto] [字符串] filename
參數詳解:
-i : 忽略大小寫
-n : 輸出行號
-v : 反向選擇
-r : 遞歸搜索
--color=auto : 給關鍵詞部分添加顏色

2. grep常用操作
grep  "你想搜索的內容"   在哪里搜索(文件)

3. 示例
grep 'root' passwd        在passwd文件中找到有"root"內容的所有行
grep -n 'root' passwd     在passwd文件中找到有"root"內容的所有行,並顯示行號
grep -i 'ROOT' passwd     在passwd文件中找到有"ROOT"內容的所有行,忽略大小寫
grep -v 'root' passwd     在passwd文件中找到沒有"root"內容的行
grep -n -i 'Root' passwd  在passwd文件中找到有"Root"內容的行,且忽略大小寫


4.在某個目錄下遞歸搜索某段字符串
"""
cd 進入你要搜索的目錄下,輸入命令:grep -rn "你要搜索的字符串"
這個命令會列出文件夾及子文件夾下所有文件里面包含搜索字符的文件及相關行。
"""
例如:
cd /tmp
grep -rn zbj  # 此時就會輸出/tmp目錄及其子目錄所有包含zbj的文件

# 結果
a.txt:1:zbj = 帥鍋  # 文件名:行號:內容
b.txt:5:zbj真的帥

 

15、管道符

1. 用法
Linux提供的管道符“|”將兩條命令隔開,管道符左邊命令的輸出會作為管道符右邊命令的輸入。
命令1 | 命令2 |命令3  --> 把命令1的結果傳到命令2中,由命令2對其進行二次處理,再把結果給命令3進行第三次處理...

2. 例子
找到/tmp目錄下所有txt文件
ls /tmp/|grep '.txt'  
# ls /tmp/的結果相當於生成了一個含有/tmp/目錄所有文件名的文件,把結果傳給grep命令,grep在結果找'.txt'結尾的

檢查nginx的端口是否存活
netstat -tunlp |grep nginx

 

16、查看

history     查看操作歷史記錄
tree 路徑   樹狀圖的形式查看目錄結構(需要下載 yum install tree -y)

 

17、head、tail命令

1. 命令
head [-n] 某個文件:顯示文件前幾行,n默認是10
tail [-n] 某個文件:顯示文件后幾行,n默認是10

2. 示例
查看前兩行
head -2 test.py

查看后兩行
tail -2 test.py

顯示文件10-20行之間的內容!!!
思路:先拿到前20行,然后通過管道符,丟給第二個命令 tail去處理
head -20 test.py | tail -11

3. tail的-f參數
持續刷新顯示文件的內容
tail -f test.py  // 會一直夯在那里,只有test.py被修改了,立刻把修改的內容也顯示出來

 

18、sed

sed是一種流編輯器,它是文本處理中非常中的工具,能夠完美的配合正則表達式使用,功能不同凡響。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接着用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接着處理下一行,這樣不斷重復,直到文件末尾。文件內容並沒有 改變,除非你使用重定向存儲輸出。Sed主要用來自動編輯一個或多個文件;簡化對文件的反復操作;編寫轉換程序等。

1. 命令格式
sed [options] 'command' file(s)
sed [選項] [動作] 文件

2. 參數(選項)
  -n, --quiet, --silent
    僅顯示script處理后的結果

  -e 腳本, --expression=腳本
    以選項中的指定的script(腳本命令)來處理輸入的文本文件(不會修改文本文件的內容)
                 
  -f 腳本文件, --file=腳本文件
    以選項中指定的script文件(腳本文件)來處理輸入的文本文件(不會修改文本文件的內容)

  -i
    直接修改讀取的文本文件內容,而不是輸出到終端(會修改文本文件的內容)

  -r, --regexp-extended
    在腳本中使用擴展正則表達式(不會修改文本文件的內容)
                 
  --help
    顯示幫助
    
  --version
    顯示版本信息

如果沒有 -e, --expression, -f 或 --file 選項,那么第一個非選項參數被視為
sed腳本。其他非選項參數被視為輸入文件,如果沒有輸入文件,那么程序將從標准輸入讀取數據。
即:如果沒有指定選項,默認等於 -e 選項

3.動作
3-1.常用動作
s 替換指定字符。(substitute)
i 在當前行上面插入文本。(insert)
a 在當前行下面插入文本。(append)
c 把選定的行改為新的文本。(change)
d 刪除,刪除選擇的行。(delete)
D 刪除模板塊的第一行。
p 打印模板塊的行。(print)
P(大寫) 打印模板塊的第一行。

3-2.其他動作
h 拷貝模板塊的內容到內存中的緩沖區。
H 追加模板塊的內容到內存中的緩沖區。
g 獲得內存緩沖區的內容,並替代當前模板塊中的文本。
G 獲得內存緩沖區的內容,並追加到當前模板塊文本的后面。
l 列表不能打印字符的清單。
n 讀取下一個輸入行,用下一個命令處理新的行而不是用第一個命令。
N 追加下一個輸入行到模板塊后面並在二者間嵌入一個新行,改變當前行號碼。
q 退出Sed。
b lable 分支到腳本中帶有標記的地方,如果分支不存在則分支到腳本的末尾。
r file 從file中讀行。
t label if分支,從最后一行開始,條件一旦滿足或者T,t命令,將導致分支到帶有標號的命令處,或者到腳本的末尾。
T label 錯誤分支,從最后一行開始,一旦發生錯誤或者T,t命令,將導致分支到帶有標號的命令處,或者到腳本的末尾。
w file 寫並追加模板塊到file末尾。  
W file 寫並追加模板塊的第一行到file末尾。  
! 表示后面的命令對所有沒有被選定的行發生作用。  
= 打印當前行號碼。  
# 把注釋擴展到下一個換行符以前。 


4.示例1
# 首先查看a.txt的內容
cat a.txt
111
222
333
111

# 在每一行上面添加"qqq"
sed 'iqqq' a.txt  # 即等於:sed -e 'iqqq' a.txt
qqq
111
qqq
222
qqq
333
qqq
111

# 此時a.txt的內容是沒有改變的,因為這里只是輸出到了終端
# 如果想a.txt的內容也改變,使用選項-i,修改a.txt文件
# 注意選項 -i 代表修改指定的a.txt文件,動作"i"是修改a.txt的方式
sed -i 'iqqq' a.txt
cat a.txt
qqq
111
qqq
222
qqq
333
qqq
111

# 先恢復a.txt的內容(便於演示)
# 在第一行上面添加"ccc"
cat a.txt
111
222
333
111

sed '1iqqq' a.txt
qqq
111
222
333
111

# 在最后一行上面添加qqq
sed '$iqqq' a.txt
111
222
333
qqq
111

# 在行為"111"的上面添加xxx
sed '/111/ixxx' a.txt
xxx
111
222
333
xxx
111

# 其他的,例如:a,c等操作都是大同小異
# 在第二行下面添加qqq
sed -e '2aqqq' a.txt
111
222
qqq
333
111

# 把第2行修改成qqq
sed -e '2c\qqq' a.txt (其實 \ 寫不寫好像都一樣)
111
qqq
333
111

# 把第2到3行的內容修改為 qqq
sed -e '2,3cqqq' a.txt
111
qqq
111

#刪除文件第二行
sed -e '2d' a.txt

#刪除文件第二行到第四行
sed -e '2,4d' a.txt

#刪除空白行
sed -e '/^$/d' a.txt

#刪除文件第二行,到末尾所有行
sed '2,$d' a.txt


5.示例2
# 選項 -n 只顯示修改的內容
sed -n '1iqqq' a.txt
qqq

# 打印第2行
sed -n '2p' a.txt
222

# 打印2到3行
sed -n '2,3p' a.txt
222
333

# 創建一個文件,寫入命令
cat sed_file
$iqqq

# 選項 -f 指定一個文件來執行
sed -f sed_file a.txt
111
222
333
qqq
111

# 選項 -r 可以使用正則
# 把每一行的數字替換成xxx
sed -r 's/[0-9]+/xxx/g' a.txt
xxx
xxx
xxx
xxx


5.動作 s 示例
# sed替換標記
g 表示行內全面替換。  
p 表示打印行。  
w 表示把行寫入一個文件。  
x 表示互換模板塊中的文本和緩沖區中的文本。  
y 表示把一個字符翻譯為另外的字符(但是不用於正則表達式)
\1 子串匹配標記
& 已匹配字符串標記

# sed元字符集
^ 匹配行開始,如:/^sed/匹配所有以sed開頭的行。
$ 匹配行結束,如:/sed$/匹配所有以sed結尾的行。
. 匹配一個非換行符的任意字符,如:/s.d/匹配s后接一個任意字符,最后是d。
* 匹配0個或多個字符,如:/*sed/匹配所有模板是一個或多個空格后緊跟sed的行。
[] 匹配一個指定范圍內的字符,如/[ss]ed/匹配sed和Sed。  
[^] 匹配一個不在指定范圍內的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一個字母開頭,緊跟ed的行。
\(..\) 匹配子串,保存匹配的字符,如s/\(love\)able/\1rs,loveable被替換成lovers。
& 保存搜索字符用來替換其他字符,如s/love/**&**/,love這成**love**。
\< 匹配單詞的開始,如:/\<love/匹配包含以love開頭的單詞的行。
\> 匹配單詞的結束,如/love\>/匹配包含以love結尾的單詞的行。
x\{m\} 重復字符x,m次,如:/0\{5\}/匹配包含5個0的行。
x\{m,\} 重復字符x,至少m次,如:/0\{5,\}/匹配至少有5個0的行。
x\{m,n\} 重復字符x,至少m次,不多於n次,如:/0\{5,10\}/匹配5~10個0的行


# 替換test.py中所有的小明變為如花
cat test.py
小明aa小明
小明bb小明
小明cc小明


# 匹配每一行第一個小明替換為如花,此時結果輸出到屏幕,不會寫入到文件
sed 's/小明/如花/' test.py
如花aa小明
如花bb小明
如花cc小明

# 使用選項-i,匹配每一行第一個小明替換為如花,並寫入文件
sed -i 's/小明/如花/' test.py
cat test.py
如花aa小明
如花bb小明
如花cc小明

# 使用替換標記g,可以替換所有的匹配
sed -e 's/小明/如花/g' test.py
如花aa如花
如花bb如花
如花cc如花

# 把所有的英文替換為數字 1 
sed -r 's/[a-z]+/1/g' test.py
小明1小明
小明1小明
小明1小明

 

19、scp命令

Linux scp命令用於Linux之間復制文件和目錄。
scp是 secure copy的縮寫, scp是linux系統下基於ssh登陸進行安全的遠程文件拷貝命令

1. 注意
第一點:linux的防火牆
# 1. 查看
systemctl status firewalld # 查看防火牆狀態
systemctl is-enabled firewalld.service  # 檢查防火牆服務是否啟動
注意:防火牆服務是否啟動不代表當前防火牆的狀態,防火牆服務啟動代表,下一次重啟Linux服務器,會自動開啟防火牆 iptables -L 查看防火牆規則 iptables -F 清空防火牆 # 2. 臨時關閉 # 下次開機會自動重啟防火牆服務 systemctl stop/start/restart firewalld # 關閉/開啟/重啟firewalld服務 iptables -F 清空防火牆 # 3. 永久關閉 # 把服務停了,然后再關閉開機自動開啟防火牆的服務,可實現永久關閉。 systemctl stop/start/restart firewalld # 關閉/開啟/重啟firewalld服務 iptables -F 清空防火牆 systemctl disable/enable firewalld # 永久關閉/開啟防火牆 第二點:selinux 關閉系統自帶的,美國航空局的selinux
# 1.臨時關閉 getenforce 獲取selinux狀態 如果是 Enforcing就是開啟狀態 setenforce 0 臨時關閉selinux
# 2.永久關閉
# 編輯系統配置信息
vim /etc/sysconfig/selinux
把SELINUX=enforcing改為SELINUX=disabled
重啟服務器:reboot

2. 語法 scp 【可選參數】 本地源文件 遠程文件標記 scp 【可選參數】 遠程文件標記 本地源文件 3. 參數 -r :遞歸復制整個目錄 -v:詳細方式輸出 -q:不顯示傳輸進度條 -C:允許壓縮 4.示例 # 傳輸本地文件到遠程地址 scp 本地文件 遠程用戶名@遠程ip:遠程文件夾路徑/ scp 本地文件 遠程用戶名@遠程ip:遠程文件夾路徑/遠程文件名 scp /tmp/test.py ming@192.168.3.38:/home/ scp /tmp/test.py ming@192.168.3.38:/home/my_test.py # 傳輸本地目錄到遠程地址 scp -r 本地文件夾 遠程用戶名@遠程ip:遠程文件夾/ scp -r /tmp/hello ming@192.168.3.38:/home/ #復制遠程文件到本地 scp ming@192.168.3.38:/home/aa.txt /tmp/ scp -r ming@192.168.3.38:/home/world /home/

 

20、du命令

Linux du命令用於顯示目錄或文件的大小。
du會顯示指定的目錄或文件所占用的磁盤空間。

1. 語法
du [參數] [文件或目錄]

2. 參數
-s 顯示總計
-h 以k,M,G為單位顯示,可讀性強

3. 示例
顯示目錄或文件所占空間
#不寫參數,代表顯示當前目錄所有文件大小
du /etc/

#顯示/etc/的總大小
du -sh /etc/

 

21、top命令

top 命令用於動態地監視進程活動與系統負載等信息

運行top命令之后,如果想退出該命令,鍵入q即可或按ctrl c

 

22、查看內存狀態

free -m

 

23、a給文件枷鎖

給文件加鎖后,文件只能進行讀操作,無法修改和刪除文件
chattr +a test.py   設置鎖
chattr -a test.py   解鎖
lsattr    test.py   查看鎖

 

24、linux時間同步

NTP協議:網絡時間協議(Network Time Protocol)

通俗來說,NTP協議就是用來同步網絡中各個計算機的時間的協議

NTP配置步驟:

1、確認ntp的安裝

1,確認是否已安裝ntp:rpm –qa | grep ntp

若只有ntpdate而未見ntp,則需刪除原有ntpdate。如:

ntpdate-4.2.6p5-22.el7_0.x86_64
fontpackages-filesystem-1.44-8.el7.noarch
python-ntplib-0.3.2-1.el7.noarch

2,刪除已安裝ntp:yum –y remove ntpdate-4.2.6p5-22.el7.x86_64

3,重新安裝ntp:yum –y install ntp

 

1. 查看時間信息
date:可以查看系統時間,查看的是軟件時鍾
hwclock:硬件主板的時鍾信息

在Linux下系統時間和硬件時間不會自動同步,在Linux運行過程中,系統時間和硬件時間以異步的方式運行,互不干擾。
硬件時間的運行,是靠Bios電池來運行,而系統時間是用CPU tick來維持的。
在系統開機時候,會從Bios中獲取硬件時間,設置為系統時間
  

2. 如果時間不正確,或者不精確,可以與時間服務器同步 
使用命令 ntpdate 與阿里雲的時間服務器同步,更新系統時間
ntpdate -u ntp.aliyun.com

//以系統時間為基准,修改硬件時間
hwclock -w

//以硬件時間為基准,修改系統時間
hwclock -s

 

25、wget命令

wget命令用於在終端下載網絡文件
1. 語法
wget [參數] 下載地址

2. 參數和示例
-O    可以指定下載到哪個路徑下,並重命名下載的文件(不寫這個參數,默認下載到當前目錄下)
      wget -O /tmp/my_girl.gif http://www.baidu.com/girl.gif

-o 把下載信息存入日志文件 wget
-o download.log URL -c 重新啟動下載中斷的文件 wget -c URL -b 后台下載(使用 tail -f wget-log 命令來察看下載進度) -r 下載整個網站、目錄 -p 下載所有為了html頁面顯示正常的文件 wget -r -p http://www.baidu.com/girl.gif 遞歸下載所有資源 -i 下載多個文件 保存一份下載鏈接文件 vim filelist.txt url1 url2 url3 url4 接着使用這個文件和參數-i下載 wget -i filelist.txt

 

26、虛擬機Linux系統和windows系統進行文件傳輸

1. 要傳輸到windows,得安裝一個上傳下載工具,工具包的名字是 lrzsz 
yum install lrzsz -y 

2. 安裝完之后就有兩個命令
rz(receive):接收windows傳來的文件
sz(send):發送Linux的文件到windows

3. 示例
rz 直接回車:接收一個文件到linux 
sz 文件名  : 發送這個文件到windows

 

27、開關機命令

重啟機器的命令 reboot
關機命令 poweroff 

 

28、拓展

127.0.0.1和0.0.0.0的區別
假設我的電腦ip是192.168.3.16,那么
127.0.0.1        代表本機回環地址
0.0.0.0            代表着127.0.0.1加上192.168.3.16

那么,如果我在本機起了一個服務,
如果我設置的服務ip地址為127.0.0.1,就代表這個服務只有我自己本機才能訪問,
如果我設置的服務ip地址為0.0.0.0,就代表這個服務我自己本機可以訪問,你使用192.168.3.16也可以訪問到。


因此,為什么Xshell可以遠程連接到linux服務器
1.因為服務器運行着sshd服務
2.且sshd服務運行在0.0.0.0:22端口 
3.我們就可以使用   ssh root@192.168.3.16:22去訪問sshd服務,這個服務就是讓我們連接到服務器

 

29、Linux命令查詢手冊網址

http://linux.51yip.com/
http://man.linuxde.net/

 

六、修改Linux終端輸出顏色

Linux終端常用的一些顏色碼。字體顏色碼有:重置=0,黑色=30,紅色=31,綠色=32,黃色=33,藍色=34,洋紅=35,青色=36,白色=37;背景色有:黑色底=40,紅色底=41,綠色底=42,黃色底=43,藍色底=44,紫色底=45,天藍底=46,白色底=47。

轉義序列設置終端顯示屬性時,常見格式為:

\033[顯示方式;前景色;背景色m "輸出字符串" \033[0m

或

\e[顯示方式;前景色;背景色m "輸出字符串" \e[0m

# 其中 ,'\033[0m'用於恢復默認的終端輸出屬性,否則會影響后續的輸出。

 

注意:開頭部分的三個參數:顯示方式,前景色,背景色是可選參數,可以只寫其中的某一個;另外由於表示三個參數不同含義的數值都是唯一的沒有重復的,所以三個參數的書寫先后順序沒有固定要求,系統都能識別;但是,建議按照默認的格式規范書寫。

 
        
     對於結尾部分,其實也可以省略,但是為了書寫規范,建議\033[***開頭,\033[0m結尾。

 

前景色
背景色  
顏色
30 40 黑色
31 41 紅色
32 42 綠色
33 43 黃色
34 44 藍色
35 45 紫紅色
36 46 青藍色
37 47 白色

 

顯示方式
意義
 0
終端默認設置
 1
高亮顯示
 4
使用下划線
 5
閃爍
 7
反白顯示
 8
不可見

 

 例如:

1.要將輸出的字體設置為紅色,字體紅色的顏色碼為31,設置方式如下

echo -e "\e[1;31m This is red text! \e[0m"

 

 2要將輸出的字體設置為黃色,字體黃色的顏色碼是33,設置方式如下:

echo -e "\e[1;33m This is red text! \e[0m"

 

 3.要將輸出的文本背景色設置為紅色底,背景色青藍底的顏色碼是46,設置的方式如下:

echo -e "\e[1;46m This is red text! \e[0m"

 

 

 4.Linux中一個好看的命令提示符PS1

PS1="\[\e[01;31m\]\u@\h \[\e[01;36m\]\w \[\e[01;32m\]o \[\e[00m\]"

注意:上面使用 \[ ] 進行了轉義,不然會出現無法換行的情況

即這么理解:
PS1="\[ \e[01;31m\  ] \u@\h \[ \e[01;36m\ ] \w \[ \e[01;32m\ ] o \[ \e[00m\ ]"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM