|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
如果你想在以后的生涯中在软件行业工作的话,学习linux是一项基本技能,所以打从你打算学习linux那天起,放弃windows吧!因为它除了能给你带来片刻的娱乐,别无其他;
让我们面临实际吧:坏习气很难改动。可是您已熟习的习气大概更难克制。偶然,从头审阅某些事变大概让您碰到“啊哈,我没想到它能做到这一点!”的时候。在MichaelStutz的《UNIX妙手的10个习气》的基本上,本文将供应别的10个UNIX命令行命令、工具和手艺,可使您成为更高效的UNIX命令行妙手。
您应该采取的其他10个好习气包含:
- 利用文件名主动完乐成能(filenamecompletion)。
- 利用汗青扩大。
- 重用之前的参数。
- 利用pushd和popd办理目次导航。
- 查找年夜型文件。
- 不利用编纂器创立一时文件。
- 利用curl命令行有用工具。
- 最无效天时用正则表达式。
- 断定以后用户。
- 利用awk处置数据。
经常使用首字母缩写词
- MB:兆字节
- HTTP:超文本传输协定
- HTTPS:HTTPoverSecureSocketsLayer
- FTP:文件传输协定
- FTPS:FTPoverSecureSocketsLayer
- LDAP:轻型目次会见协定
利用文件名完成
假如不必要在命令提醒符处键进长的、使人隐晦的文件名,这是否是很棒呢?切实其实,您不必要如许做。相反,您能够设置最盛行的UNIXShell以利用文件名完成。该功效在各个Shell中的事情体例略有分歧,因而我将向您展现怎样在最盛行的Shell中利用文件名完成。文件名完成使您能够更快地输出并制止毛病。怠惰?大概吧。效力更高?固然!
我正在运转哪一种Shell?
假如您不晓得今朝利用的是哪种Shell,会怎样?固然这个窍门不是别的10个好习气的正式构成部分,但它仍旧很有效。如清单1所示,您可使用echo$0或ps-p$$命令显现您正在利用的Shell。关于我来讲,运转的是BashShell。
清单1.断定您的Shell- $echo$0-bash$ps–p$$PIDTTYTIMECMD6344ttys0000:00.02–bash
复制代码 CShell
CShell撑持最间接文件名完乐成能。设置filec变量可启用该功效。(您可使用命令setfilec。)在您入手下手键进文件名后,能够按Esc键,Shell将完成文件名,或完成尽量多的部分。比方,假定您具有名为file1、file2和file3的文件。假如您键进f,然后按Esc键,将添补file,而您必需键进1、2或3来完成响应的文件名。
Bash
BashShell也供应了文件名完成,但利用Tab键取代Esc键。您在BashShell中不必要设置任何选项便可启用文件名完成,该选项是缺省设置的。Bash还完成了其他功效。键进文件名的一部分后,按Tab键,假如有多个文件满意您的哀求,而且您必要增加文本以选择个中一个文件,那末您能够多按Tab键两次,以显现与您今朝键进的内容相婚配的文件的列表。利用之前名为file1、file2和file3的文件示例,起首键进f。当您按一次Tab键时,Bash完成file;再按一次Tab键时,将睁开列表file1file2file3。
KornShell
关于KornShell用户,文件名完成取决于EDITOR变量的值。假如EDITOR设置为vi,那末您键进部分称号,然后按Esc键,后跟反斜杠()字符。假如EDITOR设置为emacs,那末您键进部分称号,然后按两次Esc键以完成文件名。
利用汗青扩大
假如您为一系列命令利用不异的文件名,会产生甚么情形?固然,有一种快速体例能够疾速取得您前次利用的文件名。如清单2所示,!$命令前往前一个命令利用的文件名。从文件this-is-a-long-lunch-menu-file.txt中搜刮单词pickles的呈现地位。搜刮停止后,利用vi命令来编纂this-is-a-long-lunch-menu-file.txt文件,而不必要从头键进文件名。您利用叹息号(!)来会见汗青,然后利用美圆标记($)前往前一命令的最初字段。假如您重复用到长文件名,那末这是一个十分好的工具。
清单2.利用!$取得前一个命令利用的文件名- $greppicklesthis-is-a-long-lunch-menu-file.txtpastramionryewithpicklesandonions$vi!$
复制代码 重用之前的参数
!$命令前往某个命令利用的上一个文件名参数。但假如某个命令利用多个文件名,而您只但愿重用个中一个文件名,该怎样做?!:1操纵符前往某个命令利用的第一个文件名。清单3中的示例显现能够怎样将此操纵符与!$运算符组合利用。在第一个命令中,将一个文件从头定名为更成心义的称号,但为了坚持原始文件名可用,创立了一个标记链接。从头定名文件kxp12.c以进步可读性,然后利用link命令来创立到原始文件名的标记链接,以防在其他地位利用该文件名。!$操纵符前往file_system_access.c文件名,而!:1操纵符前往kxp12.c文件名,该文件名是上个命令的第一个文件名。
清单3.组合利用!$和!:1- $mvkxp12.cfile_system_access.c$ln–s!$!:1
复制代码 利用pushd和popd办理目次导航
UNIX撑持各类目次导航工具。我最喜好的两款进步事情效力的工具是pushd和popd。您固然懂得cd命令用于变动您确当前目次。假如您要在多个目次中导航,但但愿可以疾速前往某个地位,该怎样做?pushd和popd命令创立一个假造目次仓库,pushd命令用来变动您确当前目次并将其存储在仓库中,而popd命令用来从仓库的顶部移除目次并使您前往该地位。您可使用dirs命令来显现以后目次仓库,而不会压进或弹出新目次。清单4显现怎样利用pushd和popd命令在目次树中疾速导航。
清单4.利用pushd和popd在目次树中导航- $pushd.~~$pushd/etc/etc~~$pushd/var/var/etc~~$pushd/usr/local/bin/usr/local/bin/var/etc~~$dirs/usr/local/bin/var/etc~~$popd/var/etc~~$popd/etc~~$popd~~$popd
复制代码 pushd和popd命令还撑持利用参数处置目次仓库。利用+n或-n参数,个中n是一个数字,您能够向左或向右挪动仓库,如清单5所示。
清单5.扭转目次仓库- $dirs/usr/local/bin/var/etc~~$pushd+1/var/etc~~/usr/local/bin$pushd-1~/usr/local/bin/var/etc~
复制代码 查找年夜型文件
是不是必要找出您的一切余暇磁盘空间被甚么占用了?您可使用以下几个工具来办理您的存储设备。如清单6所示,df命令为您显现每一个可用卷上已利用的块的总数,和余暇空间的百分比。
清单6.断定卷的利用情形- $dfFilesystem512-blocksUsedAvailableCapacityMountedon/dev/disk0s23119099842672752644412272086%/devfs2242240100%/devfdesc220100%/devmap-hosts000100%/netmapauto_home000100%/home
复制代码 是不是但愿查找年夜型文件?利用find命令时附带-size参数。清单7显现了怎样利用find命令来查找年夜于10MB的文件。请注重,-size参数以KB为单元计量巨细。
清单7.查找年夜于10MB的一切文件- $find/-size+10000k–xdev–execls–lh{};
复制代码 不利用编纂器创立一时文件
以下是一个复杂示例:您必要疾速创立一个复杂一时文件,但不但愿启动您的编纂器。利用带有>文件重定向操纵符的cat命令。如清单8所示,利用不带文件名的cat命令只回显向尺度输出键进的任何内容;>重定向将该输出捕捉到指定的文件中。请注重,您在停止键进时必需供应文件停止字符,一般为Ctrl-D。
清单8.疾速创立一时文件- $cat>my_temp_file.txtThisismytempfiletext^D$catmy_temp_file.txtThisismytempfiletext
复制代码 必要实行不异操纵,可是附加到现有文件而不是创立新文件。如清单9所示,改用>>操纵符。>>文件重定向操纵符向现有文件附加内容。
清单9.疾速向文件附加内容- $cat>>my_temp_file.txtMoretext^D$catmy_temp_file.txtThisismytempfiletextMoretext
复制代码 利用curl命令行有用工具
我是不是能够从命令行会见Web?你疯了吗?没有,这就是curl的用处!curl命令使您可使用HTTP、HTTPS、FTP、FTPS、Gopher、DICT、TELNET、LDAP或FILE协定从服务器检索数据。如清单10所示,我可使用curl命令从美国国度景象局懂得我地点地位(纽约州布法罗市)确当前天色情况。当与grep命令组合利用时,我能够检索布法罗市的天色情况。利用-s命令行选项来克制curl处置输入。
清单10.利用curl检索以后天色情况- $curl–shttp://www.srh.noaa.gov/data/ALY/RWRALY|grepBUFFALOBUFFALOMOSUNNY432243NE1330.10R
复制代码 如清单11所示,您也能够利用curl命令来下载HTTP托管的文件。利用-o参数来指定保留输入的地位。
清单11.利用curl下载HTTP承载的文件- $greppicklesthis-is-a-long-lunch-menu-file.txtpastramionryewithpicklesandonions$vi!$0
复制代码 这实践上只是您利用curl命令能够完成的操纵的提醒。您只需在命令提醒符处键进mancurl显现curl命令的完全利用信息,就能够入手下手懂得更多内容。
最无效天时用正则表达式
大批UNIX命令利用正则表达式作为参数。从手艺角度而言,正则表达式是暗示某种形式的字符串(也就是说,由字母、数字和标记构成的字符序列),用于界说零或更长的字符串。正则表达式利用元字符(比方,星号
和问号[?])来婚配其他字符串的部分或全体内容。正则表达式纷歧定包括通配符,但通配符可使正则表达式在搜刮形式和处置文件时发扬更年夜的感化。表1显现了一些基础正则表达式序列。
表1.正则表达式序列
序列申明脱字符(^)婚配呈现外行首的表达式,比方^A美圆标记($)婚配呈现外行末的表达式,比方A$反斜杠()作废下一个字符的特别寄义,比方^方括号([])婚配括起来的任一字符,比方[aeiou](利用连字符[-]暗示局限,比方[0-9])。[^]婚配除括起来字符之外的任一字符,比方[^0-9]句点(.)婚配除行尾以外的恣意单个字符星号(*)婚配零个或多个先驱字符或表达式{x,y}婚配呈现过x到y个和后面不异的内容{x}准确婚配呈现过x个和后面不异的内容{x,}婚配呈现过x个或更多和后面不异的内容 清单12显现了与grep命令一同利用的一些基础正则表达式。
清单12.利用正则表达式和grep- $greppicklesthis-is-a-long-lunch-menu-file.txtpastramionryewithpicklesandonions$vi!$1
复制代码 有大批书本专门报告正则表达式。有关命令行正则表达式的深切形貌,倡议您浏览developerWorks文章“对话UNIX,第9部分:正则表达式。”
断定以后用户
偶然,您大概但愿断定某个特定用户是不是运转过您的办理剧本。为找出谜底,您可使用whoami命令来前往以后用户的称号。清单13显现了单独运转的whoami命令;清单14显现了利用whoami确保以后用户不是根用户的Bash剧本的摘录。
清单13.从命令利用用whoami- $greppicklesthis-is-a-long-lunch-menu-file.txtpastramionryewithpicklesandonions$vi!$2
复制代码 清单14.在剧本中利用whoami- $greppicklesthis-is-a-long-lunch-menu-file.txtpastramionryewithpicklesandonions$vi!$3
复制代码 利用awk处置数据
awk命令仿佛一直处在Perl的暗影下,但它关于复杂、基于命令行的数据处置来讲是一个疾速、有用的工具。清单15显现了怎样入手下手利用awk命令。若要猎取文件中每行文本的长度,请利用length()函数。若要检察字符串ing是不是呈现在文件文本中,请利用index()函数,该函数前往ing初次呈现的地位,如许您就能够利用它来举行进一步的字符串处置。若要tokenize(也就是说,将一行拆分为单词长度的片断)某个字符串,请利用split()函数。
清单15.基础awk处置- $greppicklesthis-is-a-long-lunch-menu-file.txtpastramionryewithpicklesandonions$vi!$4
复制代码 打印文本文件中的指定字段是一项复杂的awk义务。在清单16中,sales文件包括每一个发卖职员的姓名,后跟每个月发卖数字。您可使用awk命令来疾速取得每月的发卖总额。缺省情形下,awk将每一个以逗号分开的值视为分歧的字段。您利用$n操纵符来会见每一个字段。
清单16.利用awk对数据举行汇总- $greppicklesthis-is-a-long-lunch-menu-file.txtpastramionryewithpicklesandonions$vi!$5
复制代码 awk命令能够很庞大并使用于普遍的情形中。若要更完全地进修awk命令,请从命令manawk入手下手。
停止语
成为命令行妙手必要举行一些理论。依照不异的体例处置成绩很复杂,由于您已习气了。扩大您的命令行资本能够明显进步您的事情效力,并促使您朝着UNIX命令行妙手的偏向行进!
尽我能力帮助他人,在帮助他人的同时你会深刻巩固知识。 |
|