ashu

V1

2022/04/09阅读:33主题:默认主题

常用的Linux文件及文件夹管理命令

主要学习常用的Linux文件及文件夹管理命令有

ls、cd、pwd、mkdir、touch、mv、rm、cp、tar、ln

Linux里最遥远的距离是:你在空格的前面,我在空格的后面

首先简单了解Linux文件结构

文件结构:在Linux中,一切皆文件

1.结构分析

生信技能树小郭老师的课件图图
生信技能树小郭老师的课件图图
  • /(根目录),相当于windows里我的电脑

  • **家目录~**:用户

  • .. :两个横点表示为上一层目录

  • 目录:文件夹

2.命令格式


命令 + 参数 + 文件

command [-options [parameter]] [FILE]


生息技能树小郭老师课件图
生息技能树小郭老师课件图

注意:命令,参数,文件三者之间一定要加空格,一个或是两个空格都可以。

(在Linux里面更多是处理文件,而R语言更多是处理变量。)

#接触命令时,可以查看帮助文档,如查看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 拷贝粘贴
tar ## Tape archive 压缩或者解压文件
ln ## LiNk 链接文件

4.常见命令及参数用法

以下主要介绍10个常用文件夹与文件管理命令

ls、cd、pwd、mkdir、touch、mv、rm、cp、tar、ln

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 /   ## 列出根目录下文件的详细信息

注意**/**的位置,如果放在后面可以省略,但是在前面表示根目录,在中间表示层级结构,不可省略。

 ls ./*txt
 ls *txt
 #两者显示的结果一样,
image-20220302160533891
image-20220302160533891
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 /
ll -h / 的结果
ll -h / 的结果

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## / 在这里表示的是层级分割符

pwd:Print Working Directory (打印工作目录)

这个命令用得少,打路径的时候留意命令行最后提示的路径

image-20220302165148361
image-20220302165148361
ls -lh /##查看根目录

补充知识3:经验与技巧


  • 小郭老师建议:多动手去敲键盘和代码,形成一个肌肉记忆

  • 文件夹管理或路径有关的符号:

.  当前目录##另一个含义,隐藏文件或是文件夹
.. 上一级目录
~  家目录:每个用户的家目录都不同
/  只有当 / 在路径的最前面时才是根目录, 其他位置的 / 都是目录层级分隔符
  • 常用快捷键:
Tab: 补全,多按几下 
Ctrl+C: 终止任务 ##如果打了一连串代码,出错,可以按Ctrl+C停止,就回到重新开始输入
Ctrl+L: 清屏
Ctrl+E: 回到行尾 
Ctrl+A: 回到行首 
Ctrl+Z: 暂停任务

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

touch: 新建文件

  • 常见参数:没有

  • 常见用法: touch file

注意:一般只创建纯文本文件

ls
touch  file.txt  new.txt
ls
touch  file{1..5}###可以一步到位创建5个文件
ls

mv:Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY(移动或者重命名)

  • 常见用法: rm [-option] filemv 待移动的文件 移动到哪个目录
#########移动文件夹和文件
####分别创建文本和文件
##只创建纯文本,用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语言里用冒号:**

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 /,无论发生什么事情,一定要冷静。

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

ln:Link链接,分软链接(常用)和硬链接(默认)。

拷贝文件或是文件夹,会占空间,用软链接,相当于复制快捷方式,不占空间。常用软连接,自己搜索用硬链接

软件链接一定要用绝对路径(从根目录出发)。

  • 常见参数:不加参数即为硬链接,加上 –s 参数即为软链接, 软链接的作用类似快捷方式,一般链接具体文件而不是文件夹。

  • 常见用法ln –s TARGET DIRECTORY

软链接文件不是文件夹的原因是,如果软链接文价夹是没有资格去操作别人的文件

./Data##表示当前目录下的Data。注意./(当前目录),/(根目录)
 ln -s Miniconda3-latest-Linux-x86_64.sh ./##初学者,先不要把./省略
ls -lh##如果软件链接过来的文件是蓝色,如果是红色,说明路径出问题
生信技能树小郭老师课件图
生信技能树小郭老师课件图

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和压缩文件
gzip压缩文件有无-k的区别
gzip压缩文件有无-k的区别

来自生信技能树小郭老师的总结:

  • 命令及参数汇总:
命令 全称 功能
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课程,以上内容和部分图片用的是小郭老师的课件和课件图。

分类:

后端

标签:

后端

作者介绍

ashu
V1