閱讀958 返回首頁    go 技術社區[雲棲]


linux shell 基礎 使用日誌與心得

在網上看到很多LNAMP/LAMP一鍵安裝環境,使用了很多種,比較好的就那幾種,但是他們的靈活度不夠,所以想啊,自己整個出來

https://lnmp.org/install.html
https://www.wdlinux.cn/lanmp/

我是整合這兩個環境而成,變化很多。

有很多想法正在慢慢實現中,先把基礎的實現。

需實現功能:
1.自定義安裝目錄(指的是mysql,php,nginx 全部安裝到某個目錄下)
2.PHP版本選擇
以下是用到的 SHELL 命令等

1.#!/bin/bash 第一行就出現

#!/bin/bash是指此腳本使用/bin/bash來解釋執行。
其中,#!是一個特殊的表示符,其後,跟著解釋此腳本的shell路徑。
bash隻是shell的一種,還有很多其它shell,如:sh,csh,ksh,tcsh,...
詳細介紹:
https://blog.sina.com.cn/s/blog_6336857901019zyz.html

https://blog.csdn.net/jackalfly/article/details/7571616

2.export PATH

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/root/bin:~/bin
export PATH

export PATH=$PATH:/home/zhaodw
勝於修改環境變量,但隻在本次登錄中有效
注意:(與shell變量相結合)
1) =前PATH變量不加$符號
2) 再增加的路徑用:追加
功能說明:設置或顯示環境變量。
語  法:export [-fnp][變量名稱]=[變量設置值]
補充說明:在shell中執行程序時,shell會提供一組環境變量。export可新增,修改或刪除環境變量,供後續執行的程序使用。export的效力僅及於該此登陸操作。
參  數:
 -f  代表[變量名稱]中為函數名稱。
 -n  刪除指定的變量。變量實際上並未刪除,隻是不會輸出到後續指令的執行環境中。
 -p  列出所有的shell賦予程序的環境變量

詳細介紹:

https://www.cnblogs.com/zhangze/articles/1832542.html
https://blog.csdn.net/zcywell/article/details/7687178
https://blog.csdn.net/embed2010/article/details/5988267

3.echo "====="

在屏幕上打印出指定的字符串

更多詳細介紹:
https://see.xidian.edu.cn/cpp/html/1498.html
https://hi.baidu.com/auyvfshtkhbegid/item/49f0d13009c141312e0f817a

4.exit

命令用於退出當前shell,在shell腳本中可以終止當前腳本執行。

SHELL中的exit 0 和 exit 1有什麼區別?
當你 exit 0 的時候,在調用環境  echo $?    就返回0,也就是說調用環境就認為你的這個程序執行正確。
當你 exit 1 的時候,一般是出錯定義這個1,也可以是其他數字,很多係統程序這個錯誤編號是有約定的含義的。 但不為0  就表示程序運行出錯。 調用環境就可以根據這個返回值判斷 你這個程序運行是否ok。
如果你用 腳本 a  調用 腳本b ,要在a中判斷b是否正常返回,就是根據  exit 0   or  1 來識別。
執行完b後, 判斷  $?   就是返回值

更多詳細介紹:
https://www.hndy1688.com/service-60.html

5.; shell分號作用

分號是用來隔斷每個語法關鍵字或命令的 。
對於字符的比較及其他shell語法關鍵字之間分號的使用方式相同。
需要知道的是在不同的語法命令之間要用分號隔開或是換行方能執行,否則將會在調用腳本的時候報錯。
https://hi.baidu.com/lozard/item/6bf9de1b2e704ef1756a84e3

6.if else fi 或 if [ "$test" = "test" ]; then 。。。。fi

if [ $UID != 0 ]; then
echo "===="
exit;
fi

條件判斷
更多詳細介紹:
https://www.cnblogs.com/276815076/archive/2011/10/30/2229286.html
https://blog.chinaunix.net/uid-20788517-id-3135826.html

7.declare -a ARR  數組

declare -a ARR #聲明一個數組 ARR 可以自定義
 ARR['key']="值" #給數組某鍵賦值
echo ${ARR['kye']} #在屏幕上輸出該鍵值
echo ${ARR[*]} #輸出所有值 或者 ${ARR[@]}
echo ${#ARR[*]} #數組長度個數   或者${#ARR[@]}
echo ${!array[*]} #輸出數組所有鍵  或者 ${!array[@]}

https://www.cnblogs.com/fhefh/archive/2011/04/22/2024857.html
https://hi.baidu.com/liuhelishuang/item/efaff6d33faacbe5b3f777b2
https://www.cnblogs.com/zhuyp1015/archive/2012/07/07/2580716.html
https://blog.csdn.net/ysdaniel/article/details/7909824
https://hi.baidu.com/liuhelishuang/item/efaff6d33faacbe5b3f777b2
https://hi.baidu.com/liuhelishuang/item/efaff6d33faacbe5b3f777b2

8.source 或 點(shell source .)

source /home/test/lnamp.sh

. /home/test/lanmp.sh
意思這兩個是一樣的

source或點 不是直接執行一個文件,而是從一個文本文件裏麵讀命令行,然後執行這些命令
另外一種意思
shell 加載 其他文件,包含其他文件(可以把一個很大SHELL分開來,例如一個文件專門配置文件,一個文件是函數庫文件)

https://blog.csdn.net/xiaolang85/article/details/7861441
https://blog.chinaunix.net/uid-22028566-id-3182362.html

9.function 函數

function fname(){
local  tmp="test"       #局部變量,隻有函數內部使用,其他變量都是全局變量
tmp=$1                      # $1就是取該函數的參數1(test1)
tmp=$2                      # $2就是取該函數的參數2(test2)
tmp=$*                       # $*就是取所有參數
程序段
retrun 1     #數值 0-255
}

調用:

fname "test1" "test2"
必須在調用函數地方之前,聲明函數,shell腳本是逐行運行。不會像其它語言一樣先預編譯。一次必須在使用函數前先聲明函數
參數返回,可以顯示加:return 返回(0-255),如果不加,將以最後一條命令運行結果,作為返回值

https://www.cnblogs.com/chengmo/archive/2010/10/17/1853356.html

10.switch case 選擇

https://blog.csdn.net/ph123456789/article/details/6334040

https://blog.csdn.net/dreamtdp/article/details/8048720

11.shell for in   循環  while/until

11.1.for 變量 in 字符串(這個可以是數組)

for rs in $(seq "one" "two" 3 4 5 asdfsadf "dsf sadf");do
    echo $rs;
done;

11.2.for((賦值;條件;運算語句))

for((i=1;i<=10;i++));do
    echo $i;
done;

https://blog.csdn.net/ph123456789/article/details/6334040

11.3.while 條件語句

i=10;
whil [[ $i -gt 5 ]];do
    echo$i;
    ((i--));
done;

11.4.untile 條件語句

i=10;
until [[ $i -gt 0 ]];do
    echo$i;
    ((i--));
done;

12.read -p 命令接收標準輸入(鍵盤)的輸入

read -p "Please Input 1,2,3,4,5: " SERVER_ID
echo "Input $SERVER_ID"
read命令接收標準輸入(鍵盤)的輸入,或其他文件描述符的輸入(後麵在說)。得到輸入後,read命令將數據放入一個標準變量中

https://blog.sina.com.cn/s/blog_4077692e0100r7ct.html

13.clear  (shell clear) 清屏命令

清空本顯示屏幕

14.sleep 睡眠

sleep 1    睡眠1秒
sleep 1s    睡眠1秒
sleep 1m   睡眠1分
sleep 1h   睡眠1小時

15.chmod  chown chgrp

15.1.chmod 給文件或文件夾設置權限

chmod 777 test.txt
https://www.cnblogs.com/peida/archive/2012/11/29/2794010.html

15.2.chown 改變文件或文件夾的用戶或者用戶組

chown user1 test.txt
chown -R user1:root /tmp/test
https://www.cnblogs.com/peida/archive/2012/12/04/2800684.html

15.3.chgrp 改變文件或文件夾的用戶組

chgrp user1 test.txt
https://www.cnblogs.com/peida/archive/2012/12/03/2799003.html


https://blog.163.com/yang_jianli/blog/static/1619900062012116101843165/

16.mkdir 創建目錄,創建文件夾(創建多個目錄)

mkdir test
mkdir -p test/test2/test3       #一次性創建3個文件夾
https://www.cnblogs.com/peida/archive/2012/10/25/2738271.html

17.pwd   或  $(pwd)當前工作目錄,當前文件路徑

https://www.cnblogs.com/peida/archive/2012/10/24/2737730.html

19.uname

20.basename

21.$() 括號 與 `` 反引號

22.${}  變量替換
23.$ 變量


25.type -p

26.ls 顯示目錄下文件和目錄
https://www.cnblogs.com/peida/archive/2012/10/23/2734829.html

27.cd 切換至目錄,打開文件夾

cd /root
cd ../
cd ~        #切換至當前用戶文件夾下
https://www.cnblogs.com/peida/archive/2012/10/24/2736501.html

28.rm 刪除文件或文件夾目錄

rm log.log
rm -rf  log    #刪除log目錄下所有文件,忽略不存在文件,不提示

https://www.cnblogs.com/peida/archive/2012/10/26/2740521.html

29.rmdir 刪除空目錄

rmdir doc
https://www.cnblogs.com/peida/archive/2012/10/27/2742076.html

30.tree 已樹狀列出所有目錄的內容

https://linux.sheup.com/linux/4/31078.html

31.mv 移動文件或將文件改名

mv test.log test.txt    #文件改名
mv test.log log         #將文件test.log 移動到log目錄中
https://www.cnblogs.com/peida/archive/2012/10/27/2743022.html

32.cp 複製文件或者目錄

cp test.log  test.txt          #複製文件
cp test.log log                 #將文件test.log 複製到log目錄中

https://www.cnblogs.com/peida/archive/2012/10/29/2744185.html

33.touch 修改文件時間戳,或者新建一個不存在的文件

touch test.log

https://www.cnblogs.com/peida/archive/2012/10/30/2745714.html

34.cat 鏈接文件或輸入並打印顯示內容

https://www.cnblogs.com/peida/archive/2012/10/30/2746968.html

35.more 一頁一頁顯示,用空格鍵下一頁,按 b 鍵,返回上一頁

more test.log
https://www.cnblogs.com/peida/archive/2012/11/02/2750588.html

36.tail 查看即時日誌,不斷刷新

tail -f  test.log

https://www.cnblogs.com/peida/archive/2012/11/07/2758084.html

37.find  查找搜索文件

find / -name test.log    #全部目錄搜索  test.log 文件名
https://www.cnblogs.com/peida/archive/2012/11/16/2773289.html
https://www.cnblogs.com/peida/archive/2012/11/13/2767374.html

38.tar 壓縮,解壓縮

tar -zcvf log.tar.gz

https://www.cnblogs.com/peida/archive/2012/11/30/2795656.html

39.ln 建立連接,軟連接,硬鏈接

ln -s log.log link2013
https://www.cnblogs.com/peida/archive/2012/12/11/2812294.html

40.date  時間

https://www.cnblogs.com/peida/archive/2012/12/13/2815687.html

41.grep 文本搜索

ps -ef|grep svn

https://www.cnblogs.com/peida/archive/2012/12/17/2821195.html

42.ps  列出 當前運行進程

https://www.cnblogs.com/peida/archive/2012/12/19/2824418.html

43.kill  終止/關閉/殺死 進程

kill -9 2123
https://www.cnblogs.com/peida/archive/2012/12/20/2825837.html

44.killall 終止/關閉/殺死 進程名稱

killall mysql

https://www.cnblogs.com/peida/archive/2012/12/21/2827366.html

45.top 性能分析

https://www.cnblogs.com/peida/archive/2012/12/24/2831353.html

46.ifconfig  查看IP 網關 子網掩碼

https://www.cnblogs.com/peida/archive/2013/02/27/2934525.html

47.netstat  顯示與IP、TCP、UDP和ICMP協議相關的統計數據,一般用於檢驗本機各端口的網絡連接情況

https://www.cnblogs.com/peida/archive/2013/03/08/2949194.html

48.scp  遠程複製文件

https://www.cnblogs.com/peida/archive/2013/03/15/2960802.html

49.wget  下載文件

wget https://url.com/test.zip
https://www.cnblogs.com/peida/archive/2013/03/18/2965369.html

31.groupadd   useradd

32./sbin/ldconfig

33.ulimit


35.sed

36.unset

37.netstat -ntl

38.#

39.update-rc.d

40./sbin/iptables



2>&1 | tee -a


更多命令

https://www.cnblogs.com/peida/tag/linux%E5%91%BD%E4%BB%A4/default.html

最後更新:2017-04-03 14:53:45

  上一篇:go matlab產生m序列代碼
  下一篇:go [劍指Offer]7.從尾到頭打印鏈表