关于LINUX命令行(一)
为什么使用命令行?
大多数计算机用户只熟悉图形用户界面(GUI:graphical user interface),并且产品供应商和此领域的学者会灌输给永华这样的思想,命令行界面(CLI:command line interface)是过去使用的一种很恐怖的东西。
一个好的命令行界面,是用来和计算机进行交流沟通的非常有效的方式,“图形用户界面让简单的任务更容易完成,而命令行界面使完成复杂的任务成为可能”。
生物信息领域,能高效处理大量的数据。生物信息的软件大多为开源软件,LINUX版本。它是一个多用户的操作系统,充分利用购置的硬件资源和软件资源。
什么是shell?
shell就是一个程序,它接受从键盘输入的命令,然后把命令传递给操作系统去执行。
bash(Bourne Again SHell),最初Unix上有Steve Bourne写成shell程序sh的增强版。
- 终端仿真器
当使用图形用户界面时,我们需要另一个和shell交互的叫做终端仿真器的程序。
** 在Mac里就是Terminal **
- 第一个按键
qiyindeMacBook-Pro:~ qiyin$
这叫做shell提示符,通常包括你的用户名和主机名,紧接着是当前工作目录和一个美元符号。
输入6789,这个命令没有意义,shell会提示错误信息。
- 命令历史
iyindeMacBook-Pro:~ qiyin$ 6789
-bash: 6789: command not found
qiyindeMacBook-Pro:~ qiyin$ 6789
如果按下上箭头,会看到刚才输入的命令,这就叫做命令历史。一般保存最后输入的500个命令,按下下箭头按键,先前输入的命令消失。
- 输入简单的命令行
qiyindeMacBook-Pro:~ qiyin$ date
2018年 1月19日 星期五 10时15分22秒 CST
qiyindeMacBook-Pro:~ qiyin$ cal
一月 2018
日 一 二 三 四 五 六
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
- 结束终端会话
输入exit命令来终止一个终端会话。
文件系统中的跳转
pwd-print name of current working directory (打印当前工作目录名)
cd-change direttory(更改目录)
ls-list directory contents(列出目录内容)
- 理解文件系统树
所有文件组成一棵树型目录,这个目录树可能包含文件和其他目录。文件系统中的第一级目录称为根目录,根目录包含文件和子目录,子目录包含更多的文件和子目录,以此类推。
qiyindeMacBook-Pro:~ qiyin$ pwd
/Users/qiyin
这是我的家目录,家目录是唯一允许用户对文件进行写入的地方
- 绝对路径
绝对路径开始于根目录,紧跟着目录树的一个个分支,一直到达所期望的目录或文件。
- 相对路径
相对路径开始于工作目录。
特殊的符号表示相对位置
“.”指的是工作目录
“..”指的是工作目录和父目录
绝对 | 相对 | |
---|---|---|
from /Users/qiyin to /Users | cd /Users | cd .. |
from /Users to /Users/qiyin | cd /Users/qiyin | cd ./qiyin |
qiyindeMacBook-Pro:~ qiyin$
qiyindeMacBook-Pro:~ qiyin$ pwd
/Users/qiyin
qiyindeMacBook-Pro:~ qiyin$ cd /Users
qiyindeMacBook-Pro:Users qiyin$ pwd
/Users
qiyindeMacBook-Pro:Users qiyin$ cd /Users/qiyin
qiyindeMacBook-Pro:~ qiyin$ pwd
/Users/qiyin
qiyindeMacBook-Pro:~ qiyin$ cd ..
qiyindeMacBook-Pro:Users qiyin$ pwd
/Users
qiyindeMacBook-Pro:Users qiyin$ cd ./qiyin
qiyindeMacBook-Pro:~ qiyin$ pwd
/Users/qiyin
tip:"./"可以省略
- ls乐趣
通过ls,我们可以知道目录的内容,以及各种各样重要文件和目录的属性。
选项和参数
命令名经常会带有一个或多个用来更正命令行为的选项,选项后面会带有一个或多个参数,这些参数是命令作用的对象。
大多数命令使用的选项,是由一个中划线加上一个字符组成,例如“-l”.
ls命令选项
表
-
确定文件类型
用file命令来确定文件的类型,形式为“file filename” -
浏览文件内容
用less命令来浏览文本文件的程序,形式为“less filename”
例如,要查看一个定义了系统中全部用户身份的文件,输入“less /etc/passwd”
表
操作文件和目录
cp - 复制文件和目录
mv - 移动/重命名文件和目录
mkdir - 创建目录
rm - 删除文件和目录
ln - 创建硬链接和符号链接
- 通配符
shell频繁的使用文件名,shell提供了特殊字符来帮助你快速指定一组文件名。这些特殊字符叫做通配符,使用它允许你依据字符类型来选择文件名。
rm命令用到通配符,用ls命令来测试,看到要删除的文件列表。
- 硬链接与符号链接
每个文件默认会有一个硬链接,这个硬链接给予文件名字。我们每创建一个硬链接,就为一个文件创建了一个额外的目录项。
创建符号链接是为了克服硬链接的两个缺点:硬链接不能跨越物理设备,硬链接不能关联目录,只能是文件。符号链接生效,是通过创建一个特殊类型的文件,这个文件包含一个关联文件或目录的文本指针。
什么是链接?
链接简单说是一种文件共享的方式,是POSIX中的概念,主流文件系统都支持链接文件。可以理解为windows中常见的快捷方式。
不是很明白?
跳转大佬的科普文,看完后,再通过练习感受一下吧!
练习
1、创建目录playground
2、在playground的目录下创建dir1、dir2
3、复制文件
从/etc目录复制passwd到当前目录,使用cp命令,再执行ls命令看到文件
qiyindeMacBook-Pro:playground qiyin$ cp /etc/passwd .
qiyindeMacBook-Pro:playground qiyin$ ls -l
total 16
drwxr-xr-x 2 qiyin staff 68 1 20 17:12 dir1
drwxr-xr-x 3 qiyin staff 102 1 20 17:12 dir2
-rw-r--r-- 1 qiyin staff 5925 1 22 23:08 passwd
注意 在命令末尾加个“ .”,就是将passwd复制快捷方式到当前目录
4、移动和重命名文件
将passwd重命名为fun,用到mv命令。将fun移动到dir1。再把fun从dir1移动到目录dir2,最后把fun文件带回到当前目录。
- tips:这里移动和重命名都是mv命令,所以在同一个文件夹下面,就执行重命名。在不同文件夹,并且那个文件夹没有的文件,就是移动。
qiyindeMacBook-Pro:playground qiyin$ mv passwd fun
qiyindeMacBook-Pro:playground qiyin$ mv fun dir1
qiyindeMacBook-Pro:playground qiyin$ mv dir1/fun dir2
qiyindeMacBook-Pro:playground qiyin$ mv dir2/fun .
qiyindeMacBook-Pro:playground qiyin$ ls
dir1 dir2 fun
5、创建硬链接
"ls -li"可以展示文件索引节点的信息,第一字段中,fun和fun-hard共享一样的索引节点号,证实这两个文件是一样的文件。
qiyindeMacBook-Pro:playground qiyin$ ln fun fun-hard
qiyindeMacBook-Pro:playground qiyin$ ln fun dir1/fun-hard
qiyindeMacBook-Pro:playground qiyin$ ln fun dir2/fun-hard
qiyindeMacBook-Pro:playground qiyin$ ls -li
total 32
9860853 drwxr-xr-x 3 qiyin staff 102 1 22 23:45 dir1
9860854 drwxr-xr-x 3 qiyin staff 102 1 22 23:46 dir2
9990311 -rw-r--r-- 4 qiyin staff 5925 1 22 23:08 fun-hard
9990311 -rw-r--r-- 4 qiyin staff 5925 1 22 23:08 fun
6、创建符号链接(软连接)
这里使用了相对路径,也可以使用绝对路径:
“ln -s /Users/qiyin/playground/fun dir1/fun-sym”
可以看到创建的符号链接中文件索引节点和原来的是不一样的。
qiyindeMacBook-Pro:playground qiyin$ ln -s ../fun dir/fun-sym
qiyindeMacBook-Pro:playground qiyin$ ln -s ../fun dir1/fun-sym
qiyindeMacBook-Pro:playground qiyin$ ln -s ../fun dir2/fun-sym
qiyindeMacBook-Pro:playground qiyin$ ls -l dir1
total 24
-rw-r--r-- 4 qiyin staff 5925 1 22 23:08 fun-hard
lrwxr-xr-x 1 qiyin staff 6 1 23 00:07 fun-sym -> ../fun
qiyindeMacBook-Pro:playground qiyin$ ls -li
total 40
9860853 drwxr-xr-x 4 qiyin staff 136 1 23 00:07 dir1
9860854 drwxr-xr-x 4 qiyin staff 136 1 23 00:07 dir2
9990311 -rw-r--r-- 4 qiyin staff 5925 1 22 23:08 fun-hard
9990311 -rw-r--r-- 4 qiyin staff 5925 1 22 23:08 fun
9993619 lrwxr-xr-x 1 qiyin staff 3 1 23 00:05 fun-sym -> fun