日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

shell 杂记一(笨鸟)

發(fā)布時間:2023/12/9 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 shell 杂记一(笨鸟) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.




查找子串
cat /tmp/debug.log | perl -e 'while(<>) { if ($_ =~ /hd_uid=(\d+)/) { print "$1\n"; } } '? 匹配每行"hd_uid="后面的數(shù)字
if [ ... ]
then
??? ...
fi

exit num

case $i in
1)
??? echo 1111;;
2)
??? echo 2222;;
*)
??? echo other;;
esac

basename 返回shell腳本名

var=$(n=1;while ((n<=$num));do echo $n;((n++));done)? 雙小括號表示算數(shù)運算
echo $var

>>1 2

可以把$var拿來做for循環(huán)用

  • shell注釋:

#! /bin/sh
Shell腳本中用#表示注釋,相當(dāng)于C語言的//注釋。但如果#位于第一行開頭,并且是#!(稱為Shebang)則例外,它表示該腳本使用后面指定的解釋器/bin/sh解釋執(zhí)行。

shell注釋-->
??? A、方法一
  :<<BLOCK'
  ....注釋內(nèi)容
??? 'BLOCK
  B、方法二
  :<<'BLOCK
  ....注釋內(nèi)容
  BLOCK'
  C、方法三

  :<<'
??? ....注釋內(nèi)容
??? '
  以上三種方法都是通過在:<
  
  BLOCK為Here Documents中的定義符號可以隨意起名,只要前后匹配就行了

??? 更帥的方法:
??? cat <<"EOF" > /dev/null
??? this
??? is
??? a
??? multi-
??? line
??? comment
??? EOF
??? 或者:
??? : cat <<"EOF"
??? this
??? is
??? a
??? multi-
??? line
??? comment
??? EOF?????? ?

<--shell注釋


  • eval

eval的作用是再次執(zhí)行命令行處理,也就是說,對一個命令行,執(zhí)行兩次命令行處理。
eval echo "\$$#"? 輸出最后一個參數(shù),不用eval的話只能輸出$number,還不是$number中存儲的數(shù)據(jù)


?paste file1 file2???? 把兩個文件的各行連在一起作為新行打印出來
??? split -1 file1.txt??? 文件分割,按照一行一個文件分割


  • 兩種計算字符串長度的方法,注意區(qū)別,awk取得的是準(zhǔn)確值
    [dongsong@tm4ctt143 shell_study]$ echo "sfff"|wc -c
    5
    [dongsong@tm4ctt143 shell_study]$ echo "sfff"|awk '{print length($0)}'
    4
    [dongsong@tm4ctt143 shell_study]$ read testStr
    a(后面四個空格)
    [dongsong@tm4ctt143 shell_study]$ echo $testStr|awk '{print length($0)}'
    1
    [dongsong@tm4ctt143 shell_study]$ echo $testStr|wc -c

    2

<linux與unix shell編程指南 005.pdf>
command > filename 把把標(biāo)準(zhǔn)輸出重定向到一個新文件中
command >> filename 把把標(biāo)準(zhǔn)輸出重定向到一個文件中(追加)
command 1 > fielname 把把標(biāo)準(zhǔn)輸出重定向到一個文件中
command > filename 2>&1 把把標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤一起重定向到一個文件中
command 2 > filename 把把標(biāo)準(zhǔn)錯誤重定向到一個文件中
command 2 >> filename 把把標(biāo)準(zhǔn)輸出重定向到一個文件中(追加)
command >> filename 2>&1 把把標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤一起重定向到一個文件中(追加)
command < filename >filename2 把c o m m a n d命令以f i l e n a m e文件作為標(biāo)準(zhǔn)輸入,以f i l e n a m e 2文件
作為標(biāo)準(zhǔn)輸出
command < filename 把c o m m a n d命令以f i l e n a m e文件作為標(biāo)準(zhǔn)輸入
command << delimiter 把從標(biāo)準(zhǔn)輸入中讀入,直至遇到d e l i m i t e r分界符
command <&m 把把文件描述符m作為標(biāo)準(zhǔn)輸入
command >&m 把把標(biāo)準(zhǔn)輸出重定向到文件描述符m中
command <&- 把關(guān)閉標(biāo)準(zhǔn)輸入


command<<delimiter將分界符delimiter之后直至下一個同樣的分界符之前的所有內(nèi)容都作為輸入,遇到下一個分界符,shell就知道輸入結(jié)束了。


<以下可以在 linux與unix shell編程指南 002.pdf 中找到>
?????? touch -t 05042140 test.txt 創(chuàng)建一個更改時間是5月4號21:90的文件
?????? find . -newer test.txt??? 尋找比test.txt更新的文件
?????? find . -newer !test.txt??? 與上面相反
?????? find . -type d??? 查找當(dāng)前目錄下的目錄
?????? find . ! -type d | sort 查找當(dāng)前目錄下除目錄以外的文件,后面管道加上sort是排序
?????? find . -type f -mtime -10 -print -mount -exec wc -l {} \;
?????? find . -type f -mtime -10 -print -mount |xargs wc -l??? 與上面等同,只是xargs一批一批的執(zhí)行,exec把前面所有的當(dāng)成參數(shù)一次執(zhí)行()
??????? find . -name "*.cpp" | xargs grep "int"???? 在文件中查找int
??? ls *.sql | grep -v 2011-11-17 | xargs rm??????? ***名字不含2011-11-17字樣的sql文件



tcpdump -i lo port 389 -s 1000000 -A
tcpdump -i lo -s 10000 -A -w /home/team/ddd port 389? 抓包
tcpdump -i eth0 -s 10000 -A -nnn host 10.0.4.133 and port 80

tcpdump -i eth0 -nnn port 1234
-nnn是顯示數(shù)字,便于直接觀看結(jié)果
?
?
tcpdump -i eth0 port 1234 -w xxx.txt
-w把抓包的數(shù)據(jù)寫入文件,可以在win下面用wireshark查看網(wǎng)絡(luò)數(shù)據(jù)



把整個文件夾 folderTared 的內(nèi)容打包成一個gz文件:
tar zvcf folderTared.tar.gz /theDir/folderTared
把壓縮的gz文件恢復(fù)到指定目錄下:
tar zvxf folderTared.tar.gz /theDir/

gunzip t_wiki_doc-2011-10-12.sql.gz

svn checkout ./gamechat http://10.4.3.143/subversion/gamechat/

svnserve --root /data/svn/svn --daemon 把其他倉庫的svn數(shù)據(jù)目錄的文件夾直接拷貝到/data/svn/svn下面,運行啟動后可正常工作!

svn詳細(xì)配置:http://wiki.ubuntu.org.cn/SubVersion



[dongsong@tm4ctt143 udplogger]$ md5sum udplogger
23ee4c96305af409d8092e2553ff4357? udplogger



cat /etc/issue??????????????????????? 查詢系統(tǒng)版本
file /sbin/init???????????????? 查詢系統(tǒng)是32位還是64位等相關(guān)信息

uname -a??????? 查看系統(tǒng)版本的幾種方法
cat /proc/version
cat /etc/issue
lsb_release???? -a
/sbin/ip???? link??????? 查看系統(tǒng)網(wǎng)卡信息的幾種方法



? 541? wget http://mirror.centos.org/centos/5/os/SRPMS/glibc-2.5-34.src.rpm???? 下載


--

?nc -u 10.4.3.143 873???????????? 向143機器的873端口發(fā)送UDP數(shù)據(jù)
??? nc -l 2010??????????????? 監(jiān)聽當(dāng)前機器的2010端口并顯示連接建立起來后受到的數(shù)據(jù),需要回復(fù)數(shù)據(jù)可以直接輸入



top看不到所有進(jìn)程,可以用top -b -d 1 -n 1 | less (-d delay延遲1秒更新,-n抓一次快照)

??? pstree -p 顯示系統(tǒng)內(nèi)所有進(jìn)程構(gòu)成的進(jìn)程樹(除了用ps axo 'ppid,pid,cmd'來找進(jìn)程的父進(jìn)程以外還可以從進(jìn)程樹里面找)

????? To print a process tree:
????????? ps -ejH
????????? ps axjf

?????? To get info about threads:
????????? ps -eLf
????????? ps axms

??? 僵尸進(jìn)程會占用一部分內(nèi)存(保存進(jìn)程退出信息的結(jié)構(gòu)體),可以殺掉其父進(jìn)程以回收資源(當(dāng)然,這樣干可能會影響父進(jìn)程的業(yè)務(wù))


--


cat /proc/sys/kernel/shmmax??????? 查看系統(tǒng)單個共享內(nèi)存段最大字節(jié)數(shù)
cat /proc/sys/kernel/shmmni??????? 查看系統(tǒng)共享內(nèi)存段最大個數(shù)
cat /proc/sys/kernel/shmall??????? 查看系統(tǒng)中共享內(nèi)存頁總數(shù)
?ipcs -lm??????????????? 查看系統(tǒng)共享內(nèi)存的參數(shù)


----------------------------------------------------

[dongsong@tm4ctt143 ~]$ vvv="Hello world"
[dongsong@tm4ctt143 ~]$ echo ${vvv}
Hello world
[dongsong@tm4ctt143 ~]$ echo ${vvv:-xxxxx}
Hello world
[dongsong@tm4ctt143 ~]$ echo ${vvvv:-xxxxx}
xxxxx
[dongsong@tm4ctt143 ~]$ echo $vvvv

[dongsong@tm4ctt143 ~]$ echo ${vvvv}

[dongsong@tm4ctt143 ~]$ echo ${vvvv:=xxxxx}
xxxxx
[dongsong@tm4ctt143 ~]$ echo ${vvvv}
xxxxx
[dongsong@tm4ctt143 ~]$ echo ${vvva:?EEEEEEErrrrrrr}
bash: vvva: EEEEEEErrrrrrr
[dongsong@tm4ctt143 ~]$ echo ${aa:+hello}

[dongsong@tm4ctt143 ~]$ echo $aa

[dongsong@tm4ctt143 ~]$ echo ${va:+hello}

[dongsong@tm4ctt143 ~]$ echo ${vvv:+hello}
hello
[dongsong@tm4ctt143 ~]$ echo $vvv
Hello world
[dongsong@tm4ctt143 ~]$ echo ${vvv:0:4}
Hell
[dongsong@tm4ctt143 ~]$ echo ${vvv:0:2}
He
[dongsong@tm4ctt143 ~]$ echo ${vvv: -3}
rld
[dongsong@tm4ctt143 ~]$ echo ${!v*}
vvv vvvv
[dongsong@tm4ctt143 ~]$ echo ${#vvv}
11
[dongsong@tm4ctt143 ~]$ echo $vvv
Hello world
[dongsong@tm4ctt143 ~]$ vvv="a.b.php.org"
[dongsong@tm4ctt143 ~]$ vvv="/home/yy/a.b.php.org"
[dongsong@tm4ctt143 ~]$ echo ${vvv%.org}
/home/yy/a.b.php
[dongsong@tm4ctt143 ~]$ echo $vvv
/home/yy/a.b.php.org
[dongsong@tm4ctt143 ~]$ vvv="/home/yy/a.b.org.php.org"
[dongsong@tm4ctt143 ~]$ echo $vvv
/home/yy/a.b.org.php.org
[dongsong@tm4ctt143 ~]$ echo ${vvv%%.org*}
/home/yy/a.b
[dongsong@tm4ctt143 ~]$ echo ${vvv%%.org}
/home/yy/a.b.org.php
[dongsong@tm4ctt143 ~]$ echo ${vvv%%.org*}
/home/yy/a.b
[dongsong@tm4ctt143 ~]$ echo ${vvv%.org*}
/home/yy/a.b.org.php
[dongsong@tm4ctt143 ~]$ man bash

--------------------------------------------------------------------

curl http://www.baidu.com 對指定url發(fā)出請求,可以-d用post方式、-G用get方式;用于測試比較方便,省去打開瀏覽器的麻煩


siege -f myurls.txt -t 60S [-r 100000] -d 3 -i -c 128 (128 users;3 delay )測試http性能(做壓力測試時-d可指為零;內(nèi)網(wǎng)測試機212的apache用siege和ab測試結(jié)果差不多,每秒處理2W+請求)


ab -n 10000 -c 10 http://192.168.1.212:8088/ apache提供的http測試工具

ab -v 顯示參數(shù)及說明


sar -n DEV 2? 網(wǎng)卡流量監(jiān)控

ls -lhrt /var/log/sa/? 查看sysstat的日志
sar -f /var/log/sa/sa13
sar -f /var/log/sa/sa13? |less

? 675? sar -o data.bin 1????? 記錄cpu等信息
? 676? sar -o data2.bin 1
? 677? ls
? 678? sar -f data.bin????? 顯示cpu等信息
? 679? sar -f data.bin? -A | less
----------------

?stat filename???????? 顯示文件的設(shè)備號和inode

------------------

cat /proc/partitions查看目前機器中的所有磁盤及分區(qū)情況

------------------------

umask是從權(quán)限中“拿走”相應(yīng)的位(具體見 linux與unix shell編程指南 001.pdf)
(系統(tǒng)不允許你在創(chuàng)建一個文本文件時就賦予它執(zhí)行權(quán)限,必須在創(chuàng)建后用chmod命令增加這一權(quán)限)

---------------------------

[dongsong@localhost soft]$ du -sh?????? 查看目錄大小
3.5G??? .
[dongsong@localhost soft]$ df -Th??????????????? 查看掛載點
文件系統(tǒng)????? 類型??? 容量? 已用 可用 已用% 掛載點
/dev/mapper/VolGroup00-LogVol00
????????????? ext3??? 6.7G? 4.6G? 1.8G? 73% /
/dev/hda1???? ext3???? 99M?? 12M?? 83M? 13% /boot
tmpfs??????? tmpfs??? 252M???? 0? 252M?? 0% /dev/shm
/dev/hdd5???? ext3???? 14G? 4.0G? 9.2G? 30% /home

--------------------------------

[dongsong@localhost soft]$ du -sh?????? 查看目錄大小
3.5G??? .
[dongsong@localhost soft]$ df -Th??????????????? 查看掛載點
文件系統(tǒng)????? 類型??? 容量? 已用 可用 已用% 掛載點
/dev/mapper/VolGroup00-LogVol00
????????????? ext3??? 6.7G? 4.6G? 1.8G? 73% /
/dev/hda1???? ext3???? 99M?? 12M?? 83M? 13% /boot
tmpfs??????? tmpfs??? 252M???? 0? 252M?? 0% /dev/shm
/dev/hdd5???? ext3???? 14G? 4.0G? 9.2G? 30% /home

-----------cp start--------------
copy 本地的檔案到遠(yuǎn)程的機器上
scp /etc/lilo.conf k@net67.ee.oit.edu.tw:/home/k
會將本地的 /etc/lilo.conf 這個檔案 copy 到 net67.ee.oit.edu.tw,使用者 k 的家目錄下。
copy遠(yuǎn)程機器上的檔案到本地來
scp k@net67.ee.oit.edu.tw:/etc/lilo.conf /etc
會將 net67.ee.oitdu.tw 中 /etc/lilo.conf 檔案 copy 到本地的 /etc 目錄下。
保持從來源 host 檔案的屬性
scp –p k@net67.ee.tw:/etc/lilo.conf /etc

如果想使用特定端口 使用 scp –P(大寫) 如 scp –P 1234 k@net67.ee.tw:/etc/lilo.conf /etc

在此必須注意使用者的權(quán)限是否可讀取遠(yuǎn)程上的檔案,若想知道更多關(guān)于 scp 的使用方法,可去看看 scp 的使用手冊。
ssh-keygen
產(chǎn)生公開鑰 (pulib key) 和私人鑰 (private key),以保障 ssh 聯(lián)機的安性, 當(dāng) ssh 連 shd 服務(wù)器,會交換公開鑰上,系統(tǒng)會檢查 /etc/ssh_know_hosts 內(nèi)儲存的 key,如果找到客戶端就用這個 key 產(chǎn)生一個隨機產(chǎn)生的session key 傳給服務(wù)器,兩端都用這個 key 來繼續(xù)完成 ssh 剩下來的階段。

它會產(chǎn)生 identity.pub、identity 兩個檔案,私人鑰存放于identity,公開鑰 存放于 identity.pub 中,接下來使用 scp 將 identity.pub copy 到遠(yuǎn)程機器的家目錄下.ssh下的authorized_keys。 .ssh/authorized_keys(這個 authorized_keys 檔案相當(dāng)于協(xié)議的 rhosts 檔案),之后使用者能夠不用密碼去登入。RSA的認(rèn)證絕對是比 rhosts 認(rèn)證更來的安全可靠。想讓多臺機器都不輸密碼直接往A上拷數(shù)據(jù),可以把這幾臺機器的identity.pub追加到A得authorized_keys文件后面。
執(zhí)行:
scp identity.pub k@linux1.ee.oit.edu.tw:.ssh/authorized_keys

若在使用 ssh-keygen 產(chǎn)生鑰匙對時沒有輸入密碼,則如上所示不需輸入密碼即可從 net67.ee.oit.edu.tw 去登入 linux1.ee.oit.edu.tw。在此,這里輸入的密碼可以跟帳號的密碼不同,也可以不輸入密碼。
-----------scp end----------------

ssh -p 7710 root@220.181.83.115 -v? ssh登錄
nohup ********* &???? 轉(zhuǎn)后臺運行


-----------------------------

設(shè)置sudo不輸入密碼:sudo visudo 或者 sudo vi /etc/sudoers, 按如下修改
%admin ALL=(ALL)NOPASSWD:NOPASSWD ALL? //admin組的用戶sudo所有命令都不用輸入密碼
%guy ALL=NOPASSWD:ALL //用戶guy sudo 所有命令都不用輸入密碼
%guy ALL=NOPASSWD:/usr/bin/tt.sh,/usr/sbin/adduser //用戶guy sudo指令命令不用輸入密碼

--------------------------------------------------

fg、bg、jobs、&、ctrl + z都是跟系統(tǒng)任務(wù)有關(guān)的,雖然現(xiàn)在基本上不怎么需要用到這些命令,但學(xué)會了也是很實用的
一。& 最經(jīng)常被用到
?? 這個用在一個命令的最后,可以把這個命令放到后臺執(zhí)行
二。ctrl + z
???? 可以將一個正在前臺執(zhí)行的命令放到后臺,并且暫停
三。jobs
???? 查看當(dāng)前有多少在后臺運行的命令
四。fg
???? 將后臺中的命令調(diào)至前臺繼續(xù)運行
?? 如果后臺中有多個命令,可以用 fg %jobnumber將選中的命令調(diào)出,%jobnumber是通過jobs命令查到的后臺正在執(zhí)行的命令的序號(不是pid)
五。bg
???? 將一個在后臺暫停的命令,變成繼續(xù)執(zhí)行
?? 如果后臺中有多個命令,可以用bg %jobnumber將選中的命令調(diào)出,%jobnumber是通過jobs命令查到的后臺正在執(zhí)行的命令的序號(不是pid) ?

---------------------------

源代碼之間建立跳轉(zhuǎn)鏈接
??? ctags -R
??? cscope -b -R *.cpp *.hpp
?? ?

??? ctags建立之后可以用ctrl+] 和ctrl+t進(jìn)行正反向跳轉(zhuǎn),在bash下面之間用vi -t name可以打開函數(shù)或者變量定義的文件(功能真風(fēng)騷,貌似我只用了ctags的1%)

???? vim xxx.c之前要把當(dāng)前路徑切換到ctags所在目錄去,否則找不到符號

??? ctags的用法:http://oreilly.com/catalog/vi6/chapter/ch08.html#ch08_05.htm

??? ctags的官網(wǎng):http://ctags.sourceforge.net/

??? 對lua建立ctag: ctags --langdef=MYLUA --langmap=MYLUA:.lua --regex-MYLUA="/^.*\s*function\s*(\w+):(\w+).*$/\2/f/" --regex-MYLUA="/^\s*(\w+)\s*=\s*[0-9]+.*$/\1/e/" --regex-MYLUA="/^.*\s*function\s*(\w+)\.(\w+).*$/\2/f/" --regex-MYLUA="/^.*\s*function\s*(\w+)\s*\(.*$/\1/f/" --regex-MYLUA="/^\s*(\w+)\s*=\s*\{.*$/\1/e/" --regex-MYLUA="/^\s*module\s+\"(\w+)\".*$/\1/m,module/" --regex-MYLUA="/^\s*module\s+\"[a-zA-Z0-9._]+\.(\w+)\".*$/\1/m,module/" --languages=MYLUA --excmd=pattern -R .

這招不錯

find -name '*.[ch]' -exec ctags {} +

這個不行,雖然ls -R 會把目錄下面的子目錄全部遞歸遍歷一遍,不過ctags并不僅僅是對過濾出來的文件建了tag而是對所有的(ctasg -R)

ls -lhrtR ./* | egrep "*\.h$|*\.cpp$" | ctags -R??

vim -t functionName 打開tag定義的文件,并定位到該位置

ctrl+]? 跳轉(zhuǎn)到定義的位置

ctrl+t 回到跳轉(zhuǎn)的位置

ctrl+o 回到光標(biāo)上次所在的位置

ctrl+i 前進(jìn)到光標(biāo)回跳前的位置

ctrl+e 保持光標(biāo)不動把頁面向上移動

ctrl+y 保持光標(biāo)不動把頁面向下移動



-------------------------------------------------------------------------------------------------------------






轉(zhuǎn)載于:https://blog.51cto.com/fuwenchao/1422515

總結(jié)

以上是生活随笔為你收集整理的shell 杂记一(笨鸟)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。