Shell 教程 Shell 是一個用 C 語言編寫的程式,它是用戶使用 Linux 的橋梁。Shell 既是一種命令語言,又是一種程式設計語言。 Shell 是指一種應用程式,這個應用程式提供了一個界面,用戶通過這個界面訪問操作系統內核的服務。 Ken Thompson 的 sh 是第一種 Uni ...
Shell 教程
Shell 是一個用 C 語言編寫的程式,它是用戶使用 Linux 的橋梁。Shell 既是一種命令語言,又是一種程式設計語言。
Shell 是指一種應用程式,這個應用程式提供了一個界面,用戶通過這個界面訪問操作系統內核的服務。
Ken Thompson 的 sh 是第一種 Unix Shell,Windows Explorer 是一個典型的圖形界面 Shell。
Shell 腳本
Shell 腳本(shell script),是一種為 shell 編寫的腳本程式。
業界所說的 shell 通常都是指 shell 腳本,但讀者朋友要知道,shell 和 shell script 是兩個不同的概念。
由於習慣的原因,簡潔起見,本文出現的 "shell編程" 都是指 shell 腳本編程,不是指開發 shell 自身。
Shell 環境
Shell 編程跟 java、php 編程一樣,只要有一個能編寫代碼的文本編輯器和一個能解釋執行的腳本解釋器就可以了。
Linux 的 Shell 種類眾多,常見的有:
- Bourne Shell(/usr/bin/sh或/bin/sh)
- Bourne Again Shell(/bin/bash)
- C Shell(/usr/bin/csh)
- K Shell(/usr/bin/ksh)
- Shell for Root(/sbin/sh)
- ……
Shell 基本命令
快捷鍵
1.tab鍵 用於自動補全命令/文件名/目錄名 2.ctrl + l 清理終端顯示 3.clear/cls 清理終端顯示 4.ctrl + c 終止當前操作 echo命令
普通用戶跟root切換 su:
# 切換到普通用戶:su 用戶名 # 切換到root用戶:su [root@localhost test]# su lrj [lrj@localhost /]$ su Password: [root@localhost /]#
創建目錄:
[root@localhost /]# mkdir qiyue [root@localhost /]# ls bin boot dev etc home lib lib64 media mnt oldboy opt proc qiyue root run sbin srv sys tmp usr var
# 在qiyue目錄下遞歸創建目錄 a/b c/d /子目錄
[root@localhost /]# cd qiyue/
[root@localhost qiyue]# mkdir a/b c/d
[root@localhost qiyue]# mkdir -p a/b c/d
[root@localhost qiyue]# ls
a c
[root@localhost qiyue]# cd a # 改變當前的目錄/位置
[root@localhost a]# ls
b
[root@localhost a]# cd ../c
[root@localhost c]# ls
d
#遞歸創建test/a,b,c,d四個目錄 {}同級
[root@localhost qiyue]# mkdir -p test/{a,b,c,d}
[root@localhost qiyue]# ls # 查看當前目錄下的所有文件
a c test
[root@localhost qiyue]# ls test #顯示/test下的內容(查看指定目錄下的所有內容)
a b c d
[root@localhost qiyue]# pwd # 列印當前工作目錄
/qiyue
文本編輯:
vi # 記事本打開 vim # notepad++ 打開 使用vi打開oldboy.py,預設是命令模式,需要輸入a/i進入編輯模式,然後輸入文本"Life is short,i use python" 按下esc鍵,回到命令模式 輸入 :wq! 強制保存退出 w write 寫入 q quit 退出 ! 強制 或者 :x 保存退出 ------ :q 不保存退出 :q! 不保存強制退出
查看純文本內容: cat
[root@localhost qiyue]# cat liu.txt 今天學習linux中的Shell命令. [root@localhost qiyue]#
more命令
1.more命令用於查看內容較多的文本,例如要看一個很長的配置文件,cat查看內容屏幕會快速翻滾到結尾。
2.more命令查看文本會以百分比形式告知已經看到了多少,使用回車鍵向下讀取內容
more /etc/passwd
按下空格space是翻頁
按下b鍵是上一頁
回車鍵向下讀取內容
移動, 改名:mv
將liu.txt 移動到test目錄下, 將test目錄下的a改成aa
[root@localhost qiyue]# ls a c liu.txt test [root@localhost qiyue]# mv liu.txt test [root@localhost qiyue]# ls a c test [root@localhost qiyue]# ls test a b c d liu.txt
[root@localhost qiyue]# cd test/ [root@localhost test]# mv a aa [root@localhost test]# ls aa b c d liu.txt [root@localhost test]#
刪除命令rm:
[root@localhost test]# rm liu.txt # #預設有提示刪除,需要輸入y, 加上參數-f 不提醒 rm: remove regular file ‘liu.txt’? y [root@localhost test]# ls aa b c d [root@localhost test]# rm -rf b #rm預設無法刪除目錄,需要跟上參數-r [root@localhost test]# ls aa c d
rm -rf /* # 跑路跑路跑路跑路跑路跑路跑路跑路跑路跑路
echo命令
echo命令用於在終端輸出字元串或變數提取後的值,格式是“echo 【字元串|$變數】”
#預設吧內容顯示到終端上 echo "七月" #把“七月”寫入到文件里! echo "七月" > /tmp/qiyue.txt echo $PATH #取出列印PATH的值
查找
#Linux里如何找到需要的文件 例如 oldboy.py find 在哪裡(目錄) 什麼類型(文件類型) 叫什麼名字(文件名) 參數 -name 按照文件名查找文件 -type 查找某一類型的文件,諸如: b - 塊設備文件。 d - 目錄。 c - 字元設備文件。 p - 管道文件。 l - 符號鏈接文件。 f - 普通文件。 s - socket文件 find /tmp/ -type f -name "oldboy.py" #找出/tmp所有以 .txt 結尾的文件 find /tmp/ -type f -name "*.txt" #找到/etc下所有名字以host開頭的文件 find /etc -name 'host*' #找到/opt上一個名為settings.py find /opt -name 'settings.py'
管道命令: |
Linux提供的管道符“|”講兩條命令隔開,管道符左邊命令的輸出會作為管道符右邊命令的輸入。 常見用法: #檢查python程式是否啟動 ps -ef|grep "python" #找到/tmp目錄下所有txt文件 ls /tmp|grep '.txt' #檢查nginx的埠是否存活 netstat -tunlp |grep nginx
grep
語法: grep [參數] [--color=auto] [字元串] filename 參數詳解: -i : 忽略大小寫 -n : 輸出行號 -v : 反向選擇 --color = auto : 給關鍵詞部分添加顏色 grep "我要找什麼" /tmp/oldboy.txt #排除 -v,排除我要找的東西 grep -v "我要找什麼 /tmp/oldboy.txt
head、tail命令
head顯示文件前幾行,預設前10行 tail顯示文件後幾行,預設後10行 #查看前兩行 head -2 /tmp/oldboy.txt #查看後兩行 tail -2 /tmp/oldboy.txt #持續刷新顯示 tail -f xx.log #顯示文件10-30行 head -30 /tmp/oldboy.txt |tail -21