目录
一、文件目录结构
1. 文件与目录
-
文件
日常使用操作系统的过程中,近一半以上的操作都是对于文件的操作。而文件通常根据存储的逻辑是放在文件夹中进行保存的
Linux操作系统本身是一个基于文件形式表示的操作系统。可以说 Linux中一切皆文件。
相对windows操作系统来说,在windows中无论是否是文件,在Linux下都是以文件形式存储的。
常使用操作系统时,通常对于文件的操作有:新建文件、编辑文件、保存文件、关闭文件、重命名文件、删除文件。
-
目录
linux系统中,目录相当于windows中的文件夹,文件是存放在目录中的,而目录的名称和结构则是用于定位指定文件存放位置的抽象概念。
Linux系统中,并不存在C/D/E/F等盘符,Linux系统中的一切文件都是从“根 /
”目录开始的,并按照文件系统层次化标准采用树形结构来存放文件
Linux系统中的文件和目录名称是严格区分大小写的。例如,root、rOOt、Root、rooT均代表不同的目录,并且文件名称中不得包含斜杠(/)
2. Linux系统结构
2.1 Linux文件存储结构:
linux中文件和目录被组织成一个单根倒置树结构 ,linux文件系统是从根目录下开始用“/”表示,以单根倒置树结构往下延伸。
linux目录的配置方法是根据FHS(Filesystem Hierarchy Standard)标准所制定,所以无论哪个版本的linux系统,都会有以下这些目录。
linux中的目录只是逻辑上的一种结构,并不是硬件上的分区结构。
- 根
/
目录的子目录
2.2 常用目录简介:
/bin:全称 binary,是存放可执行二进制文件的目录,如常用的命令 ls。
/dev:设备目录(类似windows中的分配盘符),所有的硬件设备及周边均放置在这个目录中,目录中的设备文件需要挂载才能使用。
/etc:各种配置文件目录,大部分配置属性均存放在这里,如环境变量配置文件。
/home:存放每个用户的设置文件(不包含root用户),用户桌面文件夹,用户的数据,子目录名称默认为用户名(类似Windows下的 User/用户目录)。
/proc:process,表示进程,该目录中存储的是当前运行的进程。
/root:系统管理员主目录,除root之外,其他的用户目录均放置在/home 目录下
/sbin:全称super binary,只有root才能运行的管理指令,跟bin类似,但只属于root管理员。如常用的关机命令halt
/tmp:存放临时文件目录,所有用户对该目录均可读写
/usr:应用程序放置目录。在这个目录下,存放用户自己安装的程序,比如像游戏和其他一些工具等等。 /usr目录包含了许多子目录: /usr/local目录用于存放程序;/usr/share用于存放一些共享的数据,比如音乐文件或者图标等 等,/usr/lib目录用于存放那些不能直接 运行的,但却是许多程序运行所必需的一些函数库文件
/var:该目录中存放系统或程序的日志文件。
/mnt:用户临时挂载其他的文件系统,额外的设备可临时挂载到这里。
2.3 文件类型
(1)Linux有四种基本文件系统类型 : 普通文件,目录文件, 连接文件和特殊文件。可用file命令来识别.
- 普通文件:如文本文件,程序语言源代码,shell脚本,二进制可执行文件等。可用cat,less,more,vi,emacs来查看内容以及用mv来改名。
- 目录文件:包括文件名,子目录名及其指针。它是Linux储存文件名的唯一地方,可用ls列出目录文件。
- 连接文件:是指向同一索引节点的那些目录条目,用ls来查看。 连接文件的标志用I开头,而文件后面以
->
指向所连接的文件。 - 特殊文件:Linux的一些设备如磁盘,终端,打印机等都在文件系统中表现出来,这一类文件就是特殊文件,常放在/dev目录中. 例如软驱A称为/dev/fd0。
(2)通过颜色也可以识别文件类型:
- 蓝色–>目录
- 绿色–>可执行文件
- 红色–>压缩文件
- 浅蓝色–>链接文件
- 灰色–>其他文件
3. 常见特殊文件、目录
.文件名
这种文件名以.
开头的文件是隐藏文件。必须使用命令ls -la
才可以看到。.
表示当前所在目录的简写。..
表示当前所在目录的父目录的简写。~
表示当前用户的家目录
二、文件路径
在Windows系统中我们有C盘和D盘,而在Linux中所有的路径只有相对和绝对路径。
1. 绝对路径
-
绝对路径简单的说就是从“/”目录开始到所需要到达的位置。
-
绝对路径是以正斜杠
/
开始,完整的文件的位置路径,可用于任何想指定一个文件名的时候
2. 相对路径
- 相对路径,就是目的位置相对与的当前位置的路径。
- 相对路径名是不以斜线开始,指定相对当前的工作目录位置,可以作为一个简短的形式指定一个文件名
三、Linux基本指令
Linux和windows相比,很多管控都需要用命令来操作。windows以直观的可视化的方式操作,特别适合在桌面端PC上操作执行相应的软件。
而Linux命令行方式的操作,特别是在服务器端编程、管理、运维方面,更加简单、短小、精悍。短短一行组合命令,即可完成在windows需要各种加工、整合的复杂高效的功能操作。
1. 使用指令注意事项
-
Linux操作系统中,在终端中输入的内容就是指令。
-
在Linux系统中,命令区分大小写。
-
在命令行中,可以使用
Tab
键来自动补齐命令和检测命令是否书写正确。 -
利用向上或向下的光标键,可以翻查曾经执行过的历史命令,并可以再次执行。
-
通过
man 命令名
查看帮助文档,通过history
查看历史记录 -
使用命令
hostname
查看主机名,通过hostnamectl set-hostname 新主机名
,修改主机名。
1.1 指令格式
一个完整的Linux指令格式为:
命令名 【选项】 【参数】 #选项可以有多个;参数可以有多个,也叫做操作对象。
2. 文件、目录指令
命令 | 说明 | 命令 | 说明 |
---|---|---|---|
mkdir [-p] 目录名 |
用于创建一个目录 | pwd |
用于显示用户当前所处的目录 |
rmdir [-p] 目录名 |
用于删除空目录 | cd [path] |
用来在不同的目录中进行切换 |
touch 文件名 |
用于建立空白文件 | ln [-s] [目录或文件] <连接名称> |
用来列出文件或目录信息 |
cp [-r] 源文件 目标文件 |
用于文件或目录的复制 | cat 文件名 |
用于滚屏显示文件内容 |
mv 源文件或目录 目标文件或目录 |
用于文件或目录的移动或改名 | more [+/-num] 文件名 |
用于分屏显示文件内容。 Enter (移动一行),Space (移动一页) Q (退出),+num是指从第几行开始分屏显示,-num是指向上滚动的行数 |
rm [-rf] 文件名或目录名 |
用于文件或目录的删除 | head [-n num] 文件名 |
用于显示文件的开头部分,默认显示前10行内容 |
grep [参数] [正则] [目录或文件] |
用于查找文件中包含有指定字符串的行 | tail [-n num] 文件名 |
用于显示文件的末尾部分,默认显示末尾10行内容 |
3. 用户和用户组命令
Linux 操作系统是多用户的操作系统,它允许多个用户同时登录到系统上,使用系统资源。
当多个用户同时使用系统时,为了使所有用户的工作都能顺利进行,保护每个用户的文件和进程,建立起一种秩序,使每个用户的权限都能得到规范。
命令 | 说明 | 命令 | 说明 |
---|---|---|---|
useradd <username> [-g 用户组] |
新建用户,[指定默认用户组] | groupadd <group> |
创建用户组 |
`passwd [-d | e | f | l |
userdel [-r] username |
删除用户账号 | gpasswd [-a] [username] [group] |
为组群添加用户 |
su [-] [username] |
切换用户身份 | sudo <命令名称> |
用于给普通用户提供额外的权限 |
usermod [-L|-U|-l] |
【说明】
Linux 下的账号系统文件主要有:/etc/passwd
、/etc/shadow
、/etc/group
、/etc/gshadow
4个文件。
/etc/passwd
:文件中每行定义一个用户账号,一行中又划分为多个字段,定义用户账号的不同属性。/etc/shadow
:为了增加系统的安全行,将经过加密的用户口令保存在该文件里,它只对root
用户可读且提供了一些口令时效字段。/etc/group
:每个用户都属于一个组,一个组可以有多个用户,一个用户也可以有属于不同的组。组的所有属性都存放在该文件中。/etc/gshadow
:用于定义用户组口令、组管理员等信息,该文件只有root
用户可以读取。
4. 其他常用命令
命令 | 说明 | 命令 | 说明 |
---|---|---|---|
ps [-au] |
用于查看系统的进程 | alias |
用于创建命令的别名 |
pidof [服务名称] |
用于查询某个指定服务进程的PID值 | wget |
用于在终端中下载网络文件 |
kill [-9] 进程id 进程id |
用于向进程发送强制终止信号 | who |
用于查看当前登入主机的用户终端信息 |
clear |
用于清除字符终端屏幕内容 | echo |
用于在终端输出字符串或变量提取后的值 |
reboot |
用于重新启动系统 | poweroff |
用于立即停止系统 |
四、文件权限管理
Linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录。同时,用户能够控制一个给定的文件或目录的访问程度。
一个文件或目录有读、写及执行 的权限。当创建一个文件时,系统会自动赋予文件所有者读和写的权限,这样可以允许所有者显示文件内容和修改文件。
存取访问Linux文件的用户分为3个类别:所有者、用户组或其他用户,且每类用户都具有读、写、执行的权限。
1. 读、写、执行权限说明
1.1 读权限
- 对于目录,读权限影响用户是否能够列出目录结构。
- 对于文件,读权限影响用户是否能够查看文件内容。
1.2 写权限
- 对于目录,写权限影响用户是否能够在目录下进行 “创建/删除/复制/移动” 文档的操作。
- 对于文件,写权限影响用户是否能够编辑文件内容。
1.3 执行权限
- 通常是对于文件来说的,特别是脚本文件。执行权限影响用户是否可以执行文件。
2. 用户类型说明
2.1 所有者(owner)
对于多用户系统来说,为了保护每个用户文件的隐私性,可以为创建的文件设置权限,比如密码手册,银行账号,私密照片等。那么创建这些私有文件的用户就是文件的所有者。Linux系统中那个用户创建的文件,该用户就默认为是该文件的所有者。
2.2 用户组(group)
多用户系统中,将多个用户按照某种需要划分为不同的组,比如多个团队在一台服务器上开发项目,可以根据团队进行分组。每个组中有多个用户,多个用户可以对属于改组的文件进行访问。
属于某个用户组的文件所有者可以对自己的文件设置私密访问权限,与所有者同一组的用户则不能访问该文件。
Linux系统中每个账户支持多个用户组。
2.3 其他用户(other)
用户组中没有包含的用户视为其他用户,是一个相对的类型。
2.4 Root用户(超级用户)
拥有最大的管理权限,管理所有的普通用户。
3. 修改文件权限
-
修改文件权限,使用
chmod
命令,语法格式为:chmod 选项 文件
, -
通常在权限修改时可以用两种方式来表示权限类型:数字表示法和文字表示法。
(1)数字表示法:将读取(r)
、写入(w)
和执行(x)
分别以数字4、2、1来表示,没有授予的部分就表示为0,然后再把所授予的权限相加而成
(2)**文字表示法:**系统用4种字母来表示不同的用户(user
、group
、other
、all
),使用3种字符的组合表示法设置操作权限(read
、write
、execute
)
【示例】
[root@node ~]# chmod 777 /etc/file
[root@node ~]# chmod u=rw,g=rw,o=r /etc/file
[root@node ~]# chmod u+x /etc/file
[root@node ~]# chmod a-x .bashrc
【符号说明】
=
设定权限
+
添加权限
-
移除权限
4. 修改文件属主和属组
-
修改文件属于哪个用户,使用
chown
命令,语法格式为:chown[选项] 用户名 文件列表
。 也可以使用该命令同时修改文件所属用户和所属组,语法格式为:chown[选项] 用户名:组名 文件列表
-
修改文件的用户组,使用chgrp命令,语法格式为:
chgrp [选项] 组名 文件列表
。 -
文件是以空格分开的要改变权限的文件列表,支持通配符。
【示例】
[root@node ~]# chown test file.txt
[root@node ~]# chown test:test file.txt /book
[root@node ~]# chown -R test2 file.txt /book
五、vi或vim编辑器
vim
是一个文本编辑器,它可以执行输出、删除、查找、替换、块操作等众多文本操作。vim是全屏幕文本编辑器,没有菜单,只有命令。在系统提示符后输入vim
和想要编辑(或建立)的文件名,便可进入vim
。
# 创建或编辑一个文件
[root@node ~]# vim myfile
# 打开文件并将光标置于最后一行
[root@node ~]# vim + myfile
# 打开非正常退出的文件,并恢复它
[root@node ~]# vim -r myfile
键入:q
,:q!
,:wq
或:x
(注意:
号),就会退出 vim
1. vim的工作模式
vim
有3种基本工作模式:编辑模式、输入模式和命令模式。
- **编辑模式:**进入
vim
之后,首先进入的就是编辑模式。进入编辑模式后,vim等待编辑命令输入而不是文本输入。 - 输入模式:在编辑模式下按下相应的键可以进入输入模式:
插入i
、附加a
、打开o
、修改c
、取代r
或替换s
都可以进入输入模式。在输入模式下,输入的任何字符都被vim
当作文件内容显示在屏幕上。在输入模式下,若想回到编辑模式下,按“Esc
”键即可。 - **命令模式:**在编辑模式下,用户按“
:
”键即可进入命令模式。命令执行完后,vim
自动回到编辑模式。
2. 查找与替换
查找与替换 | |
---|---|
/word ?word |
向下/向上寻找名称为word的字符串 |
n |
这个n是英文按键。代表重复前一个查找的动作。 |
N |
这个N是英文按键。与n刚好相反,为反向进行前一个查找动作。 |
:n1,n2 s/word1/word2/g |
在第n1~n2行寻找word1这个字符串,并将该字符串取代为word2!(常用) |
:1,$ s/word1/word2/g |
从第一行到最后一行寻找word1字符串,并将该字符串取代为word2(常用) |
:% s/word1/word2/gc |
全部替换,且在取代前显示提示字符给用户确认(confirm)是否需要取代(常用) |
3. 删除、复制与粘贴
删除、复制与粘贴 | |
---|---|
dd |
删除光标所在的那一整列 |
ndd |
n为数字。删除光标所在的向下n列,例如,20dd是删除20列 |
yy |
复制光标所在的那一行 |
nyy |
n为数字。复制光标处向下n行,例如20yy是复制20行(常用) |
p, P |
p为将已复制的数据在光标下一行粘贴上,P则为粘贴在光标上一行! |
ZZ |
这是大写的Z。若文件没有更改,则不储存离开;若文件已经被更动过,则储存后离开 |
u |
复原前一个动作(常用) |
. |
重复前一个动作的意思。如果你想要重复删除、重复粘贴等动作,按下小数点就可以 |
4. 其他使用快捷键
:e! |
恢复到文件打开后,没有进行修改时的状态 |
---|---|
:w [filename] |
将编辑的数据储存成另一个文件(类似另存为新文件) |
:n1,n2 w [filename] |
将n1到n2的内容储存成filename这个文件 |
:! command |
暂时退出vim到命令列模式下执行command的显示结果 |
:set nu |
显示行号,设定之后,会在每一行的前缀显示该行的行号 |
:set nonu |
与:set nu 相反,为取消行号 |
:noh |
取消搜索标注的高亮 |
:set fileformat=unix |
将window中文件格式转换为unix文件格式,主要是换行符不一样 |
六、输入输出重定向
重定向就是不使用系统的标准输入端口、标准输出端口或标准错误端口,而进行重新的指定,所以重定向分为输入重定向
、输出重定向
和错误重定向
。
通常情况下,重定向到一个文件。在shell中,要实现重定向主要依靠重定向符,即shell是检查命令行中有无重定向符来决定是否需要实施重定向。
重定向符 | 说 明 |
---|---|
< |
实现输入重定向。当需要的输入是在一个已存在的文件中时,就可以使用输入重定向 |
>或>> |
实现输出重定向。把一个命令的输出重定向到一个文件中,而不是显示在屏幕上 |
2>或2>> |
实现错误重定向。把一个命令执行的错误重定向到一个文件中,如果没有错误,则清空保存的文件 |
&> |
同时实现输出重定向和错误重定向 |
【示例】
# 将ls命令生成的/tmp目录的一个清单存到当前目录中的dir文件中
[root@node ~]# ls -l /tmp > dir
# 将ls命令生成的/etc目录的一个清单以追加的方式存到当前目录中的dir文件中
[root@node ~]# ls -l /etc >> dir
# passwd文件的内容作为wc命令的输入,计算文件的Byte数、字数和列数
[root@node ~]# wc < /etc/passwd
# 将命令myprogram的错误信息保存在当前目录下的err_file文件中
[root@node ~]# myprogram 2> err_file
# 将命令myprogram的输出信息和错误信息保存在当前目录下的output_file文件中
[root@node ~]# myprogram &> output_file
# /dev/null 空设备,丢弃从find或grep等命令送来的错误信息
[root@node ~]# grep delegate /etc/* 2>/dev/null
# 清空数据
cat /dev/null > err_file
七、远程传输命令
scp
(secure copy
)是一个基于SSH协议在网络之间进行安全传输的命令,其格式为“scp [-r] 本地文件 远程帐户@远程IP地址:远程目录
”。与前面讲解的cp命令不同,cp命令只能在本地硬盘中进行文件复制,而scp不仅能够通过网络传送数据,而且所有的数据都将进行加密处理。
【示例】
# 在node上,向远程主机 node2 传输文件
[root@node ~]# echo "Wecome to node" > scpTest.txt
[root@node ~]# scp ./scpTest.txt root@node2:/root
scpTest.txt
八、压缩与解压
Linux 常用的压缩与解压缩命令有:tar
、gzip
、 zip
、 unzip
等。
1. gzip命令
gzip
是个使用广泛的压缩程序,不能压缩目录。文件经它压缩过后,其名称后面会多出 .gz
的扩展名,gzip
通过压缩算法:Jempel-ziv
算法将文件压缩为较小文件,节省60%
以上的存储空间,以及网络传输率。
-
【语法格式】
gzip [选项] 源文件
-
选项说明:
-d 解开压缩文件
-l 列出压缩文件的相关信息
-r 递归处理,将指定目录下的所有文件及子目录一并处理
-v 显示指令执行过程
【示例】
# 对当前目录下的所有txt文件进行压缩
[root@cdhong test]# gzip -v *.txt
# 列出压缩文件的详细信息
[root@cdhong test]# gzip -l *.gz
compressed uncompressed ratio uncompressed_name
953 12288 92.5% aliases.txt
465 1063 59.0% passwd.txt
1418 13351 89.6% (totals)
# 解压所有.gz结尾的文件
[root@cdhong test]# gzip -d *.gz
aliases.txt.gz: 92.5% -- replaced with aliases.txt
passwd.txt.gz: 59.0% -- replaced with passwd.txt
# 递归压缩指定目录下的所有文件
[root@cdhong ~]# gzip test/
gzip: test/ is a directory -- ignored
[root@cdhong ~]# gzip -r test/
九、yum包管理器
命 令 | 作 用 |
---|---|
yum repolist all |
列出所有仓库 |
yum list all |
列出仓库中所有软件包 |
yum install 软件包名称 |
安装软件包 |
yum remove 软件包名称 |
移除软件包 |
yum clean all |
清除所有仓库缓存 |
yum info 软件包名称 |
查看软件包信息 |
【示例1】查询yum服务器是否有需要安装的软件:yum list | grep xx软件列表
#yum list | grep firefox
【示例2】安装指定的yum包:yum install XXX
#yum install vim
#yum list | grep vim
| 列出所有仓库 |
| yum list all
| 列出仓库中所有软件包 |
| yum install
软件包名称 | 安装软件包 |
| yum remove
软件包名称 | 移除软件包 |
| yum clean all
| 清除所有仓库缓存 |
| yum info
软件包名称 | 查看软件包信息 |
【示例1】查询yum服务器是否有需要安装的软件:yum list | grep xx软件列表
#yum list | grep firefox
【示例2】安装指定的yum包:yum install XXX
#yum install vim
#yum list | grep vim