學習筆記(十一)——Linux Shell 基礎知識

1. shell 特性:

使用 history 命令查看命令歷史:

[root@localhost ~]# history

用戶的 history 記錄位於用戶家目錄下 .bash_history 文件中:

[root@localhost ~]# vim ~/.bash_history

有關 history 的相關快捷操作:

[root@localhost ~]# !!    //上一條命令

[root@localhost ~]# !$    //上一條命令的最後一個參數

[root@localhost ~]# !n    //執行 history 中的第 n 條記錄

[root@localhost ~]# !字符 //執行 history 中以指定字符開頭的最近一條命令

通配符: * 匹配 0 個或多個字符, ? 匹配一個字符。

作業控制: ctrl+ z 將進程放入後臺, jobs 查看全部後臺進程, fg %n(數字)將後臺進程號爲 n 的進程放回前臺, bg %n 將前臺進程號爲 n 的進程放入後臺, kill %n 將後臺進程號爲 n 的進程殺死,& 放在命令後表示將進程放入後臺執行:

[root@localhost ~]# sleep 3000 &

 

2.變量:

系統變量都是大寫。

通過 env 可以列出當前用戶的所有環境變量以及用戶自定義的全局變量:

[root@localhost ~]# env

set 命令可以把所有變量列出來,包括 env 列出的所有變量和當前shell 的自定義局部變量(使用 export 命令可以聲明全局變量:export myvar=”test” ,不使用 export 命令聲明的則是當前shell 的局部變量 myvar=”test”):

[root@localhost ~]# set

假如現在當前 shell 定義了一個全局變量export myvar=”test”,現在想取消這個全局變量,使用 unset 命令:

[root@localhost ~]# unset myvar

不加任何參數的 export 命令表示聲明所有環境變量以及用戶自定義變量:

[root@localhost ~]# export

 

3.系統環境變量和個人環境變量配置文件:

/etc/profile PATH  USER  LOGNAME MAIL  INPUTRC  HOSTNAME HISTSIZE  umask 等環境變量在該配置文件中設置。

/etc/bashrc $PS1 umask 等環境變量在該配置文件中設置。

~/.bash_profile 用戶私有的環境變量在此配置文件中設置。

~/.bashrc 用戶私有的環境變量在此配置文件中設置。

簡單來說,profile bashrc 的聯繫和區別如下

1)在用戶登錄時,profile 配置文件(包括 /etc/profile ~/.bash_profile)執行(source /etc/profile;source~/.bash_profile),而 profile 配置文件的執行會導致bashrc 配置文件(包括 /etc/bashrc ~/.bashrc)執行(source /etc/bashrc;source~/.bashrc)。

2)用戶在登錄狀態下打開一個新 shell 時,bashrc 配置文件執行,而 profile 配置文件不執行。

3)如果要修改環境變量,最好在 profile 配置文件中進行修改。

更多不同可以參考如下文章:

http://www.joshstaiger.org/archives/2005/07/bash_profile_vs.html

 

4.shell 中的特殊符號:

匹配符號,匹配 0 個或多個任意字符。

匹配符號,匹配 1 個任意字符

註釋符號,其後面一整行的內容爲註釋信息

脫意符號,將特殊字符還原爲普通字符

管道符號

[]  代表所包含字符中的任意一個:

[root@localhost~]# ls [ad]bc.log

abc.log  dbc.log

 

5.常用命令:

5.1 cut

切分顯示。-d 指定分隔符,和-f 配合使用, -f 指定所要顯示哪些列:

[root@localhost ~]# cut -d ‘:’ -f 1,3 /etc/passwd

[root@localhost ~]# cut -d ‘:’ -f 1-3 /etc/passwd

-c 指定每行從開始顯示的字符數:

[root@localhost ~]# cut -c 1,3 /etc/passwd

[root@localhost ~]# cut -c 1-3 /etc/passwd

5.2 sort:

排序。-t 指定分隔符,和 -k 配合使用, -k 指定按分隔後的哪一些進行排序。默認情況下是根據 ASCII 碼值由小到大排序,使用 -n 參數可以按數字大小排序,-r 參數逆序,即由大到小排序:

[root@localhost ~]# sort -t ‘:’ -k 3 -nr /etc/passwd

5.3 uniq:

去除重複行。-c 參數統計同樣內容的行的數量:

[root@localhost ~]# … | uniq -c

5.4 tee

類似輸出重定向,但比輸出重定向多出一個功能,即可以在標準輸出上顯示。可以簡單理解爲 cat + >

[root@localhost ~]# cat /etc/passwd | tee /tmp/passwd.bak

5.5 wc:

統計文件行數、字符數、詞數:

[root@localhost ~]# wc /etc/passwd

-l 參數只統計行數,-w 參數只統計詞數, -m 參數只統計字符數(會比實際字符數多出一部分,因爲每行行尾其實都有一個$ 符號結尾):

[root@localhost ~]# wc -l /etc/passwd

5.6 tr:

tr 用於替換,實際工作中使用並不多,可以參考之前的一篇博客,地址如下:

http://xitongjiagoushi.blog.51cto.com/9975742/1621301

5.7 split:

用於將一個大文件按要求分割爲多個小文件,先人工生成一個比較大的文件:

[root@localhost ~]# for i in `seq 1 10000`; do cat /etc/passwd >> bigfile.log; done

-l 參數指定以多少行爲一個子文件進行拆分,-b 參數指定以多大的文件大小爲一個子文件進行拆分:

[root@localhost ~]# split -l 1000 bigfile.log

[root@localhost ~]# split -b 1M bigfile.log


參考資料:

http://www.aminglinux.com/bbs/thread-7717-1-1.html


本文出自 “細桶假狗屎” 博客,請務必保留此出處http://xitongjiagoushi.blog.51cto.com/9975742/1632780

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