生信分析--主要学习常用的Linux文件及文件夹管理命令:
ls、cd、pwd、mkdir、touch、mv、rm、cp、tar、ln
Linux里最遥远的距离是:你在空格的前面,我在空格的后面
首先简单了解Linux文件结构
文件结构:在Linux中,一切皆文件
1.结构分析
/
(根目录),相当于windows里我的电脑家目录
~
:用户..
:两个横点表示为上一层目录目录:文件夹
2.命令格式
命令
+参数
+ 文件
command
[-options [parameter]]
[FILE]
注意:命令,参数,文件三者之间一定要加空格,一个或是两个空格都可以。
在Linux里面更多是处理文件,而R语言更多是处理变量。
(初学者请注意:以下代码框的一个#或是多个#号代表注释说明,不要把开头带有#的内容复制到Linux里运行)
#接触命令时,可以查看帮助文档,如查看ls命令
ls --help
3.常用的文件夹与文件管理命令
ls ## List 列出
pwd ## Print Working Directory 打印工作目录
cd ## Change Directory 切换目录
mkdir ## Make Directory建立一个新的目录
touch ## 创建文件
mv ## MoVe 移动和重命名
rm ## ReMove 删除
cp ## Copy and Paste 拷贝粘贴
ln ##Link链接文件(创建快捷方式)
tar ## Tape archive 压缩或者解压文件
4.常见命令结合参数用法示例
以下主要介绍10个常用的文件夹与文件管理命令:
ls、cd、pwd、mkdir、touch、mv、rm、cp、tar、ln
(1)ls: List information about the FILEs
- ls 常见参数
-a ## 列出全部的文件,连同隐藏文件也一起列出来
-h ## 将目录容量转换为以易读的方式(例如 GB, KB 等等)
-l ## 列出目录的详细信息
-S ## 以文件大小排序
-t ## 以时间排序
-R ## 递归目录列出文件
-d ## 显示目录本身,而非目录下文件
- ls常见用法: [参数] [路径/目录/文件名]
ls ## 列出当前目录的文件
ls ./ ## 同上,‘.’号代表当前目录,
ls ./*txt ## 列出当前目录下以 txt 结尾的文件
ls ../ ## 列出上层目录的文件
ls -a ## 列出当前目录下的所有文件,包括隐藏文件
ls -l ## 列出当前目录下文件的详细信息(不方便读取)
ll ## 等同ls -la ,自定义的别名
ls -lh ## 加上 -h 参数,以 K、M、G 的形式显示文件大小(可读信息)
ls -lh / ## 列出根目录下文件的详细信息
注意/的位置,如果放在后面可以省略(如cd Data 和 cd Data/, 输出的结果一样),但是在前面表示根目录、在中间表示层级结构,不可省略。
ls ./*txt
ls *txt
#两者显示的结果一样
ls -lh
ls -lha##a参数显示的都是以.开头隐藏文件
##ls -lha与ll的功能一样
ls -lhS#大S参数就是排序
ls -lht##按时间进行排序
隐藏文件的作用:与系统设置的文件有关,一般很少去操作和修改,把那些关键文件隐藏起来,避免被随意修改。
补充知识1:文件权限
所属人所属组其他人
-rwx------:有10个字符,第一个不用管,后面9个,每三个为一个单位,比如第一个的单位rwx,r:可读,w:可写,x:可执行。
权限用数字来表示:
可读可写可执行:4+2+1=7,如果结果为2,表示可修改,一般很少见。
常见的权限(属性)有:7,6,5,2
ll -h /
(2)cd:Change the shell working directory(切换工作目录)
cd常见参数:没有
常见用法: cd [路径/目录]
cd .. ## 切换到上层目录,相对路径
cd / ## 切换到根目录
cd /teach/ ## 切换到根目录下的teach,绝对路径
cd - ## 返回上一次的工作目录
cd ~ ## 回到用户家目录
cd ## 同上,回到用户家目录
无论cd到哪里,最后都要回到自己的家目录,在自己的家目录操作完成,在其它目录是没有修改权限。
ls
cd ../
ls
cd /
ls
cd ##就回到自己的家目录
补充知识2:绝对路径和相对路径
绝对路径:从根目录开始引起的全路径 相对路径:就是相对于当前工作目录的路径
/trainee2/vip29 ## / 在这里表示的是层级分割符
(3)pwd:Print Working Directory (打印工作目录)
这个命令用得少,打路径的时候留意命令行最后提示的路径
ls -lh / ##查看根目录
补充知识3:经验与技巧
小郭老师建议:多动手去敲键盘和代码,形成一个肌肉记忆
文件夹管理或路径有关的符号:
.
当前目录##另一个含义,隐藏文件或是文件夹
..
上一级目录
~
家目录:每个用户的家目录都不同
/
只有当 / 在路径的最前面时才是根目录, 其他位置的 / 都是目录层级分隔符
- 常用快捷键:
Tab: 补全,多按几下
Ctrl+C: 终止任务 ##如果打了一连串代码,出错,可以按Ctrl+C停止,就回到重新开始输入
Ctrl+L: 清屏
Ctrl+E: 回到行尾
Ctrl+A: 回到行首
Ctrl+Z: 暂停任务
(4)mkdir: Create the DIRECTORY(ies)
常见参数: -p/--parents,递归创建目录
常见用法: mkdir [-p] 目录名
用mkdir命令创建目录和递归文件,操作步骤和结果如下:
### 创建目录(文件夹):dir0
#先用ls查看“家目录”都有什么文件,省得重名
ls
#想在test1里操作,查看test1里有什么文件
ls test1/
#切换到test1目录里
cd test1/
#创建dir0目录
mkdir dir0
#查看创建是否成功,如果成功,就会出现:dir0
### 创建递归文件夹,dir1/dir2,即dir2在dir1里面
mkdir dir1/dir2
##创建失败,因为没有加-p参数
mkdir -p dir1/dir2
#用tree一步到位查看层级结构,之所以在test1操作,因为我操作的家目录有很多层级文件,会刷屏
tree
可以用mkdir命令同时创建多个文件夹或是批量创建文件夹
##创建多个文件夹,文件夹之间没有 / 不属于递归文件夹,所以不加-p参数
mkdir dir0 dir2 dir3,
ls
##批量创建文件夹
mkdir happy{1..5}
ls
(5)touch: 新建文件
常见参数:没有
常见用法: touch file
注意:一般只创建纯文本文件
ls
touch file.txt new.txt
ls
touch file{1..5}###可以一步到位创建5个文件
ls
(6)mv:Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY(移动或者重命名)
- 常见用法: rm [-option] file :mv 待移动的文件 移动到哪个目录
#########移动文件夹和文件
####分别创建文本和文件
##只创建纯文本,用touch命令
touch file
##查看创建文件的大小和时间
ls -lh
##创建递归文件夹一定要加-p参数
mkdir -p test1/test2
mkdir dir0
##注意如果文件很多,建议在一个文件夹(目录)下运行,防止运行命令tree时,因层级文件夹多导致刷屏。
tree
####移动“文件”的操作
#把file移动到test1/test2/目录下
mv file test1/test2/
tree
#把file文本移到dir0文件夹里
mv test1/test2/file dir0
ls
tree
##批量移动文件
## file*是把所有的file都移到test2/tes3/目录下,一定要tab键补全,就不会漏掉:/
mv file* test2/tes3/
####移动“文件夹”的操作
##把文件夹dir0移动到test1文件夹里
mv dir0 test1
ls
cd test1/
ls
#用tree命令就不用切换到test1/里查看
########重命名
##切换到dir0文件夹里操作
cd dir0/
ls
##重命名,把file命名为file1
mv file file1
ls
######小细节:
##切换到上一级目录用cd .. ,cd和..之间要有空格
##在哪个文件夹(目录)下操作,加/和不加/,如cd test1/ ,cd test1 一样
注意:touch{1..5},在Linux里创建多个文件,从开始到结尾用连续两横点 .., 在R语言里用冒号:
(7)rm:Remove
- 常见参数,
-f ## force不显示警告讯息
-i ## 在删除会先询问用户 ,交互式对话
-r ## 递归删除文件夹
- 常见用法:rm [-option] file
rm -i file.txt
ls file*
rm file*#删除所有匹配file的文件
rm -r test1 #删除文件夹
rm -r Document/##rm -f Document##就不行
rm -rf / ##管理员的权限(程序员的梗,删库跑路)
rm -ri test1##交互式删除,有i参数,删除时会问,输入y就可以
##程序员的梗,删库跑路:
rm –rf /
#是强制性删除根目录的所有文件,把服务器格式化了,不是管理员是没有权限,如果删除可能恢复不了
rm -rf ~
#强制删除家目录的所有文件,作死的操作
注意:使用rm命令删除后,不能恢复,但是有恢复的方法,不过不一定能全恢复,也不是每次都能幸运恢复。
如果你是管理员,不要轻易尝试命令:rm –rf /,无论发生什么事情,一定要冷静。
(8)cp:Copy and Paste
- 常见参数: -r, copy directories recursively
-r:递归复制,删除时也要加上-r
- 常见用法:cp[OPTION] SOURCE DIRECTORY
cp readme.txt Data/
mkdir dir0
cp -r dir0 Data/
cp readme.txt test1/readme##把readme.txt拷贝到文件夹test1里并且重命名为readme
##在linux输入一个文件夹:先ls,输入文件夹的名字用tab键补全/
###练习题:
cp ~/.bashrc ~/Data/bashrc_bk ##把隐藏文件.bashrc拷贝到家目录的Data/目录下,并且重命名为bashrc_bk ,其实就是备份
###记住:文件名前面有.表示隐藏,如.bashrc,.conda
(9)ln:Link链接,分软链接(常用)和硬链接(默认)。
拷贝文件或是文件夹,会占空间,用软链接,相当于复制快捷方式,不占空间。常用软连接,自己搜索用硬链接
软件链接一定要用绝对路径(从根目录出发)。
常见参数:不加参数即为硬链接,加上 –s 参数即为软链接, 软链接的作用类似快捷方式,一般链接具体文件而不是文件夹。
常见用法:ln –s TARGET DIRECTORY
软链接文件不是文件夹的原因是,如果软链接文价夹是没有资格去操作别人的文件
./Data##表示当前目录下的Data。注意./(当前目录),/(根目录)
ln -s Miniconda3-latest-Linux-x86_64.sh ./##初学者,先不要把./省略
ls -lh##如果软件链接过来的文件是蓝色,如果是红色,说明路径出问题
(10)tar:Tape archive(压缩或者解压文件)
- 常见参数:
-c ## 创建一个新的tar归档文件(创建压缩文件)
-x ## 从已有tar归档文件中提取文件(解压缩)
-f ## 输出结果到文件或设备
-v ## 在处理文件时显示文件(显示处理进度)
-j ## 将输出重定向给bzip2命令
-z ## 将输出重定向给gzip命令
- 常见用法:
解压:tar [参数] [待解压包] 压缩:tar [参数] <压缩后文件名> [待压缩文件/目录]
## 解压
tar -zxvf Data.tar.gz
## 压缩
tar -zcvf Data.tar.gz Data ...
解压参数及例子:
tar -zxvf Data.tar.gz
-x ## 从已有tar归档文件中提取文件(解压缩)
-f ## 输出结果到文件或设备
-v ## 在处理文件时显示文件(显示处理进度) ##该参数可以不用
-z ## 将输出重定向给gzip命令##注意看是什么后缀类型的文件,用z还是j
压缩参数及例子:
tar -zcvf Data.tar.gz Data ...
-c ## 创建一个新的tar归档文件(创建压缩文件)
-f ## 输出结果到文件或设备
-v ## 在处理文件时显示文件(显示处理进度)
-z ## 将输出重定向给gzip命令
其他压缩和解压命令:
zip 和 unzip :用于压缩和解压 *zip 文件
压缩:zip readme.txt.zip readme.txt ##把readme.txt压缩,且命名为readme.txt.zip
解压:unzip readme.txt.zip
gzip 和 gunzip :用于压缩和解压 *gz 文件
压缩: gzip readme.txt
解压:gunzip readme.txt.gz
bzip2 和 bunzip2 :用于压缩和解压 *bz2 文件
压缩: bzip2 readme.txt
解压:bzip2 -d readme.txt.bz2
要区分开zip ,gz ,bz2 一个文件一个包,tar.gz里面就有很多文件
tar -zcvf test.tar.gz Data readme.txt##把Data 和 readme.txt都打包到test.tar.gz里面
gzip和zip是把单独的一个文件压缩,原文件会被单独删除掉,但是通过-k参数控制,原文件会保留,如下:
#创建一个Document目录,在改目录下演示,到时候方便我删除。
mkdir Document
#创建两个文件
touch Introduction.txt
touch readme.txt
gzip Introduction.txt
ls##压缩成功后,生成introduction.txt.gz压缩包,introduction.txt文件消失
gzip --help##查看帮助文档,-k是不删除原始文件
gzip -k readme.txt
ls##看到原文件readme.txt和压缩文件
来自生信技能树小郭老师的总结:
- 命令及参数汇总:
命令 | 全称 | 功能 |
---|---|---|
ls | list | 列出指定路径下信息 |
cd | change directory |
切换目录 |
mkdir | make directory |
新建目录 |
touch | 新建文本 | |
mv | move | 移动或者重命名文件或目录 |
cp | copy and paste |
复制文件或目录 |
rm | remove | 删除文件或目录 |
tar | tape archive | 压缩****&解压文件 |
ln | link | 链接文件 |
- 小技巧
ls 命令: 每天要敲一百次
Tab 键 :每天要按一百次
参数: 不用死记硬背,用多了自然记得,用得少的需要 用的时候再查一下帮助文档,如下:
mkdir --help
zip --help
mv --help
文件名: 不要用中文字符和空格,用下划线或点号代替
选中: 鼠标连续双击选中一个单词,连续三击选中一行
- 其它知识:
纯文本文件,如txt文本,可以改后缀名,里面的内容不变,windows有识别后缀名名的机制,可以用默认的阅读器打开。或是在打开方式,或是属性里设置默认打开方式。
二进制文件,如excel,word文件,不能随便修改文件名,修改后,里面的内容会乱码。
说明:
正在生信技能树上学习小郭老师的Linux课程,以上内容和部分图片用的是小郭老师的课件和课件图。