Linux學習筆記(5)(標準輸入輸出)

指令:基本的計算機操作,例如:加法、減法等

程序:指令的集合,一般有執行屬性。看作:菜譜

進程:是程序的實例,是程序執行的過程。看作:按照菜譜進行做菜的過程

查看進程:
ps -ef

cat的工作原理:接受輸入,然後完整輸出。輸入什麼內容,cat就會輸出什麼內容。

輸入、輸出:
程序的默認輸入設備,叫標準輸入。 stdin    鍵盤   0

程序的默認輸出設備,叫標準輸出。 stdout    監視器    1

程序的默認錯誤輸出設備,叫標準錯誤輸出。stderr    監視器  2
輸出重定向 >、>>、>|:
把輸入內容輸出到其他地方。

>:COMMOND > FILE 覆蓋重定向

    例如: ls /  > /tmp/ls.txt

    默認覆蓋掉>指定文件的內容,

    可以使用 set -C 關閉覆蓋功能。set +C打開覆蓋功能。

>>:COMMOND >> FILE    追加重定向

>|:COMMOND >| FILE 強勢覆蓋重定向(忽略set -C設置)
輸入重定向:
<:COMMOND < FILE

例如:tr ‘a-z’ ‘A-Z’ < /etc/passwd

<<:heredoc

<<EOF

AAAAAAAAA

CCCCCCC

EOF

錯誤輸出重定向:

COMMOND 2> FILE

COMMOND 2>> FILE
正確/錯誤輸出重定向:
COMMOND > FILE 2> FILE2 正確的信息輸出到FILE中,錯誤的輸出到FILE2中

    COMMOND > FILE 2> &1
    COMMOND &> FILE 
    COMMOND >& FILE 
管道:
把第一個命令的輸出當做第二個命令的輸入,管道值傳遞正確的信息。
連接左右兩個命令,將左側的命令的標準輸出,作爲右側命令的標準輸入

    COMMOND | COMMOND2 | COMMOND3



command >file: 標準輸出重定向到一個文件,錯誤仍然輸出屏幕 
command >>file: 標準輸出重定向到一個文件(追加) 
command 1>file1: 標準輸出重定向到一個文件 
command 2>>file2:標準錯誤重定向到一個文件(追加) 
command 1>file 2>&1:標準輸出和標準錯誤一起重定向到一個文件 
command>>file 2>&1: 標準輸出和標準錯誤一起重定向到一個文件(追加) 
echo命令介紹

功能說明:顯示文字。

語   法:echo [-ne][字符串] / echo [–help][–version] 

補充說明:echo會將輸入的字符串送往標準輸出。輸出的字符串間以空白字符隔開, 並在最後加上換行號。
參   數:

-n 不要在最後自動換行 
-e 打開反斜槓ESC轉義。若字符串中出現以下字符,則特別加以處理,而不會將它當成一般文字輸出: 
        \a 發出警告聲; 
        \b 刪除前一個字符; 
        \c 最後不加上換行符號; 
        \f 換行但光標仍舊停留在原來的位置; 
        \n 換行且光標移至行首; 
        \r 光標移至行首,但不換行; 
        \t 插入tab; 
        \v 與\f相同; 
        \ 插入\字符; 
        \nnn 插入nnn(八進制)所代表的ASCII字符; 
        -E 取消反斜槓ESC轉義 (默認) 
        -help 顯示幫助 
        -version 顯示版本信息    
xargs命令介紹

xargs 是一個強有力的命令,它能夠捕獲一個命令的輸出,然後傳遞給另外一個命令,下面是一些如何有效使用xargs 的實用例子。

  1. 當你嘗試用rm 刪除太多的文件,你可能得到一個錯誤信息:/bin/rm Argument list too long. 用xargs 去避免這個問題

    find ~ -name ‘*.log' -print0 | xargs -0 rm -f
    
  2. 獲得/etc/ 下所有*.conf 結尾的文件列表,有幾種不同的方法能得到相同的結果,下面的例子僅僅是示範怎麼實用xargs ,在這個例子中實用 xargs將find 命令的輸出傳遞給ls -l

    find /etc -name "*.conf" | xargs ls –l
    
  3. 假如你有一個文件包含了很多你希望下載的URL, 你能夠使用xargs 下載所有鏈接

    cat url-list.txt | xargs wget –c

  4. 查找所有的jpg 文件,並且壓縮它

    find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz

  5. 拷貝所有的圖片文件到一個外部的硬盤驅動

    ls *.jpg | xargs -n1 -i cp {} /external-hard-drive/directory

grep

數據提取程序
用途:在文件中查找並顯示包含指定字符串的行

格式:grep  [選項]...  字符  目標文件
-i:查找時忽略大小寫
-v:反轉查找,輸出與模式不相符的行 
-w:按整字查找
-n:顯示符合模式要求的行號
-r:遞歸搜索所有文件
模式
^….:以什麼開頭
…..$:以什麼結尾
# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin# cat /etc/passwd | grep root 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
wc(字數統計)命令

格式:wc [選項]… 目標文件…

-l:統計行數
-w:統計字數 (前後都是空白的一組字符)
-c:統計字符數(可見和不可見的字符)
seq
seq [選項]... 尾數 
seq [選項]... 首數 尾數
seq [選項]... 首數 增量 尾數

選項

-f, --format=格式 使用printf 樣式的浮點格式 
-s, --separator=字符串 使用指定字符串分隔數字(默認使用:\n) 
-w, --equal-width 在列前添加0 使得寬度相同
#seq -f"%3g" 9 11 
9 
10 
11

%後面指定數字的位數 默認是%g,%3g那麼數字位數不足部分是空格。

seq -s"`echo -e "/t"`" 9 11
tr命令
tr(選項)(參數)

-c或——complerment:取代所有不屬於第一字符集的字符; 
-d或——delete:刪除所有屬於第一字符集的字符; -
s或--squeeze-repeats:把連續重複的字符以單獨一個字符表示; 
-t或--truncate-set1:先刪除第一字符集較第二字符集多出的字符。

將輸入字符由大寫轉換爲小寫:

echo "HELLO WORLD" | tr 'A-Z' 'a-z'
hello world

使用tr刪除字符:

echo "hello 123 world 456" | tr -d '0-9‘
hello world 

cat text | tr ‘\t’ ’ ‘

tr  SET1  SET2
用SET2中的字符替換掉SET1中同一位置的字符

使用tr刪除字符

tr  -d SET
刪除與SET相同的字符
echo 123456 | tr -d 345 
 tr -d '[0-9]’ < /etc/hosts
echo “Tom, I hear a pig!” | tr -d '[a-z]'

使用tr壓縮字符

tr  -s SET
將連續相同的字符壓縮成一個字符
echo 112233444555666 | tr -s 345


r  -s SET1 SET2
先替換爲SET2再壓縮
echo 112233444555666 | tr -s 345 abc
echo 112233444555666 | tr 345 abc | tr -s abc
sort命令

默認按每行的第一個字符排序

-n:按整數進行排序
-r:遞減排序

指定排序鍵
指定按哪一列數據進行排序

-k:指定哪一列爲排序鍵
cat tt | sort -n -k4 

指定字段分隔符

-t:指定字段分割符(默認是空格)
sort -t: -n -k3 /etc/passwd 
uniq命令

刪除經過排序後的數據的重複記錄

通常和sort連用

sort -n tt | uniq

數據的實例統計

-c:顯示文件中每行連續出現的次數

cat tt | uniq -c

-u:只顯示不重複的行

cat tt | uniq –u

-d:只顯示重複的行

cat tt | uniq -d
cut命令

從文本文件或者文本流中提取文本列

cut -選項  提取範圍   文本文件
-c:從指定提取範圍中提取字符
-f:從指定提取範圍中提取字段

提取範圍

n:第n項
n-:第n項到行尾
-m:行首到第m項
n,m:第n項和第m項
n-m:第n項到第m項

cut -c命令

ls -l | cut -c 10
who | cut -c 20-40
cut -c -10 /etc/passwd

cut -f命令

-d:指定分隔符默認是Tab
cut -d “:” -f 1,7 /etc/passwd
who | cut  -d '  '  -f1,6
diff命令

比較兩個文件之間的差異
輸出結果爲兩個文件的不同之處

diff命令的輸出格式
舊版本diff

-u:統一格式
-r: 遞歸比較目錄下的所有文件

利用diff命令生成補丁

diff -u test1 test2 > test.patch

patch命令:

用途:用來打補丁修補文件

格式:patch  [選項]  原始文件 < 補丁文件
-pN: N表示忽略N層路徑
-R:   還原到老版本
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章