Time of Update: 2018-12-06
ShellShell是一種具備特殊功能的程式,它是介於使用者和 UNIX/Linux 作業系統之核心程式(kernel)間的一個介面。為什麼我們說 shell 是一種介於系統核心程式與使用者間的中介者呢?讀過作業系統概論的讀者們都知道作業系統是一個系統資源的管理者與分配者,當您有需求時,您得向系統提出;從作業系統的角度來看,它也必須防止使用者因為錯誤的操作而造成系統的傷害?眾所周知,對電腦下命令得透過命令(command)或是程式(program);程式有編譯器(compiler)將程式轉為二進
Time of Update: 2018-12-06
跋:不要問為什麼在案頭系統大行其道的時候還要在shell(命令列)下配置網路,如果你有此疑問,請停止閱讀本篇。$iwlist wlan0 scan ##列出有效無線網路$iwconfig wlan0 essid <wireless network name> ## 串連沒有設密碼的無線網路$iwconfg wlan0 essid <wireless network name> key <password>
Time of Update: 2018-12-06
以前寫代碼時很煩遇到處理檔案路徑的問題.如:提取檔案路徑的目錄部分或者檔案名稱部分、判斷目錄/檔案是否存在等.每次遇到這樣的問題總要自己寫代碼實現,提取目錄就涉及到很繁瑣的字串分析操作,檢測目錄/檔案是否存在都是通過判斷目錄/檔案是否能開啟來實現。水平不夠時,當然寫的越多,隱患BUG就越多.最近翻看網上搜集的一些代碼時發現一些很有用的Shell API能實現我要的部分功能,於是翻看MSDN,才發現自己已經閉門造車了那麼久了.下面簡單地介紹些Shell中關於檔案操作的API函數.原型:BOOL
Time of Update: 2018-12-06
#!/bin/bashpnum_server=`ps -wef|grep tomcat |grep -v grep |wc -l`if test $pnum_server -lt 1then /usr/local/tomcat/bin/shutdown.sh sleep 2s /usr/local/tomcat/bin/startup.shfi方括弧與運算式之間一定要有空格
Time of Update: 2018-12-06
$# 是傳給指令碼(或者函數)的參數個數, $0 是指令碼本身的名字, $@ 是傳給指令碼(或者函數)的所有參數的列表. 舉例:cat foo.sh#!/bin/bashecho "script name : $0"echo "# of arguments: $#"echo "all arguments : $@"echo "arguments in order:"for sArg in "$@"; do echo " $sArg"done----------------------
Time of Update: 2018-12-06
在linux上裝oralce時,先要檢查一對rpm有沒有安裝,如果每次都一個一個地去檢查,會很麻煩,於是做了一個指令碼簡化一下。使用這個指令碼只需3步:1)將如下shell指令碼另存新檔orarpm.sh,本文將該檔案放在home目錄下:#!/bin/bashif [ $# -ne 1 ]; then echo "Usage: $0 rpmlist" exit 1fiRPMLIST=$1ERRFILE=~/rpminst`date +%Y%m%d%H%m%S`.errfor pkg in `
Time of Update: 2018-12-06
export使在父shell中定義的環境變數在子shell中仍然有效。 eg:[oracle@ora10g ~]$ echo $AA[oracle@ora10g ~]$ echo $BB[oracle@ora10g ~]$ AA=aaa[oracle@ora10g ~]$ BB=bbb[oracle@ora10g ~]$ export BB[oracle@ora10g ~]$ bash[oracle@ora10g ~]$ echo $AA[oracle@ora10g ~]$ echo
Time of Update: 2018-12-06
Solaris 有很多方面都用這和以前不大一樣,下面講Solaris中Shell的一些問題和解決方案。Solaris的預設Shell是sh,即命令列提示符為(root使用者):#而在用Linux命令列的提示符中既有使用者名稱,還有主機名稱以及當前路徑的名稱。這樣可以給人一目瞭然的感覺。不過Linux下一般預設Shell是bash,而不是sh。如果只想在當前的使用中切換Shell的話,方法很簡單,可以在命令列中輸入:$ bashbash-3.00$ cshdavid% sh$如果要永久性的改變預
Time of Update: 2018-12-06
今天我中斷了bash的學習。第一個原因是,《進階bash指令碼編程指南》這本書夠厚,細節夠多,我啃起來很吃力。但這並不是說它很深奧,這本書很好,只是太過糾結於細節。如果你能認真讀完並掌握此書,肯定算得上是bash老手了,說精通也不為過。更主要的原因是,我深刻的感受到一點,bash指令碼的設計思路中有一個問題,即,它更傾向於將功能整合在語言中,它選擇將常用的庫功能實現為特殊符號的組合,而非將常用庫組織為函數和參數。這種選擇帶來的好處是,對於精通bash文法的老手來說,他們可以用有限幾個特殊字元的組
Time of Update: 2018-12-06
1,說明:ulimit用於shell啟動進程所佔用的資源.2,類別:shell內建命令3,文法格式:ulimit [-acdfHlmnpsStvw] [size]4,參數介紹:-H 設定硬體資源限制.-S 設定軟體資源限制.-a 顯示當前所有的資源限制.-c size:設定core檔案的最大值.單位:blocks-d size:設定資料區段的最大值.單位:kbytes-f size:設定建立檔案的最大值.單位:blocks-l size:設定在記憶體中鎖定進程的最大值.單位:kbytes-m
Time of Update: 2018-12-06
一 執行bash shell的方法:(1)進入shell script所在的目錄:cd /root/tmp,執行./test.sh(2)以絕對路徑方式執行shell script: /root/tmp/test.sh(3)直接使用bash 或者 sh執行script: cd /root/tmp bash test.sh 或者 sh test.sh 或者 bash /root/tmp/test.sh(4)在現行的shell中執行: . /root/tmp/test.sh 或者 source /
Time of Update: 2018-12-06
一般的寫法是for f in `ls ./`但是如果檔案名稱中帶空格,比如"A B" 那麼雖然ls能正確列出,但是for卻會把空格當成分隔字元 將A,B分別賦給f,導致變成兩個檔案名稱研究發現問號?在檔案名稱中也可以代表空格。因此可以這樣寫:for f in `ls ./ | tr " " "\?"`先將ls的每一行的空格用tr替換為問號。這樣的f可以執行mv,cp等操作。echo也能正確將?變成空格顯示。要是涉及到字串操作不爽,反正現在已經在變數裡面了可以直接替換回來f=`tr "\?" "
Time of Update: 2018-12-06
########################總結幾個特殊的shell變數:######################################################################################http://hi.baidu.com/xece/modify/blog/75327e382149dae23b87ce5a############################################################ 特殊
Time of Update: 2018-12-06
前兩天群裡面有人問shell裡面長資料被省略為 [...]|...],如何查看被省略的部分,他是在調用os:getenv()的時候遇到的這個問題,咱們前面也遇到過類似的問題,比如 string:tokens(binary_to_list(erlang:system_info(info)),"\n").Eshell V5.9 (abort with ^G)1> string:tokens( binary_to_list(erlang:system_info(info)),"\n").["
Time of Update: 2018-12-06
最近一直在忙,偶爾有點時間在讀書,補充一下能量;最近在學習 程式設計語言-實踐之路 非常感慨,之前誤打誤撞的一點所得原來有一個更系統,完整的知識體系;於是沉下心來,慢慢吸收.像北上廣這樣的城市快速的代謝著我們的精力和知識,不容懈怠,不過倒也不必急躁,如果心浮氣躁,效果必然大打折扣;抽時間整理一下最近的筆記,先從一個怪異的問題開始吧! 在Erlang shell中我常常建立一個無限等待接收訊息的進程來做一些測試,代碼:spawn(fun() -> receive after
Time of Update: 2018-12-06
摘要:對fork,source和exec三種方式執行shell指令碼的總結。 準備知識1.我們所執行的任何程式,都是由父進程(parent process)所產生出來的一個子進程(child process),子進程在結束後,將返回到父進程去。此一現像在Linux系統中被稱為 fork。當子進程被產生的時候,將會從父進程那裡獲得一定的資源分派、及(更重要的是)繼承父進程的環境﹗ 2.Shell變數大致可以分為3種類型: 內部變數:系統提供,不用定義,不能修改,比如$#,$?,$*,$0等
Time of Update: 2018-12-06
這是一些比較雜亂的小東西們,任何一個都沒有辦法獨立成節,就把他們湊在一起羅嗦一下吧。按說這些亂七八糟的小東西們應該放到最後弄一個類似雜物箱之類的章節,但是鑒於這些亂七八糟的內容多數還是和曆史命令相關的東西,想想還是放到一起來說一下吧。 在上一節曆史命令編輯裡面提到了兩種命令的重複,一種是在複雜應用程式的不同執行個體之間的重複,另一種則是複雜的命令在不同的系統,不同的機器之間的重複。這後一種命令的重複使用 Bash 的曆史命令功能可就徹底的鞭長莫及了。畢竟 Shell
Time of Update: 2018-12-06
縮寫是個好東西。生活中的很多地方人們都喜歡用縮寫,又省時來又省力。Bash 也有自己形式的縮寫,就是 alias,但是用alias總有很多不能如願的地方。怎麼不如願呢?前文我們常說的那些個大量機器,複雜系統,大量 profile這樣的問題我們以後就不再重複了,經過前面那些文章的解釋,相信大家應該已經都很熟悉了。現在我在這裡講一些對多數人來說都很現實的問題,即便是在自己的機器上面工作。在還沒有大量使用 Emacs 的時候,一直有一個讓我很鬱悶的問題,是什麼呢?就是你定義了一個 alias了之後呢,
Time of Update: 2018-12-06
為什麼要退出來?為什麼要如何退出來?為什麼不能用 exit 退出來? 為什麼... 沒錯,shell 的確是用 exit 退出來的,但是,可但是,我們說的不是這麼便宜的事情。。。 在我們每天的工作環境裡,有這樣一個特色。我們會先登入到一台中央機器上去,然後在從這裡登入到自己的目標機器上去。為什麼要這樣做呢?因為
Time of Update: 2018-12-06
kill-ring 在 Emacs 裡面絕對是個非常精彩的設計。很多時候我都恨不能把 X Window 的 clipboard也加上一個kill-ring。但是,很多時候當我輸入 M-y 按鍵組合回朔 kill-ring的時候,總是會有很多很無聊的東西呆在裡頭。那些東西我可能永遠也不會把他們貼出來,因為那根本就不是什麼完整東西,很多都是一些殘破的片段而已。但是 Emacs 最初的設計顯然是要把所有的東西都存在 kill-ring 裡面。所以他寫了那麼多裝進 kill-ring