下载ubuntu镜像
https://cn.ubuntu.com/download/alternative-downloads
安装与分区参考教程
VirtualBox安装Ubuntu虚拟机超详细教程!!!_安装virtual box,导入配置好环境的ubuntu虚拟机-CSDN博客
一、Linux下的文件系统
- 文件目录没磁盘概念,只有一个根目录
二、常用命令
- ls 查看当前文件夹下的内容
- ls参数使用
- .开头的文件为隐藏文件,需要用-a参数才能显示,例:ls -a
- -l,以列表方式显示文件的详细信息
- -h,配合-l以人性化的方式显示文件大小
- 参数可组合使用,例:ls -al
- ls通配符使用(通配符来代表其他符号达到筛选部分文件的效果)
- *代表任意个数个字符,例:以1结尾的文件,ls *1.txt,扩展名不可忽略;或包含1的文件,ls *1*
- ?代表任意一个字符,仅一个字符,例:a?c.txt
- []表示可以匹配字符组中的任意一个字符,例:含2或3开头,结尾为4的txt文件,ls [23]4.txt
- [abc]匹配a、b、c中的任意一个
- [a-f]匹配从a到f范围内的任意一个,例:ls [1-4]23.txt
- ls参数使用
- pwd 查看当前路径
- cd [目录名] 切换路径
- 常用参数
- cd 切换到当前用户的主目录(/home/用户目录)
- cd ~ 切换到当前用户的主目录(/home/用户目录)
- cd . 保持当前目录不变
- cd .. 切换到上一级目录
- cd - 可以在最近两次工作目录之间来回切换
- 绝对路径,相对应根目录开始的路径,从/开始
- 相对路径,相对当前目录开始的路径,不需要从/开始
- 常用参数
- touch [文件名] 创建文件(文件不存在)或修改文件时间(文件已存在)
- 编辑
- vi [文件名] 编辑文件(aeiou都可切换到插入模式,esc返回命令模式)
- :wq 保存退出
- :q! 强制退出
- nano [文件名] 编辑文件(相较vi/vim,对文件进行简单编辑时个人觉得更容易操作和使用)
- ctrl+x--y--enter 保存退出
- mkdir [目录名] 创建一个新的目录,同一级目录,目录与文件名不可重复
- -p 递归创建目录,例:在当前目录创建a目录,a目录中创建b目录,b目录中创建c目录,c目录中创建d目录,mkdir -p a/b/c/d
- rm [文件名] 删除指定文件,删除后不能恢复
- -f 强制删除,忽略不存在的文件,无需提示
- -r 递归删除目录下的内容,删除目录也需要带此参数
- ls中可使用的通配符在此适用,例:rm *1.txt
- tree[目录名] 以树状图列出文件目录结构,可直接带路径,例:tree ~
- -d 只显示目录不显示文件
- cp 源文件 目标文件 复制或覆盖文件或目录,例:移动到当前目录不修改名称,cp ~/d/abc.txt .;移动到当前目录并修改名称,cp ~/d/abc.txt ./123.txt
- -i 覆盖文件前提示
- -r 若给出的源文件是目录文件,则将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名;复制目录也需要带此参数
- mv 源文件 目标文件 移动文件或目录/文件或目录重命名,移动目录也不需要使用任何参数
- -i 覆盖文件前提示
- clear 清屏
- command --help 帮助,例:mkdir --help
- man(manual) 手册,例:man mkdir
- 空格 下一屏
- enter滚动一行
- b 回滚一屏
- f 前滚一屏
- q 退出
- /word 搜索word字符串
三、查看文件
- cat 文件名 查看文件内容、创建文件、文件合并、追加文件内容等
- -b 对非空输出行编号(nl命令和cat -b效果等价)
- -n 对输出的所有行编号
- -b 对非空输出行编号(nl命令和cat -b效果等价)
- more 文件名 分屏显示文件内容
- 操作健与man相似
- grep 搜索文本文件名 搜索文本文件内容(查找的文本有空格需要使用“”包住)
- 参数
- -n 显示匹配行及行号
- -v 显示不包括匹配文本的所有行(相当于求反)
- -i 忽略大小写
- 常用的两种模式
- ^a 行首,搜寻以a开头的行
- ke$ 行尾,搜寻以ke结束的行
- 参数
四、其他命令
1、echo和重定向
- echo 在终端中显示参数指定的文字,通常会和重定向联合使用
- 重定向 将本应显示在终端上的内容输出或追加到指定文件中
- > 表示输出,会覆盖文件原有内容
- >> 表示输出,会将内容追加到已有文件的末尾
2、管道
- | 允许将一个命令的输出可以通过管道作为另一个命令的输入,| 左侧输入,右侧输出
- 常见命令
- more 分屏显示内容
- grep 在命令执行结果的基础上查询指定的文本
3、远程命令
- shutdown 选项 时间(now表示现在) 关机/重启,不指定选项和参数,默认表示1分钟之后关闭电脑
- -r 重新启动
- 例:shutdown now --立即关机
- shutdown -r now --立即重启
- shutdown 13:20 --在当天13:20关机
- shutdown +10 --十分钟后关机
- shutdown -c --取消指定的关机计划
- ifconfig 查看/配置计算机当前的网卡配置信息(windows对应命令为ipconfig)
- ping ip地址 检测到目标 ip地址 的连接是否正常
4、which 查看执行命令所在位置
5、查找文件
- find [路径] -name '*.py' 查找指定路径下扩展名为.py的文件,包括子目录
- 如果省略路径,表示在当前文件夹下查找
- 通配符在find命令中可同时使用
- find -perm 777 在当前目录查找权限为777的文件
- find -amin -5 在当前目录查找5分钟内被访问的文件
- -amin +n 表示在n分钟前被访问过,-amin -n 表示在n分钟内被访问过
- -atime +n 表示在n天前被访问过,-atime -n 表示在n天内被访问过
- -anewer file 表示在指定文档最后一期访问时间后被访问过
- find -mtime -1 在当前目录下查找在1天之前被修改过的文件
- -min +n 表示在n分钟前被访问过,-min -n 表示在n分钟内被访问过
- -mtime +n 表示在n天前被访问过,-mtime -n 表示在n天内被访问过
- -mnewer file 表示在指定文档最后一期访问时间后被访问过
6、软连接
- ln -s 被链接的源文件路径 链接文件名(类似于windows下的快捷方式)
- 注:
- 没有-s选项简历的是一个硬连接文件
- 路径需要使用绝对路径不能使用相对路径
- 注:
7、打包和压缩
①打包与解包
tar是Linux中最常用的备份工具,此命令可以把一系列文件打包到一个大文件中,也可以把一个打包的大文件恢复成一系列文件
- 打包:tar -cvf 打包文件.tar 被打包的文件/路径
- 解包:tar -xvf 打包文件.tar
- -c 生成档案文件,创建打包文件
- -x 解开档案文件
- -v 列出归档解档的详细过程,显示进度
- -f 指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后
②压缩与解压缩
- gzip:tar与gzip命令结合可以实现文件打包和压缩
- tar只负责打包文件,但不压缩
- 用gzip压缩tar打包后的文件其拓展名一般用xxx.tar.gz
- -z 可以调用gzip
#压缩文件
tar -zcvf 打包文件.tar.gz 被打包的文件/路径
#解压文件
tar -zxvf 打包文件.tar.gz
#解压缩到指定路径,-C指定路径且必须为已存在路径
tar -zxvf 打包文件.tar.gz -C 目标路径
- bzip2,与gzip类型的另一种压缩格式,扩展名为xxx.tar.bz2,通过-j选项调用
#压缩文件
tar -jcvf 打包文件.tar.bz2 被打包的文件/路径
#解压文件
tar -jxvf 打包文件.tar.bz2
8、软件安装
- 安装:sudo apt install 软件包
- 卸载:sudo apt remove 软件名
- 更新已安装的包:sudo apt upgrade
9、配置软件源(ubuntu18.04.6)
五、SSH学习
1、SSH基础
优点:
①数据传输是加密的,可以防止信息泄露
②数据传输是压缩的,可以提高传输速度
- 常见服务端口号:
- SSH服务器 22
- Web服务器 80
- HTTPS 443
- FTP服务器 21
2、SSH客户端的简单使用
ssh [-p port] user@remote
- user是在远程机器上的用户名,如果不指定的话默认为当前用户
- remote是远程机器的地址,可以是IP/域名,或者是别名
- port是SSH Server监听的端口,如果不指定就默认为22
关于在安装过程中遇到的主机与虚拟机ping的过程遇到的问题对应解决:
①两边都ping不通:
修改虚拟机的网络为nat+onlyhost方式,修改配置文件将onlyhost的ip修改与电脑wifi同一网段,在虚拟机ping百度尝试
- 虚拟机中的网卡设定
- 在ubuntu中修改ip(我的版本是18,也是在yaml文件中修改配置)
sudo nano /etc/netplan/01-network-manager-all.yaml
#打开文件后编辑:
network:
version: 2
ethernets:
#nat网卡名
enp0s3:
dhcp4: true
#only-host网卡名
enp0s8:
dhcp4: false
addresses: [192.168.X.X/24]------此处使用的网段与主机可上网网段一致,24指的是子网掩码为255.255.255.0
nameservers:
[192.168.X.1]
#修改后ctrl+x,y,回车后保存成功,可通过cat命令检查是否成功
#重启网络: sudo netplan apply
②修改ip后安装ssh发现无法解析cn.archive.ubuntu.com,需要添加dns
1、sudo nano /etc/resolv.comf #添加以下行
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 127.0.0.1
保存后退出
2、sudo systemctl restart systemd-resolved#重启systemd-resolved服务
3、检查是否重启也正常在resolv.comf文件中添加成功
③安装ssh
1、sudo apt update #更新包列表
2、sudo apt-get install openssh-server
(此时报错有一些软件包无法被安装。其中有一个依赖为openssh-client
根据报错安装对应的版本
sudo apt-get install openssh-client=1:7.6p1-4)
成功后再执行安装openssh服务器软件包就能成功
3、检查ssh服务状态
sudo systemctl status ssh
4、启动服务
sudo systemctl start ssh
3、scp命令,secure copy
是在Linux下用来进行远程拷贝文件的命令,与ssh不同的是指定端口时-P使用大写
#把本地当前目录下的01.py文件复制到远程家目录下的Desktop/01.py
#注意,‘:’后面的路径如果不是绝对路径,则以用户的家目录作为参照路径
scp -P portNo 01.py user@remote:Desktop/01.py
(scp -P 22 01.py yan@192.168.1.2:Desktop/01.py----SSH服务传输文件使用默认端口号22;下载FileZilla使用FTP服务传输文件为21)
#把远程家目录下的Desktop/01.py文件复制到本地当前目录下的01.py
scp -P portNo user@remote:Desktop/01.py 01.py
#加上-r参数可以传送文件夹,递归复制该目录下的所有子目录和文件
#把当前目录下的demo文件复制到远程家目录下的Desktop
scp -r demo user@username:Desktop
#把远程家目录的Desktop复制到当前目录下的 demo文件夹
scp -r user@username:Desktop demo
4、SSH高级
注:关于SSH配置信息都保存在用户家目录下的.ssh目录下
①免密码登录
- 配置公钥
- 执行ssh-keygen即可生成SSH钥匙,一路回车即可
- 上传公钥到服务器
- 执行ssh-copy-id -p port user@remote,可以让远程服务器记住我们的公钥
②配置别名
#用ssh mypc 代替ssh -p port user@remote ,在~/.ssh/config 中追加:
#(若没有config文件,则先使用touch命令创建)
1.touch config
2.gedit config(sudo nano)
3.在文件中追加内容
Host mypc
HostName ip地址
User username
Port 22
配置完成后,ssh、scp命令都可使用
#ssh mypc
#scp -r ~/Desktop mypc:Desktop/demo
六、用户权限
1、文件/目录的权限
- 读:r-4
- 写:w-2
- 执行:x-1(excute)【执行语句:./文件名】
下图:第一部分:是否为目录,是为d,不是为-
第二部分:对应文件拥有者的权限
第三部分:对应组的权限
第四部分:其他用户的权限
2、修改权限(ch)
- chown 修改拥有者
#修改文件/目录的拥有者
chown 用户名 文件名/目录名
- chgrp 修改组
#递归修改文件/目录的组
chgrp -R 组名 文件名/目录名
- chmod 修改权限
#命令:chmod +/-rwx 文件名/目录名,直接修改文件/目录的 读、写、执行权限,但不能精确到拥有者、组、其他用户的权限
#示例:减少权限
chmod -r 123.txt
#注意,这里小写-r是指的文件权限中‘rwx’中的‘r’,与递归修改文件权限中的大写R区分
#示例:添加权限
chmod +w 123.txt
#-R递归修改文件权限,-R后3个数字分别代表拥有者、组、其他用户的权限,不带-R参数则只修改单个文件/目录
chmod -R 755 文件名/目录名
3、超级用户
- 修改密码与切换用户,使用sudo命令执行输入密码后有5分钟有效期限,超过时间需要重新输入密码
- sudo -i 直接进入root账号不需要密码
- passwd 修改当前用户密码
- su root 需要密码进入用户
- exit 退出回到普通用户
七、组管理(需要使用sudo执行)
- 添加组:groupadd 组名
- 删除组:groupdel 组名
- 确认组信息:cat /etc/group
- 递归修改文件/目录的所属组:chgrp -R 组名 文件/目录名
八、用户管理
1、用户增、删
- 添加新用户:useradd -m -g 组 新建用户名 (-m自动建立用户家目录;-g指定用户所在组,否则会建立一个和用户同名的组)
- 设置用户密码:passwd 用户名(添加新用户时必须要使用该命令设置密码才能正常登录;普通用户可直接用该命令修改密码)
- 删除用户:userdel -r 用户名(-r会自动删除对应用户家目录)
2、用户信息查看
- 确认用户信息:cat /etc/passwd | grep
- id [用户名] 查看用户UID和GID信息
- who 查看当前所有登录的用户列表
- whoami 查看当前登录用户的账户名
3、用户组设置
- usermod 设置用户的主组/附加组
- 主组:通常在新建用户时指定,在etc/passwd的第四列GID对应的组
- 附加组:在etc/group中最后一列表示该组的用户列表,用户指定用户的附加权限(设置后需要重新登录才生效)
#修改用户的主组(passwd中的GID)
usermod -g 组 用户名
#修改用户的附加组
usermod -G 组 用户名
#修改用户登录 Shell(ubuntu默认用户使用的是dash,所以window在使用ssh连接用户时按↑键无法操作或文件颜色无差异、高亮等情况
)
usermod -s /bin/bash
#在ubuntu运行后重新在window登录后的效果
#ubuntu确认用户信息
九、系统信息
1、时间和日期
- date 查看系统时间
- cal calendar查看日历,-y选项可以查看一年的日历
2、磁盘信息
- df -h disk free显示磁盘剩余空间
- du -h [目录名] disk usage 显示目录下的文件大小
- -h以人性化的方式显示文件大小
3、进程信息
- ps aux process status 查看进程的详细状况(默认只显示当前用户通过终端启动的应用程序)
- a 显示终端上的所有进程,包括其他用户的进程
- u 显示进程的详细状态
- x 显示没有控制终端的进程
- top 动态显示运行中的进程并且排序
- q退出
- kill [-9] 进程代号 终止指定代号的进程,-9表示强行终止(只终止当前用户开启的进程,不要终止root身份开启的进程,否则可能导致系统崩溃)