Linux入門

1、Linux 安裝

準備工作

  Vmware

  RHEL 5.5

 

Vmware基本配置

 

Linux安裝及一般配置

 

磁盤的分區與目錄掛載

  硬盤零磁道位置的分區表記錄爲64B,因此一共可以創建4個主分區

 

實例:對30G硬盤,1G內存進行分區

/ 10G 強制爲主分區

/home 5G

/usr 5G強制爲主分區

/boot 500M

/var 8G

/swap 使用全部可用空間 交換空間的大小一般是物理內存的兩倍

最後有一個100M多的空閒空間不需要理睬

 

2、Linux介紹

Unix

 

GNU – GNU is Not Unix

 

GCC

 

GPL – General Public License,通用公共許可證

 

Free software – 自由軟件

 

Linux

 

Linux主要版本

  Ubuntu – 用戶桌面

  RedHat – 使用最廣,性能穩定,商業版,服務器

  CentOS – RedHat的克隆版,免費

 

Linux的優點

  性能穩定

  較高的安全性和Bug的快速修復

  支持多用戶多任務

  完善的用戶和羣組策略

  資源耗費低

  適合嵌入式應用

  免費或費用低廉

 

Linux的缺點

  專業軟件支持不夠

  廠商支持度不夠

  標準化不足

  使用不方便

 

3、Linux 桌面系統

圖形界面登錄

 

常用桌面系統 – GNOME、KDE(模仿windows桌面)

 

GNOME桌面系統演示

Nautilus使用 – 文件資源管理器

 

KDE桌面系統演示

Konqueror的使用

 

遠程登錄 - 一般將Linux作爲服務器用

 

SSH – Secure Shell, 安全外殼協議

  應用層和傳輸層上的協議

  支持多種系統

  加密且壓縮傳輸

 

SecureCRT – 收費 – 破解,不安全

  選中文本 -> 右擊

  會話選項 -> 外觀

  腳本 -> 開始錄製腳本

  右擊 -> 克隆會話

  右擊 -> 鎖定會話

 

Xshell – 免費 – 推薦使用

  外觀

  中擊 - 複製

  文件屬性 -> 終端 -> 編碼 - UTF-8,可支持中文

 

4、Linux 文件和目錄管理

文件系統架構

Linux文件系統具有層級性

            1)文件或者目錄起始於根目錄“/”成爲樹狀結構

            2)最頂層由/開始

 

文件和目錄名區分大小寫

區分大小寫,而windows不區分大小寫

 

路徑通過“/”分隔開

“..”表示上層目錄

“.”表示當前目錄

 

隱藏目錄或者文件名以“.”開始

ls –l

ls –la

 

重要目錄說明

home目錄

            1)root用戶的home目錄是/root

            2)普通用戶的目錄是/home/user

    3)su – xiang

 

bin目錄

            1)常用的可執行文件

            2)/bin、/usr/bin、/sbin等

            3)/sbin 存放的是隻有root用戶權限執行的指令

 

外部設備mountpoint

            1)/media、/mnt        

            2)當檢測到設備接入會自動產生掛載點

 

/etc,系統的配置文件 - 只有root用戶可以修改

 

/tmp,臨時文件

 

/boot,系統內核和開機必要文件

 

/dev,系統所有的設備文件

 

/usr

            1)unix system resource

            2)保存程序的相關文件

 

/lost+found

            1)每個分區都會自動創建

 

/var、/srv

- /var存放數據庫文件,程序執行過程中所使用的數據

 

/proc 虛擬文件系統,數據在內存中,如:系統內核、程序運行進程信息、網絡狀態

 

/lib、/usr/lib、/usr/local/lib - 存放一些可複用的函數或庫

 

目錄以及文件的命名規則

不超過255個字符

 

區分大小寫

            1)file、File、fILE表示不同的文件

 

除了/外,所有的字符都合法

            1)避免文件名首字符使用+-.等

            2)避免使用空格、製表符和@#$%[]()等

 

最好使用有意義的名稱來命名

 

ls指令操作

ls,ls[options][file_or_dirs]

            1)ls,列出當前目錄內容

            2)ls / ,顯示根目錄的內容

            3)ls –a,顯示隱藏文件

            4)ls –l,顯示詳細內容

            5)ls –ld,顯示目錄本身的屬性

 

ls –l 相當於 ll

ls –a

ls –la

ls –ld

ls -lh

 

文件和目錄操作

相對路徑和絕對路徑

            1)絕對路徑必須是/開頭

            2)相對路徑一般比較短

 

切換目錄

            1)cd、pwd

            2)cd ..,cd ~cd –

            3)su – 表示切換到root

 

複製文件和目錄,cp

            1)cp [options] file destination  –p的參數不改變時間戳

            2)cp [options] file1 file2 destination

            3)cp -r dir1 dir2,複製目錄

 

移動和重命名文件和目錄,mv

            1)移動操作類似於cp

 

刪除文件和目錄,rm

            1)rm [options] filenames

            2)-i,交互式

            3)-r,遞歸刪除

            4)-f,force

 

新建文件和目錄,touchmkdir

            1)cd、pwd

            2)cd ..,cd ~,cd -

 

確定文件的格式

            1)打開文件前確定格式使用不用的程序打開

            2)file [options] filenames

 

cat – 打開一些小文件

  1. cat [options] filenames
  2. cat –b test.txt 顯示帶行號的文件內容

 

分頁查看文本文件,less – 打開一些內容比較多的文本文件(大文件

            1)less [options] [filename]

            2)使用pgUp、pgDown翻頁

            3)g 到最頂端  G 到最低端

4)/search 進行搜索 n N

5)q

 

5、Linux用戶、羣組和權限

Linux安全性模型

Linux使用User和Group控制使用者對文件的存取權限

用戶使用賬號和口令登錄Linux

每個文件都有owner,並且owner屬於某個Group

每個程序都有owner和Group

 

用戶概述

每個用戶都有一個唯一的User ID

User的信息存儲在/etc/passwd

            1)存儲用戶名和home目錄等信息

如:less /etc/passwd

xiang:x:500:500:xiang.yu:/home/xiang:/bin/bash

x意味着要有密碼纔可以登錄

第一個500表示UID

第二個500表示GID

2)/etc/shadow – 存儲當前用戶的密碼

如:less /etc/shadow

     root:$1$H7TmDsKo$O8fYNYKC7YOpLZEcPCg4u0:16890:0:99999:7:::

  採用MD5的加密算法 – 單向的哈希算法

每個User都有一個home目錄

User未經授權將禁止讀寫或執行其他User的文件

root用戶解讀

              1)超級管理員賬號,具有至高無上的權限

              2)一般不要隨便用root登錄並操作系統

 

用戶羣組概述

每個User都屬於一個Group,具有唯一的標識符gid

Group信息存儲於/etc/group

            1)gid、成員等

            2)/etc/gshadow 保存密碼

系統會爲每個User關聯一個和User同名的Group

            1)每個User至少存在於自己同名的Group中

            2)User也可以加入其他的Group

在同一個Group中的成員可以共享其他成員的文件

 

權限的種類

只讀權限,用r表示(read)

            可以讀取文件或者列出目錄的內容(ls)

可寫權限,用w表示(write)

            可以寫、刪除文件或者目錄

可執行權限,用x表示(execute)

            1)可以執行可執行文件

            2)可以進入目錄並使用cd切換進入目錄

沒有任何權限,用-表示

  注:當給某個用戶授予讀權限時,不要忘記授予執行權限

 

Linux文件和目錄權限解讀

d rwx-w----

            1)目錄

            2)owner權限爲可讀寫可執行

            3)group權限爲可寫

            4)others沒有任何權限

- rwxrwxr-x

            1)文件

            2)owner權限爲可讀寫可執行

            3)group權限爲可讀寫可執行

            4)others權限爲可讀可執行

 

Linux權限驗證流程

# whoami 顯示當前用戶

 

如何設置Linux文件和目錄的權限

a) 字符表示法

            1)chmod [-R] mode file

            2)模式類別

chmod a= perm 去除所有權限,不影響子目錄

chmod –R a= perm 影響子目錄

 

b) 數字表示法

            1)使用一組三位數字來表示

            2)第一組代表owner的權限

            3)第二組代表group的權限

            4)第三組代表others的權限

 

c) 如何使用Nautilus或Konqueror設置權限

 

6、Linux 用戶和羣組進階學習

用戶的主要羣組和次要羣組

1)主要羣組

每個文件必須有一個組所有者,因此必須有一個與每個用戶相關的默認組,這個默認組成爲新建文件的組所有者,被稱作用戶的主要羣組。用戶的主要羣組在passwd文件中的第四個字段中定義。

2)次要羣組

除了主要羣組,用戶也可以根據需要再隸屬於其他羣組,這些組被稱爲次要羣組,在group文件中的第四個字段中定義

  # groups 查看當前用戶的所有羣組,第一個是主要羣組

 

用戶的管理

1)useradd [-u UID] [-g 初始羣組] [-G 次要羣組] [-mM] [-c 說明] [-d 家目錄] [-s shell]

            -u:制定一個特殊的UID給該賬號

            -g:指定一個主要羣組的名稱,會修改passwd文件

            -G:指定次要羣組的名稱,會修改group文件

            -M:強制不要創建用戶家目錄,系統賬號默認

            -m:強制建立用戶家目錄,一般賬號默認

            -c:passwd文件的第五個字段的說明文字

            -d:指定用戶的家目錄位置,不要使用默認的值

            -s:指定默認的shell,如果沒有指定則默認是/bin/bash   

2)usermod [-cdegGlsuLU] username

            -c:該賬號的說明文字

            -d:賬號的家目錄

            -e:指定用戶帳號禁用的日期,格式YY-MM-DD

            -G:修改次要羣組的名稱,會修改group文件

            -g:修改主要羣組名稱

            -a:與-G合用,可增加次要羣組

            -l:將當前賬號的名稱重命名爲指定的名稱

            -u:修改UID

            -L:暫時將用戶的密碼凍結無法登錄

            -U:解凍賬號,其實是刪除shadow的!字符

 

實例:給用戶xiang增加次要羣組user1

# useradd user1

      # usermod –aG user1 xiang

3)userdel [-r] username

            -r:連同用戶的家目錄一起刪除

4)passwd,修改密碼

 

用戶信息的檢查

1)finger [-s] username:查閱用戶相關的信息

            -s:僅僅列出用戶的賬號、全名、登錄時間等

2)id,可以查閱某人或者自己相關的UID、GID信息

3)whoami

4)who&w

5)users

6)groups

 

用戶羣組的管理

1)groupadd [-g gid] [-r] 組名

            -g:後面接特定的GID,用來指定GID,從500開始

            -r:建立系統羣組,小於500

2)groupmod [-g gid] [-n group_name] 羣組名

            -g:修改既有的GID數字

            -n:修改既有的組名

3)groupdel [groupname]

            刪除特定的羣組

 

默認權限的控制

1)內核級別,文件的默認權限是666

2)內核級別,目錄的默認權限是777

3)通過umask來阻止一些權限,從而產生最終的權限

4)非管理賬號的umask爲0002

5)root的umask爲0022

6)umask作用原理

在root用戶下,新建文件後默認權限是644

在root用戶下,新建目錄後默認權限是755

# umask 002 //可以進行修改

7)使用減法計算是錯誤的,應該理解爲遮蓋

 

7、文件的壓縮與打包

7-1關於文件壓縮和打包

1)文件壓縮

            通過壓縮算法將文件的體積縮小,同時會將多個文件合併至一起方便交換、傳輸。

 

2)文件打包

            將多個文件或者整個目錄合併成一個文件,用來進行文件的備份、分發、傳輸等。

 

3)Linux支持的壓縮格式

            1)*.Z ,compress程序壓縮文件

            2)*.gz ,gzip程序壓縮文件

            3)*.bz2,bzip2程序壓縮文件

            4)*.tar,tar程序打包文件,並未壓縮

            5)*.tar.gz,tar打包的檔案,使用gzip壓縮

            6)*.tar.bz2,tar打包的文件,使用bzip2壓縮

Linux文件壓縮指令

1)gzip [-cdtv#] 文件名稱

            1)擴展名爲*.gz

            2)-c:將壓縮的數據輸出到屏幕上

            3)-d:解壓縮的參數

            4)-t:進行文件的一致性校驗看是否損壞

            5)-v:顯示和原文件相比的壓縮比

            6)-#:壓縮等級,-1最快,-9最慢,默認是-6

實例:

gzip –c list >list.gz 進行重定向,會保留源文件,默認使用gzip壓縮時會刪除源文件

gzip –v1 list

 

2)bzip2 [-cdkzv#] 文件名稱

            1)擴展名爲*.bz2       

            2)-c:將壓縮的數據輸出到屏幕上

            3)-d:解壓縮的參數,該參數代表執行解壓縮操作

            4)-k:保留原文件並不刪除原始文件

            5)-z:壓縮的參數,該參數代表是執行壓縮操作

            6)-v:顯示和原文件對比的壓縮比

            7)-#:壓縮等級,-1最快,-9最慢,默認是-6

 

Linux文件打包指令

1)tar  [-jcv] –f finaname.tar.bz2 待壓縮的檔案或者目錄名

            將某個文件或者目錄打包並使用bzip2壓縮成一個文件

2)tar  [-jxv] –f filename.tar.bz2 –C 解壓縮的目錄

            將壓縮文件解壓縮至特定的目錄

3)參數解釋

            1)-c:建立打包檔案

            2)-t:查看打包的文件都有哪些文件名

            3)-x:解壓縮或者解打包文件,和-C搭配使用解壓縮至特定目錄

            4)-j:通過bz2支持進行壓縮或者解壓縮

            5)-z:使用gzip進行壓縮或者解壓縮

            6)-v:將正在處理的文件名顯示出來

            7)-f:緊跟要被處理的文件名,建議單獨寫一個選項

實例:

  # tar –jcvf test.tar.bz2 test

  # tar –jxvf test.tar.bz2 –C dir

  # tar –zcvf test.tar.gz test

  # tar –zxvf test.tar.gz –C dir

 

8、Linux 軟件的安裝

8-1 如何通過源碼安裝

什麼是源碼包:

  附帶有程序的源代碼、configure文件、說明文檔的安裝包

一般先以tar打包,再以壓縮軟件壓縮,如tar.gz或 tar.bz2

  需要自定義參數進行編譯安裝

 

使用wget進行下載,支持多線程,斷點

  如:wget http://~

 

configure – 實際上是shell腳本

  自定義參數

  配置安裝環境,必要性檢查

  生成makefile文件

 

make&install

  編譯生成二進制文件

  執行安裝

 

使用源碼包進行安裝的過程

  1. 獲取源碼安裝包,如去官網下載
  2. 解壓縮,閱讀install或readme文件,獲取安裝說明
  3. 根據安裝說明安裝好該軟件依賴的其他軟件
  4. 建立makefile文件(通過configure檢測安裝環境,定義必要的參數)
  5. 根據生成的makefile文件,執行make指令進行編譯操作
  6. 根據makefile中要install的內容,將上步驟中編譯好的二進制文件安裝到系統中

 

常用指令:

  1)./configure –help,查看參數信息,建立makefile文件

  2)make clean,讀取makefile中關於clean的內容執行clean操作(非必需)

  3)make,根據makefile中的設置執行編譯操作

  4)make install,將編譯的二進制文件安裝到系統中

 

實例:memcached和libevent兩個有依賴的包進行演示

# tar -zxvf *.tar.gz

# ./configure --prefix=/root/local/libevent    //來指定安裝目錄,默認是/usr/local

# make

# make install

 

# tar –zxvf *.tar.gz

# ./configure --prefix=/root/local/memcached --with-libevent=/root/local/libevent   //依賴包

# make

# make install

 

指定安裝目錄的好處是如果要安裝出錯或重裝,直接刪除

 

8-2 RPM、YUM簡介

RPM

  1. RedHat Package Manager的簡稱,RedHat包管理器
  2. 以數據庫的記錄方式將軟件安裝到Linux
  3. 軟件包事先編譯好並且打包成RPM機制的文件,類似於Windows的安裝程序
  4. 軟件信息記錄在本地數據庫,方便查詢、升級、卸載
  5. 不允許自定義參數和設置,限制較多

 

SRPM

  1. Source RPM,附帶源代碼的RPM 包,擴展名以src.rpm命名
  2. 不可以直接安裝,需要通過編譯後再安裝
  3. 可以修改參數文件自定義配置項
  4. 和RPM比較類似

 

YUM

  1. Yellow dog Update, Modified的簡稱,基於RPM包管理
  2. 能夠從指定的服務器自動下載RPM包並且安裝,可以自動處理依賴性關係,並且一次安裝所有依賴的軟件包,無需繁瑣地一次次下載、安裝
  3. 使用簡單、方便

 

8-3 RPM的使用

默認安裝路徑

  1)/etc : 配置文件所在目錄,如/etc/my.cnf、/etc/crontab等

  2)/usr/bin : 一些可執行文件

  3)/usr/lib : 程序使用的函數庫(連接庫),.so像windows中的C:\Windows\System32

  4)/usr/share/doc : 軟件使用手冊與說明

  5)/usr/share/man : man page文件

 

RPM安裝

  1. rpm [-ivh] rpm1 rpm2 : 安裝rpm1/rpm2並顯示進度和詳情
  2. --nodeps : 忽略依賴問題執意安裝
  3. --replacefiles : 對於已經安裝過的某個文件覆蓋安裝
  4. --replacepkgs : 已經安裝過的軟件重新安裝
  5. --force : --replacefiles 和 –replacepkgs
  6. --test : 測試軟件能否被正確安裝,rpm –ivh *** --test
  7. --justdb : RPM數據庫損壞或者產生錯誤時更新數據庫信息
  8. --nosignature : 忽略數字簽名的檢查
  9. --prefix : 改變軟件的默認安裝路徑
  10. --noscripts : 禁止RPM執行一些後置指令,如一些初始化的指令

實例:

http://www.rpmfind.net/中,使用wget

在安裝光盤中,使用cp

# rpm -ivh python-*.rpm

 

RPM升級

1)–Uvh : 如果軟件安裝過則更新,若沒安裝過直接安裝

2)-Fvh : 只有該軟件安裝過纔會升級,否則不予升級

實例:

  # rpm –qa python 查看當前軟件的版本

  # rpm –Uvh python-*.rpm 升級

 

RPM查詢

  1)-q : 只查詢軟件是否安裝

  2)-qa : 列出本機安裝的所有的軟件名稱,可以通過 | grep來過濾

  3)-qi : 列出軟件的詳細信息,如開發商、版本、說明等

  4)-ql : 列出該軟件所有的文件、所在目錄完整名(list)

  5)-qc : 列出該軟件所有的配置文件

  6)-qR : 列出該軟件依賴的其他軟件的文件

  7)-qf : 查詢某個文件屬於哪個軟件所有

  8)--noscripts:禁止RPM執行一些後置指令,如一些初始化的指令

  實例:

# rpm –qa python

 

RPM驗證

  1)-V : 查詢軟件所有被修改過的文件

  2)-Va : 不接文件名,列出本機所有可能被修改過的程序文件

  3)-Vp : 接文件名,列出該軟件中可能被修改的文件

 

RPM卸載與數據庫重建

  1. 注意要從上往下依次卸載,先卸載不被任何其他軟件依賴的軟件
  2. -e : 卸載軟件
  3. --rebuilddb 重建RPM數據庫

 

8-4 YUM的使用

YUM的安裝:執行下面腳本

#!/bin/bash

 

rpm -qa|grep yum|xargs rpm -e --nodeps

wget http://mirrors.163.com/centos/5/os/i386/CentOS/yum-3.2.22-40.el5.centos.noarch.rpm

wget http://mirrors.163.com/centos/5/os/i386/CentOS/yum-fastestmirror-1.1.16-21.el5.centos.noarch.rpm

wget http://mirrors.163.com/centos/5/os/i386/CentOS/yum-metadata-parser-1.1.2-4.el5.i386.rpm

rpm -ivh yum-*

cd /etc/yum.repos.d/

mv rhel-debuginfo.repo rhel-debuginfo.repo.bakup

mv rhel-source.repo rhel-source.repo.bakup

wget http://www.linuxidc.com/files/2011/05/06/CentOS-Base.repo

yum makecache

 

  查詢,yum [list|info|search|provides|whatprovides] 參數

  1. search : 查詢某個程序的名稱或者是描述 ( yum search mysql)
  2. list : 列出目前yum所管理的所有軟件以及版本 (rpm -qa)
  3. info : 類似list,查詢軟件的功能、版本說明 (rpm -qai)
  4. provides : 通過文件查詢所屬軟件 (rpm -qf)

    實例:

yum list >list 新創建一個,覆蓋

yum list >>list 將內容追加到list後面,如果沒有則新建

 

  安裝、升級,yum [install | update] 程序名稱

  1. install : 安裝軟件
  2. update : 升級軟件,不指定名稱則升級整個系統

 

  卸載,yum [remove] 程序名稱

  1. remove : 卸載

 

  yum的配置

  1. /etc/yum.repos.d/CentOS-Base.repo
  2. yum clean [package | headers | all]
  3. /var/cache/yum

 

9、vi編輯器的使用

9-1 vi vim

9-2 vi的三種模式

  1. 命令模式
  2. 插入模式,通過aio進入
  3. 擴展模式,通過:進入

9-3 移動光標

  1. hjkl -> 左下上右
  2. w下一個字符,b上一個字符
  3. (上一個句子,)下一個句子,{上一個段落,}下一個段落

9-4 命令模式下修改、複製、刪除等操作

9-5 撤銷操作

a)u,撤銷最近一次的修改,undo

b)ctrl – r,取消最後一次的撤銷,redo

c)U,撤銷所有修改

9-6 查找操作

a)/text, 向後搜索

b)?text,向前搜索

c)n,搜索下一個同樣的內容

d)N,搜索上一個同樣的內容

9-7 粘貼操作

a)用p粘貼複製、修改或者刪除的數據

b)對於行,p粘貼在行上,P粘貼在行下

c)對於字符,p粘貼在字符右側,P粘貼在字符左側

9-8 命令模式下的一些技巧

a)dtc,刪除從光標到c之間的所有字符

b)rc,將光標下的字符替換爲c

c)dw,刪除遊標處所在的字符

d)5dd,刪除5行數據

e)5yy,複製5行數據

f)5x,刪除5個字符

g)R,進入替換狀態,Esc退出

9-9 保存、退出,進入擴展模式

            a):w,保存

b):q,退出

c):wq,保存並退出

d):w!,強制保存

e):q!,強制退出

f):wq!,強制保存退出

9-10 文件內定位

  1)G,跳轉到文件最後一行

2)1G,跳轉到文件第一行

3)ctrl d,往下滾動半屏

4)ctrl u,往下滾動半屏

9-11 屏幕定位相關

  1)H,跳轉到本屏顯示的第一行

2)M,跳轉到本屏顯示的中間一行

3)L,跳轉到本屏顯示的最後一行

4)z Enter,使當前的行成爲屏幕顯示的第一行

5)z -,使當前行成爲屏幕的最後一行

9-12 查找並批量替換 – 通過sed來查找

實例:

:s/i/- 將本行中i替換爲-

:s/i/-/g 將本行中所有的i替換爲-

:1,10s/i/-/g 將1到10行中的所有的i替換爲-

:1,$s/i/-/g 將文件中所有的i替換爲-

 

9-13 讀取和保存

實例:

:r test.txt 將test.txt的內容讀入到當前文件

:1,3 w newfile.txt 將1-3行的內容寫入到newfile.txt中

:1,$ w newfile.txt 將整個文件寫入到newfile.txt中

:1,3 w >>oldfile.txt 將1-3行數據追加到oldfile.txt中

9-14 設置

  1):set,顯示常用的配置選項

  2):set all,顯示所有的配置選項

  3):set number,設置行號

 

10、bash shell 的學習

10-1 bash shell 的概述

Bash是Bourne Again Shell的簡稱,是從Unix系統中的sh發展而來,是用戶和Linux內核交互的工具,用戶通過bash操作內核完成系統的使用和管理

 

Shell的種類

  /bin/sh – 已經被/bin/bash替代

  /bin/bash – 默認的shell

  /bin/ksh – 源自貝爾實驗室,兼容bash

  /bin/tcsh – 整合C shell,功能更爲強大

  /bin/csh – 已經被tcsh取代

  /bin/zsh – 源自ksh功能更爲強大

 

10-2 bash shell 的配置

變量概述

  變量是代表一些值得符號:

可以通過變量來設置shell或者其他程序

變量存在於內存中

Linux有自定義變量(local)和環境變量(environment)

自定義變量和環境變量作用範圍不同

  可以使用以下指令查看所有變量:

    set可以查看所有變量

            env只能查看環境變量

    unset刪除變量

 

bash shell有以下幾種設置方式:

  通過自定義變量設置

  1. VARIABLE=value來設置
  2. echo $VARIABLE獲取變量值
  3. 變量名不能以數字或特殊字符開頭

實例:

  # mysql=/root/dirs/mysql/bin

  # echo $mysql

  # cd $mysql

 

常見的變量

1)HISTFILESIZE: 記錄歷史指令保存的最大值

2)COLUMNS: 終端窗口顯示的寬度

3)LINES: 終端窗口顯示的高度

4)PS1: 設置提示符號前面的內容樣式(\d, \h, \t, \u, \w, \!, \$, \l, \#等)

實例:

  # set |grep PS1

  # PS1=‘[\u@\h \w \t]\$’

 

  通過別名設置

# type ll

# alias cls=’clear’

# alias //查看所有別名

# alias cls //查看別名值

# type –a cls

# unalias cls //刪除別名定義

 

  通過set指令設置

    set自身查看所有變量值

設置shell內部的屬性值(set –o noclobber, set –o vi)

 

  通過環境變量設置

  1. 自定義變量只能在當前的shell環境中有效
  2. 環境變量會在整個主機下的shell環境中生效
  3. 使用$export [variable name]來設置

 

  常用變量介紹:

    HOME:指向當前用戶的家目錄

    LANG:應用程序使用何種語言顯示界面

PWD:指向用戶當前的工作目錄路徑

 

  PATH變量:

系統預設的環境變量

執行一些沒有指定路徑的指令時會去該路徑中找

PATH=$PATH.: 將隱藏路徑設置到PATH中,會帶來安全性問題

可以使用which指令來找到某個指令所在的位置

 

10-3 shell startup scripts的原理和功能

概述

  用戶登錄或其他非登錄動作時會自動執行的一些shell腳本:

  1. 建立自定義變量或者執行set指令設置shell
  2. 建立環境變量,設置其他程序
  3. 使用alias,簡化後續的操作
  4. 登錄的時候執行哪些程序
  5. 分爲login和non-login腳本

 

login shell:

  1. 通過完整的登錄流程時運行的shell
  2. 首先會讀取/etc/profile(PATH/USER/HOSTNAME/HISTSIZE等)
  3. 讀取/etc/profile.d/*.sh(顏色、語言、指令別名等)
  4. ~/.bash_profile、~/.bash_login、~/profile(只依次讀取其中一個)
  5. ~/.bash_rc、/etc/bashrc
  6. source指令加載腳本的變更

 

non-login shell: - 即在終端中輸入bash時

  1. 不需要登錄即可運行的shell,如su和原bash下的新bash動作
  2. ~.bash_rc、/etc/bashrc
  3. 讀取/etc/profile.d/*.sh (顏色、語言、指令別名等)

 

~/.bash_logout:

  1. 在註銷用戶時會運行該腳本
  2. 可以執行備份、緩存和臨時文件清理等任務

 

10-4 數據流重定向和管道命令

標準輸入輸出和錯誤輸出概述

概念:

  stdin是指令數據的輸入,代碼爲0,使用<或者<<,默認是鍵盤

  stdout是指令執行成功返回的結果,代碼爲1,使用>或者>>,默認由屏幕顯示

  stderr是指令執行失敗返回的錯誤信息,代碼爲2,使用2>或2>>,默認是屏幕

實例:

  # ls -al /dev/std*

 

數據流重定向的使用

  1. <: 指定輸入的數據媒介來源
  2. 1>: 將正確的內容覆蓋輸出到指定的媒介
  3. 1>>: 將正確的內容追加到指定的媒介
  4. 2>: 將錯誤信息覆蓋輸出到指定的媒介
  5. 2>>: 將錯誤信息追加到輸出指定的媒介

實例:

  # find /root ins 1>success 2>failed

  # find /root ins >all 或者 # find /root ins &>all 其中&就是表示0、1、2

  # tr ‘a-z’ ‘A-Z’ <hello.c //將hello.c的小寫轉換爲大寫

 

多個指令執行的判斷方法

  實例:

# mkdir test&&cd test&&touch conf.txt //前者執行成功纔會執行後者

# mkdir test||mkdir test1 //將第一個執行失敗,纔會去執行第二個,若第一個執行成功,不會執行第二個

 

管道命令概述

  1. 命令通過管道符|連接
  2. 能夠接受標準輸入(stdin),如tail/more/grep等
  3. 能夠接受來自前一個指令的正確的數據作爲stdin進行處理

實例:

  # ls –la |more //通過翻頁的形式

  # ls –la |more |grep hostname

 

grep指令,grep [-cinv] ‘key’ filename,支持正則

  1)-c, 計算字符出現的個數

  2)-i, 忽略大小寫進行查找

  3)-n, 輸出行號

  4)-v, 顯示沒有該字符的行

  實例:

     # grep –in ‘[a-z]the’ test.txt  //顯示行號並忽略大小寫顯示‘the’

     # grep –ic ‘the’ test.txt  //統計並忽略大小寫‘the’出現的次數

     # grep –icv ‘the’ test.txt  //統計出‘the’沒有出現的行

     # grep –in –-color=auto ‘the’ content.txt  //顯示‘the’的行號,標紅,忽略大小寫

     # grep –in –-color=auto ‘the’ content.txt |grep –-color=auto take //繼續過濾

 

sort指令,sort [-fbknrtu] filename

  1)-f, 忽略大小寫

2)-b, 忽略最前面的空格

3)-m, 以月份英文名字排序

4)-n, 使用數字排序

5)-r, 逆向排序

6)-t, 分隔符,默認是tab分割

7)-k, 以第幾列來排序

  實例:

# cd /root/usr/bin

# ls –l

# ls –l |sort –t ‘ ’ –k 5 –n //按照第五列以空格分開從小到大排序

 

wc指令,wc[-lwm] filename,統計功能

  1)-i, 統計行

2)-w, 統計詞

3)-m, 統計字符

  實例:

# cat content.txt |wc –l

# cat content.txt |wc –w

# cat content.txt |wc –m

 

除此之外還有很多管道命令:tr cut join paste等

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章