Linux运维

linux系统入门,linux系统入门学习

首发于生信百科写文章生信入门系列之 linux 入门(一):初识 linux 系统ginkgo生物信息33 人赞同了该文章Linux是一个免费的操作系统,是生物信息分析中必不可少的工具。在 linux 系统中,所有的管理任务均可以在一个叫终端(terminal)的控制面板里完成,包括文件处理,软件安装以及用户管理。这个终端是交互的,即你运行特定的命令,相应的结果会在这个终端上显示出来。运行命令的方式是:在终端上输入你希望运行的命令,然后按回车键(Enter)。如果你想终止正在运行的命令,可以按 Chrl + C。

​不同于 windows 系统,linux 的文件系统是一个目录树(directory tree);如下图所示,其文件系统为一个树状结构。最顶端 “root”,用斜杠 “/” 表示。一般来说,普通用户,无论是直接打开终端还是远程登陆服务器,所在的位置一般是在 /home/foo 下,其中的 foo 在这里指代用户名。

​对于 windows 用户来说,可以通过一个轻量级的软件 putty (约 500 kb;百度可下载;双击软件即可使用,无需安装)来远程登陆服务器,登陆方法如下图,图中的序号为操作顺序:

首先在 Host Name(or IP address)下方的框框中输入服务器的的 ID 地址,并单击 “Open” 选项;putty 会弹出一个警告框,点击否;最后最出现下图 3 中的界面,在 “login as:“ 后输入你的用户名,回车后输入登陆密码(直接输入就行了,是看不到显示的)。​打开终端或是远程登陆服务器时,如果你想查看当前所在的位置,可以在终端输入如下命令,并按回车键:

pwd这个 linux 命令意思是“打印当前工作目录”,是 “print working directory” 的英文缩写;其返回结果是一个绝对路径(就是从根目录开始,依次将各级子目录的名字组合起来),应该类似这样:

/home/foo​与上述的树状文件系统相互比照,是不是立马清楚自己到底在哪里了?就好像 windows 下,到底在哪个盘的哪个文件夹里一样。这个绝对路径很有用,它不仅让我们知道自己在哪儿,同时还可以告诉系统某个软件在哪儿,以及告诉软件要操作的文件在哪儿。举个例子吧,比如说我想调用一个软件,叫 vcftools,那么,我要运行它,只需要在终端输入如下命令并回车:

vcftools –vcf input_data.vcf​就可以轻轻松松算出 variants 的数目和 individuals 的数目。但很不幸的是,你也有可能得到如下结果:

bash: vcftools: command not found​大概意思就是,系统找不到这个命令在哪儿。可能有人会问了,既然是一个命令,为什么系统会找不到呢?其实,在linux 系统中,有一个非常核心的概念:一切皆文件!即在linux环境下,任何事物都以文件的形式存在。所以,如果你的从 vcftools 安装在 /home/foo/biosoft/vcftool-0.1.13/bin 这个绝对路径下,那么,你就可以这样运行它:

/home/foo/biosoft/vcftool-0.1.13/bin/vcftools –vcf input_data.vcf​就可以的结果啦。但也有可能得到如下结果:

VCFtools – v0.1.13(C) Adam Auton and Anthony Marcketta 2009Parameters as interpreted:–vcf input_data.vcfstat error: No such file or directoryError: Can’t determine file type of input_data.vcf​这时也不要慌,只要在输入文件前加上绝对路径即可。加入 input_data.vcf 文件在 /home/foo/vcffile 下,可以这样运行:

/home/foo/biosoft/vcftool-0.1.13/bin/vcftools –vcf /home/foo/vcffile/input_data.vcf​这时,如无意外,就可以得到如下结果了:

VCFtools – v0.1.13(C) Adam Auton and Anthony Marcketta 2009Parameters as interpreted:–vcf /home/foo/vcffile/input_data.vcfUsing zlib version: 1.2.3.4Versions of zlib >= 1.2.4 will be *much* faster when reading zipped VCF files.After filtering, kept 16 out of 16 IndividualsAfter filtering, kept 1116595 out of a possible 1116595 SitesRun Time = 5.00 seconds​如果还报出一些奇奇怪怪的错误提示,那就首先检查一下您的输入法中是否为纯英文状态,中文和全角状态下的输入的空格都是会报错的。同时,linux 里,软件对字母大小写是敏感的,即 linux 认为 A 和 a 是两个不同的事物;也就是说大小写也是会造成错误的。

​前面,我多次提到了绝对路径这个概念,不少心思敏捷的童鞋就会想了,有没有相对路径?有的。

​举例说明,假如我们在 /home/foo 这个路径下,并且我们知道该路径下有 vcffile 和 biosoft 这两个目录;那么,我们可以这样运行上述的命令:

biosoft/vcftool-0.1.13/bin/vcftools –vcf vcffile/input_data.vcf​可以看到,biosoft/vcftool-0.1.13/bin 和 vcffile 这两个路径都不是以斜杠 / 开头的,所以这两个路径都是相对路径。当然了,你也可也这样运行:

biosoft/vcftool-0.1.13/bin/vcftools –vcf /home/foo/vcffile/input_data.vcf​ 亦或这样:

biosoft/vcftool-0.1.13/bin/vcftools –vcf vcffile/input_data.vcf​ 也可以进到 vcffile 这个目录里,这样运行:

/home/foo/biosoft/vcftool-0.1.13/bin/vcftools –vcf input_data.vcf​ 或者这样( “..” 在这里代表上级目录,相应的,”../..“ 代表上级目录的上级目录):

../biosoft/vcftool-0.1.13/bin/vcftools –vcf input_data.vcf​ 总之,想怎么运行,看心情!

​相信看到这里,会有记忆力超好的童鞋会问了,我该如何像运行 pwd 那样运行 vcftools 呢?而不是在它前面加上一大串绝对路径或是相对路径!

​要回答这个问题,小编先给大家展示两个命令(不深入讲解):

which pwd​返回的应该是:

/bin/pwd​第二个是:

echo $PATH​会返回类似下面的结果:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/foo/biosoft/vcftool-0.1.13/bin​眼尖的童鞋会发现,上面一串结果其实就是许多绝对路径通过 “:” 连接在一起的(叫做环境变量),其中有一个路径 “/bin” ;而 which pwd 返回的结果是 /bin/pwd。这两个有什么关系呢?其实不必深究,我们只需要知道,linux 把 pwd 看作一个文件(还记得前面说的“一切皆文件”吗),linux 系统会在上述的环境变量中从左往右依次查找,看某个路径下是否有 pwd 这个文件,然后执行这个命令。并且,环境变量是可以编辑的, 即可在环境变量 “PATH” 中添加特定的路径。同理,如果我们的 vcftools 软件(其实就是个文件)的路径也在上述的路径中,就可以在终端直接输入 vcftools 就可以运行了。

​那么问题来了,我们该如何将特定软件的路径发到上述的环境变量 “PATH” 中呢?

​只需要通过 export 命令,在终端中输入以下内容,回车后,就可以将 vcftools 的路径导入到上述的环境变量中:

# vcftools (井号后的内容 linux 系统不会读取,可以做注释)export PATH=$PATH:’/home/foo/biosoft/vcftool-0.1.13/bin’ # 添加这一行就行了,export 后要加空格,不要换行。​就会得到类似这样的结果:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/foo/biosoft/vcftool-0.1.13/bin当然,如果你是这样输入的,

export PATH=’/home/foo/biosoft/vcftool-0.1.13/bin’:$PATH​那就应该得到类似这样的结果:

Similar Posts

发表评论

邮箱地址不会被公开。 必填项已用*标注