qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          我的經常使用linux小命令

            這里并非系統具體介紹每個Linux命令,不過記錄本人在平時工作中經經常使用到的一些比較基礎的命令及相關的參數,同一時候用了一些簡單的樣例來說明這些命令的用途,以及怎樣用多種命令來實現同一種功能。
            1、ls命令
            要顯示當前文件夾下的文件列表時,我常常就使用ls命令的下面三個參數。
            -l 使用長列表格式
            -h 文件大小以人可讀的方式打印
            -t 以最后改動時間排序,最新的放在最前
            使用樣例,怎樣顯示當前文件夾下的文件夾?
            方法1: ls -l | grep '^d'
            方法2: ls -l | awk '/^d/'
            2、grep命令
            當須要找出匹配指定模式的文件時,常常會用到grep命令的下面幾個參數。
            -w 全然匹配整個單詞,而不是字符串的一部分,若要匹配abc,則不會匹配abcd
            -i 忽略大寫和小寫
            -n 顯示指定模式在匹配文件里的行號
            -v 反向匹配,即匹配不符合的行
            -f 從文件里獲取待匹配的模式
            使用樣例:
            grep ^$ file 匹配文件file中的全部空行
            grep -v '^$' file 匹配文件file中的全部非空行
            grep '[^^$]' file 匹配文件file中的全部非空行
            grep -vf t2 t1 獲取t1中跟t2數據不匹配的數據,即獲取在t1,但不在t2的數據
            正則表達式[^$]表示匹配空行,前面加上^即表示不匹配空行
            3、排序去重命令 sort vs uniq
            sort 命令用來對數據進行排序。
            -t 用于指定域的分隔符
            -n 以數字方式進行比較,而不是字符比較
            -r 反向排序
            -u 去除反復的行
            -k 以指定的域開始進行排序,域從1開始
            +表示以第幾域排序,-表示不以第幾域排序,如 sort +0 -2 +3則表示以第0域開始排序,略過第2域,然后再使用第3域排序
            uniq 用于刪除文本文件里的連續反復的行,一般使用sort之后再調用uniq。
            -d 僅顯示反復一次的行
            -c 打印每一反復行出現的次數
            sort -u 和uniq的差別在于,uniq僅去除連續反復的行,而sort -u會去除整個文本中全部反復的行,比如,
            #源文件file1中的內容
            hello world
            Good morning
            Good morning
            hello world
            #使用sort -u < file1的結果例如以下:
            hello world
            Good morning
            使用uniq < file1的結果例如以下:
            hello world
            Good morning
            hello world
            4、tr命令
            當須要進行一些簡單的字符串替換和刪除時,tr命令就會顯得很實用。
            比如,以下的tr操作都是沒有直接改動源文件,改動則須要文件重定向
            tr 'A-Z' 'a-z' < file 將字符串的大寫字母都轉為小寫字母:
            tr -s ' ' ' ' < file 把多個連續空格替換成單個空格,-s選項可將多個連續字符替換為一個指定字符
            tr -s '\n' < file 刪除空行
            tr -d '[0-9]' < file 刪除全部數字,-d選項能夠刪除指定的字符
           5、tail命令
            tail命令用于顯示文件末尾指定區域的內容,如tail -10 file, 表示顯示文件file最后10行內容,tail命令有非常多參數,當中有一個常常使用并且非常好用的參數 "-f":
            tail -f 動態顯示文件新增的內容
            該參數作用是不返回文件結束符,并動態顯示文件新增的內容,須要結束時,須要用戶手動進行中斷。這個命令在顯示日志的時候作用就很明顯,對于一個執行中的server,可能會不斷將server當前執行狀態和錯誤狀態寫入日志文件,使用tail -f,將會以一定的時間實時追蹤該文件的全部更新。
            6、find命令
            在查找文件文件的時候,首先會想到是使用find命令。
            -name 依照文件名稱查找文件
            比如,查找當前文件夾下名字以cpp結尾的文件
            find . -name "*cpp" | xargs grep "abc"
            有些系統對參數的長度有限制,xargs命令的作用是將參數列表轉換成小塊分段傳遞給其它命令,以避免參數列表過長的問題。上面的find中,當前文件夾下可能包括非常多名字以cpp結尾的文件,因此為了避免“參數列太長”或“參數列溢出“的錯誤,使用xargs來接收find命令的輸出。
            7、alias命令
            alias命令用于設置命令的別名。利用alias能夠把非常長的命令變成隨意簡短的命令。
            若要加入自己的alias,格式例如以下
            alias ll="ls -lht"
            上述加入alias的操作,在用戶退出后就變為無效了,若要永久生效,能夠改動配置文件~/.bashrc文件(僅改動用戶自己),在文件最后面加上你自定義的alias,如:
            alias la="ls -al --color=auto"
            本次改動,要在下次登錄的時候才干生效。若要立即生效,能夠輸入:
            source ~/.bashrc
            8、進程相關命令
            ps命令用于查看當前執行的進程。
            ps -ef 顯示系統執行的進程
            top 用于查看當前進程執行情況,包含內存使用、cpu使用量、交換區使用量等。
            shift + m 能夠按內存占用量來排序進程,查找進程內存使用量就最實用了
            q 退出
            9、經常使用快捷鍵
            Ctrl + z 將當前程序放到后臺并掛起
            Ctrl + d 輸入文件結束符,在命令行中直接輸入Ctrl + D,即退出shell
            Ctrl + a 跳到命令行的頭部位置
            Ctrl + e 跳到命令行的尾部位置
            Ctrl + w 刪除一個單字(word)
            Ctrl + u 刪除光標到行首的字符
            Ctrl + k 刪除光標到行末的字符
            Ctrl + c 中斷當前程序
            10、任務命令
            命令運行順序
            && 第一個命令成功才運行第二個命令
            || 第一個命令失敗才運行第二個命令
            jobs 查看掛起的當前的任務列表
            fg + N  將第N個任務放到前端,喚醒Ctrl + z掛起的任務
            11、vim命令
            !%xxd 以十六進制的方式查看文件內容
            ! 后面加上shell命令就而已運行對應的shell命令
            * 將光標移至下一個匹配的單詞
            # 將光標移至上一個匹配的單詞
            [[ 光標跳到函數的開頭
            ]] 光標調到函數的結尾說
            [{ 光標跳到上一個作用域的開頭
            ]} 光標跳到下一個作用域的開頭
            ggvG或者ggVG 全選并高亮
            gg=G 對整個文件內容進行格式化縮進
            u 撤銷上一個動作
            Ctrl + r 取消上一個撤銷動作
            set scb 同步兩個屏幕的文件,當中一個文件移動,則令一個文件跟著移動,對照兩個文件時經常常使用到,解開分屏set scb!
            兩個非常好用的插件ctag和Tlist:
            ctags
            功能是掃描指定的源文件,找出當中所包括的語法元素,并將找到的相關內容記錄下來。記錄的內容包括:宏定義、枚舉型、變量的值、函數的定義、原型和聲明、namespace、typedefs變量 、類、結構、枚舉類型和聯合 類、結構和聯合中成員變量或函數等。通過ctags我們能夠非常easy的找到某個變量或者函數等在哪個文件定義。
            Tlist
            在當前vim中,新開一個區域,顯示了當前文件的函數、類、全局變量等定義,輸入回車就可以跳轉到對應內容的起始位置。平時在查找某個函數時,就能夠用到了。
            12、shell中凝視一塊代碼
            行凝視
            shell中默認提供的凝視方法是#,作用是凝視一行,比如
            #這里是一行凝視
            if [ "1" = "2" ]; then
            DoSomething
            fi
            塊凝視
            shell中并沒有提供塊凝視的方法,可是我們能夠使用還有一種方法來實現塊凝視,這樣的叫做here document。here document表示包括的這段內容是一個總體數據。以下代碼中,兩個document之間的內容是一個總體數據。
            <<document
            ....
            document
            here document,<<符號表示這是一個文本內容,由其后的字符串包括的范圍就是文本的正文,:符號表示空命令,什么都不干,以下的意思就是將一個文本傳給空命令,即對文本不做不論什么處理,間接就等于凝視了
            :<<block
            code
            block
            避免反引號不能被凝視的做法是加上單引號
            :<<block'
            code
            'block
            一些小問題
            問題1: 怎樣刪除文件里的全部空行?
            1、sed '/^$/d' file 對匹配的空行運行刪除操作
            2、awk '/./ {print $0;}' file 匹配除空白換行字符外的全部字符,即匹配非空行
            3、awk '/[^^$]/{ print $0; } file
            問題2: 怎樣刪除文件名稱帶空格的文件,如"a b.html"s?
            1、對空格進行轉義,即空格前加上反斜杠,能夠用反斜杠\來屏蔽特殊字符
            2、使用雙引號括住文件名稱
            3、使用單引號括住文件名稱
            問題3:
            一個傻x錯誤,在運行一段代碼后,然后推斷$?是否為0,以決定前面的功能代碼是否運行成功,可是發現什么情況下都是返回成功,查了好久,原來是在推斷$?之前,使用了echo輸出 $?,所以永遠都是為真了

          posted on 2014-07-15 10:32 順其自然EVO 閱讀(286) 評論(0)  編輯  收藏 所屬分類: linux

          <2014年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 磐安县| 洛南县| 丁青县| 扎囊县| 芦溪县| 杂多县| 北票市| 本溪市| 星子县| 永丰县| 昭平县| 合川市| 方城县| 颍上县| 二连浩特市| 宜州市| 平和县| 广西| 丹凤县| 荆州市| 无极县| 尼玛县| 平湖市| 惠水县| 松阳县| 延安市| 溧水县| 长寿区| 特克斯县| 重庆市| 兴和县| 防城港市| 英超| 普兰店市| 湖南省| 南江县| 江川县| 六枝特区| 峨边| 温宿县| 资阳市|