Time of Update: 2017-01-18
這裡說的“瑞士軍刀”是指那些簡單的一句命令就能完成其它進階語言一大片代碼才能完成的工作。下面的這些內容是Quora網站上Joshua Levy網友的總結: 通過sort/uniq擷取檔案內容的交集、合集和不同之處:假設有a、b兩個文字檔,檔案本身已經去除了重複內容。下面是效率最高的方法,可以處理任何體積的檔案,甚至幾個G的檔案。(Sort對記憶體沒有要求,但也許你需要用 -T 參數。)可以試著比較一下,你可以看看如果用Java來處理磁碟上檔案的合并,需要用多少行代碼。 複製代碼 代碼如下:
Time of Update: 2017-01-18
shell也有一個真實的偵錯模式。如果在指令碼"strangescript" 中有錯誤,您可以這樣來進行調試: sh -x strangescript 這將執行該指令碼並顯示所有變數的值。 shell還有一個不需要執行指令碼只是檢查文法的模式。可以這樣使用: sh -n your_script 這將返回所有語法錯誤。 linux/unix shell l指令碼調試方法 Shell提供了一些用於調試指令碼的選項,如下所示: -n
Time of Update: 2017-01-18
複製代碼 代碼如下: #!/bin/bash if [ ! -f /tmp/down_count ];then echo "0" > /tmp/down_count fi curl -I tomcat-host -o "/tmp/status" >/dev/null 2>&1 code=`awk 'NR==1 {print $2}' /tmp/status` if [ "$[code]" -ge 500 ];then
Time of Update: 2017-01-18
1. Linux 指令碼編寫基礎1.1 文法基本介紹1.1.1 開頭程式必須以下面的行開始(必須放在檔案的第一行):#!/bin/sh 符號#!用來告訴系統它後面的參數是用來執行該檔案的程式。在這個例子中我們使用/bin/sh來執行程式。 當編輯好指令碼時,如果要執行該指令碼,還必須使其可執行。 要使指令碼可執行:編譯 chmod +x filename 這樣才能用./filename 來運行1.1.2
Time of Update: 2017-01-18
很多時候,我們都會寫shell程式來完成一些不用重複造輪子的時刻,但是,又因為shell語句中也會有函數,也會有變數,在運行後到底執行了哪些相關的操作,就需要對具體執行過程中的變數等可變的因素的監控,那麼我們下面就寫個小小的shell例子,來完成這個對執行過程中條件陳述式中的變數的變化的監控和整個程式的執行流程的觀察。shell程式碼:複製代碼 代碼如下:#!/bin/bashfunction setlogfile{ if ! [ -z "$1" ];
Time of Update: 2017-01-18
我們在測試或調試的時候,有時候會需要產生某個size的檔案,比如在測試儲存系統時,需要將磁碟剩餘空間減少5G,最簡單的辦法就是拷貝一個5G的檔案過來,但是從哪兒去弄這樣大小的檔案呢,或許你想到隨便找一個檔案,不停的拷貝,最後合并,這也不失為一種辦法,但是有了dd,你會更容易且更靈活的實現。我們來case by case的介紹dd的用法。先看第一個產生一個大小為5G的檔案,內容不做要求命令如下複製代碼 代碼如下:$ dd if=/dev/zero of=tmp.5G bs=1G
Time of Update: 2017-01-18
擷取單個檔案行數檔案:test1.sh行數:20方法一複製代碼 代碼如下:awk '{print NR}' test1.sh|tail -n1如圖所示:方法二複製代碼 代碼如下:awk 'END{print NR}' test1.sh如圖所示:方法三複製代碼 代碼如下:grep -n "" test1.sh|awk -F: '{print '}|tail -n1如圖所示:方法四複製代碼 代碼如下:sed -n '$=' test1.sh如圖所示:方法五複製代碼 代碼如下:wc -l test1.
Time of Update: 2017-01-18
各種知識點都寫在注釋裡。只需要 sudo $PATH/ftpsetup.sh即可,預設以test/test為使用者名稱密碼登入,登入後的根目錄唯讀,子目錄writable可寫。Ubuntu 13和Linux Mint 15上測試ok。複製代碼 代碼如下:#!/bin/bash# by liuhx 2013-Nov-04.# 設定ftp環境的指令碼。ftp的根目錄為唯讀,其下的writable目錄為可寫# 可自訂以下四項# ftp使用者名稱userName="test"#
Time of Update: 2017-01-18
安裝了centos6.0,由於選擇了最小安裝,很多包沒有安裝,因此一些常用的命令也不支援,如下:# scp -bash: scp: command not found我的解決方案是:在一台運行正常的CentOS 5.6伺服器上找到scp所在的包:##---以下命令在運行正常的CentOS 5.6上執行 複製代碼 代碼如下:# which scp /usr/bin/scp # rpm -qf /usr/bin/scp
Time of Update: 2017-01-18
1. ftp自動登入批量下載檔案。複製代碼 代碼如下:#####從ftp伺服器上的/home/data 到 本地的/home/databackup#####!/bin/bashftp -n<<!open 192.168.1.171user guest 123456binarycd /home/datalcd /home/databackuppromptmget *closebye!2. ftp自動登入上傳檔案。複製代碼 代碼如下:####本地的/home/databackup to
Time of Update: 2017-01-18
比如比較字串、判斷檔案是否存在及是否可讀等,通常用"[]"來表示條件測試。注意:這裡的空格很重要。要確保方括弧的空格。筆者就曾因為空白格缺少或位置不對,而浪費好多寶貴的時間。if ....; then....elif ....; then....else....fi[ -f "somefile" ] :判斷是否是一個檔案[ -x "/bin/ls" ] :判斷/bin/ls是否存在並有可執行許可權[ -n "$var" ] :判斷$var變數是否有值[ "$a" = "$b" ] :判斷$a和$
Time of Update: 2017-01-18
實現代碼一、#!/bin/sh# 判斷檔案是否存在# link:www.jb51.net# date:2013/2/28myPath="/var/log/httpd/"myFile="/var /log/httpd/access.log"# 這裡的-x 參數判斷$myPath是否存在並且是否具有可執行許可權if [ ! -x "$myPath"]; then mkdir "$myPath"fi# 這裡的-d 參數判斷$myPath是否存在if [ ! -d "$myPath"]; then
Time of Update: 2017-01-18
&&命令1 && 命令2:如果這個命令執行成功&&那麼執行這個命令。[jb]/usr/xxxx/ytcclb>ls -l test.sql-rwxr--r-- 1 xxxx group 225 Nov 15 14:12 test.sql[jb]/usr/xxxx/ytcclb>cp test.sql test.bak && echo "coping file ok!"coping file ok![jb]/usr/xxxx/ytcclb>ls -l
Time of Update: 2017-01-18
1、原始暴力的方法複製代碼 代碼如下:myLinux:/home/zhanhailiang/public_html # killall nginx2、溫柔點的方法尋找指定進程的pid,並kill|kill -USR1 掉複製代碼 代碼如下:myLinux:/home/zhanhailiang/public_html # ps -ef|grep tcpServer|grep -v grep|awk '{print $2}'|xargs kill -9等價方法:複製代碼 代碼如下:myLinux:/
Time of Update: 2017-01-18
讀取一個檔案,把每一行賦值給一個數組的變數,然後用for迴圈列印出來複製代碼 代碼如下:#!/bin/shi=1SUM=`sed -n '$=' tmp.txt` #計算檔案的總行數echo "$SUM"while read linedo arr[$i]="$line" i=`expr $i + 1`done < tmp.txtecho "$i"i=1for i in `seq $SUM` ;do
Time of Update: 2017-01-18
本文為大家介紹linxu shell中數組的相關知識,並舉了很多例子供參考,包括數組的複製,計算,刪除,替換等,是學習shell 數組的不可多得的好文章。數組的聲明:1)array[key]=value # array[0]=one,array[1]=two2)declare -a array # array被當作數組名3)array=( value1 value2 value3 ... )4)array=( [1]=one [2]=two [3]=three ...
Time of Update: 2017-01-18
linux shell 中"2>&1"的含義指令碼:nohup /mnt/Nand3/H2000G >/dev/null 2>&1 &對於& 1 更準確的說應該是檔案描述符 1,而1 一般代表的就是STDOUT_FILENO,實際上這個操作就是一個dup2(2)調用.他標準輸出到all_result ,然後複製標準輸出到檔案描述符2(STDERR_FILENO),其後果就是檔案描述符1和2指向同一個檔案表項,也可以說錯誤的輸出被合并了.其中0
Time of Update: 2017-01-18
取得字串的長度複製代碼 代碼如下:代碼:%x="abcd"#方法一%expr length $x4# 方法二%echo ${#x}4# 方法三%expr "$x" : ".*"4# expr 的協助# STRING : REGEXP anchored pattern match of REGEXP in STRING尋找子串複製代碼 代碼如下:代碼:%expr index $x "b"2%expr index $x "a"1%expr index&
Time of Update: 2017-01-18
備份資料庫的shell指令碼一複製代碼 代碼如下:#!/bin/bash#指定啟動並執行指令碼shell#運行指令碼要給使用者執行許可權bakdir=/backupmonth=`date +%m`day=`date +%d`year=`date +%Y`hour=`date +%k`min=`date +%M`dirname=$year-$month-$day-$hour-$minmkdir $bakdir/$dirnamemkdir $bakdir/$dirname/confmkdir
Time of Update: 2017-01-18
1、登入主機並輸入ssh-keygen -t rsa 提示Enter file in which to save the key (/root/.ssh/id_rsa): 輸入/root/.ssh/sea_rsa 根據提示輸入相關路徑名和檔案名稱並產生兩個檔案(之後的兩個選項直接斷行符號) 2、把那個沒有.pub的檔案copy出來用puttygen轉換一下產生windows下putty可用的key(這裡指sea_rsa,選擇puttygen的Conversions的Import