文章目录
6.1、Linux文件系统的架构
- Linux没有盘符的概念,即不存在所谓的C盘等。
- 已建立文件系统的硬盘分区被挂载到某个目录下,用户通过操作目录来实现磁盘读写。
- 如果某些目录没有特定的硬盘分区与其挂钩的话,该目录的所有有内容将存放在根分区中。
- Linux系统主要目录及其内容
目录 | 内容 |
---|---|
/bin | 构建最小系统所需要的命令(最常用的命令) |
/boot | 内核与启动文件 |
/dev | 各种设备文件 |
/etc | 系统软件的启动和配置文件 |
/home | 用户的主目录 |
/lib | C编译器的库 |
/media | 可移动介质的安装点 |
/opt | 可选的应用软件包(很少用) |
/proc | 进程的映像 |
/root | 超级用户root的主目录 |
/sbin | 和系统操作有关的命令 |
/tmp | 临时文件存放点 |
/usr | 非系统的程序和命令 |
/var | 系统专用的数据和配置文件 |
6.3、建立文件和目录
6.3.1、mkdir:建立目录
$ mkdir document picture ##在当前目录下新建document和picture两个目录
或者使用绝对路径新建
$ mkdir ~/picture/temp ##新建temp目录
注意:前提是picture已经存在!!!
- 如果要同时建立多级目录,可以用
$ mkdir -p ~/picture/temp ##新建picture目录,并在此目录中新建temp目录
6.3.2、touch:建立空文件或者更新文件建立时间
$ touch hello ##新建hello空文件
新建出来的文件类型是纯文本文档
$ touch txt ##更新txt的建立时间
6.4、移动、复制和删除
6.4.1、mv:移动和重命名
可以移动文件或者目录
$ mv hello bin/ ##把hello文件移动到bin目录下
$ mv picture/ Desktop/ ##把picture目录移动到桌面目录下
- 注意:如果移动文件时目标目录中用同名文件,则会将其覆盖。
$ mv -i hello bin/ ##把hello文件移动到bin目录下
mv:是否覆盖”bin/hello“?
-i
提供了发现同名文件的提示
-b
则会将目标目录里的同名文件名后加一个”~“,即将其重命名
- 如果要将某一文件重命名,只要使用
$ mv A B##将A文件重名为B
注意在目标目录下不能存在B,不然会覆盖
6.4.2、cp:复制文件和目录
$ cp txt test/##将txt文件复制到test目录下
- 在复制目录时,默认只会复制目标目录里面的内容。
如:
$ cp txt/ test/##将txt文件复制到test目录下
但是不会将txt/这个目录复制到test目录下面
如果要将目标目录一起复制到指定目录下,则需
$ cp -r txt/ test/##将txt文件复制到test目录下
6.4.3、rmdir和rm:删除目录和文件
remove
只能删除空目录,因此很少用到rm
既可以删除目录,也可以删除文件
$ rm test/*.php##删除test目录下所有php文件
$ rm -r Photos/##删除Photos目录包括里面所有的内容
- 注意:
rm
指令的移除是指永远地从系统中删除,不会出现在回收站中,小心使用
6.5、文件和目录的权限
文件和目录一共有3种权限:读取(r)、写入(w)、执行(x)。
6.5.4、 chown和chgrp:改变文件所有权
$ chown owner:group file ##将file的属主改为owner,将属组改为group
$ chown owner file ##省略属组
$ chown :group file ##省略属主
$ chown -R owner iso/ ##将iso目录及其所有内容的属主转为owner
chgrp
只能修改文件或者目录的属组
6.5.5、 chmod:改变文件权限
- 用户组包括了文件属主(u)、文件属组(g)、其他人(o)和所有人(a)。
- 权限包括了读取(r)、写入(w)和执行(x)。
$ chomod u+x days ##增加属主对文件days的执行权限
$ chomod a-x days ##删除所有人对文件days的执行权限
$ chomod ug=rw,o=r days ##设置属主和属组对文件days的读写权限,设置其他人的读取权限
$ chomod o=u days ##将其他人的权限设置为和属主一致
6.5.6、 文件权限的八进制表示
八进制 | 二进制 | 权限 |
---|---|---|
0 | 000 | — |
1 | 001 | –x |
2 | 010 | -w- |
3 | 011 | -wx |
4 | 100 | r– |
5 | 101 | r-x |
6 | 110 | rw- |
7 | 111 | rwx |
- 记忆时可以记住x代表1,w代表2,r代表4
例:rwx=4+2+1=7
rwxr-x–x代表751,指属主拥有读写执行全部权限。属组拥有读和执行的权限,而其他人只有读的权限
$ chown 751 prog ##用八进制设置文件权限
6.6、 文件类型
文件类型 | 符号 |
---|---|
普通文件 | - |
目录 | d |
字符设备文件 | c |
块设备文件 | b |
本地域套接口 | s |
有名管道 | p |
符文链接 | l |
6.6.2、ln:建立链接
建立的符号链接有点类似于超链接或者快捷方式
$ ln -s days mydays ##建立了一个mydays的符号链接文件指向days
访问mydays等于访问days,删除mydays对days无任何影响,删除days则mydays无意义
- 可以认为只是给目标文件起了一个别名
ln -s
还可以对目录进行符号链接 ln -s
是软连接(符号连接),ln
是硬连接,但是现在很少用
6.7、>、>>、 <、 << 、| :输入输出重定向和管道
6.7.1、输出重定向
- 重定向符号
>
用于将程序的输出转移到另一个地方去(一般默认输出是显示器)
$ ls > ~/ls_out ##将ls后获取的文件列表转移到ls_out文件中去
- 注意:如果ls_out不存在,那么会新建这个文件,如果存在,会把它的内容完全覆盖
如果要保留原本的内容,使用>>
符号来进行输出重定向6.7.2、输入重定向
- 重定向符号
<
用于将程序的输入从别的文件中读取(一般默认输入是键盘)
如:
$ cat < days ##读取days的每一行
实际效果和cat days
一样,所以输入重定向不常用
- 另一种输入重定向的例子叫做”立即文档“,操作符是
<<
。它指的是从键盘接受输入,并传递给程序。立即文档指定了一个代表输入结束的分隔符(需自己指定),当接收到此分隔符时表示输入结束
如:
$ cat < < END > days ##分隔符为END
> Hello
> Bye
> END
##上面是输入结束
$ cat days
Hello
Bye
这条指令首先让cat
从键盘获取输入,再将输出重定向到days文件
6.7.3、管道
- 管道符号
|
,将一条命令的输出连接到另一条命令的输入。
如 :
$ ls | grep ay ## ls先列出文件名列表,grep从中找到名字中含有ay的文件
##结果如下
days
my_days