Linux下命令⾏(⼀)之指令的特点
笔者将要步⼊职场,⽬前在⼀家互联⽹企业实习,职位是系统管理员,公司的服务器部署环境全部是CentOS,⽬前使⽤的是版本6。笔者对Linux有⾮常浓厚的兴趣,但并⾮计算机专业出⾝,因此计算机基础并不是特别牢厚。这篇关于Linux指令的总结只适合有⼀定基础的初学者,烦请愤青绕道,⼤神勿喷。
⾸先说明,这⾥的总结并⾮来⾃于实践,⽽是根据笔者⾃⼰的感觉以及对⽹上⼤部分类似内容的总结。这⾥的意思是,只是做⼀个总结⽽已,对于参考的⽹络⽂章或者书籍会在后⾯列出,若有⽹友或书籍作者指责内容有雷同并要求删除,请指出。
作为⼀个Linux菜鸟,我觉得⾸先需要掌握的是关于Linux的⼀些理论知识,像⽂件系统、⽬录架构、进程原理、⽹络以及Linux哲学等等,内容繁多,学习压⼒其实还是蛮⼤的。在掌握了基础的理论知识后,我觉得⼀个Linuxer的⽔平主要表现在他对Linux指令的熟悉上,通过三两条指令搭配⼀些神奇的参数,并通过管道重定向连接的⽅式组合起来,来解决⼀个显⽰的问题,我相信还是⾮常有成就感的。
奈何Linux下指令很多,⼀个个掌握显然不显⽰,并且对于有不同需要的Linux⽤户需要掌握的Linux指令范围也相差甚⼤。⽐如,⼀个纯粹的Linux发烧友,他只需要不停地折腾Linux的安装、多系统共存等问题就已经很满⾜了;⽽在Linux下开发的程序员则需要掌握开发⼯具指令的适⽤,如gcc、gdb、make等等;此外,我相信绝⼤多数Linux桌⾯⽤户甚⾄很少会去使⽤Linux指令。那作为⼀个Linux系统管理员,
需要掌握哪些基本的Linux指令⼯具呢?这是我进⼊培训后思考的第⼀个问题。
Linux下⼯具繁多,指令只怕超过上万,堪⽐⼀门语⾔的词汇量了。逐⼀记住每⼀条指令及其⽤法显然是不现实的,也没有意义,常⼈估计也做不到。所幸Linux下的指令都是⼀些英⽂单词或者⼏个单词的缩写拼接⽽成,⽐较容易根据字⾯意思猜测到它的⽤途,但是具体⽤法就只能参看manuel⼿册了,毕竟⼤多数指令得配合适当的参数才能准确完美的⼯作。
对于Linux下指令的学习,我越来越觉得不停地记指令及其选项的⽅式实在太笨。不根据Linux下指令的特点就去盲⽬记忆学习,效率是很低的,并且也很容易⽣厌,使得⾃⼰学习Linux的⼼愿受挫,这⼤概是Linux⼊门时最让⼈头疼的问题了。⼀直可惜,市⾯上和⽹络上都没有出现能够⾮常好的引导初学者⼊门Linux的书籍或资料,谁要是能到,⾮常感谢能够分享。
(⼀)Linux下指令的特点
Linux下指令的特点我总结如下:
(1)指令格式:
$ command [options] [arguments]linux重定向
其中,选项(options)和参数(arguments)都是可选的,但具有完全不同的意义。选项指定这条指令的执⾏⽅式,⼀个⼯具(或者说⼀个命令)通常有多重运⾏⽅式、可以在多重环境下运⾏,指令的选项的作⽤就是指令以何种⽅式来运⾏;⽽参数是指令操作的字符串所代表的数据源,可以是⽂件、⽬录、ip地址、设备名等任何对象,但通常参数应是具有实际意义字符串。
选项可以使⽤减号"-"和⼀个英⽂字符(包括⼤⼩写,Linux下命令⾏是严格区分⼤⼩写的)或者数字组成的字符串。⽐如-r、-1、-R等等;也可以是由两个减号开始加⼀个单词组成的长选项,如--help、--version等等;还可以是没有减号的单个字符,⽐如tar指令的选项就可以不加减号前导,但这种情况⽐较少见;更少见的情况是⽤加好"+"表⽰关闭某个选项,⾄此,你可以把指令的选项理解为某种开关,"-"号表⽰打开这个开关,⽽"+"则相反,表⽰关闭这个开关。这⾥说的还是⼀般情况,实际情况还需具体对待,⽐如对于chmod指令,加号"+"的意义显然就不是关闭某个开关这样的意思了。
虽说Linux下指令的格式不是很统⼀(这通常取决于⼯具的作者,显然Linux下的⼯具不是⼀个⼈写的),相同的参数对于不同的指令会有不同的意义,更是让⼈头疼不已,这在《UNIX痛恨者⼿册》⾥就有不少的批评。但是,基本上绝⼤多数指令的格式以及选项的含义还是⽐较统⼀的。对于异类,似乎唯⼀的办法就是遇到时具体对待,并且在使⽤中记忆。
(2)但字符选项可以合并。
当⼀条指令需要很多选项,且这些选项并不要求其后紧跟参数时,通常可以将这些选项合并在⼀起,只保留⼀个前导的减号"-",如下:
$ command -a -b -c -d filename    # 等价于下⾯的
$ command -abcd filename          # 实际上这种形式更常见
(3)有些指令的某些选项会要求紧跟其后带有⼀个特定的参数。
⽐如选项f通常要求在后⾯紧跟上⼀个⽂件名作为参数,⽐如使⽤tar解压⼀个tar包的指令可以如下:
$ tar -xf tarpackage.tar      # 在当前⽬录下打开tar包tarpackage.tar
注意,选项f放在了选项x的后边,且其后紧跟⽂件名,并且将选项x和f合在了⼀起,另外选项前导的减号"-"对于tar指令来说是可以忽略的。
(4)分隔符很重要。
通常指令名、选项以及参数之间的分隔符(默认通常是空⽩符)是不可省略的;对于有些指令,选项和参数之间的空⽩符则是可有可⽆的;还有些指令会要求它的某些选项与其后的参数紧连在⼀起,之间不能有分隔符。
⽐如对于cut指令的d选项,后⾯要求跟上⼀个字符或字符串作为分割符(串)参数,通常会⽤引号把这个参数引起来,选项d和这个分隔符参数之间的空⽩符就是可有可⽆的:
$ cut -d ':' -f 2 /etc/passwd    # 等价于下⾯的
$ cut -d':' -f2 /etc/passwd# 我觉得这个形式更好理解
上⾯cut指令的选项f也可以这么⼲,它指出应该把第⼏个域cut出来。
选项与其后参数之间不能有分隔符的⼀个例⼦登陆mysql服务器时通过选项p加密码,如下:
$ mysql -u root -p123456
当然,这⾥表⽰本地登陆,注意选项p和其后的密码之间不能有空⽩符。
有关分隔符的另⼀个需要注意的例⼦是dd指令,这个指令通常被⽤来建⽴⼀个⽂件,它的选项是不带前导符号"--"的单词,例如:
$ dd if=/dev/zero of=swapfile bs=4k count=256
这⾥if、of、bs、count都是dd指令的选项,它们都要求其后紧跟参数,选项与参数之间以等号"="间隔。
这算是⾮常特殊的例⼦了。好在Linux下这种例外的例⼦不多,⼤部分的指令都遵循(1)中所说的格式。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。