Linux命令——文件管理

目录

1. cd 命令

进入家目录

在两个目录之间切换

2. ls 命令

显示所有文件:

显示文件详细信息

文件大小单位显示

显示目录后缀

3. 创建删除文件

创建文件

删除文件

4. 创建删除目录/文件

创建单层目录

创建多层目录

删除目录

5. cp 命令

拷贝文件

拷贝目录

6. mv命令

文件的移动

文件改名

文件覆盖

7. 查看文件内容

cat 

more

less

head

tail

8. 链接的创建

软连接

硬链接

9. 文件属性

修改文件文件权限

修改文件所有者

修改文件所属组

10. 其他命令

tree

pwd

which

重定向命令


1. cd 命令

在Linux终端中如果想要进行工作路径的切换, 需要使用cd命令。在进行目录的切换的时候, 我们可以使用相对路径也可以使用绝对路径。

  • 进入家目录

 cd

 cd ~

 cd /home/用户名

每个用户都有一个属于自己的家目录,比如:

aa是一个普通用户,家目录为:/home/aa;

bb是一个普通用户,家目录为:/home/bb;

root是一个管理员用户,家目录为:/root

  • 在两个目录之间切换

cd -

2. ls 命令

ls 就是 list, 打印指定的文件信息, 如果是目录, 显示对应目录中有哪些子文件。

ls [args]                        # 查看当前目录
ls [args] 目录名            # 查看指定目录
ls [args] 文件名            # 查看某个文件的信息

如下图所示:

  • 显示所有文件:

 ls  -a              

ls添加 -a参数(就是 all 的意思)就可以显示指定目录中是所有文件了, 因为默认情况下具有隐藏属性的文件是不会显示出来的。那么在Linux中什么样是文件才能被隐藏呢?起始很简单只需要在文件名前边加一个点(.)文件就具有隐藏属性了, 例如: .a.txt 

如下图所示:

  • 显示文件详细信息

ls -l (可以简写为ll

ls添加 -l参数(就是 list 的意思)我们就可以看到文件的详细信息了, 里边的信息量还是非常大的, 其中包括: 文件类型,文件所有者对文件的操作权限, 文件所属组用户对文件的操作权限, 其他人对文件的操作权限, 硬链接计数, 文件所有者, 文件所属组, 文件大小, 文件的修改日期, 文件名

如下图所示:

  • 文件大小单位显示

在查看文件大小的时候, 如果文件比较大对应的数组自然也就很大, 我们还需要基于字节进行相关的换算, 不能直观得到我们想要的结果, 如果数学不好, 我们可以使用一个参数 -h

ls -lh

如下图所示:

  • 显示目录后缀

查看文件信息的时候, 除了通过文件类型区分该文件是不是一个目录之外, 还可以通过一个参数 -F在目录名后边显示一个/, 这样就可以直接区分出来了。

ls -lF

如下图所示:

3. 创建删除文件

  • 创建文件

使用touch命令可以创建一个新的空文件, 如果指定的文件是已存在的, 只会更新文件的修改日期, 对内容没有任何影响。

touch 文件名称

  • 删除文件

rm 文件名称

4. 创建删除目录/文件

  • 创建单层目录

mkdir 新目录名字

  • 创建多层目录

mkdir 新目录名字 -p

  • 删除目录

rmdir 目录名          (只能是空目录,不推荐)

rm 目录名 -r           (可以删除多层目录,需指定参数-r

5. cp 命令

cp 就是copy, 拷贝, 使用这个命令可以拷贝文件也可以拷贝目录

  • 拷贝文件

文件不存在得到新文件, 文件存在就覆盖

语法:cp  要拷贝的文件  得到的文件

  • 拷贝目录

目录不存在得到新目录, 存在则该目录被拷贝到存在的目录中

语法:cp  要拷贝的目录  得到的目录  -r (需要指定参数-r

6. mv命令

mv 就是move, 这个Linux命令既能移动文件所在目录也可以给文件改名

  • 文件的移动

mv  要移动的文件/目录  目录

  • 文件改名

mv  要改名的文件/目录  新名字(原来是不存在的,这点很重要)

  • 文件覆盖

mv  存在的文件A  存在的文件B 

7. 查看文件内容

如果想要查看文件内容方式有很多, 最常用的是vim, 下面介绍一下vim以外的一些的一些方式:

  • cat 

该命令可以将文件内容显示到终端, 由于终端是有缓存的, 因此能显示的字节数也是受限制的。 如果文件太大数据就不能完全显示出来了,因此该命令适合查看比较小的文件内容

cat  文件名

  • more

该命令比cat要高级一点, 我们可以以翻屏的方式查看文件中的内容,使用方式如下:

语法:more 文件名
快捷键如下:
回车: 显示下一行
空格: 向下滚动一屏
b: 返回上一屏
q: 退出more

  • less

该命令和more命令差不多, 我们可以以翻屏的方式查看文件中的内容,使用方式如下:

语法:less 文件名
快捷键如下:
b: 向上翻页
空格: 向后翻页
回车: 显示下一行
上下键: 上下滚动
q:退出

使用该命令可以查看文件头部的若干行信息, 使用方式如下:

head 文件名        (默认显示文件的前10行)
head -行数 文件名(指定显示头部的前多少行)

  • tail

使用该命令可以查看文件尾部的若干行信息, 使用方式如下:

tail 文件名        ( 默认显示文件的后10行)
tail -行数 文件名        (指定显示尾部的最后多少行)

8. 链接的创建

链接分两种类型: 软连接硬链接

软连接相当于windows中的快捷方式

硬链接计数是一个整数,如果这个数为N(N>=1),就说明在一个或者多个目录下一共有N个文件, 但是这N个文件并不占用多块磁盘空间, 他们使用的是同一块, 如果通过其中一个文件修改了磁盘数据, 那么其他文件中的内容也就变了。每当我们给给磁盘文件创建一个硬链接(使用 ln),磁盘上就会出现一个新的文件名,硬链接计数加1,但是这新文件并不占用任何的磁盘空间,文件名还是映射到原来的磁盘地址上。

  • 软连接

ln -s 源文件路径 软链接文件的名字(可以带路径)

如下图所示,采用相对路径建立软连接

示例是给app文件建立软连接app.lnk,建立软连接后app.lnk相当于app的快捷方式,所以运行结果和app都一样;但是把app.lnk移动到其它目录后再运行则会报错,如下图所示:

原因是建立软连接时采用的是相对路径,移动链接文件后找不到对应的源文件,所以解决方法是建立软链接时采用绝对路径,如下图所示,app.lnk2采用绝对路径建立软链接,移动到其它目录后人可正常运行。

总结:在创建软链接的时候, 命令中的源文件路径建议使用绝对路径, 这样才能保证创建出的软链接文件在任意目录中移动都可以访问到链接的那个源文件。

  • 硬链接

ln 源文件 硬链接文件的名字(可以带路径)

如下图所示,main.c建立硬链接m1后,硬链接计数由1变成2,两个文件内容相同,只是名称不同,改变其中一个文件内容,另外一个文件内容也会随之改变;

硬链接和软链接不同, 它是通话文件名直接找对应的硬盘地址, 而不是基于路径, 因此源文件使用相对路径即可, 无需为其制定绝对路径。

目录是不允许创建硬链接的。

9. 文件属性

文件属性相关的命令主要是修改用户对文件的操作权限, 文件所有者, 文件所属组的相关信息。

  • 修改文件文件权限

文件权限是针对文件所有者, 文件所属组用户, 其他人这三类人而言的, 对应的操作指令是chmod。设置方式也有两种,分别为文字设定法数字设定法

文字设定法是通过一些关键字r, w, x, -来描述用户对文件的操作权限。

数字设定法是通过一些数字 0, 1, 2, 34, 5, 6, 7 来描述用户对文件的操作权限。

  • 1、文字设定法

语法:chmod [u/g/o/a] [+/-/= ] [r/w/x/-] 文件名

解释:

参数1:u(user):文件所有者;

             g(group):文件所属组;

             o(other):其他人;

             a(all):以上三类人 u + g + o

参数2:+:添加权限

             -:去除权限

             =:权限覆盖

参数3:r(read):读

             w(write):写

             x(execute):执行

             -:没有权限

如下图所示,给hello文件的所有者用户添加可执行权限:

如下图所示,先把hello文件的文件所有者、所属组用户、其他人添加可写可执行权限,再去除所属组用户、其他人的可写可执行权限:

  • 2、数字设定法

语法:chmod [+/-/= ] [4/2/1/0] 文件名

解释:

参数1:+:添加权限

             -:去除权限

             =:权限覆盖

参数2:4:read 读

             2:write 写

             1:execute 执行

             0:没有权限

如下图所示,给hello文件的文件所属组用户添加可写、可执行权限,给其他人添加可执行权限:

如下图所示,去除hello文件的文件所有者可执行权限、文件所属组用户的可写可执行权限、其他人的可执行权限;

如下图所示,也可以直接通过设置数字(不写加减号),来修改文件权限:

  • 修改文件所有者

默认情况下, 文件是通过哪个用户创建出来的, 就属于哪个用户, 这个用户属于哪个组, 文件就属于哪个组。如果有特殊需求,可以修改文件所有者,对应的操作命令是chown。因为修改文件所有者就跨用户操作, 普通用户没有这个权限, 需要借助管理员权限才能完成该操作。

普通用户借助管理员权限执行某些shell命令, 需要在命令前加关键字sudo, 但是普通用户默认是没有使用 sudo的资格的, 需要修改 /etc/sudoers 文件 。

语法1:只修改所有者        sudo chown 新的所有者 文件名

语法2:同时修改所有者和所属组        sudo chown 新的所有者:新的组名 文件名

示例如下:

  • 修改文件所属组

普通用户没有修改文件所属组的权限, 如果需要修改需要借助管理员权限才能完成,需要使用的命令是chgrp。当然了这个属性的修改也可以使用chown命令来完成。

sudo chgrp 新的组 文件名

示例如下:

10. 其他命令

  • tree

该命令的作用是以树状结构显示目录, tree工具默认是没有的, 需要手动安装, 系统版本不同安装方式也不尽相同:

ubuntu:sudo apt install tree
centos:sudo yum install tree
如果是基于管理员用户安装软件,不需要加sudo。该命令有一个常用参数 -L, 即 (layer) 显示目录的层数。

tree [-L n]                    查看当前目录的结构, n为显示的目录层数
tree 目录名  [-L n]       查看指定目录的结构, n为显示的目录层数

  • pwd

pwd命令用户当前所在的工作目录, 没有参数, 直接执行该命令即可。

  • which

which命令可以查看要执行的命令所在的实际路径, 命令解析器工作的时候也会搜索这个目录。需要注意的是该命令只能查看非内建的shell指令所在的实际路径, 有些命令是直接写到内核中的, 无法查看

我们使用的大部分shell命令都是放在系统的/bin或者/usr/bin目录下:

如下图所示:

  • 重定向命令

关于重定向使用最多的是就是输出重定向, 顾名思义就是修改输出的数据的位置, 通过重定向操作我们可以非常方便的进行文件的复制, 或者文件内容的追加。输出重定向使用的不是某个关键字而是符号 >或者>>

>将文件内容写入到指定文件中, 如果文件中已有数据, 则会使用新数据覆盖原数据
>>将输出的内容追加到指定的文件尾部

示例如下:

echo命令默认把内容输出到终端,通过>>> 把内容写入到文件

date 命令是把日期写入文件

  • 26
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值