Linux系统的基本知识点和基本操作
一、Linux系统简介
Linux是一套免费使用和自由传播的操作系统内核,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统内核。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统内核。
特点:
开放性:特别是遵循开放系统互连(OSI)国际标准。
多用户:操作系统资源可以被不同用户使用,每个用户对自己的资源(例如:文件、设备)有特定的权限,互不影响。
多任务:计算机同时执行多个程序,而同时各个程序的运行互相独立。
二、Unix和Linux和Ubuntu的关系
Ubuntu是我们常说的乌班图;
Unix是内核,Linux是在Unix发展基础上的操纵系统,Ubuntu是在Linux操作系统中的具体一个。
Ubuntu和Linux的关系,相当于wiindow10和window操作系统的关系。
可以打个比方:Unix是爷爷,那么Linux就是爸爸,而Ubuntu就是众多儿子中的一个。
三、Linux系统下的目录—— / 下的目录介绍,/ etc下的文件的作用
1、/ 下的目录介绍
- bin 目录:是部分系统可执行文件目录
- usr 目录:全称是unix system resources,是操作系统的文件。 /usr/local 相当于c:/program files
- var 目录:是可变文件目录。 里面包括了用户信息, apache的www目录
注意:~ 用户家目录
/ 系统根目录
2、/ etc下的文件的作用
etc 目录:配置文件目录
- 查看文件内容的使用:cat 文件路径
- 查看文件内容的使用:more 文件路径
目录介绍:
/etc/passwd 用户信息
这些用户中的绝大多数是系统或服务正常运行所必需的用户,我们把这种用户称为系统用户或伪用户。系统用户是不能登录系统的,但是这些用户同样也不能被删除,因为一旦删除,依赖这些用户运行的服务或程序就不能正常执行,会导致系统问题。
用":"作为分隔符,划分为 7 个字段:
root❌0:0:root:/root:/bin/bash
用户名称:密码标志:用户 ID(UID):用户的组 ID(GID):用户的简单说明:用户的家目录:登录之后的Shell。
系统是通过 UID 来识别不同的用户和分配用户权限的,0:超级用户 UID,1~499:系统用户(伪用户)UID。
/etc/shadow 密码信息
1970-01-01 00:00:00 是格林威治时间;
时间戳 当前时间到格林威治时间的秒数;
划分为 9 个字段:
root:
6
6
6KoTdD9KR$4Z7gieoQ9hU.8RlcuIqrWscLoB2q2JjqJRtY0H8dYYzgHpr.plqmYtEiKgwQQd2qIS9qyS1ZOLj2FTFqhsCYM/:18337:0:99999:7:::
用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段。
使用date -d "1970-01-01 18337 days"命令可以查看最后一次修改时间
Mon Mar 16 00:00:00 CST 2020
密码有效期 99999,也就是 223 年,可认为是永久生效。
/etc/group 组信息
分为 4 个字段
root❌0:
组名:密码:GID:该用户组中的用户列表
如果该用户组是这个用户的初始组,则该用户不会写入这个字段,第四个字段没有写入 root 用户,因为 root 组是 root 用户的初始组。
/etc/gshadow 组密码信息
root:*::
组名:加密密码:组管理员:组附加用户列表。
/etc/sudoers
写在sudoers文件内的用户可以临时使用sudo提升为管理员权限。
root是大老板 临时使用大老板的权利,得到大老板的承认。sudoers
/etc/profile 核心配置
/etc/skel
创建了新用户之后,复制的家文件
opt 安装软件目录 第三方安装包
解压即安装的软件 jdk
home 用户家目录 /home/ubuntu
root 超级用户家目录
四、用户功能的操作
1. 添加用户
·adduser 用户名
例如:$ adduser briup
查看 /etc/passwd
查看 /etc/group
2. 切换用户
·su 是切换到超级管理员身份
su 用户名 :切换到用户,注意:从root切换到其它用户不需要输入密码
从其它用户切换到其它的用户需要输入密码
whoami 当前用户
su - :彻底切换,切换家目录,切换环境变量;
直接切换到用户的家目录下;
每一个用户都有一个家目录;
有用户变量。
五、Linux系统的基础命令
1. pwd 查看当前所在路径。
2. cd 进入到某一路径或者文件夹里面。
空 ~ :进入到家目录。
相对路径——cd 不以 / 开始的。例如:./ …/…
绝对路径——cd 以 / 开始的。 例如:/开始
3. ls 查看当前路径下的命令或者文件
ls 路径 查看指定路径下的文件目录或者文件
-a 查看所有文件和隐藏文件
-A 查看所有文件和隐藏文件,除了.和…
-l 长格式列出所有的文件和目录
-rw-r--r-- 1 root root 11321 Mar 16 14:20 index.html
第一个字段:文件属性字段。
文件属性字段总共有10个字母组成;第一个字符代表文件的类型。
字母“-”表示该文件是一个普通文件。
字母“d”表示该文件是一个目录,字母"d",是dirtectory(目录)的缩写 。
注意:目录或者是特殊文件,这个特殊文件存放其他文件或目录的相关信息 。
字母“l”表示该文件是一个链接文件。字母"l"是link(链接)的缩写,类似于windows下的快捷方式。
字母“b”的表示块设备文件(block),一般置于/dev目录下,设备文件是普通文件和程序访问硬件设备的入口,是很特殊的文件。没有文件大小,只有一个主设备号和一个辅设备号。一次传输数据为一整块的被称为块设备,如硬盘、光盘等。最小数据传输单位为一个数据块(通常一个数据块的大小为512字节)。
字母为“c”表示该文件是一个字符设备文件(character),一般置于/dev目录下,一次传输一个字节的设备被称为字符设备,如键盘、字符终端等,传输数据的最小单位为一个字节。
字母为“p”表示该文件为命令管道文件。与shell编程有关的文件。
字母“s”表示该文件为sock文件。与shell编程有关的文件。
第1字符的后面9个字母表示该文件或目录的权限位。
r表是读 (Read) 、w表示写 (Write) 、x表示执行 (eXecute)
其中前三个表示文件拥有者的权限,中间三个表示文件所属组拥有的权限,最后三个表示其他用户拥有的权限。
第二字段:链接占用的节点。
第三字段:文件(目录)拥有者 。
第四字段:文件(目录)拥有者所在的组。
第五字段:表示文件大小。
第六字段:文件(目录)最近访问(修改)时间。
第七字段:文件名。
4. cat 预览文件内容。 用法:cat 文件路径。
5. more 预览文件内容——空格翻页,回车换行,q退出。
6. touch 可以创建文件或者更改最近访问的时间
如果文件不存在,创建文件;如果文件存在,修改最后一次访问的时间。
用法:touch 文件名
7. man 帮助手册——可以帮助查看最近不会使用的命令,当然了是英文版的。
例如:man ls
8. sudo 临时提升权限
如果没有使用sudo的权限,需要root用户操作 / etc / sudoers文件,添加用户。
sudo ! ! 执行上次命令。
9. mkdir 创建目录
六、文件的权限
1. 用户角色
user 文件拥有者 u
由于Linux是个多人多任务的系统,因此可能常常会有多人同时使用这部主机来进行工作的情况发生, 为了考虑每个人的隐私权以及每个人喜好的工作环境,因此,这个【文件拥有者】的角色就显的相当的重要了!可以为文件设定不同的权限,来限制其他人的访问。
group 同组人 g
团队开发时,可以设置团队成员的访问权限。
other 其他人 o
其他访问者。
2. 文件权限
read 读 r 4
write 写 w 2
execute 执行 x 1
3. 修改用户权限
1)chmod g+w index.html
为index.html添加同组人权限
2) chmod 777 index.html
用8进制设定
rwx rwx rwx
111 111 111
7 7 7
4. vim分屏使用
:split 横向分屏
:sp 横向分屏
:vsplit 纵向分屏
:vs 纵向分屏
以上4个后都可以跟文件的路径
Ctrl + ww 在不同的分屏中切换光标
:close 关闭当前分屏
:only 关闭除光标所在的窗口之外的其它窗口
注意:在vim中如果不小心按了ctrl+z,会挂起文件,文件一直在后台处于编辑状态,在目录中有一个.swp文件,将该文件删了即可。
七、vi命令操作和使用,试着使用vim编写hello.html页面
1、介绍:vim是vi的升级版,linux的主要文本编辑,类似于window的记事本。
vim是可以安装插件的。
2、三种模式
(1)输入模式
输入模式进入命令模式,使用esc
输入模式进入底行模式,使用esc进入到命令模式之后,使用:进入底行模式
(2)命令模式
命令:
yy 复制一行
3yy 复制3行
p 在光标所在位置的下一行粘贴
dd 删除光标所在行
5dd 删除5行
u 撤销
…
命令模式进入输入模式,使用i,a,o,I,A,O
i在光标前插入文本
I在光标所在行前插入
a在光标后插入文本
A在光标所在行末插入
o在光标所在行下插入新行
O在光标所在行上插入新行
命令模式进入底行模式,使用: / ?
(3)底行模式
底行模式进入命令模式,使用两次esc。
底行模式进入输入模式,先使用两次esc,进入命令模式,然后再使用i,a,o,I,A,O进入输入模式。
使用英文冒号进入模式。
:set nu 显示行号
:set nonu 不显示行号
:wq 保存并退出
:w 保存不退出
:q 不保存,直接退出
:q! 强制退出
注意:命令模式下ZZ也是保存并退出
配置当前用户vi永久显示行号和tab键的空格数
vi ~/.vimrc
set nu
set tabstop=2
Hello.html
八、Linux系统命令的扩展
1. 端口操作
查看端口占用情况
netstat -ano
通过端口号找进程ID
lsof -i:端口号
比如: lsof -i:8899
2. 进程命令
查看全格式的全部进程:
ps -ef
查看apache进程:
ps -ef | grep httpd
查看mysql进程:
ps -ef | grep mysqld
结果:
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 09:19 ? 00:00:01 /sbin/init
含义如下:
UID 进程拥有者
PID 进程ID
PPID 父进程ID
C CPU使用的资源百分比
STIME 进程开始时间
TTY 登入者的终端机位置
TIME 执行时间
CMD 操作命令
3. 杀掉进程
kill -9 pid
4. history命令
所有历史命令
!! 执行上一条命令
!20 执行20行的命令
5. 重定向
>
将>前命令的输出作为输入导入到>后文件或命令中(会覆盖原来内容)。
cat a.txt > aa.txt
>>
将>> 前命令的输出作为输入导入到>后文件或命令中(追加到原来内容后)。
cat a.txt >> aa.txt
more index.html > a.txt
日期:
date
在控制台显示当前时间
date > a.txt
将内容输出到a.txt,覆盖原先内容
date >> a.txt
将内容追加到a.txt
6. 文件操作
创建:
mkdir 目录名
在当前目录创建一个目录
mkdir 目录名 目录名
在当前目录创建多个目录
mkdir a b
mkdir ~/a ~/b
mkdir -p 目录名
需要时创建上层目录
~
test目录 a目录
mkdir ~/b/c
mkdir -p ~/b/c
移动:
mv 要移动的目录或文件 移动到的路径
将一个目录或文件移动到另一个地方
如果是移动到同一个目录,相当于重命名
mv day04 day05
mv ~/test/index.html /var/www/html/test/
复制/拷贝:
cp 要复制的目录 复制到的目录
cp -R 要复制的目录 复制到的目录
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
-d:复制时保留链接。这里所 说的链接相当于Windows系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成链接文件。
删除:
rmdir 目录
删除一个空目录
rm 文件
删除文件
rm -R 目录
递归删除非空目录中的内容
查找:
find / -name ‘*.txt’ 在根目录下查找.txt文件。
压缩文件:
tar –zcvf xxx.tar.gz /home/briup/day02
将day02文件夹压缩到当前目录下,压缩包名称为xxx.tar.gz
解压缩:
tar -zxvf xxx.tar.gz
7. 用户相关的功能
whoami 查看当前用户
添加用户:
adduser 用户名
$ adduser user1
查看/etc/passwd
查看/etc/group
添加组:
addgroup 组名
新建用户指定组:
adduser --gid 1000 user2
查看user2的家目录中是否与/etc/skel中的一样。
更改用户到某个组:
usermod 修改用户信息:
usermod -g 1002 user1
usermod --gid 1002 user1
创建了user3用户,属于user3组。
修改user3用户属于user1组(1000)
老师用
usermod --gid 1000 user3
大家用
usermod --gid 1001 user3
删除空余的组:
groupdel user1
groupdel user2
在/etc/group查看
删除组,如果某个账号使用该群组,则不能删除。
更改密码:
root用户更改其他用户的密码
passwd user1
更改自己的密码
passwd
root更改密码没有规则限制,并且不用输入旧密码。
普通用户修改自己的密码,先输入旧密码,再输入新密码,在确认密码,新密码有规则限制。
切换用户:
su
切换用户,不切换shell环境。读取的变量配置方式为 non-login shell 的方式,这种方式很多原本的变量不会被改变, 尤其PATH 这个变量。
su 切换到超级管理员身份。
su 用户名
切换到用户 从root切换到其他用户不用输入密码。
从其他用户切换到其他用户需要输入密码。
su -
切换用户,切换shell环境。完整的切换到新使用者的环境,连同 PATH/USER/MAIL 等变量都转成新用户的环境。
彻底切换,切换家目录,切换环境变量。
直接切换到用户的家目录。
每个用户都有一个家目录。
有用户变量
可以通过 echo $PATH 显示当前PATH环境变量,该变量的值由一系列以冒号分隔的目录名组成。执行程序时,shell自动跟据PATH变量的值去搜索该程序。
sudo
使用 root 的身份来运行命令。
并非所有人都能够运行 sudo , 而是仅有规范到 /etc/sudoers 内的用户才能够运行 sudo 这个命令。其配置文件位于/etc/sudoers中。
在/etc/sudoers文件中,添加 ubuntu ALL=(ALL)ALL一行,其中ubuntu是用户名。
删除用户:
userdel -r 用户名
-r删除所有的信息
删除用户的相关数据,而用户的数据有:
用户账号/口令相关参数:/etc/passwd, /etc/shadow
使用者群组相关参数:/etc/group, /etc/gshadow
用户个人文件数据: /home/username, /var/spool/mail/username.
id:
id 这个命令则可以查询某人或自己的相关 UID/GID 等等的信息
补充:
linux系统中,使用/来表示根目录
linux系统中,使用~来表示家目录
linux系统中,使用./来表示当前目录
linux系统中,使用…/来表示上级目录
解释说明rwxr-xr-x这个是什么意思?
rwxr-xr-x是文件的权限。
ls -l 查看当前目录下的文件或者目录,并且以长列表的形式展示
当前文件或者目录的拥有者的权限是可读可写可执行
当前文件或者目录的拥有者所在的组的其他成员的权限是可读不可写可执行
当前文件或者目录的拥有者不在的其他组的成员的权限是可读不可写可执行
可以使用chmod修改文件或者目录权限