簡單的linux運用

**  簡述**
         linux是一套自由加開放源代碼的類Unix操作系統,誕生於1991年10月5日(第一次正式向外公佈),由芬蘭學生linus Torvalds和後來陸續加入的衆多愛好者共同開發完成的。
         linux是一個基於POSIX和Unix多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的Unix工具軟件,應用程序和網絡協議,可以支持32位和64位硬件,Linux繼承了Unix以網絡爲核心的設計思想,是一個性能穩定的多用戶網路操作系統。
         Linux存在許多不同版本,但他們都是用了Linux內核。Linux可安裝再各種計算機硬件設備中,比如手機,平板電腦,路由器、視屏遊戲控制檯,臺式計算機,大型和超大計算機。
         嚴格來講,Linux這個詞本身只表示Linux內核,但實際上人們已經習慣了用Linux來形容整個基於Linux內核,並且使用GNU工程各種工具和數據庫的操作系統。
         但是也有些人使用Linux來做一些壞事,例如釣魚WiFi,或者使用BTLinux和CBLinux這個兩個版本來暴力破解別人的路由,進行抓包,可以獲取使用這個路由器連上外網的人的信息,一般可以獲取賬號、信息、視屏、圖片、之類的東西。曾今看到一個網站上的教學,上面著述,純粹教學科技演示,不是不黑你,只是你沒有黑的價值。
** Linux內核**
        內核是Linux系統最底層,提供了核心功能並且允許進行以一種有序的方式來訪問硬件。
        用於控制進程,輸入輸出設備,文件系統操作,管理內存,這個都需要內核來操作。
        當以一個程序要運行,就會產生一個進程,shell翻譯成內核所能理解的二進制指令,內核收到,把程序加載到CPU上,這個程序不是一直運行下去的,有個時間片,內核規定你在CPU運行多長時間,把這個這個程序放到內存的一個地方,給他表上地址,然後運行下一個進程,假如說這個進程運行完之後,內核就會找到上一個程序沒有結束的地址,加載CPU上運行。這個進程需要什麼,內核從磁盤放到內存裏。

軟件安裝
以Ubuntu系統爲例
dpkg命令:當你沒有網絡時,你有軟件包,此時,dpkg起到決定的性作用

                -i:安裝一個在本地文件系統上存在的Debian軟件包
                -r: 溢出一個已經安裝的軟件包
                -P:移除已安裝的軟件包及配置文件
                -L: 查看軟件安裝到那些目錄中
                -s:顯示軟件包的安裝狀態
                -l:列出系統所有已經安裝的軟件
                例如  dpkg i +軟件包名
                                    dpkg  -P 軟件名  完全卸載軟件

         與dpkg相對應的是apt-get,有網絡時你可以通過apt-get來安裝軟件
                   apt-get:
                                 -f:修復系統中存在軟件依賴關係
                                 -m:當發現缺少關聯軟件包時,仍是圖繼續執行
                                 -q:當輸出作爲日誌保留,不獲取命令執行進度
                                 --purge:與remove一起使用,完全卸載軟件包相當於dpkg -P
                                 --reinstall:與install子命令一起使用,重新安裝軟件包apt-get install  --reinstall
                                 -b:在下載完源碼包後,編譯生成相應的軟件包
                                 -s:不做實際操作,只是模擬命令執行結果
                                 -y:對所有詢問都做肯定回答,apt-get不在進行任何提示
                                 -u:獲取已升級的軟件包列表
                                 -h:獲取升級軟件包列表
                                 -v:獲取apt-get版本信號
    使用apt-cache命令完成查詢軟件源和軟件包的相關信息 +pkg
                         show:獲取二進制軟件包的詳細描述信息
                         search:根據正則表達式檢索軟甲包
                         depends:獲取所有依賴於該軟件包的軟件包
                         rdepends:獲取所有依賴該軟件包的軟件包
                         policy:獲取軟件包當前安裝狀態
                         stats:獲取軟件源的基本統計信息
**介紹幾個常用的命令**
            whereis  查找命令 命令 ,函數 等其他的東西所在的位置  whereis  ls
            which: 查找使用程序 
            whatis:查看命令或函數的來時類型種類
            time :統計使用時間的函數  time ls   示執行的時間
            shutdown -r  +10 :十分鐘後重啓    必須時超級用戶權限纔可以
                                             +now   :立刻關機 
                                             -h +10 : 十分鐘後關機
            df命令:顯示磁盤使用情況
                                    -a:列出所有文件系統
                                    -b:列出總的空閒空間
                                    -e:僅列出空閒的文件
                                    -k:列出磁盤的分配情況
                                    -h:同-k,但大小以G,M,K,單位顯示
                                    -l:僅列出本地文件系統
            touch +文件名 :創建文件 ,或者使用> filename
            tocuh可以修改時間戳,當別人***你的電腦之後,離開要乾的事就是修改你的文件的時間和寫一個腳本來清除histroy(歷史紀錄)
            kill 殺死進程
                        -9  + pid :強制殺死進程
                        -2  pid  :終止就是Ctrl  +C 
                        -19  pid  :進程停止(到後臺) 快捷鍵 Ctrl +z   恢復 fg 
                        killall  -15  +進程名:發送15信號給所有這個進程名
                        killall5  -9  後果嚴重:殺死所有的進城

文件系統
一直使用微軟Windows操作系統的用戶似乎已經習慣了將硬盤的幾個分區,並用A:、B:、C:、D:等符號標識,存取文件一定要清除存放在那個磁盤的那個目錄下。
Linux的文件組織模式猶如一顆倒置的樹,這與windows文件系統有很大區別。所有存儲設備作爲這棵樹的一個子目錄存儲位置。這一點很難理解,只是剛剛接觸Linux的使用者不太習慣
下面簡單介紹Linux文件系統的份分類
/:Linux文件根目錄
/bin:存放系統文件最常用的可執行文件見(二進制)
/boot:存放Linux內核和系統啓動文件,包括Grub、lilo啓動器程序
/dev:存放所有設備文件,包括硬盤,分區,鍵盤、鼠標、USB、tty等
/etc:存放系統的所有配置文件。例如passwd存放賬戶信息
/home:用戶目錄的默認位置,用戶在這個文件夾就是土皇帝
/initrd:存放啓動時掛載initrd.img映像文件目錄,以及載入所需設備模塊的目錄
/lib:存放共享的庫文件,包含許多被/bin和/sbin中程序使用的庫文件
/lost+found:存放fsck放置零散文件
/media:Ubuntu自動掛載CD=ROM、軟驅、USB存儲器後,存放臨時讀入文件
/mnt該目錄通常用於作爲,被掛載的文件系統的掛載點
/opt:作爲可選文件和程序存放目錄,主要被第三方開發者用來簡易安裝和卸載他們安裝的程序
/proc:存放所有標誌爲文件的進程,他們是通過進程號或者其他的系統動態信息進行標識,例如cpuinfo文件存放CPU當前工作狀態的數據
/root:根用戶(超級用戶)的主目錄
/sbin:存放更多的可執行文件(二進制),包括系統管理、目錄查詢等關鍵命令文件
/tmp“存放用戶臨時文件,所有用戶對目錄查詢等關鍵命令讀寫權限
連接
連接分爲硬鏈接和軟連接,硬鏈接是當文件新建時,文件系統會給文件一個index,根據index來創建文件,源文件修改對目標文件有影響。但是刪除源文件,不會對目標文件有任何影響,相當於這個源文件創建一個不副本,修改其內容源文件和目標文件都會進行相應的修改。但是硬鏈接不能創建硬鏈接文件夾,軟連鏈接:類似windows快捷鍵,軟鏈接只是對應指定的路徑和文件名或文件夾名,如果軟文件更改路徑或換個新名字,軟鏈接將失效。
ln:用來創建文件鏈接。
語法
ln (選項)(參數)
-b:刪除,覆蓋目標文件之前的備份
-f或——force:強行建立文件或目錄的連接,不論文件或目錄是否存在;
-i或——interactive:覆蓋既有文件之前先詢問用戶;
-n或--no-dereference:把符號連接的目的目錄視爲一般文件;
-s或——symbolic:對源文件建立符號連接,而非硬連接;
-S<字尾備份字符串>或--suffix=<字尾備份字符串>:用"-b"參數備份目標文件後,備份文件的字尾會被加上一個備份字符串,預設的備份字符串是符號“~”,用戶可通過“-S”參數來改變它;
-v或——verbose:顯示指令執行過程;
-V<備份方式>或--version-control=<備份方式>:用“-b”參數備份目標文件後,備份文件的字尾會被加上一個備份字符串,這個字符串不僅可用“-S”參數變更,當使用“-V”參數<備份方式>指定不同備份方式時,也會產生不同字尾的備份字符串;
alias 命令起別名
例如 ls 手速快點容易打成sl 那麼給ls 七個別名叫sl 這樣就不會出現錯誤了
alias sl = ‘ls’
tar文件歸檔壓縮解壓
作用:主要用於將若干文件夾或目錄合併成爲一個文件以便備份和壓縮,當然,之後出現tar程序的改進版本,可以實現合併歸檔的同時進行壓縮,
格式: tar [-t | -x | -u | -f | -j | -z | tarfile filelist

         -t :顯示歸檔文件的內容
         -x:釋放歸檔文件
         -u:更行歸檔文件
         -c : 創建一個新的歸檔文件
         -v:顯示歸檔和釋放的過程
         -j:由tar生成歸檔,然後由bzip2壓縮
         -z:由tar生成歸檔,然後由gzip壓縮

        ping 地址查看網絡通不通
                    ttl:顯示經過幾個路由到達目標網址   time:從你開始到目的網站再回來所使用的時間
        nslookup:查看域名地址
        sudo dhclient  設置爲自動獲取

**shell腳本**
        shell是命令行解釋器
        shell腳本時命令的有序集合
        shell腳本以#!/bin/bash  表示使用bash的shell進行解釋
        常用shell環境變量:
                    HOME:/etc/passwd文件中列出的用戶主目錄
                    IFS:Internal  Field Separator,默認認爲空格,tab及換行符
                    PATH:shell命令的搜索路徑
                    PS1,PS2:默認提示符($)級還行符提示符(>)
                    SHELL:默認shell
                     例如 打印第一行話  echo "hello world"
                     打印字符串的長度:
                         string=”ni hao"
                         echo ${#string}    顯示字符長度爲6
                         unset  string   :刪除這個變量
         在shell編程中通常使用全大寫變量,方便識別
         $COUNT=1
         變量的調用:在變量前加$
         $echo $HOME 
         linux shell/bash 從右向左賦值
         y=Y
         使用unset命令刪除變量賦值
         Z=hell
         echo $Z
         unset Z
         在shell腳本中單引號時強類型,雙引號時弱類型,使用單引號引用時變量不發生任何變化,例如:echo '$Z'  打印出來還是$Z
         $@ 在for循環中是一個一個輸出
        read -s 輸入隱藏
                        -n:限制輸出次數
                        -p :打印一句話 在輸出
    expr:只能用於用於進行簡單的正數運算。
    expr  12+5\*3   結果爲27

    test 命令用於檢查某個條件是否成立,與方括號([ ])類似。
    測試文件類型:test -d file :測試是否爲一個目錄

          -d:測試是否爲一個目錄
            -e:是否爲一個文件
            -f:是否爲一個普通文件
            -L:是否爲符號鏈接
            -r :是否存在可讀
            -w:是否可寫
            -x:是否執行
            -s:文件是否存在且長度不爲0
            f1 -nt f2:測試是否比文件f2更新
            f1 -ot f2:是否比文件f2更舊

            if 、elif 、continue,break使用

            if 語句通過關係運算符判斷表達式的真假來決定執行哪個分支。Shell 有三種 if ... else 語句:
                if ... fi 語句;
                if ... else ... fi 語句;
                if ... elif ... else ... fi 語句
                if ... else 語句的語法:

if [ expression ]
then
Statement(s) to be executed if expression is true
fi
如果 expression 返回 true,then 後邊的語句將會被執行;如果返回 false,不會執行任何語句。

最後必須以 fi 來結尾閉合 if,fi 就是 if 倒過來拼寫,後面也會遇見。

注意:expression 和方括號([ ])之間必須有空格,否則會有語法錯誤。

舉個例子:

#!/bin/sh
a=10
b=20
if [ $a == $b ]
then
echo "a is equal to b"
fi
if [ $a != $b ]
then
echo "a is not equal to b"
fi
運行結果:
a is not equal to b

if ... elif ... fi 語句
if ... elif ... fi 語句可以對多個條件進行判斷,語法爲:
if [ expression 1 ]
then
Statement(s) to be executed if expression 1 is true
elif [ expression 2 ]
then
Statement(s) to be executed if expression 2 is true
elif [ expression 3 ]
then
Statement(s) to be executed if expression 3 is true
else
Statement(s) to be executed if no expression is true
fi
哪一個 expression 的值爲 true,就執行哪個 expression 後面的語句;如果都爲 false,那麼不執行任何語句。

case...esac
多路分支語句case用於多重條件測試,語法結構清晰自然,其語法爲
case 字符串變量 in #case語句只能測試字符串變量
模式1)
命令表
;;
模式2|模式3)
命令表
;;
*)
命令表
;; #最後一個雙分號可以省略
esac #結束標誌

        for...do..done
        當循環次數已知或確定時,使用for循環語句來多次執行一條或一組命令。循環體由語句括號do和done來限定
        格式爲:
        for 變量名  in 單詞表   #意味者在變量名的大小從單詞表中查找
        do
                        命令表
        done
        變量一次取單詞表中的各個單詞,每取一次單詞,就執行一次循環體中的命令,循環次數由單詞表中的單詞數確定。命令表中的命令可以時一條,也可以是由分號或換行符分開的多條
        如果單詞表使命令行上的所有位置參數時,可以在for語句中省略in單詞表部分。
        用for實現死循環
        例如:
            for i 
            do 
                        echo
            done

break,continue:不同於C語言,java等其他語言

    break 後面不加數字,表示跳過一個循環
    break 2 意味着:跳過兩成循環
    continue後面什麼也不加意味着結束本次循環
    continue 2 意味着 第一層爲break;第二層爲continue。

    寫的不好勿噴,嘻嘻。如果有錯的,請多多指教。鄙人將不勝感激。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章