語法:export [-fnp][變量名稱]=[變量設置值]
補充說明:在shell中執行程序時,shell會提供一組環境變量。export可新增,修改或刪除環境變量,供后續執行的程序使用。export的效力僅及于該此登陸操作。
參數:
-f 代表[變量名稱]中為函數名稱。
-n 刪除指定的變量。變量實際上并未刪除,只是不會輸出到后續指令的執行環境中。
-p 列出所有的shell賦予程序的環境變量。
一個變量創建時,它不會自動地為在它之后創建的shell進程所知。而export可以向后面的shell傳遞變量的值。當一個shell腳本調用并執行時,它不會自動得到原為腳本(調用者)里定義的變量的訪問權,除非這些變量已經被顯式地設置為可用。export命令可以用于傳遞一個或多個變量的值到任何后繼腳本。登錄到系統后,系統將啟動一個用戶shell。在這個shell中,可以使用shell命令或聲明變量,也可以創建并運行shell腳本程序。運行shell腳本程序時,系統將創建一個子shell。此時,系統中將有兩個shell,一個是登錄時系統啟動的shell,另一個是系統為運行腳本程序創建的shell。當一個腳本程序運行完畢,它的腳本shell將終止,可以返回到執行該腳本之前的shell。從這種意義上來說,用戶可以有許多shell,每個shell都是由某個shell(稱為父shell)派生的。在子shell中定義的變量只在該子shell內有效。如果在一個shell腳本程序中定義了一個變量,當該腳本程序運行時,這個定義的變量只是該腳本程序內的一個局部變量,其他的shell不能引用它,要使某個變量的值可以在其他shell中被改變,可以使用export命令對已定義的變量進行輸出。export命令將使系統在創建每一個新的shell時定義這個變量的一個拷貝。這個過程稱之為變量輸出。
擴展閱讀:linux 的export 和source命令
source命令(從 C Shell 而來)是bash shell的內置命令。點命令,就是一個點符號,(從Bourne Shell而來)是source的另一名稱。這兩個命令都以一個腳本為參數,該腳本將作為當前shell的環境執行,即不會啟動一個新的子進程。所有在腳 本中設置的變量將成為當前Shell的一部分。同樣的,當前腳本中設置的變量也將作為腳本的環境,source(或點)命令通常用于重新執行剛修改的初始化文件,例如,在登錄后對 .bash_profile 中的 EDITER 和 TERM 變量做了修改,則可用source命令重新執行 .bash_profile 中的命令而不用注銷并重新登錄。象 .bash_profile 或其它類似的Shell腳本這樣,文件無需可執行權限即可用source或點命令執行。
source命令的一個妙用
在編譯核心時,常常要反復輸入一長串命令,如果把這些命令做成一個文件,讓它自動按順序執行,會很方便。用source命令可以辦到這一點。它的作用就是把一個文件的內容當成是shell來執行。
pwd 命令來查看”當前工作目錄“的完整路徑。 簡單得說,每當你在終端進行操作時,你都會有一個當前工作目錄。
命令格式:
pwd [選項]
命令功能:
查看”當前工作目錄“的完整路徑
常用參數:
一般情況下不帶任何參數
如果目錄是鏈接時:
格式:pwd -P 顯示出實際路徑,而非使用連接(link)路徑。
history命令
用于顯示指定數目的指令命令,讀取歷史命令文件中的目錄到歷史命令緩沖區和將歷史命令緩沖區中的目錄寫入命令文件。 該命令單獨使用時,僅顯示歷史命令
語法 history(選項)(參數)
選項
-c:清空當前歷史命令;
-a:將歷史命令緩沖區中命令寫入歷史命令文件中;
-r:將歷史命令文件中的命令讀入當前歷史命令緩沖區;
-w:將當前歷史命令緩沖區命令寫入歷史命令文件中。
參數 n:打印最近的n條歷史命令。
實例
1、使用HISTTIMEFORMAT在歷史中顯示TIMESTAMP
如果出于審查命令的目的,和命令一起顯示時間戳將會很有幫助,如下所示。
# export HISTTIMEFORMAT='%F %T '
[注:你也可以設置alias語句來查看最近的歷史命令]
alias h1='history 10'
2、用Ctrl + R搜索歷史命令
這應該最常使用的history特性,你只要用關鍵字搜索一下歷史命令然后重新執行這條命令而不需要將整條命令再輸一遍。方法是:按下Ctrl +R然后輸入關鍵字。
(reverse-i-search)`red`: cat/etc/redhat-release
[注:當看到你要的命令后按回車鍵,就可以重新執行這條命令了]
而有的時候你需要在執行一條歷史命令之前編輯它.比如,你可以像下面那樣搜索“httpd”,終端顯示歷史命令“service httpd stop”,選擇它把“stop”改為“start”然后執行它
[注: 在命令提示符下按 Ctrl+R , 將會顯示提示符‖reverse-i-search‖]
(reverse-i-search)`httpd`: service httpd stop
[注: 看到你想要的命令后按下左鍵或者右鍵,就可以在執行這條命令之前編輯它了]
# service httpd start
3、四種不同的方法快速執行之前的命令
有時出于某些原因你需要執行之前的命令,下面的四種方法可以用來重復最后執行的命令:
1.用向上鍵(up arrow )查看上條命令,按回車執行。
2.在命令行中輸入!!并按回車。
3.在命令行中輸入!-1并按回車。
4.按Ctrl+P顯示上條命令,按回車執行。
4、執行歷史命令中的特定命令
如果你想再次執行第四條命令,執行!4即可
5、執行以特定字開頭的歷史命令
輸入!和你要重新執行的命令的前幾個字母。在下面的例子中,輸入!ps,回車,執行歷史命令中以“ps”開頭的“psaux | grep yp”
#!ps
6、用HISTSIZE控制歷史命令的總數
把下面的兩行添加到.bash_profile然后重新登錄bash(譯者注:用source .bash_profile即可)查看有什么變化,在這個例子中,bash命令歷史記錄中只能儲存450條命令。
#vi ~/.bash_profile
HISTSIZE=450
HISTFLESIZE=450
7、使用HISTFILE改變歷史文件名
默認情況下,命令歷史被儲存在.bash_history文件中,把下面的一行添加到.bash_profile文件中,重新登錄shell,則.commandline_warrior文件將取代.bash_history文件用來儲存歷史命令。你可以使用這個命令來追蹤不同終端中執行的命令,屆時只需要將不同終端中所執行的命令保存在不同的歷史文件中即可。
#vi ~/.bash_profile
HISTFILE=/root/.commandline_warrior
8、使用HISTCONTROL來消除命令歷史中的連續重復條目
設置HISTCONTROL為ignoredups,來消除重復命令:
9、使用HISTCONTROL在整個歷史中去除重復命令
上面的ignoredups去除連續重復的命令,要消除整個命令歷史中的重復命令,把HISTCONTROL設置成erasedups
#export HISTCONTROL=erasedups
10、使用HISTCONTROL強制history忽略某條特定命令
你可以將HISTCONTROL設置為ignorespace并在該命令前加上一個空格來指示history忽略這條命令。
#export HISTCONTROL=ignorespace
11、使用c選項清除所有的歷史命令
#history –c
12、替換命令歷史中的內容
當你搜索歷史命令時,你可能希望執行一個與剛剛查找到的歷史命令具有相同的參數的命令。 在本例中,vi之后的"!!:$" 可以將前一個命令的參數做為當前命令的參數。
#ls anaconda-ks.cfg
anaconda-ks.cfg
# vi !!:$
vi anaconda-ks.cfg
在下面的例子中,緊跟在vi后的參數“!^”把上一個命令的第一個參數傳遞給當前命令。
#cp anaconda-ks.cfg anaconda-ks.cfg.bak
anaconda-ks.cfg
# vi !^
vi anaconda-ks.cfg
13、替換特定命令的特定參數
在下例中,!cp:2 在命令歷史中查找以cp開頭的命令,并將其第二個參數做為當前命令(ls -l)的參數。
#cp ~/longname.txt /really/a/very/long/path/long-filename.txt
# ls -l !cp:2
ls -l /really/a/very/long/path/long-filename.txt
在下面例子中“!cp:$”尋找先前以cp為開頭的命令,并把該條指令的最后一個參數(在這個例子中依舊是第二個參數)替換到“ls –l”中。
#ls -l !cp:$
ls -l /really/a/very/long/path/long-filename.txt
14、用HISTSIZE禁用history
把HISTSIZE設為0即可。
15、用HISTIGNORE讓history在存儲時忽略某些指令
有時你不想在記錄里看到諸如“pwd”,“ls”之類的基本指令,可以用HISTIGNORE忽略這些指令。
注意在HISTIGNORE中添加“ls”,只忽略“ls”不忽略“ls –l”。一定要準確的寫出要忽略的的指令。
#export HISTIGNORE=“pwd:ls:ls –ltr: ”
shutdown命令簡介:
該命令可以安全關閉或者重新啟動系統。shutdown命令不僅可以關閉系統、也可以重啟Linux系統。
命令語法:
/sbin/shutdown [-t sec] [-arkhncfFHP] time [warning-message]
命令參數:
參數 |
長參數 |
描敘 |
-a |
Use /etc/shutdown.allow. |
|
-c |
中斷關機:當執行"shutdown -h 12:00"指令時,只要按+鍵就可以中斷關機的指令 |
|
-f |
重新啟動時不進行磁盤檢測(fsck) |
|
-F |
重新啟動時進行磁盤檢測(fsck) |
|
-h |
關閉電源 |
|
-k |
模擬關機(不是真的關機),只是向登錄者發送警告信息出去! |
|
-n |
不調用init進程進行關機,而是強行關機 |
|
-r |
關閉系統然后重新啟動,類似于Windows平臺restart |
|
-t |
延遲關機的時間 |
|
-w |
僅做測試,并不真的將系統重新開機,只會把重開機的數據寫入/var/log目錄下的wtmp記錄文件 |
|
–help |
顯示命令在線幫助 |
使用示例:
1: 查看reboot命令的幫助信息
[root@db-server ~]# shutdown –help
Usage: shutdown [-akrhHPfnc] [-t secs] time [warning message]
-a: use /etc/shutdown.allow
-k: don't really shutdown, only warn.
-r: reboot after shutdown.
-h: halt after shutdown.
-P: halt action is to turn off power.
-H: halt action is to just halt.
-f: do a 'fast' reboot (skip fsck).
-F: Force fsck on reboot.
-n: do not go through "init" but go down real fast.
-c: cancel a running shutdown.
-t secs: delay between warning and kill signal.
** the "time" argument is mandatory! (try "now") **
2:馬上關閉Linux系統,其中 now 相當于時間為 0 的狀態
# shutdown -h now
3:系統2分鐘后重新啟動,其中+m表示幾分鐘后關機或開機。
# shutdown -r +2
4:設置系統在那個時間點關機
# shutdown -h 12:30
# shutdown -h 12:30 &
最好是使用命令&將關機命令至于后臺處理。不影響當前其它操作。
設置多久時間后執行shutdown命令。時間參數有hh:mm或+m兩種模式。hh:mm格式表示在幾點幾分執行shutdown命令。例如 “shutdown 10:45”表示將在10:45執行shutdown.+m表示m分鐘后執行shutdown.比較特別的用法是以now表示立即執行shutdown. 值得注意的是這部分參數不能省略。另外,需要注意如果現在已經22:30,你執行了shutdown -h 22:00 & 那么第二天才會關機。
5:將前一個shutdown命令取消息
如下所示,執行了下面命令讓Linux在12:30關機,但是如果發現這個時間點不合適,那么可以使用CTRL+C取消
也可以在另外一個命令窗口執行下面命令 shutdown -c
6:向所有登錄的用戶發出信息
[root@db-server ~]# shutdown -k "now"
7:重新啟動時不進行磁盤檢測
[root@db-server ~]# shutdown -fr now
8:在多少秒后關閉系統并給用戶發送提示信息
[root@db-server ~]# shutdown -t 10 -h now "System will shutdown 10 sencond later"
2)reboot,halt與poweroff
還有三個命令可以進行重新啟動與關機的任務,那就是reboot, halt, poweroff。 其實這三個命令調用的函式庫都差不多,所以當你使用『man reboot』時,會同時出現三個命令的用法給你看,如下圖所示:
3)其他的關機命令
Linux共有七種運行等級
-
run level 0:關機
-
run level 3:純文本模式
-
run level 5:含有圖形接口模式
-
run level 6:重新啟動
那如何切換各模式呢?可以使用init這個命令來處理!也就是說,如果你想要關機的話,除了上述的shutdown -h now以及poweroff之外,你也可以使用如下的命令來關機:# init 0
hwclock(hardware clock)
功能說明:顯示與設定硬件時鐘。
語 法:hwclock [–adjust][–debug][–directisa][–hctosys][–show][–systohc][–test]
[–utc][–version][–set –date=<日期與時間>]
補充說明:在Linux中有硬件時鐘與系統時鐘等兩種時鐘。硬件時鐘是指主機板上的時鐘設備,也就是通??稍贐IOS畫面設定的時鐘。系統時鐘則是指kernel中的時鐘。當Linux啟動時,系統時鐘會去讀取硬件時鐘的設定,之后系統時鐘即獨立運作。所有Linux相關指令與函數都是讀取系統時鐘的設定。
參 數:
–adjust hwclock每次更改硬件時鐘時,都會記錄在/etc/adjtime文件中。使用–adjust參數,可使hwclock根據先前的記錄來估算硬件時鐘的偏差,并用來校正目前的硬件時鐘。
–debug 顯示hwclock執行時詳細的信息。
–directisa hwclock預設從/dev/rtc設備來存取硬件時鐘。若無法存取時,可用此參數直接以I/O指令來存取硬件時鐘。
–hctosys 將系統時鐘調整為與目前的硬件時鐘一致。
–set –date=<日期與時間> 設定硬件時鐘。
–show 顯示硬件時鐘的時間與日期。
–systohc 將硬件時鐘調整為與目前的系統時鐘一致。
–test 僅測試程序,而不會實際更改硬件時鐘。
–utc 若要使用格林威治時間,請加入此參數,hwclock會執行轉換的工作。
–version 顯示版本信息。
使用示例
示例一 hwclock命令與clock命令是一個東西
# type -a hwclock
示例二 顯示硬件時鐘
# hwclock
# hwclock -r
# hwclock –show
示例三 修改日期并同步到硬件時鐘
# date
# date 11062112 <== 格式 mmddHHMM,即 月日時分
# hwclock -w
# hwclock
2010年11月06日 星期六 21時12分13秒 -0.648818 seconds
注:要使系統時間準確,最好還是使用ntp方式。
示例四 使用ntpdate命令從網絡同步時間,再同步到硬件時鐘
ntpdate命令是使用NTP協議來從網絡同步時間的命令。NTP=Network Time Protocol 網絡時間協議。
# ntpdate 0.rhel.pool.ntp.org
# hwclock -w
擴展閱讀一:hwclock 使用
Linux機器上的時間比較復雜,機器里有兩個時鐘:硬件時鐘和系統時鐘
硬件時鐘從根本上講是CMOS時鐘;
系統時鐘是由內核維護的,它是從1969年末(即傳說中的標志Unix時代開端的那個拂曉)開始算起的累積秒數。
在Linux系統中,起作用的是系統時鐘。在啟動時,它靠讀取硬件時鐘獲得計時起點,而不是靠記憶計時。你可以通過BIOS修改系統硬件時鐘,或者如果你不想重起機器,那就用hwclock命令。當你使用hwclock命令調整硬件時間很多次以后,hwclock就會獲取你的時鐘推移速率,然后就會把這個信息存在/etc/adjtime里邊。以后,你就可以用它來隨時更新你的硬件時間,用一條下面的命令:
hwclock –adjust
硬件時鐘通常被設置成全球標準時間(UTC),而將時區信息保存在/usr/share/lib/timezone (或者在某些系統中可能是/usr/local/timezone)目錄下某個適當的文件中,然后用一個符號鏈接文件/etc/localtime指向它。
查看硬件時鐘用命令:
hwclock –show 或者 hwclock -r
重置硬件時鐘用:
#date 042817252009.00 //設置系統時鐘 2009 年 04 月 28 日 星期四 17:25:00 CST
#hwclock -w
如果需要修改你的時區信息,可以使用tzset命令,如果你系統中沒有這條命令,那可以用類似下面的操作:
ln -s /etc/localtime /usr/share/zoneinfo/US/Pacific
實例:
板子上電
#date 042817252009.00 //設置系統時鐘 2009 年 04 月 28 日 星期四 17:25:00 CST
#hwclock -w //將系統時鐘寫入硬件時鐘
#hwclock -r //看時間是否在變化
如果沒有出錯, 就已經把2009 年 04 月 28 日 星期四 17:25:00 CST 寫入RTC chip了
為了使系統時間和RTC時間同步,可以在初始化文件中添加命令
hwclock -s
使每次開機時讀取RTC時間,并同步給系統時間。
在根文件系統:usr/etc/rc.local中添加
/sbin/hwclock -s
斷電
等2分鐘在上電
#hwclock -r //看時間是否同步,即使與2分鐘后的時間相同
擴展閱讀二:linux中時間設置date、hwclock、clock
Linux有兩個時鐘系統,但Linux并沒有默認哪個時鐘系統。當Linux啟動時,硬件時鐘會去讀取系統時鐘的設置,然后系統時鐘就會獨立于硬件運作。從Linux啟動過程來看,系統時鐘和硬件時鐘不會發生沖突,但Linux中的所有命令(包括函數)都是采用的系統時鐘設置。
1.在虛擬終端中使用date命令來查看和設置系統時間
設置系統時鐘的操作:
# date 091713272003.30
通用的設置格式:
# date 月日時分年.秒
2.使用hwclock或clock命令查看和設置硬件時鐘
查看硬件時鐘的操作:
# hwclock –show 或
# clock –show
2003年09月17日 星期三 13時24分11秒 -0.482735 seconds
設置硬件時鐘的操作:
# hwclock –set –date="09/17/2003 13:26:00"
或者
# clock –set –date="09/17/2003 13:26:00"
通用的設置格式:hwclock/clock –set –date=“月/日/年時:分:秒”。
3.同步系統時鐘和硬件時鐘
hwclock:硬件時鐘
-w:同步系統時間到硬件時間
-s:同步硬件時間到系統時間
date命令的功能是顯示和設置系統日期和時間。
輸入date 查看目前系統時間。
修改時間需要 date -功能字符 修改內容
命令中各選項的含義分別為:
-d datestr, –date datestr 顯示由datestr描述的日期
-s datestr, –set datestr 設置datestr 描述的日期
-u, –universal 顯示或設置通用時間
時間域
%H 小時(00..23)
%I 小時(01..12)
%k 小時(0..23)
%l 小時(1..12)
%M 分(00..59)
%p 顯示出AM或PM
%r 時間(hh:mm:ss AM或PM),12小時
%s 從1970年1月1日00:00:00到目前經歷的秒數
%S 秒(00..59)
%T 時間(24小時制)(hh:mm:ss)
%X 顯示時間的格式(%H:%M:%S)
%Z 時區 日期域
%a 星期幾的簡稱( Sun..Sat)
%A 星期幾的全稱( Sunday..Saturday)
%b 月的簡稱(Jan..Dec)
%B 月的全稱(January..December)
%c 日期和時間(Wed May 18 10:27:35 PDT 2016)
%d 一個月的第幾天(01..31)
%D 日期(mm/dd/yy)
%h 和%b選項相同
%j 一年的第幾天(001..366)
%m 月(01..12)
%w 一個星期的第幾天(0代表星期天)
%W 一年的第幾個星期(00..53,星期一為第一天)
%x 顯示日期的格式(mm/dd/yy)
%y 年的最后兩個數字( 2016則是16)
%Y 年(例如:1970,2016等)
樣例: date +%Y-%m-%d\ %H:%M:%S 顯示:2016-05-18 10:20:23
只有超級用戶才能用date命令設置時間,一般用戶只能用date命令顯示時間。
原創文章,作者:未聞花名,如若轉載,請注明出處:http://www.www58058.com/34508