操作系统的两个主要功能
-
与硬件打交道(例如CPU,内存,硬盘)
-
封装底层的API,给开发者调用
linux 内核版本 和 发行版本
-
内核版本: Linux 在维护(唯一)
-
发行版本: 各个公司开发(很多)
单用户系统和多用户系统
-
单用户系统:一台计算机同一时间只能由一个用户使用
该用户独享系统的全部硬件和软件资源- XP 之前的版本都是 单用户系统
-
多用户系统:一台计算机同一时间可以由多个用户使用
多个用户共享系统的全部硬件和软件资源- linux 的设计初衷,就是 多用户系统
linux 文件目录
-
没有'盘符'这种概念,只有一个根目录'/',所有文件都在它下面
-
为每一个用户创建一个独立的目录,各个用户之间不允许互相串门
常用Linux命令
- ls: list-查看当前文件夹下的内容
- pwd: print work directory-查看当前所在文件夹
- cd [目录名]: change directory-切换文件夹
- touch [文件名]: 如果文件不存在,新建文件
- mkdir [目录名]: make directory-创建目录
- rm [文件名]: remove-删除指定的文件名
- clear: 清屏
- 快捷键小技巧
- ctrl + shift + '=(+)': 放大终端窗口的字体显示
- ctrl + shift + '--(-)': 缩小终端窗口的字体显示
ubuntu 访问 windows共享目录
- 打开 "文件" → “其他位置” → “连接到服务器”,在输入框输入“smb://IP”,例如
- smb://192.168.0.177/
Linux 终端命令格式
command [-options] [parameter]
- 命令帮助
command --help
man command
- 空格键: 显示手册页的下一瓶
- Enter键: 一次滚动手册页的一行
- b: 回滚一屏
- f: 前滚一屏
- q: 退出
- /word: 搜索word字符串
终端实用技巧
-
自动补全: 在敲出 文件/目录/命令 的前几个字母后,按下"tab键"
-
如果输入的没有歧义,系统会自动补全
-
如果存在多个文件,再按一下"tab键",系统会再次提示
-
ls 命令小拓展
-
在linux中,以'.开头'的文件名称,都属于'隐藏文件'
-
此时,使用ls命令,是无法显示'隐藏文件'的
-
解决办法: ls -a
> touch .456.txt
> ls # 分别测试
> ls -a
-
'l'参数表示显示文件详情信息
'h'参数搭配'l'参数使用,显示文件大小更友好 -
cd命令小拓展
- cd . # 切换到当前目录,实际上白写...
- cd .. # 切换到上级目录
编辑 hosts文件命令
sudo gedit /etc/hosts /* 这里的gedit可以换成其他的编辑器,如常用的vim。*/
- 进入 root权限终端
sudo su # 要求输入密码
-
metasploit 渗透工具介绍
-
进入 root权限终端
-
msfconsole 进入 渗透工具命令行
-
touch命令
-
两个作用
-
创建文件
-
更新文件的创建时间
-
mkdir命令: 创建一个新目录
- 注意事项: 所创建的目录名称,不能与当前目录下的文件/目录 同名
cd demo
touch 123
mkdir 123
$ 文件已存在
- "-p"参数可以递归创建目录
mkdir -p a/b/c/456
rm 命令
-
删除文件/目录
-
注意事项: 使用此命令删除文件以后,文件不可恢复
-
参数
-
"-f": 强制删除,忽略不存在的文件,无需提示
-
"-r": 递归滴删除目录下的内容,删除文件夹时必须加此参数
-
-
特别注意事项: 当切换到系统根目录时'/',不能手误执行以下命令
会导致整个系统会被删除而不得不重装
rm -rf *
- 拷贝和移动文件(剪切)
- tree [目录名]: 以树状结构列出目录和文件
- 参数"-d": 只显示目录(不显示其他文件)
- cp(copy) 源文件 目标文件: 复制文件或目录
- mv(move) 源文件 目标文件: 移动文件/目录,文件/目录重命名
在ubuntu系统下无法修改文件,解决办法
# 对文件作如下处理
sudo chmod u+w 文件名
编辑文本命令
gedit 123.txt
更换ubuntu下载源
- 首先,备份镜像源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
- 编辑镜像源设置文件
sudo gedit /etc/apt/sources.list
- 复制下面的所有内容替换掉原文件中的所有内容(一次只可以选一个镜像源,根据你的情况选)
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
查看ubuntu版本号
lsb_release -a
cp命令: 拷贝和移动文件
- 基础用法
- cp 源文件 目标文件
cp ~/readMe.txt . # 把家目录底下的'readMe.txt'拷贝到当前目录
- "-i参数"表示: 覆盖文件之前提示
cp -i ~/readMe.txt . # 把家目录底下的'readMe.txt'拷贝到当前目录(询问是否覆盖)
- 使用cp命令拷贝目录(直接拷贝是不行的,要加参数'-r')
cp -r a b # 把a目录所有内容拷贝到b目录
mv(move)命令: 移动(剪切)文件/目录,也可以给文件/目录重命名
mv a/aa/123.txt . # 把123.txt移动到当前目录
mv a/aa/123.txt 456.txt # 把123.txt移动到当前目录,并且重命名为 456.txt
- 还可以使用之前学过的 cp命令,实现重命名(区别在于复制/剪切)
cp a/aa/123.txt 456.txt
查看文件内容
-
cat(concatenate) 文件名
- 查看文件内容,创建文件,文件合并,追加文件内容等功能
- 会一次性显示所有的内容(适合内容较少的文本文件)
-
more 文件名
- 分屏显示文件内容
- 适合查看内容较多的文本文件
- 空格键: 显示手册页的下一屏
- enter: 一次滚动手册页的一行
- b: 回滚一屏
- f: 前滚一屏
- q: 退出
- cat命令小拓展
- 当加上"-b"或"-n"参数 会给文本所在的行编号
- n: 会给回车行加编号
- b: 不会给回车行加编号
-
grep命令: 搜索文本内容,相当于 Ctrl+F 搜索文本
-
支持正则
-
参数
-
- n: 显示匹配行及行号
- v: 显示不包含匹配文本的所有行(相当于取反)
- i: 忽略大小写
- grep命令小拓展
- 支持正则表达式
grep -b ^k 456.txt # 编号显示以k开头的内容(在456.txt文件中查找)
echo命令: 表示'回声'
echo hello world # hello world
echo hello wordl > demo.txt # 把hello world输出到 demo.txt文件(文件不存在就创建/存在就覆盖)
-
通常搭配重定向符号'>'一起使用(把需要的文本内容输入到指定文件)
-
'>'表示输出,会覆盖文件原有的内容
-
'>>'表示追加,会将内容追加到已有的文件末尾
tree > demo.txt # 把当前路径的tree文件结构输出到指定文件
管道: 命令之间的桥梁/连接符
-
将一个命令的输出,通过管道,做为另一个命令的输入
-
管道符号:"|"
-
比如
ls ~ | grep el # 展示家目录 并搜索 以'el'开头的目录名称
关机命令 shutdown
shutdown # 一分钟以后关机
shutdown -c # 取消关机
shutdown -r now # 立即重启
shutdown 20:25 # 在8:25关机
shutdown +10 # 10分钟后关机
ifconfig: 查看IP相关信息
ifconfig # 查看网卡配置信息
ifconfig | grep inet # 只显示IP
ssh 远程
ssh [-p port] user@remote # 默认为22号端口
ssh -p 22 anning@IP地址
# 开启防火墙
sudo ufw enable
# 开启22号端口
sudo ufw allow 22
# 重启防火墙
sudo ufw reload
# 查看状态
sudo ufw status
# 安装ssh
sudo apt install openssh-server
# 在服务端执行 ssh localhost 命令, 确认ssh是否启动成功. 这样putty就可以连接服务端了.
-
Windows系统下,远程ubuntu系统,主要有两种工具
- putty(建议官网下载,使用起来非常简单,输入IP即可,先用这个) - xshell(稍微复杂一点)
scp命令: Linux下用来远程拷贝文件的命令(windows环境使用 filezilla)
-
语法基本与 ssh 相同,但指定端口(默认端口21)的时候,使用的是大写P
# 把本地目录下的01.py拷贝到远程家目录下的'Desktop/01.py' scp -P port 01.py user@remote:Desktop/01.py # 把远程家目录下的Desktop/01.py拷贝到本地目录下的'01.py' scp -P port user@remote:Desktop/01.py 01.py # -r可以传送文件夹 scp -r demo user@remote:Desktop
-
w11环境使用 filezilla连接
- 文件-新站点 - 协议: SFTP(就是SSH) # 这里选择FTP连接失败 - 主机IP地址&&用户名&&密码 - 端口默认
SSH 免密登录
-
就两个步骤,很简单
- 配置公匙 - ssh-keygen # 一路回车即可 - 上传公匙到服务器 - ssh-copy-id -p port user@remote # 可以让远程服务器记住我们的公匙 - 原理了解(非对称加密算法,A钥匙锁门,必须使用B钥匙开门) - 本地使用私匙对数据进行加密/解密(使用私匙加密的数据,需使用公匙解密) - 服务器使用公匙对数据进行加密/解密(使用公匙加密的数据,需使用私匙解密)
SSH配置别名(更方便的远程登录,进一步偷懒)
- 例如,可以使用 ssh mac直接远程别名为mac的远程服务器
- 配置方法(~/.ssh/config)追加以下内容
Host mac
HostName ip地址
User yourUserName
Port 22
- 保存以后,就可以使用 ssh mac 实现远程登录,scp同样可以使用
- scp -r ~/Desktop myserver:Desktop/demo # 把家目录桌面下的目录拷贝到myserver服务器的Desktop/demo底下
用户和权限的概念
序号 | 权限 | 英文 | 缩写 | 数字代号 |
---|---|---|---|---|
01 | 读 | read | r | 4 |
02 | 写 | write | w | 2 |
03 | 执行 | excute | x | 1 |
ls -l 拓展
- 用途: 查看文件夹下,文件的详细信息,从左往右,依次是
目录 | 拥有者权限 | 组权限 | 其他用户权限 | 硬链接数量 |
---|
- | r | w | - | r | w | - | r | - | - | 1 |
---|---|---|---|---|---|---|---|---|---|---|
d | r | w | x | r | w | x | r | - | x | 3 |
- 硬链接数量: 通俗讲,就是有多少种方式可以访问到当前目录
chmod命令
- 作用: 修改 用户/组 对 文件/目录 的权限
- 语法
chmod +/-rwx 文件名|目录名
Linux 用户
-
root用户
-
标准用户(默认创建)
-
首次使用sudo时,需输入当前授权用户的密码,有效期5分钟
组管理终端命令
- 创建组/删除组 的终端命令,都需要通过'sudo'执行
序号 | 命令 | 作用 |
---|---|---|
01 | groupadd组名 | 添加组 |
02 | groupdel组名 | 删除组 |
03 | cat /ect/group | 确认组信息 |
04 | chgrp 组名 文件/目录名 | 修改文件/目录的所属组 |
- 组信息保存在'/ect/group'文件中
- /ect/ 目录专门用来保存'系统配置信息'
用户终端管理命令
创建用户/删除用户/修改其他用户密码
序号 | 命令 | 作用 | 说明 |
---|---|---|---|
01 | useradd -m -g 组名称 新用户名 | 添加新用户 | - m:自动创建用户家目录; -g:指定用户所在的组,否则会建立一个和用户名同名的组 |
02 | passwd 用户名 | 设置用户密码 | 若是普通用户,直接用passwd可以修改自己账户密码 |
03 | userdel -r 用户名 | 删除用户 | -r 选项会自动删除用户家目录 |
04 | cat/etc/passwd | grep | 确认用户信息 | 新建用户后,用户信息会保存在 /etc/passwd文件中 |
- demo命令演示
ls -l /home # 显示home目录所有用户文件
sudo useradd -m -g dev zhangsan # 新建名为"张三"的用户,并自动创建家目录,加入'dev组'
查看用户信息
序号 | 命令 | 作用 |
---|---|---|
01 | id [用户名] | 查看用户UID和GID信息 |
02 | who | 查看当前所有登录用户 |
03 | whoami | 查看当前登录用户的账户名 |
/ect/passwd 文件存放的是用户西西,由6个分号组成的7个信息
- 用户名
- 密码(x,表示加密的密码)
- UID(用户标识)
- GID(组标识)
- 用户全名/本地账号
- 家目录
- 登录使用的shell,就是登录之后,使用的终端命名,ubuntu默认是dash
usermod命令
-
作用: 设置用户的
主组
或者附加组
-
本质: 就是给用户设置额外的权限(因为加入了不同的组,所以权限肯定不同)
-
主组: 通常在新建用户时指定,在
etc/passwd
的第4列GID对应的组 -
附加组: 在
etc/group
中最后一列表示该组的用户列表,用于指定用户的附加权限
设置了用户的附加组后,需要重新登录才能生效(比如给与普通用户sodu权限,需要重新登录)
- 修改用户的主组(passwd中的GID)
usermod -g 组 用户名
- 修改用户的附加组
usermod -G 组 用户名
- 修改用户登录的 Shell
usermod -s /bin/bash
- 可以使用以下命令,把普通用户添加到sudo附加组
usermod -G sudo 用户名
- usermod 还可以用来设置
用户登录的shell
- 什么是 shell: 那个黑乎乎的命令行窗口就是了
- usermod -s /bin/bash 用户名
which
- 作用: 查看
执行的命令
所在的位置
- 比如: 'ls'这个命令,所在的程序的哪个系统的哪个位置呢?使用'which'就可以快速找出来
- which ls # /usr/bin/ls
- which useradd # /usr/sbin/useradd
- cd 命令内置在内核中,没有独立文件,因此无法使用 which cd 来查看cd的文件位置
- 在Linux中,绝大多数可执行文件都是保存在 '/bin','/sbin','/usr/bin','usr/sbin'
- '/bin'(binary)是二进制执行文件目录,主要用于具体应用
- '/sbin'(system binary)是系统管理员专用的二进制代码存放目录,主要用于系统管理
- '/usr/bin'(user commands for application)后期安装的一些软件
- '/usr/sbin'(super user commands for application)超级用户的一些管理程序
切换用户命令
序号 | 命令 | 作用 | 说明 |
---|---|---|---|
01 | su - 用户名 | 切换用户,并且切换目录 | "-"可以切换到用户家目录,否则保持位置不变 |
02 | exit | 退出当前登录账户(返回上一层用户,直至退出) |
su
若不接用户名
,可以切换到root
,但不推荐这么用,不安全
修改文件权限
序号 | 命令 | 作用 |
---|---|---|
01 | chown | 修改拥有者 |
02 | chgrp | 修改组 |
03 | chmod | 修改权限 |
- 命令格式如下
# 修改文件|目录的拥有者
chown 用户名 文件名|目录名
- sudo chown lisi aaa # 把aaa目录的拥有者变成李四(使用"ls -l"查看)
# 递归修改文件|目录的组
chgrp -R 组名 文件名|目录名
# 递归修改文件权限
chmod -R 755 文件名|目录名
# 之前的用法(直接修改文件/目录名 的 读|写|可执行 权限,但不能精确到 拥有者|组|其他用户)
chmod +/-rwx 文件名|目录名
chomod
在设置权限时,可以简单使用三个数字分别对应拥有者
/组
/其他用户权限
755
数字表示的含义表格
- 常见的数字组合有(
u
表示用户,g
表示组,o
表示其他)
1) 777 ==> u=rwx,g=rwx,o=rwx
2) 755 ==> u=rwx,g=r-x,o=r-x
3) 644 ==> u=rw-,g=r--,o=r--
Vim编辑器简单使用
- 参考网址:
https://blog.csdn.net/imonHu/article/details/77772712
- vi 文件名
- 按"I"进入insert模式,可以正常文本编辑
- 编辑好之后按“esc”退出到“命令模式”,再按“shift+:”进入“底行模式”,
- 按“:wq”保存退出!
VM 网络设置
- 参考网址
https://blog.csdn.net/weixin_45322291/article/details/108851921
- 仅主机模式: 说白了,相当于物理机再插一张网卡,和虚拟机互连
- Nat模式: 可以连接外网,但不会有独立ip,使用物理机的网络(相当于物理机的复制品)
- 桥接模式: 能够连接外网,使用单独的ip地址,网段需要与桥接连接的外部网络的网段相同(相当于同网段的另一台物理机)
- 自定义模式: 可以自行进行设置,选择其他模式的网络,配置大概相同
- CentOS 7 ping不通 报错:name or service not known
- https://blog.csdn.net/weixin_38214171/article/details/85330179
- https://blog.csdn.net/Qcsdn123/article/details/120082823
VMWARE虚拟网络配置 子网ip和子网掩码不匹配
如果子网掩码设成255.255.255.0 ,那么前面的子网ip就应该设成192.168.221.0,而不是192.168.221.128
子网掩码:255.255.255.x
子网ip:192.168.211.x
这2个x必须相同
————————————————
版权声明:本文为CSDN博主「我要用代码向我喜欢的女孩表白」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38403590/article/details/106781849
系统相关命令
-
date
命令: 查看系统时间 -
cal
命令: 查看日历(-y
参数可以查看全年日历) -
磁盘信息相关命令
序号 命令 作用 01 df -h disk free 显示磁盘剩余空间,"-h"更加人性化展示信息 02 du -h [目录名] disk usage 显示目录下的文件大小 -
进程信息: 所谓
进程
,即正在进行的程序
序号 | 命令 | 作用 |
---|---|---|
01 | ps aux | process status 查看进程的详细状况 |
02 | top | 动态显示运行中的进程并且排序 |
03 | kill [-9] 进程代号 | 终止指定代号的进程,-9表示强行终止 |
ps
: 默认只会显示当前用户通过终端启动的应用程序
ps
选项说明功能
选项 | 含义 |
---|---|
a | 显示终端上的所有进程,包含其他用户的进程 |
u | 显示进程的详细状态 |
x | 显示没有控制终端的进程 |
重要提醒:
kill
命令最好只终止由当前用户开启的进程,而不要终止root
开启的进程,否则可能导致系统崩溃
查找文件命令find
- 作用: 在 特定的目录下,搜索符合条件的文件
序号 | 命令 | 作用 |
---|---|---|
01 | find [路径] -name "*.py" | 查找指定路径下,拓展名为'.py'的文件,包括子目录 |
若省略路径,则表示在当前目录下查找,支持正则写法
# 搜索桌面目录下,文件名包含数字'1'的文件(终端先切换到桌面目录)
find -name '*1*'
# 搜索桌面目录下,所有的'.txt'文件
find -name '*.txt'
软链接(俗称的'快捷方式')
序号 | 命令 | 作用 |
---|---|---|
01 | ln -s 被链接的源文件 链接文件 | 建立文件的软链接(快捷方式) |
若没有
-s
选项,则是建立一个硬链接
文件(几乎不会用到)源文件要使用
绝对路径
,不能使用相对路径
,避免移动软链接
以后,该软链接
无法使用
打包压缩
- 在不同操作系统中,
打包压缩
是不同的
- windows: 常用 rar,zip
- mac: 常用 zip
- Linux: 常用 tar.gz
tar
命令: 把一系列文件,打包成一个大文件;反过来也可以
# 打包文件
tar -cvf 打包文件.tar 被打包的文件/路径
# 解包文件
tar -xvf 打包文件.tar
tar
选项说明
选项 | 含义 |
---|---|
c | 生成档案文件,创建打包文件 |
x | 解开档案文件 |
v | 列出归档解档的详细过程,显示进度 |
f | 指定档案文件名称,'f'后面一定是'.tar'文件,所以必须放选项最后 |
f
选项必须放到在最后,其他选项顺序可以随意
- 练习
- 删除桌面下的所有内容
- 桌面新建'01.py','02.py','03.py'
- 把这三个文件打包成一个'py.tar'包
- 新建 tar 目录, 并且将 py.tar移动到 tar 目录
- 解包 py.tar
# 切换到桌面目录
rm -r *
touch 01.py ...
tar -cvf py.tar 01.py 02.py 03.py
mkdir tar
mv py.tar tar
cd tar
tar -xvf py.tar
压缩/解压缩
gzip
tar
与gzip
命令结合使用,实现文件打包和压缩
- 用
gzip
压缩tar
打包后的文件,其拓展名一般用xxx.tar.gz
在
Linux
中,最常见的压缩文件格式就是xxx.tar.gz
- 在
tar
命令中,有一个选项-z
可以调用gzip
,从而方便的实现压缩和解压缩功能
# 压缩文件
tar -zcvf 打包文件.tar.gz 被压缩的文件/路径...
# 解压缩文件
tar -zxvf 打包文件.tar.gz
# 解压缩到指定路径
tar -zxvf 打包文件.tar.gz -C 目标路径
-c
表示解压缩到指定目录(要解压的目录必须存在)
- 演示
# 把桌面所有的py文件,打包压缩成 py.tar.gz
tar -zcvf py.tar.gz *.py
bzip2
: 压缩tar
打包后的文件
- tar 和 bzip2 命令结合,可以实现文件的 打包和压缩(用法和gzip一样)
- tar 只负责打包文件,但不压缩
- 用 bzip2压缩tar打包后的文件,其拓展名一般用 xxx.tar.bz2
- tar 命令有一个'-j'可以调用 bzip2,可以方便的实现压缩和解压缩的功能
# 压缩文件
tar -jcvf 打包文件.tar.bz2 被压缩的文件/路径...
# 解压缩文件
tar -jxvf 打包文件.tar.bz2
软件安装/卸载
apt
是Advance Packaging Tool
,是Linux
下的一款软件安装包工具- 可以在终端中方便的
安装/卸载/更新
软件包
# 安装软件
sudo apt install 软件包
# 卸载
sudo apt remove 软件名
# 更新
sudo apt upgrade