歡迎您光臨本站 註冊首頁

小鳥chacha初學linux 第二課

←手機掃碼閱讀     火星人 @ 2014-03-08 , reply:0

作為信息安全專業的學生,大二時便已經接觸linux操作系統並在硬碟上安裝過ubuntu opensuSE,但是當時的使用仍停留在界面上,並沒有體會到linux 的優點,去年12月份chacha報名了湖南雙星的培訓,對linux有了一定的了解,我將不斷和大家分享我學習的進程,希望老鳥們指教,也希望対我同級的小鳥們有所幫助. 重定向 > 重定向數據的時候會(覆蓋)原來的數據 cat sxkj>test#sxkj的內容寫入到test中 覆蓋源來的內容 [root@localhost ~]# cat test#在屏幕上顯示test # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 [root@localhost ~]# cat -n sxkj >test#sxkj的內容加行號寫入到test中 覆蓋源來的內容 [root@localhost ~]# cat test#在屏幕上顯示test 1 2 # Do not remove the following line, or various programs 3 # that require network functionality will fail. 4 127.0.0.1 localhost.localdomain localhost 5 ::1 localhost6.localdomain6 localhost6 >> # 輸出追加命令,重定向數據的時候不會覆蓋原來的數據,只是在文件的末尾(追加數據) [root@localhost ~]# cat sxkj>>test [root@localhost ~]# cat test 1 2 # Do not remove the following line, or various programs 3 # that require network functionality will fail. 4 127.0.0.1 localhost.localdomain localhost 5 ::1 localhost6.localdomain6 localhost6 # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 標準輸入 0 標準輸出 1 錯誤輸出 2 [root@localhost dev]# ll std* lrwxrwxrwx 1 root root 15 01-08 09:22 stderr -> /proc/self/fd/2 lrwxrwxrwx 1 root root 15 01-08 09:22 stdin -> /proc/self/fd/0 lrwxrwxrwx 1 root root 15 01-08 09:22 stdout -> /proc/self/fd/1 2> 將錯誤命令輸出重定向到其他文件 [root@localhost dev]# jdflkdj 2>err#錯誤提示輸出到err並覆蓋err [root@localhost dev]# cat err bash: jdflkdj: command not found 2>> 輸出追加命令,重定向錯誤命令的輸出不會覆蓋原來的數據,只是在文件的末尾追加數據 [root@localhost dev]# fdlfjeiop 2>>err [root@localhost dev]# cat err bash: jdflkdj: command not found bash: fdlfjeiop: command not found [root@localhost ~]# cat sxkj yangming 1>right 2>err#將正確結果輸入到right 錯誤提示輸出到err [root@localhost ~]#

cat right # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 [root@localhost ~]# cat err cat: yangming: 沒有那個文件或目錄 &> 正確的和錯誤的輸出都往一個文件里寫,但是會覆蓋原來的內容 cat test.txt uuuu.txt 1>qq.txt 2>&1 cat test.txt uuuu.txt &>qq.txt [root@localhost ~]# cat sxkj zhxx &>right_err//正確結果和錯誤提示都輸入到right_err [root@localhost ~]# cat right_err # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 cat: zhxx: 沒有那個文件或目錄 < 輸入重定向 [root@localhost ~]# wc<right_err 統計err的行數 單詞數 位元組數 6 26 227 行 數 位元組數 [root@localhost ~]# wc <right_err>wwc##統計right_err字數 輸出到wwc 覆蓋wwc內容 [root@localhost ~]# cat wwc 6 26 227 [root@localhost ~]# wc <<err >>##//將以err結束輸入的文件發送給WC 統計 結果輸入到wwc > zjhduhfjksh > err [root@localhost ~]# cat wwc 6 26 227 6 26 227 0 0 0 err 2 2 20 0 0 0 1 1 12 cpio是備份文件的命令 災備 find . |cpio -co >/linux.cpio “|”管道 把當前文件的東西送給cpio 、放在LINUX 將當前目錄的所有文件和目錄,打包成一個文件linux.cpio cpio -t <linux.cpio 查看linux.cpio 內容 /dev/null 系統里的一個黑洞,我們經常將不需要的屏幕輸出 重定向到這裡 /dev/zero 是系統的零發生器 [root@localhost ~]# dd if=/dev/zero of=linux.ourt bs=1024 count=200000#生成大小為200000*1024B的linux.ourt 200000 0 records in 200000 0 records out 204800000 bytes (205 MB) copied, 1.03522 seconds, 198 MB/s [root@localhost ~]# ll linux.ourt -rw-r--r-- 1 root root 204800000 01-08 11:08 linux.ourt [root@localhost ~]# vim dehua [root@localhost ~]# cat dehua #!/bin/bash##表明變數所用shell echo "please input the name of sun liu" read dhson_name//把值讀給變數dhson_name echo $dhson_nameda [root@localhost ~]# bash dehua#運行dehua please input the name of sun liu yangming yangming echo -n abc 不換行 相當於C 中的cout $?上一條命令的結果 如果為0代表上一條命令成功 非0不成功 shuaige=chacha 定義一個變數,變數名為shuaige,賦值為chacha $shuaige 引用變數帥哥的值即chacha " " 雙引號內的變數值可以被引用,特殊符號需要轉義 ' ' 單引號內的變數值不能被引用,特殊符號也只是代表本身的含義,不需要轉義 元字元 * !特殊含義 轉義\后恢復原始含義 \! \n 代表回車鍵功能 \t 代表tab鍵功能 -e 支持轉義 [root@localhost ~]# var=5 9//定義變數var=5 9 [root@localhost ~]# echo $var//輸出變數的值 即 5 9 [root@localhost ~]# let var=5 9//計算出5 9 [root@localhost ~]# echo $var 14 [root@localhost ~]# echo 8 9 8 9 [root@localhost ~]# echo 8 9|bc//把輸出的值交給bc計算 17 cat /etc/hosts|grep 127 在cat 命令輸出的內容里查找包含127的行 seq 產生連續自然數 seq -w 99 1010|more 產生相同寬度的範圍是99到1010的數字分頁顯示 [root@localhost ~]# seq -f g 98 100指 定form 格式 為3位 098 099 100 [root@localhost ~]# seq -s "-" 2 4 //指定分割符號space為—— 2-3-4 [root@localhost ~]# seq -w 1 10 //統一寬度wide 01 02 03 04 05 06 07 08 09 10 [root@localhost ~]# seq 1 4 |xargs//產生的梳子橫向顯示 1 2 3 4 [root@localhost ~]# seq 40|xargs|tr " " " "//產生數字橫向顯示后 變換空格為加號 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 [root@localhost ~]# seq 40|xargs|tr " " " "|bc//計算出1 … 40 820 [root@localhost ~]# cat /etc/passwd|head -2>sxkj7//把/etc/passwd前2行重定向到sxkj7 [root@localhost ~]# cat sxkj7 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin tr -d ":/" <sxkj6 >sxkj7 刪除sxkj6里的:/再將刪除了:/的內容重新定向到sxkj7輸入文件不可作為輸出文件 特殊含義的字元都需要轉義最好用但引號 tr "\40" "\t" <ks1.txt >ks2.txt 將ks1.txt里的空格全部替換成tab(製表符),並且重定向 到ks2.txt cat ks2.txt |tr -s "\t">ks3.txt 查看ks2.txt文件的內容,去除重複的tab鍵(製表符),並且 重定向到ks3.txt [root@localhost ~]# tr ":" "/"<sxkj7 /把sxkj7中的:轉換為/ root/x/0/0/root//root//bin/bash bin/x/1/1/bin//bin//sbin/nologin [root@localhost ~]# tr -d ":""/" <sxkj7 rootx00rootrootbinbash binx11binbinsbinnologin [root@localhost ~]# tr -s ‘[a-z][A-Z]‘<sxkj2//合併重複字元顯示最好使用單引號 abcdef a b e f 111111111114 Ae b [root@localhost ~]# tr -s [a-z]<sxkj2//之合併小寫字元a-z abcdef a b e f 111111111114 AAAAAAAAAAAAAe b [root@localhost ~]# tr -d [A-Z]<sxkj2 abcdef aaaaaaaaaa bbbbbbbbb eeeeeeee ffffffffff 111111111114 e b [root@localhost ~]# tr 'a-z' 'A-Z'<sxkj2小寫轉化為大寫 ABCDEF AAAAAAAAAA BBBBBBBBB EEEEEEEE FFFFFFFFFF 111111111114 AAAAAAAAAAAAAE B [root@localhost ~]# tr -d -c [A-Z]<sxkj2 AAAAAAAAAAAAA[root@localhost ~]# [root@localhost ~]# tr -s ' /'':' " "<sxkj7 root x 0 0 root root bin bash bin x 1 1 bin bin sbin nologin [root@localhost ~]# tr -s ':' " "<sxkj7 root x 0 0 root /root /bin/bash bin x 1 1 bin /bin /sbin/nologin cut -f2-4 ks3.tx 截取第2列到第4列的內容 cut -f1,3 ks3.txt 截取1和3列的內容 cut -d":" -f2-4 ks4.txt 指定冒號作為分隔符,截取第2至4列的內容 cut -d: -s -f1-3 ks4.txt 將沒有分隔符的行不進行截取,並且不顯示輸出 [root@localhost ~]# cut -d " " -f 3 <sxkj4 cc dd aa bb [root@localhost ~]# sort sxkj9排序assic碼 dfkejisjfr dfoielsfi djfeoiridcfngi juren juren juren juren juren juren juren juren juren lsdfjiesdxfkxf sljfiouelxf uagpooiuwec wangwenxi [root@localhost ~]# sort -r sxkj9//逆序 wangwenxi uagpooiuwec sljfiouelxf lsdfjiesdxfkxf juren juren juren juren juren juren juren jureni juren djfeoiridcfngi dfoielsfi dfkejisjfr [root@localhost ~]# sort -u sxkj9排序並去掉重複行 dfkejisjfr dfoielsfi djfeoiridcfngi juren lsdfjiesdxfkxf sljfiouelxf uagpooiuwec wangwenxi

[root@localhost ~]# sort sxkj4默認分割服為空格 從第一列排序 aa bb cc dd bb aa dd cc cc dd aa bb dd cc bb aa [root@localhost ~]# sort -k2 sxkj4//從第二塊排序 bb aa dd cc aa bb cc dd dd cc bb a cc dd aa bb [root@localhost ~]# tr " " ":" <sxkj4 aa:bb:cc:dd bb:aa:dd:cc cc:dd:aa:bb dd:cc:bb:aa [root@localhost ~]# sort -t : -k4 n_sxkj4 //指定分割符 dd:cc:bb:aa cc:dd:aa:bb bb:aa:dd:cc aa:bb:cc:dd [root@localhost ~]# tr -s " "</var/log/messages | cut -d" " -f3|sort -u|wc -l 44 cut分割服是tab -d改革分歌賦 uniq 刪除文件中的重複行 uniq sxkj8 刪除sxkj8文件中的重複行 uniq -d sxkj8 只是顯示重複行內容 uniq -u sxkj8 只是顯示不重複行內容 uniq -c sxkj8 顯示不重複的內容,但是統計出那些行重複 了多少次 grep 是用來進行文字過濾的一個工具,可以根據你的要求, 在文件里一行行去查找內容,如果查找到, 就將整行內容輸出到屏幕 cat /etc/hosts|grep 127 將包含127的行 cat /etc/passwd|grep root|wc -l grep -v ^# /etc/vsftpd/vsftpd.conf 過濾顯示不是以#號開頭的行 grep -v ^# /etc/vsftpd/vsftpd.conf|grep -v ^$ 過濾顯示不是以#號開頭的行,並且是空行的也不顯示 ^$ 代表空行(什麼都沒有的行) cat passwd |grep ^ftp 查找以ftp開頭的行在passwd文件里 cat passwd |grep bash$ 查找以bash結尾的行在passwd文件里 cat passwd |grep bash$|wc -l 查找以bash結尾的行在passwd文件里,並且統計有多少行 grep root /etc/passwd /etc/shadow 在/etc/passwd 和/etc/shadow文件里從查找包含root字元 串的行 grep root ./* 查找當前目錄下所有包含root字元串的文件,並且顯示 grep -i 顯示文件名,不顯示內容 grep -h 不顯示文件名,顯示內容 /etc/hosts文件,裡面是#開頭的行是註釋行 grep 安指定字元串過濾文件,顯示匹配行 寫shell腳本用的較多 [root@localhost grep]# cat -n hosts 1 # Do not remove the following line, or various programs 2 # that require network functionality will fail. 3 127.0.0.1 localhost.localdomain localhost 4 ::1 localhost6.localdomain6 localhost6 [root@localhost grep]# cat -n hosts |grep 127//顯示包含127的行 3 127.0.0.1 localhost.localdomain localhost [root@localhost grep]# cat passwd |grep bash//顯示包含bash 的行 root:x:0:0:root:/root:/bin/bash zhangmin:x:500:500::/home/zhangmin:/bin/bash zhx:x:501:501::/home/zhx:/bin/bash wugang:x:502:502::/home/wugang:/bin/bash [root@localhost grep]# cat passwd |grep home|wc –l//統計包含home的行 5 ^行首 $行尾 a* .*任意字元 [a-z] [0-9] [a-z] \<單詞頭是 \>單詞尾是 grep -i 不區分大小寫顯示所有的行 grep -v顯示不匹配的行 [root@localhost grep]# cat -n hosts |grep -v 127 //顯示不包含127的行 1 # Do not remove the following line, or various programs 2 # that require network functionality will fail. 4 ::1 localhost6.localdomain6 localhost [root@localhost grep]# grep root passwd顯示包含root的行 root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [root@localhost grep]# cat passwd |grep root//推薦使用

shel編程常用通道 root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [root@localhost grep]# cat passwd|grep ^m//以m開頭 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin [root@localhost grep]# cat passwd |grep n$//以 n結尾 bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin [root@localhost grep]# cat a.txt |grep shi,* shi [root@localhost grep]# cat a.txt |grep shi.* shiyu [root@localhost grep]# cat passwd |grep ^[mr]以m或r開頭 root:x:0:0:root:/root:/bin/bash mail:x:8:12:mail:/var/spool/mail:/sbin/nologin rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin [root@localhost grep]# cat passwd |grep [mr]oot包含moot 或root root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [root@localhost grep]# cat passwd |grep "\<root\>"//找包含root單詞的行 root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [root@localhost grep]# cat passwd |grep -n ftp不換行的顯示包含ftp的行 15:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin [root@localhost grep]# wc -l passwd// 統計passwd行數 37 passwd [root@localhost grep]# wc -c passwd //統計passwd位元組數 1726 passwd [root@localhost grep]# wc -w passwd //統計passwd單詞 63 passwd 製作補丁 diff -u sxkj2 sxkj3>sxkj_2to3.patch 生成sxkj2(舊)到sxkj3(新)的補丁文件 打補丁 patch sxkj2 <sxkj_2to3.patch 給sxkj2(舊)打上補丁,起到升級的作用 再比較差異 diff sxkj2 sxkj3 sxkj2---》sxkj3--》sxkj4 文件打補丁和撤銷補丁 patch qq2011.txt <qq2011to2012.patch patch -p0<qq2011to2012.patch 需要當前目錄下有qq2011.txt這個文件和qq2011to2012.patch 這個補丁文件,作用是將補丁打到qq2011.txt文件里 升級到qq2012.txt patch -R qq2011.txt <qq2011to2012.patch patch -R -p0<qq2011to2012.patch 撤銷升級補丁,退回到原來的版本 patch -p0 <2011to2013.patch -p0 不需要進入目錄打補丁,補丁文件的位置在 那裡都 從當前目錄查找目地文件 -p1 需要進入目錄打補丁,補丁文件的位置在 那裡都可以忽略掉第一層目錄 從當前目錄查找 注意給目錄打補丁的時候,建議將新目錄移到別的路徑下 ip add add 192.168.0.127/24 dev eth0 添加一個ip地址在eth0這塊網卡上 route del default gw 192.168.1.1 刪除默認路由192.168.1.1 route add default gw 192.168.0.1 添加一條默認路由192.168.0.1 mount -o loop /root/rhel5u5.iso /jingxiang 將光碟鏡像文件掛載到 /jiangxiang目錄.掛載點目錄可以 自己創建,鏡像文件的路徑根據自己的實際情況而定 cd /jingxiang/Server 進入光碟掛載點目錄里的Server目錄,裡面放著很多軟體 rpm -ivh vsftpd tab鍵補齊 安裝vsftpd這個ftp伺服器軟體 ifconfig eth0 192.168.1.254 配置一個臨時ip地址192.168.1.254,重新啟動后失效 ssh root@192.168.1.250 使用ssh這個工具,以root用戶的身份遠程連接到192.168.1.250 這台計算機上,第一次連接需要接收下密鑰,輸入yes ,接著輸入192.168.1.250這台計算機上的root用戶的密碼 退出遠程連接使用exit命令 scp ks4.txt root@192.168.1.250:/root/ 拷貝當前目錄下的ks4.txt這個文件到192.168.1.250這台計算機的 /root目錄下,需要輸入192.168.1.250這台計算機的root用戶的 密碼 vi /etc/ssh/ssh_config 修改44行,將yes改為no,然後退出保存 這樣作的目的是加快ssh連接速度

本文出自 「初學linux」 博客,請務必保留此出處http://zhxchacha.blog.51cto.com/4277964/762197


[火星人 ] 小鳥chacha初學linux 第二課已經有801次圍觀

http://coctec.com/docs/linux/show-post-46812.html