一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Linux Bash Shell學(xué)習(xí)(五):特殊文件、別名、選項(xiàng)和參數(shù)

 柏家香閱讀館 2014-04-03

  本文也即《Learning the bash Shell》3rd Edition的第三章Customizing Your Environment之讀書筆記,但我們將不限于此。設(shè)置一個(gè)好的用戶環(huán)境,對(duì)我們開發(fā)是非常關(guān)鍵的。在這一章節(jié)中,從四個(gè)方面進(jìn)行介紹:特別的文件,別名,選項(xiàng),參數(shù)。

特殊文件

  在用戶目錄下有幾個(gè)特殊的文件,可以用ls -a 來查看這些隱藏的系統(tǒng)文件。.bash_profile只重要的文件,經(jīng)常用于設(shè)置用戶環(huán)境。這個(gè)文件將在用戶login的時(shí)候執(zhí)行。全局(所有用戶使用的)為/etc/profile。通長我們將新的配置附加在該文件的末尾,修改后需要重新登錄方才生效,或者使用source命令來執(zhí)行這些特殊文件,即source .bash_profile

  現(xiàn)在的linux一般都是使用.bash_profile,如果沒有系統(tǒng)會(huì)去找.bash_login,次去找.profile。另外還有.bashrc文件,這實(shí)在調(diào)用subbash的時(shí)候系統(tǒng)執(zhí)行的,也即是我們敲入bash 來開啟新的bash環(huán)境,這在實(shí)際中是很少用的。.bash_logout顧名思義,是在logout是調(diào)用。

別名

  在環(huán)境文件中,會(huì)設(shè)置一些別名,當(dāng)然也可以在正常的bash命令行使用。通過別名,我們可以用我們便于記憶或者經(jīng)常使用的其他操作系統(tǒng)的命令來替代linux的命令,也可以將很長一串命令用比較簡單的單詞來替代。格式如下:

alias name =command

  請(qǐng)注意在“=”的前后是不允許留有空格的。例如用search來代替查找命令grep,alias search=grep,如果command中是含有空格的,需要用引號(hào)來表示,例如alias ls=’ls –color’。當(dāng)然我們需要注意不要將通配符這些特殊符號(hào)用于name。我們可以在command中放入一個(gè)已經(jīng)alias的別名,這是允許的。bash是禁止loop的,如果碰到,它會(huì)停止進(jìn)一步翻譯,例如上面的例子ls作為ls -color,而這兩個(gè)ls在邏輯上可以產(chǎn)生loop,但bash不會(huì)允許這種情況的發(fā)生。雖然這樣,我們要防止在多個(gè)alias上自己給自己設(shè)置環(huán)回設(shè)定,簡潔、清晰,是一個(gè)程序員的準(zhǔn)則。

  別名只能用于命令行的開始,例如alias mywork=’cd /home/wei/project/mywork’,我們嵌入mywork,就可以直接進(jìn)入指定的命令,但是我們不能alias mywork=/home/wei/project/mywork,然后cd mywork,別名是不會(huì)去解析不作為第一位的命令的。這種情況可以用export的方式來處理。

alias:例如當(dāng)前alias的的列表
alias name :例如給name的真正含義
unalias name :取消該name的別名捆綁

選項(xiàng)

  我們可以通過set –o optionname 來打開某個(gè)環(huán)境選項(xiàng),用set +o optionname 來關(guān)閉它,注意是-表示on,+表示off,這是應(yīng)為-比較容易按,而+需要按兩個(gè)鍵??梢杂胹et -o來查看當(dāng)前環(huán)境的開關(guān)情況,例如為了禁止CTRL-D引發(fā)logout,我們可以打開ignoreeof,及set –o ignoreeof。我覺得有很多這樣的環(huán)境設(shè)定參數(shù),但是其實(shí)很少使用,需要的時(shí)候可以通過man set來確定一下就可以。另外可能比較常用的是noclobber,禁止通過>的重定向方式重寫一個(gè)已有的文件。在bash 2.0,提供shopt來設(shè)置,也提供了一些來設(shè)置和unset的方式,但是我不認(rèn)為需要去記憶這些,在實(shí)際應(yīng)用上是很少使用的。這里就不記錄。

參數(shù)設(shè)定

  相對(duì)環(huán)境的設(shè)定,參數(shù)的設(shè)定更有有意思,set或者shopt是實(shí)際上很少使用的,而用戶的環(huán)境變量設(shè)定,例如JAVA是lib或者bin的指定是通過.bash_profile來設(shè)定的。參數(shù)設(shè)置也就是varname =value ,通常varname都是大寫,例如JAVADIR,我們查看一個(gè)varname,常用的方式就是echo,例如我們已經(jīng)設(shè)定了TT=’test for it’,可以通過echo $TT或者echo “$TT”來查看。如果沒有,就給出空行。

單引號(hào)和雙引號(hào)

  我們來看看下面的例子:varname=alice;echo "$varname"和echo $varname,都顯示alice,而echo ‘$varname’則顯示$varname,這說明在雙引號(hào)下是解析參數(shù)的,而單引號(hào)則表示一串字符不解析里面的內(nèi)容。

在看一個(gè)例子varname=’four space    here’,如果echo "$varname",則顯示four space    here,如果echo $varname,等同于echo four space    here,顯示four space here。雙引號(hào)內(nèi),表示一個(gè)整體,作為一個(gè)word出現(xiàn),如果我們echo "four space    here"也一樣在here之前有多個(gè)空格。

  在參數(shù)設(shè)定中分清單引號(hào)和雙引號(hào)是必須的。

內(nèi)置參數(shù)

  Linux系統(tǒng)包含一些內(nèi)置參數(shù),我們可以通過修改這些參數(shù)來改變配置。在我們自定義的參數(shù)名中要避免與之重名。

下面是history相關(guān)的部分參數(shù):

  • HISTCMD記錄單前是第N個(gè)命令,可以echo來查看一下。
  • HISTFILESIZE表示記錄在文件中歷史命令的數(shù)目,也即文件的最大行數(shù);
  • HISTSIZE表示記錄在內(nèi)存中最大的歷史命令的數(shù)目。
  • HISTIGNORE:表示不記錄某些命令,例如HISTIGNORE=l*:&,表示不記錄l開頭的命令,以及不記錄重復(fù)的命令(&表示重復(fù)命令)
  • HISTTIMEFORMAT:如果為null,則不顯示時(shí)間,我們可以為之設(shè)定時(shí)間格式,例如HISTTIMEFORMAT=”%y/%m/%d %T “,請(qǐng)注意這里使用的是雙引號(hào)。

時(shí)間格式

Format

Replaced by

%a

The locale's abbreviated weekday name

%A

The locale's full weekday name

%b

The locale's abbreviated month name

%B

The locale's full month name

%c

The locale's appropriate date and time representation

%C

The century number (the year divided by 100 and truncated to an integer) as a decimal number [00-99]

%d

The day of the month as a decimal number [01-31]

%D

The date in American format; the same value as %m/%d/%y.

%e

The day of the month as a decimal number [1-31]; a single digit is preceded by a space

%h

The same as %b

%H

The hour (24-hour clock) as a decimal number [00-23]

%I

The hour (12-hour clock) as a decimal number [01-12]

%j

The day of the year as a decimal number [001-366]

%m

The month as a decimal number [01-12]

%M

The minute as a decimal number [00-59]

%n

A newline character

%p

The locale's equivalent of either a.m. or p.m

%r

The time in a.m. and p.m. notation; in the POSIX locale this is equivalent to %I:%M:%S %p

%R

The time in 24-hour notation (%H:%M)

%S

The second as a decimal number [00-61]

%t

A tab character

%T

The time (%H:%M:%S)

%u

The weekday as a decimal number [1-7], with 1 representing Monday

%U

The week number of the year (Sunday as the first day of the week) as a decimal number [00-53]

%V

The week number of the year (Monday as the first day of the week) as a decimal number [01-53]; if the week containing 1 January has four or more days in the new year, then it is considered week 1—otherwise, it is the last week of the previous year, and the next week is week 1

%w

The weekday as a decimal number [0-6], with 0 representing Sunday

%W

The week number of the year (Monday as the first day of the week) as a decimal number [00-53]; all days in a new year preceding the first Monday are considered to be in week 0

%x

The locale's appropriate date representation

%X

The locale's appropriate time representation

%y

The year without century as a decimal number [00-99]

%Y

The year with century as a decimal number

%Z

The timezone name or abbreviation, or by nothing if no timezone information exists

%%

%

  書中還介紹了Mail相關(guān)的部分參數(shù),但是實(shí)際上我們已經(jīng)很少mail,而是使用想雷鳥,189郵箱這類郵件客戶端或者web mail,所以相關(guān)的參數(shù)也不再此摘錄。

  這里介紹了一個(gè)通過“/”來見長命令分段的方式,例子如下:其實(shí)如果雙引號(hào)只要左引號(hào),無右引號(hào),也必須等右引號(hào)方才結(jié)束,下面的例子也可以不用雙引號(hào)

$echo “hello ,/
>my friend”
hello ,my friend

提示符

  在linux中,提示符通常為$,已經(jīng)root用戶的#,這個(gè)和具體的linux版本有關(guān)系,我們也可以設(shè)置我們的提示符,例如加上用戶名,時(shí)間等等。在Linux中與4個(gè)提示符,PS1,PS2,PS3和PS4。PS1是缺省的提示符。例如我們需要改為用戶名$的方式,可以重新設(shè)置PS1,即PS1="/u$",如果我們還希望加上時(shí)間,設(shè)為PS1="/u-/A$ "。

  PS2是命令尚未輸完,第二上的換行繼續(xù)的提示符,通常為>。例如我們上面介紹的分段方式。PS3和PS4用于編程和debug。在以后的章節(jié)中介紹。下表為提示符的設(shè)置內(nèi)容。

Command

Meaning

/a

The ASCII bell character (007)

/A

The current time in 24-hour HH:MM format

/d

The date in "Weekday Month Day" format

/D {format }

The format is passed to strftime(3) and the result is inserted into the prompt string; an empty format results in a locale-specific time representation; the braces are required

/e

The ASCII escape character (033)

/H

The hostname

/h

The hostname up to the first "."

/j

The number of jobs currently managed by the shell

/l

The basename of the shell's terminal device name

/n

A carriage return and line feed

/r

A carriage return

/s

The name of the shell

/T

The current time in 12-hour HH:MM:SS format

/t

The current time in HH:MM:SS format

/@

The current time in 12-hour a.m./p.m. format

/u

The username of the current user

/v

The version of bash (e.g., 2.00)

/V

The release of bash ; the version and patchlevel (e.g., 2.00.0)

/w

The current working directory

/W

The basename of the current working directory

/#

The command number of the current command

/!

The history number of the current command

/$

If the effective UID is 0, print a #, otherwise print a $

/nnn

Character code in octal

//

Print a backslash

/[

Begin a sequence of non-printing characters, such as terminal control sequences

/]

End a sequence of non-printing characters

  一般而言我們不會(huì)去修改他們,除非有特殊需求,所以沒有必要去記憶這些系統(tǒng)參數(shù)名,需要的時(shí)候再查。

待續(xù)……

 

相關(guān)鏈接: 我的Linux操作相關(guān)文章

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    日本丁香婷婷欧美激情| 男女午夜视频在线观看免费| 国产福利一区二区久久| 国产精品一区欧美二区| 香蕉尹人视频在线精品| 日本高清不卡在线一区| 国产偷拍精品在线视频| 日韩精品在线观看完整版| 高清国产日韩欧美熟女| 白白操白白在线免费观看| 欧美整片精品日韩综合| 免费观看一区二区三区黄片| 日韩av欧美中文字幕| 丰满少妇被粗大猛烈进出视频| 韩国激情野战视频在线播放| 国产精品亚洲一区二区| 欧美丝袜诱惑一区二区| 午夜视频成人在线免费| 免费黄色一区二区三区| 成人日韩视频中文字幕| 久久福利视频这里有精品| 亚洲欧美天堂精品在线| 自拍偷拍福利视频在线观看| 黄片免费在线观看日韩| 国产日韩久久精品一区| 亚洲av又爽又色又色| 丰满人妻熟妇乱又乱精品古代 | 成人免费在线视频大香蕉| 亚洲日本韩国一区二区三区| 日韩精品一区二区一牛| 青青操成人免费在线视频| 精品老司机视频在线观看| 欧美一级内射一色桃子| 日本高清一道一二三区四五区| 伊人久久五月天综合网| 久久亚洲午夜精品毛片| 国产精品一区二区香蕉视频| 久久天堂夜夜一本婷婷| 久久精品国产亚洲av麻豆尤物| 日韩精品在线观看一区| 人人妻在人人看人人澡|