web開發中,必須掌握的linux概念及經常使用命令

本文已同步到github web前端開發中,需掌握的linux概念及經常使用命令,歡迎收藏,歡迎Star前端

前一段時間閱讀了《鳥哥的linux私房菜》的部分章節,也作了一些筆記,就在我再次打開筆記時,發現不少命令這是啥東東,有的都忘了,不過從頭看一遍本身的筆記,就很快想起來了,從我我的的角度,平時學習過程當中,記筆記確實是必要的。因此想把本身整理出的這些筆記整理一下,也分享給你們。那從何提及呢?既然是講linux筆記,那就先說一句吧,在linux中,一切皆文件。node

1. 環境變量

環境變量(environment variables) 通常是指在操做系統中用來指定操做系統運行環境的一些參數,如:臨時文件夾位置和系統文件夾位置等。環境變量是在操做系統中一個具備特定名字的對象,它包含了一個或者多個應用程序所將使用到的信息。

查看環境變量的配置格式, 如查看$PS1(操做系統及當前用戶的相關信息)的配置linux

echo $PS1

臨時設置直接給$PS1賦值便可git

$PS1='[\u@\h \w]$'

如需永久生效,則須要修改/etc/profile文件的配置github

export PS1="[\u@\h \t]$"

而後執行,source命令便可(一般用於從新執行剛修改的初始化文件,使之當即生效,而沒必要註銷並從新登陸)web

source /etc/profile

PATH環境變量

命令存放的路徑, 是系統建立好的, 供用戶使用, 隨時隨地使用
echo $PATH // 查看PATH環境變量

在執行命令如 ls 的時候, 會在PATH中查找, 沒有提示command not foundshell

命令軟件可安裝在以下目錄中vim

  1. /bin
  2. /sbin
  3. /usr/bin
  4. /usr/sbin
  5. /usr/local/bin
  6. /usr/local/sbin

2. 硬連接與軟連接

2.1 硬連接(Hard Link)

在同一分區中, inode號碼相同的文件互爲硬連接, 硬連接也就是文件的入口, 通常都是系統默認建立的防止誤刪除, 建立硬連接只能給文件建立硬連接, 不能給目錄建立硬連接

建立硬連接:segmentfault

ln 源文件入口 建立的硬連接入口

例如: 給 /test/a.txt 建立一個硬連接windows

建立硬連接

2.2 軟鏈接(Symbolic Link)

存放的源文件的位置(inode節點號與源文件不一樣),至關於windows的快捷方式

建立軟連接:

ln -s 源文件入口 建立的軟連接入口

例如: 給 /test/a.txt 建立一個軟連接

建立軟鏈接

2.3 硬連接與軟鏈接的區別

  1. 互爲硬連接的inode號相同
  2. 軟鏈接與源文件的inode的節點號不一樣,
  3. 硬連接必須再同一個分區中, 軟連接可跨文件系統
  4. 不能對目錄建立硬連接, 軟連接能夠(常常用)

2.4 完全刪除一個文件

  • 硬連接數爲0(rm -f 硬連接)
  • 進程調用數爲0

如何查看文件被哪一個進程調用

lsof | grep 文件名

若是硬連接數爲0, 但文件被進程調用, 重啓對應的軟件或服務便可

3. vim編輯文件時的快捷鍵及編輯、保存、退出操做

3.1 vim快捷鍵

  • G : 文件的最後一行(非編輯INSERT狀態下)
  • gg : 文件的第1行(非編輯INSERT狀態下)
  • o : 當前行下面一行插入一個空行並進入編輯模式
  • u : 撤銷(非編輯INSERT狀態下)
  • C : 刪除光標所在位置到行尾內容,並進入到編輯模式
  • A : 快速到達當前行的結尾, 並今日到編輯模式

3.2 編輯、保存、退出操做

  • 1.按鍵盤 i 進入編輯模式, 進行文件配置
  • 2.按鍵盤 esc 退出編輯模式
  • 3.輸入:wq 保存並退出
  • 4.若是文件無改動時退出 :q
  • 4.若是文件有改動, 不想保存修改的文件, 輸入:q!

注意: vim編輯文件, 輸入法必須在英文模式下

4. /etc目錄下的配置文件

目錄 功能
/etc/profile 通常進行系統全局環境變量永久生效或別名的配置文件
/etc/selinux/config selinux防火牆的配置文件
/etc/init.d/iptables iptables防火牆的配置文件
/etc/sysconfig/i18n 字符集的配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0 網卡配置文件
/etc/sysconfig/network 可配置主機名
/etc/hosts 解析主機名與ip地址的對應關係
/etc/bashrc 別名配置文件

5. 網卡(網絡適配器)配置文件

網卡配置文件的位置在/etc/sysconfig/network-scripts/ifcfg-eth0, 默認配置項包括:
  • 1. DEVICE: 網卡的名稱
  • 2.TYPE: 網絡類型
  • 3.UUID: 系統中給每一個設備分配的標識符號, 在系統中惟一
  • 4.HWADDR: HardWare Address 網卡的硬件地址/mac地址/物理地址, 全世界惟一, 在生產網卡時就已經肯定
  • 5.ONBOOT: 開機或重啓網絡的時候是否自啓動
  • 6.NM_CONTROLLED: 網卡的配置文件是否受系統newwork服務這個軟件控制, 若是系統或網絡從新鏈接, 網卡就重啓了
  • 7.BOOTPROTO: 網卡獲取ip的方法
1.static/none: 固定ip,需手動設置
2.dhcp: 系統默認自動獲取
  • 8.IPADDR: 網卡的ip地址
  • 9.NETMASK: 子網掩碼, 決定了一個局域網中最多能夠有多少臺機器(255.255.255.0至關於PREFIX=24)
  • 10.GATEWAY: 網關 ?<span style="color: red">不太理解</span>

6. 別名 alias

6.1 查看linux中默認的別名設置

執行alias命令便可

alias

輸出以下:

linux系統中默認別名

6.2 別名設置
6.2.1 臨時生效

臨時設置命令的別名, 命令行直接alias + 命令 = "自定義命令"便可, 如

alias rm="echo xxx"

在命令行中執行:

rm /a.txt     // 輸出xxx a.txt

注意:

1.當從新登陸服務器後, 別名設置失敗
2.在設置別名後, 如與原來命令功能不一樣, 但還想使用的話, 則在執行命令前加' '便可

\rm a.txt   //這時rm原有功能生效

6.2.2 永久生效

想要讓別名不管是否重啓服務器仍是從新登陸服務器都生效, 則需在 /etc/profile中,進行配置 alias rm="echo xxx", 而後執行命令:
source  /etc/profile

這樣,rm的別名設置將永久生效

6.3 取消別名設置

unalias rm

7. linux下面安裝軟件方式

7.1 yum

是一個在Fedora和RedHat以及CentOS中的Shell前端軟件包管理器, 在linux環境下, 就可使用yum命令,前提是須要網絡。

特色:

  1. 自動解決須要安裝的軟件的依賴
  2. 須要網絡
yum install tree -y

7.2 rpm

在linux環境下, 就可使用yum命令,不須要網絡, 可是須要掛在光盤, 來提供軟件包的庫。

1.把設備掛在到服務器的目錄下

mount /dev/chrom /mnt

2.查看設備是否掛在成功

df -h

檢查設備掛載

3. 執行rpm命令安裝須要的軟件包,如:

rpm -ivh /mnt/Packages/lrzsz-0.12.20-27.1.el6.x86_64.rpm

4.檢查是否安裝成功lrzsz軟件包

rmp -qa lrzsz

5.能夠查看安裝的軟件包中的內容(可執行命令):

rpm -ql lrzsz

6.rpm 刪除安裝的軟件包:

rpm -e lrzsz

7.3 編譯安裝

默認安裝到/usr/local目錄下, 須要本身安裝依賴

8. tar 打包壓縮

8.1 建立壓縮包

(1). 打包/etc目錄到 /tmp/etc.tar.gz

tar  zcvf /tmp/etc.tar.gz  /etc

// z  經過gzipg工具進行壓縮
// c  create 建立壓縮包文件
// v  verbose 顯示壓縮過程
// f  指定文件

(2). 打包/etc目錄到 /tmp/etc.tar.gz 並排除掉/etc/services

tar  zcvf /tmp/etc.tar.gz  /etc --exclude=/etc/services

8.2 查看壓縮包內容

tar tf /tmp/etc.tar.gz

8.3 解壓壓縮包

8.3.1 解壓到當前路徑

tar xf /tmp/etc.tar.gz
// 默認解壓到當前路徑

8.3.2 解壓到指定目錄下

tar xf /tmp/etc.tar.gz  -C /ttt
// -C 解壓到指定目錄下

9. no space left on device 磁盤空間不足

9.1. 查看磁盤各分區佔用狀況

df -h

9.2. 進入分區使用率最高的查看該分區下各文件block大小

du -sh .*| sort -h //一層一層排查,確認好後再刪除

9.3. 查看系統中inode佔用磁盤狀況

df -ih   // 主要是查看系統中的小文件
// -i 顯示inode號
// -h 人能夠閱讀懂得顯示

9.4. 文件沒有被完全刪除(硬連接數爲0,可是文件被系統進程所調用)

經常使用命令

1. man

format and display the on-line manual pages 使用手冊

想查看哪一個命令如何使用,如查看ls命令如何使用:

man ls

2. ip

show / manipulate routing, devices, policy routing and tunnels 顯示網卡ip地址信息

知識點:

1. ip a  // ip address 縮寫

3. which

shows the full path of (shell) commands 展現命令的完整路徑

查看madir命令的完整路徑

which mkdir

4. pwd

print name of current/working directory 顯示當前工做目錄

5. ls

list directory contents 列出目錄的全部內容

5.1 列出/root目錄下的全部目錄及文件

cd /root
ls

5.2 列出/root目錄下的全部目錄及文件,並顯示文件的相關信息

```
cd /root
ls -l  // 至關於ll, -l : use a long listing format, 展現文件詳細信息
```

6. mkdir

-make directories 建立目錄

6.1. 建立 /data文件夾

mkdir /data

6.2. 用一條命令完成建立目錄/my/test,既建立/my目錄及/my/test目錄

mkdir -p /my/test

知識點:

-p --parents no error if existing, make parent directories as needed
  1. 若是文件已經存在,新建時不報錯
  2. 若是須要建立多級文件夾,會一直建立到最底層的父級文件夾

7. touch

change file timestamps 建立文件,修改文件時間戳

在data下面建一個文件test.txt

touch /data/test.txt

8. cd

cd -change direcory 切換目錄

8.1 進入/data/test目錄

cd /data/test

8.2 返回上一層目錄

cd ..

9. cp

-copy files and directories 拷貝文件或目錄

9.1 把/data/test.txt文件拷貝到/tmp下

cp /data/test.txt /tmp

9.2 拷貝/data目錄到/tmp目錄下

cp -r /data /tmp

知識點:

1. -r 參數表示遞歸複製目錄,一層一層的複製
2. -p 拷貝時,保持文件屬性不變
2. -a 至關於 -pdr

9.3 拷貝/data目錄到/tmp目錄下, 保持文件屬性不變

cp -p /data /tmp

10. mv

-move (rename) files 移動或重命名文件

10.1 把/data目錄移動到/root下

mv /data /root

10.2 把/data/a.txt 重命名爲b.txt

cd /data
mv a/txt b.txt

11. rm

-remove files or directories 刪除文件或目錄

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

cd /root/data
rm -f test.txt   // -f 「force」, 表示強制刪除

11.2 刪除目錄,刪除/data/test目錄

rm -r /data/test   // -r 刪除目錄

12. echo

-display a line of text 顯示文本行

12.1 爲/data/test.txt增長內容爲「I am studying linux.」

echo "I am studing linux" > /data/test.txt

知識點:

  1. 「>」 , 重定向,先清空文件內容,而後再追加到文件結尾
  2. ">>" ,追加劇定向 把內容追加到文件結尾

13. cat

concatenate files and print on the standard output 鏈接文件並打印輸出文件內容

13.1 顯示/test.txt的文件內容

cat /test.txt

13.2 與<<配合,追加多行內容到文件/a.txt中

cat >>/a.txt<<EOF

aaaa
bbbb
cccc
EOF

14. history

命令能夠用來顯示曾執行過的命令
history

15. df

查看磁盤空間

df -h // 查看block
df -i //查看inode

16. du

查看文件目錄下文件大小

du -sh /*   //查看根目錄下的全部文件大小

17. sort

排序

sort -參數 文件

-n // 按照數字順序排序
-r // 逆序
-k // 根據第幾列進行排序
-h // 人能夠讀懂的信息, 根據文件大小 T>G>M>K

18. ps

process status 進程狀態

18.1查看全部node進程

ps -ef | grep node

19. find

search for files in a directory hierarchy 在目錄層次結構中, 查找文件

19.1 在/data目錄下查找a.txt文件

find /data -type f -name "a.txt"

知識點:

  1. -type 查找內容的類型
  2. f 表示要查找的內容爲文件類型

19.2 find與 管道符 "|"配合使用 在/data目錄下查找a.txt文件,並刪除

find /data -type f name "a.txt" | xargs rm -rf

20. grep

-print lines matching a pattern 根據匹配的規則過濾文本內容

20.1 輸出test.txt文件中,包含aaa字符串的行

grep "aaa" test.txt

20.2輸出test.txt文件中,不包含aaa字符串的行

grep -v "aaa" test.txt  // -v參數: --invert-match 過濾掉不匹配的行

20.3 與管道符號配合使用,如過濾出命令歷史記錄中的全部cd命令

history | grep cd

21. awk

21.1 已知文件/data目錄下的test.txt文件內容爲:

aaa
bbb
ccc
ddd

輸出test.txt文件內容時,不包含bbb字符串:

awk '!/bbb/' /data/test.txt

21.2 輸出/data/text.txt的第二行

awk 'NR ==20' /data/text.txt

21.3 輸出/data/text.txt的第二行到第三行

awk 'NR ==2, NR==3' /data/text.txt

22. sed

用於過濾和轉換文本的流編輯器

22.1 /data/test.txt中內容爲aaa,把/data/a.txt的內容替換爲bbb

sed -i 's#aaa#bbb#g' /data/test.txt

知識點:

  1. -i --in-place 替換
  2. 固定用法, 's#要被替換的內容#替換後的內容#g'. '#'也可使用‘@’等等符號,通常經常使用‘#’

22.2 使用sed命令輸出行,如輸出/data目錄下test.txt的第20行,第20到30行

sed -n '20p' /data/test.txt
sed -n '20, 30p' /data/test.txt

23. ping

send ICMP ECHO_REQUEST packets to network hosts 檢查網絡是否連通

本週根據記錄的筆記,整理出了在web前端開發中,幾個linux中的相關概念和經常使用的命令,用法也都比較基礎,主要是方便查閱複習,同時分享給你們,更全的信息那固然是去查手冊了。若有問題,請各位大神多多指出,謝謝。最後,讓咱們一塊兒來ping一下百度吧,ping!! ping! ping!

ping www.baidu.com
相關文章
相關標籤/搜索