文件夹与文件管理命令(pwd, ls, cd, mkdir, touch,mv, rm, cp, tar, ln)
默认符号
快捷键
前四个要熟记于心
正则表达式
情景一:打开指定的文件夹并查看内容(查看已存在的)
cd:change the shell working directory
常见参数:没有
常见用法:cd [路径/目录]
cd .. ## 切换到上层目录,相对路径
cd ../.. ## 切换到上上层目录,相对路径
cd / ## 切换到根目录
cd /bin ## 切换到根目录下的bin,绝对路径
cd ~ ## 回到用户家目录
cd ## 同上,回到用户家目录
cd - ## 返回上一次的工作目录
举例:三种方式回到家目录
ls:List information about the FILEs
常见参数:
-a ## 列出全部的文件,连同隐藏文件也一起列出来 all
-l ## 列出目录的详细信息 long
-h ## 将目录容量转换为以人类易读的方式(例如GB, KB 等等) human
-S ## 以文件大小排序
-t ## 以时间排序
常见用法:ls [参数] [路径/目录/文件名]
ls ## 列出当前目录的文件
ls ./ ## 同上,‘.’号代表当前目录
ls ./*txt ## 列出当前目录下以txt 结尾的文件
ls ../ ## 列出上层目录的文件
ls -a ## 列出当前目录下的所有文件,包括隐藏文件
ls -l ## 列出当前目录下文件的详细信息
ll ## 等同ls -la ,自定义的别名
ls -lh ## 加上-h 参数,以K、M、G 的形式显示文件大小
ls -lh / ## 列出根目录下文件的详细信息
举例:ls -lh以易读的方式显示:
第一列是文件类型;第三列是所有者;第四列是属组
ls -lS 按大小排序
ls -lt 按时间排序
ll 显示所有详细信息;等于ls -l
ll -th 按时间和易读的方式列出所有文件详细信息(最常用)
自行组合实验:
课后练习:
情景二:新建一个文件夹, 在里面创建文件(创建不存在的文件)
mkdir:make directory(ies)
常见参数:-p/--parents,递归创建目录
常见用法:mkdir [-p] 目录名
新建一个文件夹不需要-p参数;新建嵌套文件夹需要-p参数。
命名规则
tree
touch:新建文件
常见参数:没有
常见用法:touch file
注:file之间不需要加任何符号
情景三:文件搬搬搬搬——移动、重命名、复制和删除
cp:copy and paste
常见参数:-r, copy directories recursively
常见用法:cp [OPTION] SOURCE DIRECTORY
rm:remove
常见参数:
-f ## force不显示警告讯息
-i ## 在删除会先询问用户(交互式删除),开始学习建议加这个参数。
-r ## 递归删除文件夹,删除文件夹一定要加-r
rm –rf /
常见用法:rm [-option] file
多点几次tab,会出现让你选择哪个文件的提示
练习:
碰到的问题,我想把file1-5移到test2文件夹,直接用了mv file* test2/这个命令,这是错的,因为file1-5是在test3文件夹里面,向上移动要从家目录开始设置路径才对:
正确如下:
再次体会,把file1-5移到test3文件夹:
要先cd到要移动的文件所在的文件夹,再去mv,mv路径要设置正确,mv后要cd到移动的位置,再查看是否移动成功。
情景四:创建软连接
为啥要用软连接?没必要浪费太多的电脑硬盘空间。
•跟cp有啥差别?cp不香吗?
ln:Link 链接,分软链接(常用)和硬链接(默认).
常见参数:不加参数即为硬链接,加上–s 参数即为软链接,
软链接的作用类似快捷方式
常见用法:ln –s TARGET DIRECTORY
举例:
一定要用绝对路径
情景五:压缩文件怎么处理呢?
tar:tape archive 压缩或者解压文件.
常见参数:
-c ## 创建一个新的tar归档文件(创建压缩文件)
-x ## 从已有tar归档文件中提取文件(解压缩)
-f ## 输出结果到文件或设备
-v ## 在处理文件时显示文件(显示处理进度)
-j ## 将输出重定向给bzip2命令
-z ## 将输出重定向给gzip命令
常见用法:
解压:tar [参数] [待解压包]
压缩:tar [参数] <压缩后文件名> [待压缩文件/目录]
gzip最为常用:
打包是指将一大堆文件或目录变成一个总的文件
压缩是将一个大的文件通过一些压缩算法变成一个小文件。
Linux 中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip、bzip2或zip命令)。
相当于把很多的衣服先塞进真空袋(打包),将真空袋抽真空减小体积(压缩)
文本查看、操作、统计命令(• head/tail,cat/tac,less/more • wc,sort,uniq • cut,paste)
情景一:文件看看看看看看
cat:小心刷屏
cat: concatenate 查看文本文件的内容,输出到屏幕
常见参数:-A ## 列出所有内容,包括特殊字符,如制表符;方便我们判断是空格还是tab
-n ## 打印出所有行号
-b ##仅打印非空白行行号
常见用法:
在屏幕上看到的叫做标准输出流,关掉之后即消失,如果想要保存关键的内容或者分析结果,比如后续转录组分析的结果,则需要重定向到一个文件,这样才可以保存下来。
输入ctrL+c才表示保存完成,类似于命令执行过才可以被翻到。
其他:
zcat:可以查看压缩的文本文件
tac:逆向查看
head / tail:查看文件的前/后n 行,默认10 行
常见参数:-n
重点:head常结合管道符|用于控制输出行数
命令1的输出
|
命令2的输入
eg: cat myfile | head -10
(不常用)more 文件名:逐页查看,按空格翻页,按回车换行,q退出
less (加强版的more): less [参数] 文件名
less进入了一个全新的空间,不会显示在标准输出流;而more会显示在标准输出流。
常用参数:
-N:显示行号
-S:单行显示
• 上下左右键查看文本内容
• Enter键向下移动一行
• 空格键翻页
• q键退出
在使用less时不要随意按动键盘噢;自行搜索“linux less”查看更多内容
自行查找设置xshell默认显示行数
zless:查看压缩文件
情景二:文件统计
wc:统计文本
常见参数:
-l 统计行数
-w 统计字符串数
-c 统计字节数
cut:文本切割
常见参数:
-d 指定分隔符,默认\t(tab);
-f 输出哪几列(字段fields),必须要有的参数,不然linux会罢工。
显示单列:
显示多列:
‘h’前是一列,h后是一列,取第一列
显示第二列前10行
3,2,1仍然是原来的顺序,没有倒着来
sort:排序
常见参数:
-n:按照数值从小到大进行排序
-V:字符串中含有数值时,按照数值从小到大排序
-r:逆向排序
-k:指定区域
-t:指定分隔符
字符串和数字按照从小到大排序时:
uniq:去除重复行,当做sort的跟屁虫即可。
常见参数:
-c:统计每个字符串连续出现的行数
只去除相邻的重复行!如下没有sort不相邻的重复行没有去掉:
对比先sort再uniq:
统计每个结果出现了多少次:
paste:文本合并
常见参数:
-d:指定分隔符
-s:按行合并
常见用法: 1. paste file1 file2
2. seq 20 | paste - -
tr:字符替换
常见参数:
-d:删除指定字符,举例如下。
不可以直接替换成空字符串,举例如下:
-s:缩减连续重复字符
空格‘ ’替换成‘’,举例如下:
空格‘ ’替换成‘\n’,即换行,举例如下,但替换多个**就不可以,即替换前后都要是一个字符:
练习题:
3:
(base) Mar23 08:51:58 ~/Data
$ cat example.gtf | cut -f 9 | cut -d ';' -f 1 | head
gene_id "ENSG00000223972"
gene_id "ENSG00000223972"
gene_id "ENSG00000223972"
gene_id "ENSG00000223972"
gene_id "ENSG00000223972"
gene_id "ENSG00000223972"
gene_id "ENSG00000223972"
gene_id "ENSG00000223972"
gene_id "ENSG00000223972"
gene_id "ENSG00000223972"
4:
(base) Mar23 08:53:20 ~/Data
$ cat example.gtf | cut -f 9 | cut -d ';' -f 1 | sort | uniq -c
8 gene_id "ENSG00000177693"
15 gene_id "ENSG00000184731"
3 gene_id "ENSG00000221311"
3 gene_id "ENSG00000222623"
19 gene_id "ENSG00000223972"
4 gene_id "ENSG00000227061"
83 gene_id "ENSG00000227232"
8 gene_id "ENSG00000233004"
3 gene_id "ENSG00000233750"
15 gene_id "ENSG00000237613"
12 gene_id "ENSG00000237683"
18 gene_id "ENSG00000238009"
12 gene_id "ENSG00000239368"
4 gene_id "ENSG00000239906"
4 gene_id "ENSG00000239945"
3 gene_id "ENSG00000240361"
3 gene_id "ENSG00000240786"
4 gene_id "ENSG00000241599"
8 gene_id "ENSG00000241860"
8 gene_id "ENSG00000243485"
5:
(base) Mar23 08:54:13 ~/Data
$ cat example.gtf | cut -f 9 | cut -d ';' -f 1 | sort | uniq -c | tr ' ' ':'
::::::8:gene_id:"ENSG00000177693"
:::::15:gene_id:"ENSG00000184731"
::::::3:gene_id:"ENSG00000221311"
::::::3:gene_id:"ENSG00000222623"
:::::19:gene_id:"ENSG00000223972"
::::::4:gene_id:"ENSG00000227061"
:::::83:gene_id:"ENSG00000227232"
::::::8:gene_id:"ENSG00000233004"
::::::3:gene_id:"ENSG00000233750"
:::::15:gene_id:"ENSG00000237613"
:::::12:gene_id:"ENSG00000237683"
:::::18:gene_id:"ENSG00000238009"
:::::12:gene_id:"ENSG00000239368"
::::::4:gene_id:"ENSG00000239906"
::::::4:gene_id:"ENSG00000239945"
::::::3:gene_id:"ENSG00000240361"
::::::3:gene_id:"ENSG00000240786"
::::::4:gene_id:"ENSG00000241599"
::::::8:gene_id:"ENSG00000241860"
::::::8:gene_id:"ENSG00000243485"