Linux

day07-linux指令

1、linux系統(tǒng)介紹

發(fā)展史
    unix:是一款操作系統(tǒng)揍障,收費的崔泵,有錢人用的東西
    mnix:unix的簡化版彩扔,也收費称诗,還可以接受
    林納斯脫襪子,用自己壓歲錢岩齿,買了mnix太颤,自己寫了一個linux,
    linux內核盹沈,windows操作系統(tǒng)內核  nt
    美國兩大派人物
        比爾蓋茨       copyright(版權意識)
        理查德斯托曼   copyleft(開源自由)   說服了 
        GNU/linux
    linux基金會上班呢龄章,三流的公司賣產品,二流的公司賣品牌乞封,一流的公司賣標準
優(yōu)點
    (1)開源免費
    (2)多用戶
    (3)良好的界面(桌面端瓦堵、字符端)
    (4)穩(wěn)定持久
發(fā)行版本
    只要是基于linux內核的操作系統(tǒng),統(tǒng)一稱為linux系統(tǒng)
    不同系列歌亲,基本指令都是一樣的,只有軟件的安裝方式不一樣
    大便系列:Debian
    Ubuntu:屬于大便系列  16.04  桌面端(個人計算機使用居多)
        apt-get
    賤兔系列:  Gentoo
    RedHat: 紅帽系列(收費的)
    CentOS:屬于紅帽系列澜驮,免費的陷揪,非常穩(wěn)定,常用作服務器系統(tǒng)
        也有桌面端   yum   6.8  7.x
    費德羅: Federo杂穷,紅帽系列   

2悍缠、遠程連接

使用工具:putty、xshell
打開你的虛擬機耐量,會出現(xiàn)login飞蚓,輸入用戶名  root  輸入密碼 123456  敲enter即可進入系統(tǒng)
修改配置文件,讓其有ip
    vi /etc/sysconfig/network-scripts/ifcfg-eth0 
先關機  poweroff   再去修改  編輯--虛擬網絡編輯器   VMnet0   手動選擇網卡

3廊蜒、簡單指令

[root@localhost ~]#
root: 超級管理員趴拧,擁有至高無上的權限溅漾,所以進來之后別亂動
    為了防止系統(tǒng)玩壞,首先拍個快照著榴,純凈水
localhost:主機名
~ : 代表的是在哪一個目錄下面添履,~代表的是當前用戶的家目錄
# : 代表的意思是超級管理員在執(zhí)行指令,
$: 代表的是普通用戶在執(zhí)行指令
如果是普通用戶bajie脑又,進來之后就是這樣的:[bajie@localhost ~]$

簡單指令:
pwd : 當前目錄的絕對路徑
ls : 顯示當前目錄里面所有的文件
cd : 切換目錄   cd  目錄路徑
    目錄就是文件夾
    絕對路徑 :相對于跟目錄的路徑
    相對路徑 :相對于當前目錄的路徑
        ./ : 當前目錄里面的哪個文件   可以省略不寫    ?
        ../ : 上一級目錄下面哪個文件    ?
    / : 跟目錄
    ../ : 上一級目錄     ?
    ~ : 當前用戶的家目錄   root用戶的家目錄就是  /root
        普通用戶的家目錄   /home/bajie
        去往家目錄的快捷鍵  cd 
        cd ~ == cd     ?
    - : 去往上一個目錄暮胧,類似遙控器的  回看
關機指令:poweroff  halt
重啟指令:reboot
tab鍵:自動補全功能    ?
清除屏幕: clear
ctrl + l: 清除屏幕
ctrl + a: 快速的來到指令的最前面     ?
ctrl + e : 快速的來到指令的最后面   ?
ctrl + c : 終止當前的進程    
ping :測試兩臺機器是否聯(lián)通  
      ping ip地址
      ping 10.7.181.xx
上下按鍵:快速的調出歷史指令
shutdown : 
    shutdown -h now  立馬關機
    shutdown -r now  立馬重啟
    shutdown -h +5 '我要關機啦'   5分鐘之后關機
    shutdown -h 12:00 到指定的時間關機

4、ssh

ssh是一個協(xié)議(遠程登錄協(xié)議)问麸,同時也是一個指令往衷,ssh協(xié)議默認端口號是22
ssh也是linux里面的一個指令,可以實現(xiàn)登錄別的linux系統(tǒng)
    linux1登錄linux2严卖,通過ssh登錄
    windows登錄linux席舍,需要使用軟件,xshell
ssh root@10.7.181.66   輸入密碼即可登錄
ssh 用戶名@ip地址

5妄田、目錄結構

linux各種顏色的意思
下面是linux系統(tǒng)默認不同類型文件的顏色:
    白色:表示普通文件
    藍色:表示目錄
    綠色:表示可執(zhí)行文件
    紅色:表示壓縮文件
    淺藍色:鏈接文件
    紅色閃爍:表示鏈接的文件有問題
    黃色:表示設備文件
    灰色:表示其他文件
根目錄下的目錄都是什么意思
/bin : 二進制文件俺亮,指令存放地方
/boot : 存放和啟動相關的內容
/dev : 存放設備的地方(*)
/etc : 存放配置文件的地方(*)
/home : 家,普通用戶家目錄存放的地方(*)
/lib  /lib64 : 存放都是庫文件
lost + found : linux系統(tǒng)文件獨有的一個目錄
/media : 媒體設備
/mnt : mount  是以后我們要掛載的地方(*)
/opt : 可選的附加程序
/proc : 和進程相關的文件
/root : root用戶的家目錄(*)
/sbin : 只有超級管理員才能執(zhí)行的指令   sudo   ?
/selinux : 是linux的一種安全機制疟呐,基本沒用過脚曾,還得關掉它
/srv : 相關服務文件存放的地方
/sys : 和windows的sys,存放硬件相關驅動信息
/tmp : 臨時文件存放的地方
/usr : unix system resource, 自己后續(xù)手動安裝軟件的時候安裝到 /usr/local里面(*)
/var : 存放的是日漸增長的文件启具,比如日志本讥,比如數據庫等

6、ls

顯示當前目錄下面的所有文件
ls 目錄路徑(路徑鲁冯,絕對和相對都可以)
   ls  -a : 在linux里面拷沸,以點開頭的是隱藏文件,顯示所有文件
   ls  -R : 遞歸的顯示所有的文件    薯演?
   ls  -l : 以列表顯示文件的詳細信息撞芍,可以簡寫為  ll

ll之后的每一列代表的意思
第一列:文件類型
    - : 一個文件
    d : 一個目錄
    l : 一個鏈接
    c : 字符設備
    b : 塊設備
第二列-第十列:文件權限(詳情見后面)
第十一列:是一個點.沒影響,不用管
第十二列:如果是文件跨扮,代表的是硬鏈接的個數序无,如果是目錄,忘了   !=!
第十三列:所屬用戶  root
第十四列:所屬組    root
第十五列:文件的大小  kb   
         ls -lh 查看文件大小
第十六衡创、十七帝嗡、十八:文件創(chuàng)建、修改時間
第十九列:文件的名字

7璃氢、vi哟玷、vim

vi和vim是編輯器(編輯器之神)
vi是linux自帶的編輯器,vim是增強版的編輯器一也,但是需要安裝才能使用

簡單使用:
(1)vi 1.txt
    vi后面跟文件路徑巢寡,沒有就創(chuàng)建這個文件喉脖,有就打開這個文件
    進來就是vi的命令模式
(2)按小寫字母i
    從命令模式切換到了編輯模式、插入模式
    開始編輯
(3)按esc
    從編輯模式退出到命令模式
(4)輸入  :wq   保存并且退出   英文的冒號
    輸入冒號之后讼渊,稱之為底行模式

vi的其它用法
    命令模式==》編輯模式
        i : 在光標所在處進入編輯模式
        I : 在當前行的第一個非空字符進入編輯模式
        a : 在光標所在字符的后一個字符進入編輯模式
        A : 在光標所在行末尾進入編輯模式
        o : 在光標下新建一行進入編輯模式
        O : 在光標所在行的上面新建一行進入編輯模式
        s : 刪除當前字符進入編輯模式
        S : 刪除當前行進入編輯模式
    編輯模式==》命令模式
        按esc
    命令模式==》底行模式
        :   英文的冒號即可

vi的快捷鍵 (13個+7個+6個)
    gg : 快速切換到第一行的行首
    G :快速切換到最后一行的行首
    ngg : 快速切換到指定行的行首
    ^ : 快速切換到該行行首
    $ : 快速切換到該行行尾
    dd : 刪除光標所在行
    u : 撤銷操作
    ndd :刪除光標下n行动看,包含光標所在行
    yy :復制光標所在行
    p : 粘貼復制的內容
    np : 復制幾次
    nyy : 復制光標下n行,包含光標所在行
    10000dd : 刪除文件中所有行

    ctrl + f : 下一頁  forward
    ctrl + b : 上一頁  backward
    ctrl + d : 下翻半頁 down
    ctrl + u : 上翻半頁 up
    zt : 光標所在行頂行顯示  top
    zb : 光標所在行尾行顯示  bottom
    zz : 光標所在行中間顯示  zhongjian

    底行模式:
    :set nu  顯示行號
    :set nonu  取消顯示行號
    :wq      保存并且退出
    :x       保存并且退出
    shift+zz 保存并且退出
    :q!      不保存爪幻,強制退出

day08-linux

1菱皆、vi

字符串查找(常用)
   從上往下找    :/要查找的字符串   敲enter開始查找  n代表下一個  N代表上一個      
   從下往上找    ?/要查找的字符串   敲enter開始查找  n代表下一個  N代表上一個  ?挨稿?
        
字符串替換
    光標所在行時的字符串替換
        :s/孤單/幸福      將光標所在行的第一個孤單替換為幸福
        :s/孤單/幸福/g      將光標所在行的所有孤單替換為幸福
    指定行的字符串替換
        :n,ms/孤單/幸福     將n到m行第一個孤單替換為幸福
        :n,ms/孤單/幸福/g     將n到m行所有孤單替換為幸福
    所有行的字符串替換
        :%s/孤單/幸福      將所有行的第一個孤單替換為幸福
        :%s/孤單/幸福/g      將所有孤單替換為幸福

vi打開快捷到某行
    vi lala.txt +n    打開文件默認到第n行行首
    vi lala.txt +     打開文件默認到尾行行首

vi的配置文件  仇轻??奶甘?篷店?
    .vimrc   如果想用vi來寫python代碼,搞一個配置文件
    vi ~/.vimrc

vi的常見錯誤  臭家?疲陕??钉赁?
    非法編輯退出vi的時候蹄殃,會產生一個 .2.txt.swp 的一個交換文件,只要有這個文件存在, 那么打開這個文件的時候就會有提示你踩,不想要這個提示诅岩,刪除這個文件即可   
    rm -f .2.txt.swp
    vi -r 2.txt   恢復到上次編輯的內容

2、文件相關指令

文件和文件夾的相關指令带膜,創(chuàng)建吩谦、刪除、拷貝膝藕、移動式廷、查看

(1)創(chuàng)建:
    <1>創(chuàng)建文件:
          vi 文件路徑     
          touch 文件路徑
    <2>創(chuàng)建文件夾:
          mkdir 目錄路徑   創(chuàng)建指定的目錄
          mkdir -p dudu/haha/xixi   遞歸創(chuàng)建目錄

(2) 刪除
   一般都不刪除文件,一般都是備份一下芭挽,編輯新的文件
    <1>刪除文件:
         rm 文件路徑    
         rm -f 文件路徑   強制刪除
       通配符:*
        rm -f *.txt   刪除所有txt文件
        rm -f *       刪除所有文件

    <2>刪除目錄:
        rmdir 目錄路徑    只能刪除空目錄
        rm -rf 目錄路徑    刪除非空目錄

(3)拷貝
    <1>cp 源文件路徑 目標文件路徑
        拷貝文件的時候可以修改名字
    <2>cp -r 源文件夾 目標文件夾
        拷貝文件夾的時候可以修改
        cp -r lihong jielun/       使用原來的名字
        cp -r lihong jielun/hong   修改名字

(4) 移動
    <1>mv 源文件路徑 目標文件路徑
        移動的時候可以修改文件名字
    <2>移動文件夾不用加 -r 參數

(5)查看文件
    <1>vi就能查看
    <2>cat 文件名   
          -n 顯示行號
    <3>tac 文件名   倒著查看
    <4>head 文件名     默認查看文件前十行
          head  -5  文件名     查看文件前五行  
    <5> tail 文件名   默認查看文件后十行
          tail  -5  文件名    查看文件后五行
    <6> more 文件名
           enter : 往下走一行
           空格 : 往下走一頁
           不能向上看滑废,按q退出
    <7> less 文件名
           enter : 往下走一行
           空格 : 往下走一頁
           按q退出
           pageup   上翻頁
           pagedown 下翻頁
           /要查找的字符     也可在文件全文查找字符

3、文件系統(tǒng)

文件系統(tǒng)就是文件管理系統(tǒng)的簡稱览绿,不同的文件系統(tǒng)存儲和讀取數據的方式都不一樣,就會
導致同樣的東西穗慕,不同的文件系統(tǒng)來存饿敲,存的大小不一樣

apfs:蘋果手機的格式

常見的文件系統(tǒng)格式
windows:
    fat
        fat16  已經淘汰
        fat32  經常使用,尤其在u盤領域
        fat64  (exfat)  在windows和mac都可以直接讀寫
    ntfs
        windows的默認系統(tǒng)格式
linux:
    ext
    ext2
    ext3
    ext4  目前是這個格式  不能讀寫ntfs逛绵,如果要讀寫怀各,安裝其他軟件
mac:
    hfs
    hfs+  不能寫入ntfs倔韭,如果想要寫入,需要安裝插件瓢对,該插件收費

4寿酌、用戶和組?

linux是一個多用戶多組的操作系統(tǒng)
一個用戶能否屬于多個組  yes
一個組能否擁有多個用戶  yes
一個用戶至少必須屬于一個組硕蛹,一個用戶必須擁有自己的主組醇疼,其他組稱之為附加組

用戶創(chuàng)建
    useradd bajie   ?
    創(chuàng)建成功之后會留下記錄法焰,  tail /etc/passwd   秧荆?
    創(chuàng)建一個用戶的同時,會給當前用戶創(chuàng)建一個名字一模一樣的組作為該用戶的主組
    給用戶添加密碼
        passwd 用戶名
        (這個操作只能在root去給某個普通用戶設置密碼埃仪,在普通用戶下只能給自己修改密碼乙濒,不能設置其他普通用戶密碼)

    -d : 創(chuàng)建用戶的時候指定家目錄,不指定會在home下面創(chuàng)建一個和用戶名一模一樣的目錄卵蛉,一般不指定  颁股?
    -g : 指定主組,如果不指定傻丝,默認創(chuàng)建一個和用戶名一模一樣的組作為主組  甘有?
    -G : 指定附加組  ?
    -u :指定用戶id    一般都不用  桑滩?

用戶修改
    usermod
    -g : 修改主組  梧疲?
        usermod -g 501 bajie   修改bajie主組
    -l : 修改用戶名  ?
        usermod -l wuneng bajie   將bajie用戶名修改為wuneng
    -u : 修改用戶id   运准?
        usermod -u 505 wuneng   將wuneng用戶id修改為505
    -d : 修改家目錄  幌氮?
        usermod -d /home/lala wuneng   不用

用戶刪除
    userdel
        userdel 用戶名     只刪除文件中的記錄
        userdel -r 用戶名  將家目錄一并刪除
        如果操作不規(guī)范,家目錄也可手動干掉

用戶切換
    centos里面
    su 用戶名
    從root切換到普通不用密碼
    從普通切換到root胁澳,需要輸入root的密碼该互,通過exit返回上一個用戶
    這里面不能sudo,因為不支持韭畸,如果要支持宇智,需要相關配置

    Ubuntu里面
    不允許root直接登錄,需要配置才可以胰丁。
    用普通用戶登錄随橘。  sudo 指令,提示輸入密碼锦庸,這個密碼是當前用戶的密碼

組創(chuàng)建
    查看當前組机蔗,  tail /etc/group
    groupadd 組名
    -g : 可以指定組id

刪除組
    groupdel 組名
    【注】如果一個組是主組的話,這個組刪不掉
    【注】如果一個組是一個用戶的主組,并且僅僅是這個用戶的主組萝嘁,而且組名和用戶名相同梆掸,那么在刪除用戶的同時,該組也就刪除了

修改組
    groupmod
    -g : 修改組的id號    groupmod -g 513 dudu
    -n : 修改組名        groupmod -n xixi dudu

5牙言、文件權限

權限什么意思酸钦?系統(tǒng)中,文件的權限都有哪些咱枉?讀卑硫、寫、執(zhí)行
讀:read   r   
寫:write   w    
執(zhí)行:execute  x

如果寫一個-代表沒有這個權限
權限表示
rwx     111     7   
rw-     110     6
r-x     101     5
r--     100     4
-wx     011     3
-w-     010     2
--x     001     1
---     000     0

rwx             r-x             r-x
所屬用戶權限     組內用戶權限     組外用戶權限
權限表示法:0755  

常用權限:0755(rwxr-xr-x)   0777(rwxrwxrwx)   0644(rw-r--r--)

修改權限修改組的指令不是亂用的庞钢,需要root用戶的權限才能修改拔恰,Ubuntu下需要使用sudo,centos需要切換root執(zhí)行

修改權限:chmod
    格式:  chmod 權限 文件路徑
    chmod 755 1.txt
    chmod g+w,g-x 1.txt   ?
        u : 修改所屬用戶
        g : 修改組內用戶
        o : 修改組外用戶
    目錄權限修改
        chmod 777 目錄路徑    只修改該目錄的權限
        chmod -R 777 目錄路徑   遞歸修改目錄里面所有文件的權限

修改用戶:chown
    chown 用戶名 文件路徑         只修改用戶名
    chown 用戶名:組名 文件路徑     用戶和組都修改
    chown :組名 文件路徑          只修改組名
    chown -R 用戶名:組名 目錄路徑      遞歸修改目錄里面所有文件的用戶和組

修改組:chgrp
    chgrp 組名 文件路徑
    chgrp -R 組名 目錄路徑      遞歸修改

umask
    是什么基括?
    系統(tǒng)創(chuàng)建文件默認權限是  644
    系統(tǒng)創(chuàng)建目錄默認權限是  755
    目錄默認比文件多了一個可執(zhí)行權限颜懊,對目錄來說,可執(zhí)行就是打開目錄
    umask就決定了文件和目錄的默認權限
        0777-0022 = 0755  這就是默認權限风皿,文件都少可執(zhí)行權限
    指定umask進行修改河爹,將umask指定為0011
        0777-0011 = 0766(目錄)  0666(文件)

6、文件搜索

find
用法如下:
find   在哪找   怎么找   找什么
在哪找:就是一個路徑桐款,默認是當前路徑
怎么找:按照名字咸这、大小、用戶魔眨,其實就是參數
    -name : 按照名字找
    -size : 按照大小找
    -user : 按照用戶找
    -group : 按照組找
    -maxdepth : 查找最大目錄級別
    -mindepth : 查找最小目錄級別
找什么:1.mp3  *.txt

find / -name dudu.py
find / -size 10k     等于10k的文件 
            +10k     大于10k的文件
            -10k     小于10k的文件
find / *.txt -user liuyan
find / -maxdepth 3 -mindepth 2 -name *.txt  找指定級別的文件

day09-linux

1媳维、文件內容搜索

grep 內容 文件路徑
參數:
-i :忽略大小寫
--color=auto : 顏色自動提示,將grep設置為默認顏色提示遏暴,其實就是可以給grep指令器別名

    vi ~/.bashrc  ?
    添加一句  alias grep='grep --color=auto'
    source ~/.bashrc  讓添加的指令生效

-n : 顯示內容出現(xiàn)的行號      (grep -n 內容 文件路徑)  --->必須空一格
-l : 顯示內容出現(xiàn)在的文件名     (grep -l 內容 文件路徑)
-c : 顯示出現(xiàn)該內容的次數     (grep -c 內容 文件路徑)

grep 王者榮耀 1.txt     --->找出在文件1.txt中包含王者榮耀的句子
grep 王者榮耀 *.txt    --->找出在所有txt文件中包含王者榮耀的句子
grep 王者榮耀 ~/.txt     --->找出所有家目錄下中包含王者榮耀的句子

也可以寫正則表達式, 注意使用 -P
    電話號碼的正則表達式:13838384380
    \d{11}
    ^1\d{10}    3456789
    ^1[3-9]\d{9}

   郵箱的正則表達式:  test@qq.com   duduxixi@163.com  lalahehe@sina.cn
    \w+@\w+\.(com|cn|net)

grep -P '1[3-9]\d{9}' 3.txt     (正則表達式查看侄刽,P必須大寫)
grep -E '1[3-9]\d{9}' 3.txt    (-E的效果一樣)

2、管道

格式: 指令1 | 指令2
指令1的輸出作為指令2的輸入朋凉,指令2的輸出顯示到屏幕中
常用的管道指令有:
    ls -l /etc | less
    ls -l /etc | head -5  顯示內容中的前5行
    ls -l /etc | tail -5   顯示內容中的后5行
    ls -l /etc | head -10 | tail -5    顯示內容中前10行中的后5行(即6-10行)
    ls -l /etc | grep 找的內容   顯示查找的內容

查看進程相關
    ps -ef | grep ssh

3州丹、搭建主機信任

密碼學的內容--->加密-解密,用到一個東西 --->秘鑰

加密-解密的秘鑰相同--->對稱加解密
加密-解密的秘鑰不相同--->非對稱加解密

一對秘鑰包括:公鑰和私鑰
公鑰:給你們杂彭,你們拿的都是公鑰
私鑰:我自己擁有墓毒,

公鑰加密-私鑰解密,
私鑰加密-公鑰解密

實現(xiàn)免密碼登錄亲怠,linux1登錄linux2所计,實現(xiàn)免密碼登錄:
  (1)在linux1上,生成公鑰和私鑰
          ssh-keygen   一路敲enter即可
  (2)來到生成秘鑰的文件中
         id_rsa : 私鑰
         id_rsa.pub : 公鑰
  (3)復制公鑰
        cat  id_rsa.pub   顯示公鑰的內容团秽,點右鍵復制
  (4)來到linux2中
         vi ~/.ssh/authorized_keys
         將公鑰粘貼進來即可
這樣在通過linux1登錄linux2的時候就實現(xiàn)了免密碼登錄

6主胧、scp

scp:基于ssh的cp钾腺,cp是實現(xiàn)本機之間來回拷貝,scp是在兩臺linux之間進行拷貝

scp的用法:
    scp 源路徑 目標路徑
    scp  1.txt   root@ip地址:路徑
     
    如果發(fā)送文件夾讥裤,需要添加 -r 選項
    scp -r 1.txt  root@10.7.181.10:/root

linux和linux之間使用scp進行互發(fā),如果搭建了主機信任姻报,不用輸入密碼

winscp己英,實現(xiàn)windows和linux之間使用scp進行互發(fā)
    安裝,使用即可吴旋,左邊:windows目錄损肛,右邊:linux目錄,相互拖動即可

4荣瑟、重定向

標準輸入(stdin, 鍵盤)治拿、標準輸出(stdout, 屏幕)

輸出重定向:意思就是不輸出到屏幕,輸出到其他地方
ls -l > 1.txt      >作用:首先清空文件笆焰,然后寫入文件
ls -l >> 1.txt     >>作用:追加內容

錯誤重定向:指令有錯劫谅,錯誤信息顯示到哪里
ls /lala 2> 1.txt   將錯誤信息顯示到指定文件中
ls /lala 2>> 1.txt  將錯誤信息追加到指定文件中

5、掛載嚷掠、磁盤相關指令

掛載:神馬意思捏检?看圖形


掛載.png
將u盤和目錄對應的過程就是掛載
(1)插上u盤
    u盤只能讓你的linux識別,如果是虛擬機不皆,在虛擬機設置里面點擊讓虛擬機識別贯城,
(2)linux識別成功之后,通過指令查看你的設備
    fdisk -l
    /dev/sda   就是linux系統(tǒng)的硬盤設備
    如果有分區(qū)  /dev/sda1   /dev/sda2  xxx

    u盤設備往下走
    /dev/sdb   就是你的u盤設備
    如果有分區(qū)  /dev/sdb1   /dev/sdb2

    掛載u盤
    mount -t  需要掛載的設備  掛載點
        auto : 自動識別
        vfat : fat32
        ntfs-3g : ntfs格式   需要插件支持
    -o iocharset=utf8  如果有中文霹娄,可以指定字符集
    mount /dev/sdb1 /mnt/usb

    取消掛載能犯,不能再掛載的目錄中取消掛載
    umount /dev/sdb1 /mnt/usb
    umount /dev/sdb1
    umount /mnt/usb
    如果取消掛載時候顯示該設備正在忙,需要輸入指令把使用的進程給干掉犬耻,再取消掛載即可
    fuser -m -k /mnt/usb
和磁盤相關的指令
df
    顯示當前可用的設備的使用情況
    -h  人性化的顯示大小
du
    當前目錄的使用情況
    -h  人性化的方式顯示大小

配置開機掛載
vi /etc/fstab
添加一行信息
/dev/sdb1     /mnt/usb      vfat    defaults      0 0

7踩晶、軟硬鏈接

link,為了解決文件的共享問題香追,引入了鏈接機制合瓢。分為軟鏈接和硬鏈接,以軟鏈接使用居多

硬鏈接
    ln 源文件 目標文件
    也可以使用link
    鏈接之后透典,目標文件和源文件內容相同晴楔,修改其中一個,另外一個也被修改
    在ll之后峭咒,可以看見硬鏈接個數税弃,增加
    刪除其中一個,另外一個不受影響
    可以理解為凑队,給一個文件起了一個外號则果、別名  
    【注1】不能給目錄創(chuàng)建
    【注2】創(chuàng)建完硬鏈接之后幔翰,你的用戶名和組信息不變

軟鏈接
    ln -s 源文件 目標文件
    軟鏈接創(chuàng)建之后,修改其中一個西壮,另一個也修改
    【注1】可以給目錄創(chuàng)建
    【注2】創(chuàng)建完之后遗增,用戶和組信息是創(chuàng)建時候的信息

軟硬鏈接的不同之處
    在linux里面,存放一個文件款青,由三部分組成做修,一個文件名,一個是文件索引(inode)抡草,一個是數據部分
    見百鳥朝鳳圖
軟硬鏈接.png

8饰及、壓縮和解壓(很常用)

在linux里面,常見壓縮格式有兩種康震,一種叫做gz燎含,一種叫做bz2
gzip\gunzip(后綴名是.gz)
    gzip 文件1 文件2
    生成之后,源文件不在了腿短,只有壓縮文件屏箍,每一個都生成一個壓縮文件
    gunzip 文件
    不能實現(xiàn)打包壓縮,不能實現(xiàn)保留源文件
bzip2\bunzip2(后綴名是.bz2)
    bzip2 文件1 文件2
    每一個生成一個壓縮文件
    -k : 保留源文件
    bunzip2 壓縮文件1 壓縮文件2
tar(可以實現(xiàn)壓縮和解壓橘忱,可以實現(xiàn)打包的功能)
    如果打包壓縮使用的gzip壓縮的铣除,那么后綴名  .tar.gz    .tgz
    如果打包壓縮使用的bzip2壓縮的,那么后綴名  .tar.bz2   
    常用的參數有:
    -z : 使用gzip壓縮
    -j : 使用bzip2壓縮
    -f : 打包壓縮的時候指定壓縮后的文件名
    -c : 打包文件
    -x : 解壓縮使用的
    -v : 壓縮和解壓縮時候顯示進度

打包使用gzip壓縮:
    tar -zcvf 壓縮后的名字.tar.gz 文件1 文件2 文件3
使用gzip解壓縮
    tar -zxvf 壓縮包.tar.gz
打包使用bzip2壓縮
    tar -jcvf 壓縮后的名字.tar.bz2 文件1 文件2 文件3
使用bzip2解壓縮
    tar -jxvf 壓縮包.tar.bz2

9鹦付、軟件安裝之yum安裝

紅帽系列軟件安裝使用  yum安裝
大便系列軟件安裝使用  apt-get安裝
去哪下載軟件呢尚粘?yum源,這個源在哪呢敲长?默認都有自己的源郎嫁,但是這個源是在國外的。所以使用linux經常將源設置為國內源祈噪,阿里源泽铛、清華源、搜狐源辑鲤、網易源盔腔、中科大源
如何配置為國內源?
打開阿里源月褥,點擊幫助
(1)mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
(2)下載對應的源配置文件
wget是一個專業(yè)的下載軟件弛随,但是需要安裝
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
或者
curl是自帶的,不用安裝
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
(3)執(zhí)行
    如果是本地宁赤,需要網絡舀透,吃飯的時候執(zhí)行,晚上執(zhí)行决左,熱點執(zhí)行
    yum clean all
    yum make cache

day10-linux

1愕够、軟件安裝

(1)yum安裝(多)
   安裝: yum install -y 包名   中間一路yes
   卸載:   yum remove -y 包名
    可以只下載安裝包走贪,不安裝
    yum install -y --downloadonly --downloaddir=./ wget
    下載就是.rpm的包。
(2)rpm安裝(一般不用惑芭,依賴軟件太多)
    不論你用的是yum還是用的rpm安裝坠狡,其實安裝的都是rpm包。在linux里面遂跟,安裝軟件的時候擦秽,不僅僅是安裝這么一個軟件,與之對應的要按照很多的依賴軟件
    a ==》 b===》c==》d
    如果使用rpm安裝漩勤,你要知道軟件依賴關系才能安裝,但是使用yum的話缩搅,不用知道依賴關系,yum自動為你解決
    比如  yum install -y --downloadonly --downloaddir=./ vim
        包含vim的包以及vim依賴的包,全部下載下來之后放接,估計10個包倘感,這10個都是rpm,請問先裝哪個后裝哪個堂鲤。
        yum install -y vim   依賴關系自動解決
    -ivh :安裝     rpm -ivh 包.rpm
    -e :卸載       rpm -e wget
    -ql : 列出包安裝路徑   rpm -ql wget
    -qi : 列出指定包的詳細信息  rpm -qi wget
(3)編譯安裝(多)
    相對來說亿傅,編譯安裝是需要編譯源碼的,安裝的軟件更加適合你的電腦瘟栖,你的軟硬件環(huán)境葵擎,更加的穩(wěn)定,相比較yum來說穩(wěn)定
    編譯安裝3個步驟:
    (1)配置
        ./configure --prefix=你安裝路徑(/user/local/mysql) --以及其它參數
    (2)編譯
        linux里面的軟件都是使用c半哟、c++寫的酬滤,所以你得有編譯器
        gcc gcc-c++
        yum install -y gcc gcc-c++
        make 
    (3)安裝
        make install
    走完一步之后,可以執(zhí)行一個指令  echo $?  ,如果返回0寓涨,代表上面指令執(zhí)行成功盯串,如果返回其它,說明執(zhí)行失敗
    指令可以連寫:   make && make install
    安裝ntfs-3g
    安裝python

2戒良、服務和進程相關指令

linux的啟動等級体捏,打開這個文件   vi /etc/inittab
0 : 關機等級
1 : 單用戶模式
2 : 多用戶的無網絡模式
3 : 多用戶模式,有網絡
4 : 保留模式
5 : 界面模式
6 : 重啟模式

切換等級   init 0   init 1   init 6
查看當前等級  runlevel   who -r
whoami  : 我是誰糯崎,查看當前用戶

查看隨開機啟動的服務
chkconfig --list

隨開機啟動的服務几缭,我們給他們起了一個非常好聽的名字,守護進程(daemon)
sshd   httpd   mysqld  其實就是一個隨機開機啟動的服務

開啟沃呢、關閉服務
    要有控制開啟奏司、關閉服務的腳本,比如iptables(防火墻)
    /etc/init.d/iptables start | stop | restart
    /etc/init.d/network start | stop | restart
    經常找腳本樟插,太不方便了韵洋,將服務腳本放到  /etc/init.d ,如果支持服務模式竿刁,那么就可以使用如下指令開啟和關閉
    service iptables start | stop | restart
    service network start | stop | restart

    一般情況,安裝服務的時候搪缨,控制服務的腳本在安裝包就有食拜,但是有的沒有,比如nginx沒有
    自己按照的服務副编,你就可以將腳本放到  /etc/init.d 里面负甸,然后通過service控制它的開啟和關閉  service nginx start

自己按照的服務隨開機啟動
    chkconfig nginx on   默認設置的等級為2345
    chkconfig nginx off
    還得給腳本權限,權限一般設置為755
    通過chkconfig --list 查看有沒有配置成功

進程相關指令
    top : 實時查看系統(tǒng)的運行情況
    w :查看系統(tǒng)的當前用戶的鏈接情況
    free : -h  內存的使用情況
    ps : 查看進程相關信息
        ps -ef | grep ssh
        ps aux | grep ssh
    kill : 殺死一個進程
        kill -9 進程id
    netstat -lnp : 查看網絡和端口使用情況
        netstat -lnp | grep 80

3痹届、shell簡介(了解一下)

shell編程   wget url    包.tar.gz
python break : 終止循環(huán)
       continue : 結束當次循環(huán)呻待,進入下一次循環(huán)

4、ftp服務搭建

ftp是什么队腐?文件傳輸協(xié)議蚕捉,用在將本地文件上傳到服務器
1、ftp搭建
   關閉防火墻和selinux
   setenforce 0
   依賴  gcc和openssl-devel和perl
   0柴淘、yum install -y gcc openssl-devel perl
   1迫淹、去pureftp官網    
       download==》releases==》pure-ftpd-1.0.41.tar.gz
   2、下載
       wget https://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.41.tar.gz
   3为严、解壓
       tar -zxvf 文件名
   4敛熬、配置
       ./configure                    #進行配置  -h 查看配置參數
       --prefix=/usr/local/pureftpd   #安裝目錄
       --without-inetd                #不使用ineted 超級服務器管理
       --with-altlog                  #采用alt日志
       --with-puredb                  #采用puredb來存儲ftp虛擬用戶信息
       --with-throttling              #開啟帶寬控制
        --with-tls                    #開啟ftps支持
        
        ./configure --prefix=/usr/local/pureftpd --without-inetd --with-altlog --with-puredb --with-throttling --with-tls

        echo $?  如果是0說明上一步成功,其它為錯誤
        
        make && make install
        
        
   5第股、修改配置文件
       cd configuration-file/
       mkdir /usr/local/pureftpd/etc   創(chuàng)建目錄
       cp pure-ftpd.conf  /usr/local/pureftpd/etc/
       修改:vi /usr/local/pureftpd/etc/pure-ftpd.conf 如下
           在文件最后添加如下兩行
           PureDB      /usr/local/pureftpd/etc/pureftpd.pdb
           PIDFile     /var/run/pure-ftpd.pid
   6应民、拷貝控制文件
       cp pure-config.pl /usr/local/pureftpd/sbin/
       chmod 755 /usr/local/pureftpd/sbin/pure-config.pl
   7、啟動服務
       cd /usr/local/pureftpd
       ./sbin/pure-config.pl  ./etc/pure-ftpd.conf
       檢查:ps -ef | grep ftp
       
   8夕吻、添加管理用戶
       useradd  test
       mkdir -p /var/www/html/
       chown -R test:test /var/www/html/
       ./bin/pure-pw useradd ftp_user1 -u test -d /var/www/html
       ftp_user1:ftp登錄用戶名
       -u:指定系統(tǒng)中存在的用戶
       -d:指定訪問的目錄
   9瑞妇、創(chuàng)建虛擬的用戶數據庫
       ./bin/pure-pw mkdb
       
       /usr/local/pureftpd/bin/pure-pw list            #查看用戶列表
       /usr/local/pureftpd/bin/pure-pw userdel  用戶名    #刪除用戶
   10、通過ftp鏈接工具(FileZilla)測試
   

5梭冠、nfs搭建

nfs是什么辕狰?可以實現(xiàn)linux之間的文件共享
nfs客戶端還有服務端
nfs搭建教程
服務器上操作
    關閉防火墻   service iptables stop
    關閉selinux  setenforce 0
    1、yum install -y nfs-utils
    2控漠、編輯配置文件
        vi /etc/exports
        /nfstest         10.0.144.0/24(rw,sync)
        要共享的目錄     網段
    3蔓倍、創(chuàng)建目錄
        mkdir /nfstest
        vi /nfstest/lala.txt
    4、啟動服務
        nfs是基于rpc協(xié)議的盐捷,所以首先啟動rpc
        service rpcbind start
        service nfs start
客戶端上操作
    1偶翅、yum install -y nfs-utils
    2、查看對應ip地址上面共享的目錄
        showmount -e 10.0.144.156
    3碉渡、掛載nfs
        mount -t nfs 10.0.144.156:/nfstest /mnt/usb
        mount -t nfs 10.7.181.94:/nfstest /mnt/usb
    4聚谁、配置開機掛載
        vi /etc/fstab
        10.0.142.34:/test/   /root/nfs   nfs   defaults  0   0

6、nginx服務搭建

nginx是什么? web服務器   apache打交道
nginx服務器的根目錄(www)在   /usr/local/nginx/html
ip:端口     域名(jd.com   baidu.com   taobao.com   mi.com)  
sb.com
DNS服務商滞诺,阿里云形导、騰訊云都有

一個服務器是否能放多個網站呢环疼?可以的,配置虛擬主機
nginx安裝
1朵耕、關閉防火墻和selinux
2炫隶、安裝依賴軟件
    yum install -y gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre pcre-devel
3、tar -zxvf nginx-1.11.5.tar.gz
4阎曹、創(chuàng)建www用戶伪阶,不允許以www用戶登錄系統(tǒng)
    useradd www -s /sbin/nologin
5、./configure --prefix=/usr/local/nginx --without-http_memcached_module --user=www --group=www   --with-http_stub_status_module --with-http_ssl_module
6处嫌、make && make install
7栅贴、cp nginx /etc/init.d/
8、開啟服務
    service nginx start
9熏迹、設置開機啟動
    chkconfig nginx on
    chkconfig --list      查看是否開機啟動
10檐薯、查看網絡和端口使用情況
    netstat -lnp | grep nginx
    nginx默認監(jiān)聽的端口為80端口



虛擬主機配置步驟
(1)修改nginx配置文件
    vi /usr/local/nginx/conf/nginx.conf
    在第116行加一行代碼
    include vhost/*.conf;
(2)新建一個vhost文件夾
    mkdir /usr/local/nginx/conf/vhost
(3)來到vhost下,新建一個虛擬主機配置文件
    vi /usr/local/nginx/conf/vhost/www.lala.com.conf
    server
    {
        server_name www.lala.com;
        root html/lala;
        index index.html;
    }

    [說明]:
    server_name : 域名
    root : 網站的根目錄
    index : 網站的默認首頁
(4)新建虛擬主機根目錄
    mkdir /usr/local/nginx/html/lala
    vi /usr/local/nginx/html/lala/index.html

    service nginx restart   重啟服務
(5)編輯本機的hosts文件
    C:\Windows\System32\drivers\etc\hosts
    10.9.151.154  www.lala.com

Python搭建教程


1癣缅、下載源碼
    Gzipped source tarball    這種后綴是 .tar.gz
    yum install -y zlib*  (必須的哥們)
    tar -zxvf Python-3.6.4.tgz
    cd Python-3.6.4
    
    編譯
    ./configure --prefix=/usr/local/python3 --enable-optimizations
    
    (必須的)
    vi Modules/Setup
        將第366行的那個#號去掉
        zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
        
    make && make install
2、鏈接過來指令包
    ln -s /usr/local/python3/bin/python3 /usr/bin/python3
    終端輸入python3,即可進入python3的終端模式
3哄酝、pip3設置
    find / -name pip3
    ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
    pip3 -V   查看pip3版本信息
    
    升級pip
    pip3 install --upgrade pip

CentOS和Ubuntu的區(qū)別


    1. centos中新建的非root用戶是沒有sudo的權限的友存,如果需要使用sudo權限必須在/etc/sudoers 中加入賬戶和權限,所以切換到root賬號的時候只需要輸入:su陶衅,加入root賬號的密碼即可屡立。 在Ubuntu中,一般使用sudo+命令搀军,如果是第一次使用會提示輸入當前用戶的密碼(而不是root的密碼)
    2. 在線安裝軟件中膨俐,centos使用的是yum命令,而ubuntu中使用的是apt-get命令罩句。除此之外yum中還有一個從軟件源中搜索摸個軟件的方法:yum search + 軟件名


CentOS7.0系列新指令:
    centos7.0 沒有netstat 和 ifconfig命令問題   
        yum -y install wget 
        yum -y install net-tools
    centos7.0服務管理相關指令
        https://www.cnblogs.com/lgqboke/p/6069170.html
ubuntu和centos不同.png

7焚刺、各系統(tǒng)指令區(qū)別總結

centos6.8
centos7.0
ubuntu16.04

需要執(zhí)行的下載指令有
yum install -y gcc gcc-c++
yum install -y zlib*
yum install -y nfs-utils
yum install -y gcc openssl-devel perl
yum install -y gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre pcre-devel

環(huán)境變量和shell編程

1. 環(huán)境變量

環(huán)境變量用來存儲工作環(huán)境信息的變量,主要分為系統(tǒng)全局變量和用戶級全局變量

  • 全局變量

    常見的全局環(huán)境變量 : 
      PATH    指令的搜索路徑
      HOME     用戶的工作目錄
      LOGNAME  用戶的登錄名
      SHELL    當前系統(tǒng)shell類型
    #使用全局變量
    echo $PATH  #顯示單個全局變量,注意使用全局變量门烂,必須加$
    export name='hello' #設置新的全局變量
    
    #系統(tǒng)級全局變量
    這類變量對系統(tǒng)內的所有用戶都生效乳愉,所有用戶都可以使用這類變量。
    這類變量在/etc/profile文件中設置屯远,只有root用戶才能設置
    vim /etc/profile
    export a=100
    :wq #存盤退出蔓姚,這個時候a不會立即生效,應該是有
    source  /etc/profile
    
    #單用戶級全局變量
    在用戶主目錄內有三個文件 ~/.bash_profile慨丐、~/.bashrc和~/.profile 在這個文件中定義變量只針對當前用戶坡脐,添加方式同系統(tǒng)級全局變量
    
  • 添加PATH環(huán)境變量

    echo $PATH  #x顯示全局PATH環(huán)境變量
    #1 臨時設置
    PATH=$PATH:/home/csl  #將/home/csl添加到系統(tǒng)環(huán)境變量,只針對當前登錄有效
    #2 對所有用戶永久有效
    vi /etc/profile
    export PATH=$PATH:/usr/local/sysbench/bin 
    source /etc/profile
    
    # 3.對登錄用戶有效
    # vi ~/.bashrc 在里面加入:
    export PATH=$PATH:/usr/local/mysql/bin
    source ~/.bashrc
    

2. shell編程

2.1 什么是shell

shell是一個命令解釋器房揭,將用戶輸入的命令解釋給操作系統(tǒng)內核备闲。

Shell既是一種命令語言晌端,又是一種程序設計語言。作為命令語言浅役,它類似于Windows下的cmd.exe斩松,可以交互式地解釋和執(zhí)行用戶輸入的命令;作為程序設計語言觉既,它定義了各種變量和參數惧盹,并提供了許多在高級語言中才具有的控制結構,但是Shell是不需要進行編譯的瞪讼,它是從腳本程序中一行一行的讀取并執(zhí)行命令钧椰。

Shell有兩種執(zhí)行命令的方式:交互式(Interactive),用戶輸入一條命令符欠,Shell就解釋執(zhí)行一條嫡霞;批處理(Batch),用戶事先寫一個Shell腳本(Script)希柿,其中有很多條命令诊沪,讓Shell一次把這些命令執(zhí)行完,而不必一條一條地敲命令曾撤。

2.2 常見的shell類型

Linux 的 Shell 種類眾多端姚,常見的有:

(1) BourneShell(sh):是由AT&T Bell實驗室的 Steven Bourne為AT&T的Unix開發(fā)的,它是Unix的默認Shell挤悉,也是其它Shell的開發(fā)基礎渐裸。Bourne Shell在編程方面相當優(yōu)秀,但在處理與用戶的交互方面不如其它幾種Shell装悲。

(2) BourneAgain Shell (即bash):是自由軟件基金會(GNU)開發(fā)的一個Shell昏鹃,它是Linux系統(tǒng)中一個默認的Shell。Bash不但與Bourne Shell兼容诀诊,還繼承了C Shell洞渤、Korn Shell等優(yōu)點。

(3) ash:ash Shell是由Kenneth Almquist編寫的属瓣,是Linux 中占用系統(tǒng)資源最少的一個小Shell您宪,它只包含24個內部命令,因而使用起來很不方便奠涌。

(4) CShell(csh):是加州伯克利大學的Bill Joy為BSD Unix開發(fā)的宪巨,共有52個內部命令,與sh不同溜畅,它的語法與C語言很相似捏卓。它提供了Bourne Shell所不能處理的用戶交互特征,如命令補全、命令別名怠晴、歷史命令替換等遥金。但是,C Shell與BourneShell并不兼容蒜田。該Shell其實是指向/bin/tcsh這樣的一個Shell稿械,也就是說,csh其實就是tcsh冲粤。

(5) KornShell(ksh):是AT&T Bell實驗室的David Korn開發(fā)的美莫,共有42 條內部命令,它集合了C Shell和Bourne Shell的優(yōu)點梯捕,并且與Bourne Shell向下完全兼容厢呵。Korn Shell的效率很高,其命令交互界面和編程交互界面都很好傀顾。

(6) zch:是Linux 最大的Shell之一襟铭,由Paul Falstad完成,共有84 個內部命令短曾。如果只是一般的用途寒砖,沒有必要安裝這樣的Shell。

  • 可以使用系統(tǒng)變量SHELL查看當前使用的shell:echo $SHELL
  • 也可以到/etc/shells文件里查看系統(tǒng)可以使用的shell

2.3 shell的交互方式

  • 命令行

  • 腳本執(zhí)行

    • 編寫腳本嫉拐,文件后綴名一般為.sh
    • 文件必須以#!/bin/bash開頭
    • 添加腳本的可執(zhí)行權限chmode +x 腳本名
    • 執(zhí)行腳本:
      • 在當前目錄里執(zhí)行:./腳本名
      • 在其他目錄中執(zhí)行:使用絕對路徑
    #!/bin/bash
    #使用#注釋哩都,第一行是特殊存在
    cd /
    ls -al
    
    :wq #存退出盤
    chmod +x 1.sh  #修改權限,添加可執(zhí)行權限
    ./1.sh   #執(zhí)行當前目錄下的shell腳本
    

2.4 定義變量

  • 變量類型

    • 局部變量:只在本shell中使用
    • 環(huán)境變量 : 使用整個系統(tǒng),一般大寫
  • 局部變量的使用

    #1 定義局部變量
    a=10 #注意等號兩邊不要留空格椭岩,否則會看成多個命令
    b=$a
    
    #2顯示局部變量
    echo $b
    echo $茅逮
    echo "a=$a"  #雙引號中的變量解釋
    
    #3.銷毀變量
    unset a #干掉一個變量璃赡,不要帶$符
    #注意反引號判哥,反引號引起來的是命令,可以執(zhí)行碉考,將執(zhí)行結果給變量
    d=`date`
    
    【注】:等號兩邊不要留空格
    
    • 位置變量

      $0 表示腳本的名稱
      $1-$9表示傳遞給腳本的的參數
      
      #test.sh腳本
      #!/bin/bash
      echo 'hello world'
      echo $0 $1 $2
      
      執(zhí)行輸出:
      hello world
      ./test.sh lala dudu
      
    • 特殊變量

      $#表示傳遞給腳本的參數個數
      $*表示傳遞給腳本的所有參數
      $?表示上一個命令執(zhí)行的返回值塌计,返回值為0表示成功執(zhí)行,否則命令執(zhí)行錯誤
      
    • 常量

    readonly a=10  #定義常量
    echo $a
    a='ll'  #-bash: name: 只讀變量,不能修改
    

2.5 引號

  • 雙引號中解釋變量侯谁,解釋轉義字符
  • 單引號不解釋變量锌仅、不解釋轉義字符
  • 反引號會執(zhí)行當中的內容
  • 特殊字符要用反斜線轉義:& * ?| $ ^

2.6 字符串

  • 計算字符串長度${#字符串名}
  • 提取子串:${字符串名:start:len}從下標為start開始墙贱,提取len個字符

2.7 數組

  • 數組定義:a=(1 2 3) #千萬注意热芹,數值之間用空格分隔
  • 獲取數組元素:${a[0]}
  • 賦值$a[0]=100
  • 獲取數組長度:{#a[@]}或者{#a[*]}

2.8 seq

  • 生成連續(xù)整數
  • 示例:seq 1 10,生成1-10的連續(xù)整數

2.9 運算

  • 數學運算
shell默認所有變量都是字符串,執(zhí)行數學計算需要用[]括起來
a=100
echo $[$a+10]
echo $[$a/2]
echo $[$a*2]
echo $[$a-80]
echo $[10%2]

echo $((3+5))
echo $((10/2))
echo $((10/3))  #3 整除
echo $((10*3))
echo $((10%3))

let a=5+6
echo $a
let a+=10
echo $a

echo `expr 3 + 5`  #也可以用expr進行計算
  • 關系運算

    運算符 說明 舉例
    -eq ==惨撇,相等返回 true伊脓。 [ a -eqb ]
    -ne !=,不相等返回 true魁衙。 [ a -neb ]
    -gt >报腔,如果是株搔,則返回 true。 [ a -gtb ]
    -lt <纯蛾,如果是纤房,則返回 true。 [ a -ltb ]
    -ge >=翻诉,如果是炮姨,則返回 true。 [ a -geb ]
    -le <=米丘,如果是剑令,則返回 true。 [ a -leb ]
  • 邏輯運算

    運算符 說明 舉例
    && 邏輯的 AND [[ a -lt 100 &&b -gt 100 ]] 返回 false
    || 邏輯的 OR [[ a -lt 100 ||b -gt 100 ]] 返回 true
  • 字符串判斷

    運算符 說明 舉例
    = 檢測兩個字符串是否相等拄查,相等返回 true吁津。 [ a =b ] 返回 false。
    != 檢測兩個字符串是否相等堕扶,不相等返回 true碍脏。 [ a !=b ] 返回 true。
    -z 檢測字符串長度是否為0稍算,為0返回 true典尾。 [ -z $a ] 返回 false。
    str 檢測字符串是否為空糊探,不為空返回 true钾埂。 [ $a ] 返回 true。
  • 文件判斷

    操作符 說明 舉例
    -d file 檢測文件是否是目錄科平,如果是褥紫,則返回 true。 [ -d $file ] 返回 false瞪慧。
    -f file 檢測文件是否是普通文件(既不是目錄髓考,也不是設備文件),如果是弃酌,則返回 true氨菇。 [ -f $file ] 返回 true。
    -r file 檢測文件是否可讀妓湘,如果是查蓉,則返回 true。 [ -r $file ] 返回 true榜贴。
    -w file 檢測文件是否可寫豌研,如果是,則返回 true。 [ -w $file ] 返回 true聂沙。
    -x file 檢測文件是否可執(zhí)行秆麸,如果是,則返回 true及汉。 [ -x $file ] 返回 true沮趣。
    -s file 檢測文件是否不為空(文件大小是否大于0),不為空返回 true坷随。 [ -s $file ] 返回 true房铭。
    -e file 檢測文件(包括目錄)是否存在,如果是温眉,則返回 true缸匪。 [ -e $file ] 返回 true。

2.10 分支語句

  • if-else

    a=100
    if [ $a -gt 90 ]
    then
        echo "a>90"
    else
        echo "a<=90"
    fi
    
  • case

    case $變量名 in
     模式1)
     命令序列1
     ;;
     模式2)
     命令序列2
     ;; 
     *)
     默認執(zhí)行的命令序列     
     ;; 
    esac
    
    1 #!/bin/bash
      2 case $1 in
      3     start | begin)
      4         echo "start"
      5         ;;
      6     stop | end)
      7         echo "stop"
      8         ;;
      9     *)
     10         echo "I don't know"
     11 esac
    

2.11 循環(huán)語句

for 變量 in 列表
do
    command1
    command2
    ...
    commandN
done

示例:
for i in 1 2 3 4 5;do
    echo $i
done

#從命令讀取值
for line in `cat 1.txt`;do 
    echo $line
done

#讀取目錄列表
for file in ~/*;do 
    echo $file; 
done

for i in `seq 1 100`;do
    let sum+=$i
done

#遍歷數組
for x in ${a[*]};do 
    echo $x; 
done
  • while
#當型循環(huán)
while condition
do
    command
done

sum=0
i=0
while [ $i -lt 10];do
   let sum+=$i
   let i+=1
done
  • until
#直到型循環(huán)
#condition為假執(zhí)行循環(huán)类溢,為真停止
until condition  
do
    command
done

until [ ! $i -lt 10 ];do 
    echo $i; 
    let i+=1; 
done

2.12 break和continue

和以前的用法一模一樣

2.13 函數

  • 函數必須先定義后使用
#函數定義
test()
{
    echo "簡單函數"
}
#函數調用
test()
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末凌蔬,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子闯冷,更是在濱河造成了極大的恐慌砂心,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛇耀,死亡現(xiàn)場離奇詭異辩诞,居然都是意外死亡,警方通過查閱死者的電腦和手機纺涤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門译暂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人撩炊,你說我怎么就攤上這事外永。” “怎么了衰抑?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵象迎,是天一觀的道長荧嵌。 經常有香客問我呛踊,道長,這世上最難降的妖魔是什么啦撮? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任谭网,我火速辦了婚禮,結果婚禮上赃春,老公的妹妹穿的比我還像新娘愉择。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布锥涕。 她就那樣靜靜地躺著衷戈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪层坠。 梳的紋絲不亂的頭發(fā)上殖妇,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天,我揣著相機與錄音破花,去河邊找鬼谦趣。 笑死,一個胖子當著我的面吹牛座每,可吹牛的內容都是我干的前鹅。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼峭梳,長吁一口氣:“原來是場噩夢啊……” “哼舰绘!你這毒婦竟也來了?” 一聲冷哼從身側響起葱椭,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤除盏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后挫以,有當地人在樹林里發(fā)現(xiàn)了一具尸體者蠕,經...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年掐松,在試婚紗的時候發(fā)現(xiàn)自己被綠了踱侣。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡大磺,死狀恐怖抡句,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情杠愧,我是刑警寧澤待榔,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站流济,受9級特大地震影響锐锣,放射性物質發(fā)生泄漏。R本人自食惡果不足惜绳瘟,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一雕憔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧糖声,春花似錦斤彼、人聲如沸分瘦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嘲玫。三九已至,卻和暖如春并扇,著一層夾襖步出監(jiān)牢的瞬間趁冈,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工拜马, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留渗勘,地道東北人。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓俩莽,卻偏偏與公主長得像旺坠,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子扮超,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內容

  • Linux習慣問題: 在vim編輯時取刃,按了ctrl + s后,再按ctrl + q就可以繼續(xù)執(zhí)行了出刷。ctrl + ...
    光著腳的鞋閱讀 4,516評論 0 16
  • 系統(tǒng)管理與維護命令 date date(選項)(參數) | 選項 | 說明 | | :-------- | ...
    蓓蓓的萬能男友閱讀 3,899評論 0 5
  • 前言 近期在準備搭建一個vue.js+node.js全棧開發(fā)的社區(qū)璧疗,之前由于沒有云服務器搭建經驗,這篇文章做一下相...
    技術宅小青年閱讀 4,474評論 1 30
  • 我以為再也不會見到周周,訣別的時候坷檩,我們變得劍拔弩張却音。 我臉上青筋暴露,怒目圓睜矢炼,有種怒發(fā)沖冠的誓死勁頭系瓢。 她相對...
    江覓閱讀 556評論 2 2
  • 沒錯這個標題說的就是我,這篇文字完全是來吐槽我自己的句灌,夷陋,, 來魔都一年半胰锌,一直是和大學時的室友兼閨蜜一起住骗绕,就在我...
    一時一言閱讀 226評論 0 0