學習筆記

Shell:

pkill -u myname 殺掉自己的進程

sed -i '1d' file 刪掉原文第一行

sed中使用變量

此時需要把單引號改成雙引號,如下邊例子
$port=8001
sed -in-place "s/8080/$port/g" /home/work/server.xml

${var}等同於$var 但是前者有很多拓展,例如${#var}就是var的size

while read line/word

do

$line/word

done < file

如果腳本里調用別的地方的腳本,例如1號腳本里有這麼一行:

sh /context/mywork/test.sh

那麼這個2號腳本test.sh裏面的腳本路徑默認應該是1號腳本的位置。例如2號腳本test.sh裏面有這麼一行:

sh run.sh

那麼這個run.sh的路徑默認是在1號腳本的路徑上。所以一定要注意寫相對路徑的時候默認的是當前目錄下的路徑。所以儘可能的寫絕對路徑吧


crontab -l 顯示所有的crontab

crontab -r刪除所有這個用戶的crontab

格式:* * * * * command

分 時 日 月 周 命令 
第1列表示分鐘1~59 每分鐘用*或者 */1表示 
第2列表示小時1~23(0表示0點) 
第3列表示日期1~31 
第4列表示月份1~12 
第5列標識號星期0~6(0表示星期天) 
第6列要運行的命令 


crontab不會執行系統的自帶環境,所以如果要執行Java請加上環境變量

export JAVA_HOME=/path



shell的符號運算都要在前面加$[]因爲shell默認的都是字符串加減,所以傳統運算需要加$[]

數組的聲明:

  1. 1)array[key]=value # array[0]=one,array[1]=two
複製代碼
  1. 2)declare -a array # array被當作數組名
複製代碼
  1. 3)array=( value1 value2 value3 ... )
複製代碼
  1. 4)array=( [1]=one [2]=two [3]=three ... )
複製代碼
  1. 5)array="one two three" # echo ${array[0|@|*]},把array變量當作數組來處理,但數組元素只有字符串本身
複製代碼
數組的訪問:
  1. 1)${array[key]} 
  2. # 舉例 ${array[1]}
複製代碼

讀取文件中的內容,並將其存入到變量中

var=$(cat name.txt)



用wc命令怎麼做到只打印統計數字不打印文件名

命令:

輸出:

[root@localhost test]# wc -l test.txt 

test.txt

[root@localhost test]# cat test.txt |wc -l

7


函數的$1:

函數裏的$1跟外面的$1不是同一個參數,所以如果要使用外面的$1要把外面的$1作爲參數傳到函數裏


curl超時設置:

使用curl時,有兩個超時時間:一個是連接超時時間,另一個是數據傳輸的最大允許時間。

連接超時時間用 –connect-timeout 參數來指定,數據傳輸的最大允許時間用 -m 參數來指定。

例如:

curl connect-timeout 10 -m 20 http://outofmemory.cn/”

連接超時的話,出錯提示形如:

curl: (28) connect() timed out!

數據傳輸的最大允許時間超時的話,出錯提示形如:

curl: (28) Operation timed out after 2000 milliseconds with 0 bytes received


網頁返回碼:

curl --write-out "%{http_code}\n" --silent --output /dev/null "$URL"

shell的大於小於等於
-ge 大於等於
-gt 大於
-eq 相等
-lt 小於
-ne 不相等


linux的mv命令技巧:

mv的效率大大高於cp,所以如果能用mv就儘量別用cp了。

如果除了某幾個文件不要mv可以先把全都mv然後再mv回來那幾個文件,不要一個一個mv!!!

core文件debug的時候把core mv到一個有源碼的其他目錄然後gdb就是了


如果要在if裏面使用正則表達式可以用[[]]和=~結合

if [ $a = $b ] 是條件校驗,if [[ $a == $b ]] 是模式匹配,也就是隻要後面的有一部分在前面即可。然後

if [[ $a =~ $b ]] 就是正則表達式了。








Pyhon:

str.replace(old,new,max) old被new覆蓋,max如果有值,那麼只有前max個會被替換。


正則表達式

re.complie地址:

http://www.jb51.net/article/15707.htm


list的index

a_list.index('a',0,3)  //返回a在指定切片(0到3)內第一次出現的位置


對於一般性數據量超大的list,快速清空釋放內存,可直接用 a = [] 來釋放。其中a爲list。
對於作爲函數參數的list,用上面的方法是不行的,因爲函數執行完後,list長度是不變的,但是可以這樣在函數中釋放一個參數list所佔內存: del a[:],速度很快,也徹底:)



awk:

awk '{print " ' "$LOGNAME" ' "}' yourfile

如果想調用environment variable, 要用以上的方式調用方法是:

"  '  "  $LOGNAME  "  '  "

以上這個方法只是調用全局變量,但是要怎麼修改全局變量呢

在awk中根本就不能修改全局變量,因爲在awk執行的時候,實際上是複製了一份parent進程的全局變量。所以如果awk要和父進程交換信息的話,有一個不錯的辦法,就是通過命令置換,把命令的輸入都放到變量裏去,放心,shell會自動的弱化裏面的換行。

所以要通過awk修改變量的方法只有一個,例子:

i=$('ps | awk '$4 ~ /\<ed/'{print $1}`)

把變量提到前面然後用awk去print


 awk中使用的shell命令

awk 'BEGIN{system("echo abc")}' file


awk中位操作

沒有按位與的操作符,只能用函數
Bit Manipulations Functions
       Starting with version 3.1 of gawk, the following bit manipulation func-
       tions are available.  They work by converting double-precision floating
       point values to unsigned long integers, doing the operation,  and  then
       converting the result back to floating point.  The functions are:

       and(v1, v2)         Return the bitwise AND of the values provided by v1
                           and v2.

       compl(val)          Return the bitwise complement of val.

       lshift(val, count)  Return the value of  val,  shifted  left  by  count
                           bits.

       or(v1, v2)          Return  the bitwise OR of the values provided by v1
                           and v2.

       rshift(val, count)  Return the value of val,  shifted  right  by  count
                           bits.

       xor(v1, v2)         Return the bitwise XOR of the values provided by v1
                           and v2.








發佈了55 篇原創文章 · 獲贊 18 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章