Shell編程之一
以下一至二大點是了解。後面才是重點:
一、硬件、核心和shell。
1. 硬件:當然就是你的硬件配備。
2. 核心管理:操作系統的核心。
3. 應用程序:圖形接口的軟件(這裏就是指shell)。
二、為何要學習shell。
1、所有的Linux都支持shell。
2、遠程管理:shell命令傳輸非常快。(Windows下視頻傳輸就是一直抓圖,傳輸速度非常慢)
3、要想做一個高端的系統管理員:shell和shell scripts 必須學會。
三、系統的合法 shell 與 /etc/shells 功能
1、Linux版本系統裏面常用的shell種類(查詢方法:shell)存放檔案目錄:/etc/shells
? · /bin/sh (已經被/bin/bash 所取代)
? · /bin/bash (就是Linux預設的shell)
? · /bin/ksh (Kornshell 由 AT&T Bell lab.發展出來的,兼容與bash)
? · /bin/tcsh (整和C Shell,提供更多的功能)
? · /bin/csh (已經被/bin/tcsh所取代)
? · /bin/zsh (基與ksh發展出來的,是功能更強大的shell)
2、一些奇怪的shell(如:/etc/nologin)的來源
有的時候FTP網站會去檢查使用者的可用shell,而如果你不想要這些用戶使用FTP以外的主機資源時,
可能會給予該使用者一些怪怪的shell,使使用者無法以其他服務登入主機。這個時候,你就得將那些
怪怪的shell寫到 /etc/shells 當中了
如:/etc/nologin 這個檔案就是怪怪的shell
查看當前工作的shell:cat /etc/passwd
3、Bash Shell 的功能
①、命令編修的能力:history
②、命令與檔案補全功能:tab鍵
? [Tab] 接在一串命令的第一個字的後面,則為命令補全
? [Tab] 接在一串命令的第二個字以後時,則為檔案補齊
③、命令別名設置:alias
alias dd=‘ls -al‘
dd /mnt 查看mnt下的目錄
④、
程序化腳本:Bash script
通配符:ll /usr/bin/X*
⑤、查詢Bash shell 內鍵命令: type cd
⑥、一行多個命令和命令的換行
一行多個命令中間用分號隔開: ;
多行一個命令,結尾以\隔開: \
四、shell語法;
1、變量以及變量的轉換;
變量的分類:本地變量,環境變量,位置變量,系統變量
shell的切換:bash
查看當前的shell ID: echo $$
2、變量的申明與取消、以及註意事項(通用所有變量);
申明:(export,declare) 參數 變量名=值
取消:unset=變量名
定義的註意事項:
①變量名可以用字母數字下劃線,但是不能以數字開頭;
②等號兩邊不能有空格;如果有空格則使用引號引起來
3、本地變量的定義和引用;
定義:變量名=值 (前面不需要關鍵字,直接變量名=值)
引用:echo $變量名
註意:在 bash 當中,當一個發量名稱尚未被設定時,預設的內容是空的;
4、環境變量的定義和引用;
定義:
export 變量名=值
declare -x 變量名=值
引用:echo $變量名
環境變量的特點:會影響所有的子shell;
但不會影響以前的shell;
5、本地變量和環境變量的查看和轉換;
查看:
查看所有的變量(本地變量和環境變量):set
查看所有的環境變量: env、export、export -p
轉換:
本地變量——>環境變量 :
本地變量yy轉換為環境變量:
export yy
declare -x yy
環境變量——>本地變量:
環境變量zz換換為本地變量: declare +x zz
6、位置變量;
$0 ----> 代表腳本文件的名字
$# ---->代表參數個數
$* ---->代表參數列表
$$
$@
$?
區別參考博客:http://www.cnblogs.com/kaituorensheng/p/4002697.html
7、系統變量;
系統變量一般是大寫。
系統變量什麽時候賦值:在系統登錄的時候就賦值了。
由於系統變量在系統裏面已經設置了;所有我們可以直接引用。
引用的方法:echo $HOME
echo $PATH
echo $MACHINE
echo $HISTFILESIZE (查看當前系統最大的命令緩存個數)
8、查看系統當前支持的編碼和當前的編碼;
查看系統支持的編碼:local -a
查看當前系統的編碼:echo $LANG
Shell編程之一