<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Linux基礎 ## 一、Linux目錄結構 /bin:存放必要的命令、標準系統實用程序、增加的用戶程序。 /boot:存放啟動Linux時使用的一些核心文件、內核。 /dev:存放設備文件。 /etc:存放設置文件、系統管理所需要的配置文件和子目錄。 /home:用戶文件的主目錄,存放用戶數據。 /lib:存放系統最基本的動態鏈接共享庫、必要的運行庫。 /lost+found:存放系統意外關機時未保存的文件。 /media: linux系統會自動識別一些設備,例如U盤、光驅等等,當識別后,linux會把識別的設備掛載到這個目錄下。 /mnt:系統提供該目錄是為了讓用戶臨時掛載別的文件系統的,我們可以將光驅掛載在/mnt/上,然后進入該目錄就可以查看光驅里的內容了。 /opt:這是給主機額外安裝軟件所擺放的目錄。比如你安裝一個ORACLE數據庫則就可以放到這個目錄下。默認是空的。 /proc:這個目錄是一個虛擬的目錄,它是系統內存的映射,我們可以通過直接訪問這個目錄來獲取系統信息。 /root:該目錄為系統管理員,也稱作超級權限者的用戶主目錄。 /sbin:s就是Super User的意思,這里存放的是系統管理員使用的系統管理程序。 /selinux:這個目錄是Redhat/CentOS所特有的目錄,Selinux是一個安全機制,類似于windows的防火墻,但是這套機制比較復雜,這個目錄就是存放selinux相關的文件的。 /srv:該目錄存放一些服務啟動之后需要提取的數據。 /sys:這是linux2.6內核的一個很大的變化。該目錄下安裝了2.6內核中新出現的一個文件系統 sysfs 。sysfs文件系統集成了下面3種文件系統的信息:針對進程信息的proc文件系統、針對設備的devfs文件系統以及針對偽終端的devpts文件系統。該文件系統是內核設備樹的一個直觀反映。當一個內核對象被創建的時候,對應的文件和目錄也在內核對象子系統中被創建。 /tmp:這個目錄是用來存放一些臨時文件的。 /usr:這是一個非常重要的目錄,用戶的很多應用程序和文件都放在這個目錄下,類似于windows下的program files目錄。 /usr/bin:系統用戶使用的應用程序。 /usr/sbin:超級用戶使用的比較高級的管理程序和系統守護程序。 /usr/src:內核源代碼默認的放置目錄。 /var:這個目錄中存放著在不斷擴充著的東西,我們習慣將那些經常被修改的目錄放在這個目錄下。包括各種日志文件。 /run:是一個臨時文件系統,存儲系統啟動以來的信息。當系統重啟時,這個目錄下的文件應該被刪掉或清除。如果你的系統上有 /var/run 目錄,應該讓它指向 run。 ## 二、Linux常用命令 Linux常用命令 pwd 查看當前所在的目錄 date 查看當前系統時間 who 查看當前在線 (whoami查看當前登錄的用戶) last 查看最近的登錄歷史 ls / 查看根目錄下的所有內容 ls -l 以列表的方式展示 -a 顯示隱藏文件 -h 顯示文件大小 cd cd~進入用戶根目錄 cd -回到原來路徑 cd ..去上一層目錄 創建文件夾 mkdir abc 相對路徑的寫法 mkdir -p aaa/bbb/ccc 可以創建多層文件 mkdir /data 絕對路徑的寫法 刪除文件夾 rmdir 可以刪除空目錄 rm -r aaa 可以把整個文件夾以及其中所有的子節點刪除。(帶有刪除提示) 注意:r表示遞歸。(recursion) rm -rf aaa 強制刪除(無提示) 修改文件夾名稱 mv aaa hhh 修改文件名稱 mv file.1 /data/hello.1 移動文件到指定目錄并修改文件名 創建文件 touch file.1 創建一個空文件 echo "hello linux ..." > file.1 利用重定向將輸出內容寫入到file.1文件中 echo "bye,bye!" >> file.1 將指定內容重定向到目標,不覆蓋原有內容。>會覆蓋文件原有內容,>> 在文件原有內容的基礎上進行追加 可以使用cat 命令查看文件內容。 head file.1 查看文本 默認顯示前十行 tail 默認顯示后十行 more 全部顯示 cp a.txt /etc/b.txt拷貝并改名 find查找文件 1.按照文件名進行查找 (1)find / -name httpd.conf  #在根目錄下查找文件httpd.conf,表示在整個硬盤查找 (2)find /etc -name httpd.conf  #在/etc目錄下文件httpd.conf (3)find /etc -name '*srm*'  #使用通配符*(0或者任意多個)。表示在/etc目錄下查找文件名中含有字符串‘srm’的文件 (4)find -name 'srm*'   #表示當前目錄下查找文件名開頭是字符串‘srm’的文件 2.按照文件特征查找      (1)find / -amin -10   # 查找在系統中最后10分鐘訪問的文件(access time) (2)find / -atime -2   # 查找在系統中最后48小時訪問的文件 (3)find / -empty   # 查找在系統中為空的文件或者文件夾 (4)find / -group cat   # 查找在系統中屬于 group為cat的文件 (5)find / -mmin -5   # 查找在系統中最后5分鐘里修改過的文件(modify time) (6)find / -mtime -1   #查找在系統中最后24小時里修改過的文件 (7)find / -user fred   #查找在系統中屬于fred這個用戶的文件 (8)find / -size +10000c  #查找出大于10000000字節的文件(c:字節,w:雙字,k:KB,M:MB,G:GB) (9)find / -size -1000k   #查找出小于1000KB的文件 whereis ls 查找命令在哪一個目錄下 同which 壓縮與解壓 1.不保留原文件 gzip abc 對文件進行壓縮為.gz后綴名壓縮文件 gunzip abc.gz 對壓縮文件進行解壓 同gzip -d abc.gz 2.保留源文件 tar -czvf file1.tar.gz file1將file1文件壓縮為后綴名為.tar.gz的文件 tar -xzvf file1.tar.gz 解壓 使用vi創建文件 vi file.3 1.一般模式:只接受快捷鍵,進入vi編輯器的默認模式。 gg:直接跳到首行 G:直接跳到尾行 i:進入編輯模式 a:在光標的后一位開始插入 A:在該行的最后插入 dd:刪除當前行 3dd 一次刪除光標后3行 yy:復制當前行 3yy 一次復制3行 p:進行粘貼 v Ctrl+v Shift+v:分別對應字符模式,塊模式,行模式。該模式下y復制,p粘貼 2.編輯模式:Esc退出編輯模式回到一般模式。 3.底行模式 : 輸入: 表示進入底行模式。 %s/haha/sbsbsb:查到所有haha字符并替換成sbsbsb /指定內容:直接查找到指定內容 :wq保存文件并退出vi :wq!強制保存文件,并退出vi :q!強制退出 :e!放棄所有修改,從上次保存文件開始再編輯 5.文件權限操作 權限解讀:drwxr-xr-x d:標識節點類型(d:文件夾 -:文件 l:鏈接) r:可讀 w:可寫 x:可執行 第一組rwx: 表示這個文件的擁有者對它的權限 第二組rwx: 表示這個文件的所屬組對它的權限 第三組rwx: 表示這個文件的其他用戶(相對于上面兩類用戶)對它的權限 修改權限rwx u代表自己 ug代表同一組 o代表其他人 a代表所有人 +代表增加權限 -代表去掉權限 =代表賦予權限 chmod u+w,ug-x,o+r a.txt chmod a=wx a.txt 則權限為-wx-wx-wx chmod -R a+r * 為當前目錄下的所有文件與子目錄同時設置權限 chown users:jessie a.txt 將文件的用戶擁有者設為users,組的擁有者設為root 6.基本用戶管理 1、添加用戶 useradd 用戶名 passwd 用戶名 2、用戶的切換   su 用戶名 切換成指定用戶 sudo 執行當前命令的時候使用root權限 權限配置的文件在/etc/sudoers文件中 3、主機名稱 hostname 查看主機名稱 /etc/sysconfig/network 可以永久修改主機名稱 4、IP地址修改 ifconfig 查看ip信息 /etc/sysconfig/network-scripts/ifcfg-eth0 service network restart 重啟網絡配置 8.查看文件大小 stat a.txt 查看文件詳情 du -s /opt 查看匯總之后的文件大小 du -sh /opt 查看匯總之后的人能看懂的。(帶單位)而不是顯示當前文件在linux文件系統中占多少元數據 9.查看分區大小 df -h 查看分區使用情況 10.關機,重啟 halt 關機 reboot 重啟 ## 三、JDK安裝 ### 1、解壓縮文件 ### 1.使用tar -zxvf JDK安裝包,命令解壓縮文件. -C ### 2、配置環境變量 ? vi /ect/profile ? 加入如下代碼。 ``` export JAVA_HOME=/opt/jdk1.7.0_79 export PATH=$PATH:$JAVA_HOME/bin ``` ? 重新加載配置文件 ? source /etc/profile ? reboot之后永久生效。 # Shell編程 ## 一、變量 1.變量可以被重新定義 2.使用readonly可以將變量定義為只讀 3.unset可以刪除變量 不能刪除只讀變量 ```shell myUrl="http://www.google.com" readonly myUrl myUrl="http://www.runoob.com" unset myUrl ``` ## 二、字符串 1.單引號里的任何字符都會原樣輸出 單引號字符串中的變量是無效的 2.單引號字符串中不能出現單個引號 但可成對出現作為拼接字符 3.雙引號里可以出現轉義字符 ```shell your_name='runoob' str="Hello, I know you are \"$your_name\"! \n" echo -e $str ``` 輸出結果為 ```shell Hello, I know you are "runoob"! ``` ### 1、拼接字符串 ```shell your_name="runoob" # 使用雙引號拼接 greeting="hello, "$your_name" !" greeting_1="hello, ${your_name} !" echo $greeting $greeting_1 # 使用單引號拼接 greeting_2='hello, '$your_name' !' greeting_3='hello, ${your_name} !' echo $greeting_2 $greeting_3 ``` 輸出結果為 ```shell hello, runoob ! hello, runoob ! hello, runoob ! hello, ${your_name} ! ``` ### 2、獲取字符串長度 ```shell string="abcd" echo ${#string} #輸出 4 ``` ### 3、提取子字符串 ```shell #參數1表示從索引1處開始提取 參數4表示截取4個字符 string="runoob is a great site" echo ${string:1:4} # 輸出 unoo ``` ### 4、查找子字符串 ```shell #查找字符i或o最先出現的位置 string="runoob is a great site" echo `expr index "$string" io` # 輸出 4 ``` ## 三、數組 ### 1、創建數組 ```shell array_name=(value0 value1 value2 value3) :<<! array_name[0]=value0 array_name[1]=value1 array_name[n]=valuen 可以不使用連續的下標,而且下標的范圍沒有限制。 ! ``` ### 2、讀取數組 ```shell #使用 @ 符號可以獲取數組中的所有元素 echo ${array_name[@]} ``` ### 3、獲取數組長度 ```shell #*或@都可以 echo ${#array_name[*]} ``` ### 4、獲取數組單個元素長度 ```shell echo ${#array_name[n]} ``` ## 四、傳遞參數 ```shell #$0為執行的文件名 $n為第n個參數 echo "執行的文件名:$0"; echo "第一個參數為:$1"; echo "第二個參數為:$2"; echo "第三個參數為:$3"; echo "傳遞到腳本的參數個數:$#"; #使用""將$*括起來傳的參數等價于一個參數"a b c" #使用""將$@括起來傳的參數等價于三個參數"a""b""c" echo "顯示所有向腳本傳遞的參數:"$*""; echo "腳本運行的當前進程ID號:$$"; echo "后臺運行的最后一個進程的ID號:$!"; echo "顯示shell使用的當前選項:$-"; echo "顯示最后命令的退出狀態0表示無錯誤:$?"; ``` ## 五、運算符 1.expr是一款表達式計算工具 2.表達式和運算符之間必須要有空格 3.完整的表達式要被``包含而不是單引號 ```shell val=`expr 2 + 2` echo "兩數之和為 : $val" ``` ### 1、算術運算符 ```shell a=10 b=20 val=`expr $a + $b` echo "a + b : $val" val=`expr $a - $b` echo "a - b : $val" #乘號做運算時需在前邊加上\ val=`expr $a \* $b` echo "a * b : $val" #a/b結果為0 val=`expr $b / $a` echo "b / a : $val" val=`expr $b % $a` echo "b % a : $val" #if與括號與變量間全都要加上空格 if [ $a == $b ] then echo "a 等于 b" fi if [ $a != $b ] then echo "a 不等于 b" fi ``` ### 2、關系運算符 ```shell :<<EOF -eq:檢測兩個數是否相等,相等返回 true -ne:檢測兩個數是否不相等,不相等返回 true -gt:檢測左邊的數是否大于右邊的 -lt:檢測左邊的數是否小于右邊的 -ge:檢測左邊的數是否大于等于右邊的 -le:檢測左邊的數是否小于等于右邊的 EOF a=10 b=20 if [ $a -eq $b ] then echo "$a -eq $b : a 等于 b" else echo "$a -eq $b: a 不等于 b" fi ``` ### 3、邏輯運算符 ```shell #-O 邏輯或運算 || 短路或 #-a 邏輯與運算 && 短路與 a=10 b=20 if [ $a != $b ] then echo "$a != $b : a 不等于 b" else echo "$a == $b: a 等于 b" fi if [ $a -lt 100 -a $b -gt 15 ] then echo "$a 小于 100 且 $b 大于 15 : 返回 true" else echo "$a 小于 100 且 $b 大于 15 : 返回 false" fi if [[ $a -lt 100 || $b -gt 100 ]] then echo "返回 true" else echo "返回 false" fi ``` ### 4、字符串運算符 ```shell :<<EOF =檢測字符串是否相等 != -z檢測字符串長度是否為0 為0返回true -n長度不為0返回true $ 檢測字符串是否為空 不為空返回true EOF a="abc" b="efg" if [ -n "$a" ] then echo "-n $a : 字符串長度不為 0" else echo "-n $a : 字符串長度為 0" fi ``` ### 5、文件測試運算符 ```shell :<<! 文件測試運算符 -b 檢測文件是否是塊設備文件 -c 檢測文件是否是字符設備文件 -d 檢測文件是否是目錄 -f 檢測文件是否是普通文件 -g 檢測文件是否設置了SGID位 -k 檢測文件是否設置了粘著位 -p 檢測文件是否是有名管道 -u 檢測文件是否設置了SUID位 -r 檢測文件是否可讀 -w 檢測文件是否可寫 -x 檢測文件是否可執行 -s 檢測文件是否為空 不為空返回true -e 檢測文件(包括目錄)是否存在 ! file="/root/桌面/test.sh" if [ -r $file ] then echo "文件可讀" else echo "文件不可讀" fi if [ -w $file ] then echo "文件可寫" else echo "文件不可寫" fi if [ -x $file ] then echo "文件可執行" else echo "文件不可執行" fi if [ -f $file ] then echo "文件為普通文件" else echo "文件為特殊文件" fi if [ -d $file ] then echo "文件是個目錄" else echo "文件不是個目錄" fi if [ -s $file ] then echo "文件不為空" else echo "文件為空" fi if [ -e $file ] then echo "文件存在" else echo "文件不存在" fi ``` ## 六、echo命令 ```shell #最外層雙引號可以省略 echo \"It is a test\" #read命令從標準輸入中讀取一行 并把每個字段的值指定給shell變量 #-p輸入提示文字 -n輸入字符長度限制 -t輸入限時 -s隱藏輸入內容 read -p "請輸入一段文字" -n 6 name echo "$name It is a test" #-e開啟轉義 -n換行 -c不換行 echo -e "OK! \n" echo "It is a test" #命令使用`` echo `date` ``` ## 七、printf命令 ```shell :<<! 轉義序列 \a 警告字符,通常為ASCII的BEL字符 \b 后退 \c 不顯示輸出結果中任何結尾的換行字符 \f 換頁 \n 換行 \r 回車 \t 水平制表符 \v 垂直制表符 \\ 一個字面上的反斜杠字符 \ddd 表示1到3位數八進制值的字符,僅在格式字符串中有效 \0ddd 表示1到3位的八進制值字符 ! printf "%-10s %-8s %-4s\n" 姓名 性別 體重kg printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234 printf "%-10s %-8s %-4.2f\n" 楊過 男 48.6543 printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876 # format-string為雙引號 printf "%d %s\n" 1 "abc" # 單引號與雙引號效果一樣 printf '%d %s\n' 1 "abc" # 沒有引號也可以輸出 printf %s abcdef # 格式只指定了一個參數,但多出的參數仍然會按照該格式輸出,format-string 被重用 printf %s abc def printf "%s\n" abc def printf "%s %s %s\n" a b c d e f g h i j # 如果沒有 arguments,那么 %s 用NULL代替,%d 用 0 代替 printf "%s and %d \n" ``` ## 八、test命令 ? 用于檢查某個條件是否成立,可以進行數值、字符和文件三個方面的測試。 ### 1、數值測試 ```shell num1=100 num2=100 if test $[num1] -eq $[num2] then echo '兩個數相等!' else echo '兩個數不相等!' fi ``` ### 2、字符串測試 ```shell num1="ru1noob" num2="runoob" if test $num1 = $num2 then echo '兩個字符串相等!' else echo '兩個字符串不相等!' fi ``` ### 3、文件測試 ```shell if test -e ./notFile -o -e ./bash then echo '至少有一個文件存在!' else echo '兩個文件都不存在' fi ``` ## 九、流程控制 ### 1、if語句 ```shell a=10 b=20 if [ $a == $b ] then echo "a 等于 b" elif [ $a -gt $b ] then echo "a 大于 b" elif [ $a -lt $b ] then echo "a 小于 b" else echo "沒有符合的條件" fi ``` ### 2、for循環 ? 當變量值在列表里,for循環即執行一次所有命令,使用變量名獲取列表中的當前取值。命令可為任何有效的shell命令和語句。in列表可以包含替換、字符串和文件名。in列表是可選的,如果不用它,for循環使用命令行的位置參數。 ```shell #一般格式 for var in item1 item2 ... itemN do command1 command2 ... commandN done #寫成一行 for var in item1 item2 ... itemN; do command1; command2… done; ``` ### 3、while語句 ? while循環用于不斷執行一系列命令,也用于從輸入文件中讀取數據;命令通常為測試條件。while循環用于不斷執行一系列命令,也用于從輸入文件中讀取數據;命令通常為測試條件。 ```shell int=1 while(( $int<=5 )) do echo $int let "int++" done ``` ### 4、until循環 1.until 循環執行一系列命令直至條件為 true 時停止。 2.until 循環與 while 循環在處理方式上剛好相反。 3.一般 while 循環優于 until 循環,但在某些時候—也只是極少數情況下,until 循環更加有用。 ```shell a=0 until [ ! $a -lt 10 ] do echo $a a=`expr $a + 1` done ``` ### 5、case ? case語句為多選擇語句。可以用case語句匹配一個值與一個模式,如果匹配成功,執行相匹配的命令。 ```shell echo '輸入 1 到 4 之間的數字:' echo '你輸入的數字為:' read aNum case $aNum in 1) echo '你選擇了 1' ;; 2) echo '你選擇了 2' ;; 3) echo '你選擇了 3' ;; 4) echo '你選擇了 4' ;; *) echo '你沒有輸入 1 到 4 之間的數字' ;; esac ``` ### 6、跳出循環 ? 在循環過程中,有時候需要在未達到循環結束條件時強制跳出循環,Shell使用兩個命令來實現該功能:break和continue。 - break 允許跳出所有循環 ```shell while : do echo -n "輸入 1 到 5 之間的數字:" read aNum case $aNum in 1|2|3|4|5) echo "你輸入的數字為 $aNum!" ;; *) echo "你輸入的數字不是 1 到 5 之間的! 游戲結束" break ;; esac done ``` - continue 跳出當前循環,繼續下次循環 ```shell while : do echo -n "輸入 1 到 5 之間的數字: " read aNum case $aNum in 1|2|3|4|5) echo "你輸入的數字為 $aNum!" ;; *) echo "你輸入的數字不是 1 到 5 之間的!" continue echo "游戲結束" ;; esac done ``` ## 十、函數 shell 可以用戶定義函數,然后在shell腳本中可以隨便調用。 ? 1.可以帶function fun() 定義,也可以直接fun() 定義,不帶任何參數。 ? 2.參數返回,可以顯示加:return 返回,如果不加,將以最后一條命令運行結果,作為返回值。 return后跟數值n(0-255) ```shell funWithReturn(){ echo "這個函數會對輸入的兩個數字進行相加運算..." echo "輸入第一個數字: " read aNum echo "輸入第二個數字: " read anotherNum echo "兩個數字分別為 $aNum 和 $anotherNum !" return $(($aNum+$anotherNum)) } funWithReturn echo "輸入的兩個數字之和為 $? !" ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看