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