由於非linux系統開發和管理員,只做了基礎的學習及實際工作中經常使用的命令整理
linux是基於uninx重新開發而來,開源之後,自動演變了很多版本。
目前比較流行的版本red hat,fedora,ubuntu等都是由最初的演變版本中的分支。
具體歷史可以看看(linux寶典 christopher negus),挺有意思的。學習內容也是來源於此書。
1、SHELL
用來解釋和管理命令的程序;不同的linux版本包含的shell可能不同,大多數發行版本都包括Bash shell並將其視爲一個標準。
啓動:linux中可以有三種方式啓動shell
- shell提示符,linux系統輸入賬號密碼登錄進去,的後臺輸入命令的地方
$ 表示普通用戶,# 表示管理員用戶 - terminal窗口
對於桌面的linux,會有這個功能 - 虛擬控制檯
可以通過CTRL+ALT+F1~F6 打開多個虛擬控制檯啓動shell
語法:
- 關於-和–的區別
-表示命令選項是單個字符,即使是多字符,也會解析成單字符
–表示命令選項是多字符。
比如:ls -lat 等同於 ls -l -a -t
hostname --help 就需要使用– - 帶參數選項
如果選項是單字符,對參數使用空格
如果選項是多字符類型,對參數使用=
比如:ls --hide=config
tar -cvf aaa.tar /home/aaa - 命令內容
- 以文本或常規字符開頭:表示命令,別名或函數
- $ 開頭:表示變量
- ~ 開頭:表示用戶
- @ 開頭:表示主機名
- 管道符|
一個命令的輸出,到另一個命令的輸入
cat /etc/passwd | sort | less
將passwd文件內容發給sort命令排序,將排序結果發給less命令顯示 - 連續命令 ;
一個命令執行完,連續執行下一個命令,使用;
date;mail -s “test command” [email protected]
輸出日期,併發送郵件 - 後臺命令 &
如果命令執行時間較長,不想shell佔用命令等待完成,可以在命令結尾加上& 使其在後臺執行 - 擴展命令 $(command)
一條命令的標準輸出,變成另一條命令的一個參數
vi $(find /home | grep aaa) - 擴展算數表達式 $(expression) / $[expression]
echo “我已經 $[2020-1994] 歲了”
echo “文件列表 : $(ls | wc -w)” - 擴展變量
使用shell變量
ls -l $BASH
echo $USER
命令查找:
- 直接指定路徑運行命令
/bin/ls - 命令的位置
將命令目錄加到PATH中
echo $PATH 打印path內容
大多數命名在/bin(當前用戶),/user/bin,/user/local/bin(所有用戶都可用);/sbin/,/usr/sbin包含管理命令
path路徑順序很重要,如果存在相同命令,優先最左邊的目錄中的命令
除了path中,還有一些內置於shell中的命令
shell檢查所輸入命令的順序:
1. 別名 alias設置的
2. shell保留字
3. 函數
4. 內置命令
5. 文件系統命令(path)
通過type關鍵字可以檢查命令出處:如 type tar - 歷史記錄
shell history 是一個以前所有輸入命令的列表,通過history命令查看;歷史記錄保存在.bash_history中,默認保存1000條。
ctrl+L 清屏
利用歷史記錄,可使命令行重複執行
通過!+歷史記錄編號,可以重複執行命令:!202
創建和使用別名,通過別名執行命令:
alias查看定義的別名
新增別名
$ alias p=‘pwd ; ls -CF’
shell配置:
1、/etc/profile 用戶級環境變量,首次登錄執行(root用戶)
2、/etc/bashrc 每次打開一個bash shell執行(root用戶)
3、~/.bash_profile 用戶登錄執行
4、~/.bashrc 特定於bash shell的信息,打開新shell執行
5、~/.bash_logout 註銷時執行
環境變量添加:
PATH=$PATH:/bin/aaa;export PATH
表示在原path下增加目錄,並導出path
問題記錄:
$’\r’: command not found
windows下編寫的腳本會出現此問題
可以直接替換:sed -i ‘s/\r//’ export.sh