01 Linux操作系统

一、文件目录结构

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个文件。

  1. /etc/passwd:文件中每行定义一个用户账号,一行中又划分为多个字段,定义用户账号的不同属性。
  2. /etc/shadow:为了增加系统的安全行,将经过加密的用户口令保存在该文件里,它只对 root 用户可读且提供了一些口令时效字段。
  3. /etc/group:每个用户都属于一个组,一个组可以有多个用户,一个用户也可以有属于不同的组。组的所有属性都存放在该文件中。
  4. /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种字母来表示不同的用户(usergroupotherall),使用3种字符的组合表示法设置操作权限(readwriteexecute)

【示例】

[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种基本工作模式:编辑模式、输入模式和命令模式。
img

  • **编辑模式:**进入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

七、远程传输命令

scpsecure 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 常用的压缩与解压缩命令有:targzipzipunzip等。

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

猜你喜欢

转载自blog.csdn.net/BIN_2011464841/article/details/129110617