Ubuntu笔记

Ubuntu笔记
沐飞VMware虚拟机
鼠标脱离虚拟机 ctrl+alt
挂起可以加快开机速度
添加快照:系统备份
Ubuntu
文件采用树状结构
/ ->表示根目录
/home/user/
home下存放用户 只能操作该用户目录
超级用户root,其用户目录为/root 可随意操作所有文件和目录
常用命令
Linux命令大全(手册) – 真正好用的Linux命令在线查询网站 (linuxcool.com)
ls 显示文件
ls(list)查看当前目录下的东西
ls 查看当前目录下的东西
ls /home/user/ 查看该目录下的东西
ls -l 详细显示
ls -a 可以显示隐藏文件
ls -l –full-time 可以显示时间
QQ截图20210114145651
QQ截图20210114145651
QQ截图20210114145651
ls -ld test* 只显示与test有关的文件夹
第一列是用户权限
d开头是文件夹 -开头是文件 l开头是快捷方式
第二列是目录下的文件数量
第三列是用户
第四列是所在组
第五列是文件大小
ls常用指令
1 | ls -a 全部文件,包括隐藏文件 |
ll -d test[34] 指定test3和test4 ,test1不会显示
内容在书P181
其他指令
1 | -A 全部文件,包括隐藏文件,但不包括.和..两个目录 |
pwd查看当前位置
cd切换目录
cd /home/user
特殊目录
./ 当前目录
…/ 上一级目录
- 前一个工作目录
使用者的home目录
~account 代表account的home目录
mkdir创建目录
mkdir abc
mkdir -p abc/123/test -p代表依次创建
mkdir -m 777 test
rmdir删除空目录
rmdir abc 如果非空,则删除失败
rmdir -p tset1/test2/test3 删除test1,要求test3为空目录
rm删除文件或目录
rm -rf abc abc目录和子项一并删除
-rf 强制删除
r-> recursive循环 f->force强制
pwd 显示路径
pwd [-P] 显示link文件的真正路径
cp复制文件或者目录
cp -rf example1 example2
example1是被复制的对象 example2是复制后的名字
加了rf 子项会一同复制
书P183
需要具备read权限,并且复制后的权限组和拥有者与做复制时的有关,除非加入-a参数
常用
1 | cp -a 若为链接文件复制链接文件属性而不是非文件本身,并且递归复制 |
其他
1 | -d 如果为链接文件,则复制链接文件的属性,而不是链接下的文件属性 |
多文件复制时,最后一个要为目录
mv 移动文件目录,重命名)
move hello helloworld
1 | -f 强制,不问询问 |
touch创建文件、更改文件时间
1 | -a 只更改文件被读取的时间 |
tar 档案打包(未压缩)
1 | tar -cvf example.tar example |
讲example打包成tar
c,create创建档案
v,verbose显示详情
f,file
多目录打包 tar -cvf xxx .tar file1 file2 file3 …
tar 档案解包(解压)
1 | tar -xvf example.tar -C outdir/ |
C大写
打包并压缩
1 | tar -czvf example.tar.g example |
解压缩
1 | tar -xzvf example.tar.gz -C outdir |
ln 软链接 (快捷方式)
1 | ln -s example(源文件文件名) example2(软链接名字) |
-s表示soft (默认为硬)
1 | ln -s example example2 |
1 | ls -l 可以查看是否为快捷方式 |
设置&配置新用户
添加用户
1 | sudo useradd -m name |
修改用户密码
1 | sudo passwd name |
指定shell用于显示路径
Solution1
1 | chown username:username -R /home/user_dir |
Solution2
1 | usermod -s /bin/bash username (指定shell,否则会非常不便于终端操作) |
删除用户
1 | sudo userdel test1 |
需要用rm -rf /home/test1/ 删除文件夹
设置Root用户密码
初次要设置密码
1 | sudo passwd root |
切换Root
1 | su root |
退出root模式
1 | exit |
创建组
1 | groupadd boys |
创建用户
1 | useradd -m -g boys xiaoming |
-g 表示在添加用户,并且将用户添加到组boys组
修改用户权限
如果没有将用户添加进/etc/sudoers用户将无法使用sudo
1 | vim /etc/sudoers |
修改现有组
1 | usermod -g boys shaofa |
usermod表示修改用户信息
查看用户和组
1 | cat /etc/group |
查看用户列表
1 | cat /etc/passwd |
直接以ROOT身份登录
准备工作:
1.su root
2.gedit /etc/pam.d/gdm-autologin
在auth required pam_succeed_if.so user!=root quiet_success前加上**#**注释
3.gedit /etc/pam.d/gdm-password
在auth required pam_succeed_if.so user!=root quiet_success前加上**#**注释
4.重启
文件权限
文件权限
文件权限
文件权限
r 读 w 写 x可执行
修改文件权限
添加可写权限
chmod o+w simple.txt
o:other w:write
删除可写权限
chmod o-w simple.txt
chmod 口+w simple.txt
口为a 所有人
口为u 仅自己
口为o 其他人
chmod +w simple.txt
默认是修改自己和本组的权限
修改文件属主
chown -R shaofa /opt/software/
-R递归
shaofa接受人
可执行脚本(本身就可以执行,不用编译)
解释器在/bin/sh
两种运行方式
./hello.sh
/bin/sh hello.sh
要chmod +x hello.sh 修改权限
可执行脚本有 *.sh *pl *.py
shell编程
定义一个变量 name=value
使用变量 ${name}
环境变量定义
export OUTDIR=/opt 范围只在当前终端里
ehco $OUTDIR 用于查看
printenv 查看所有环境变量
用户环境变量在 .profile
环境变量
环境变量
环境变量
注销才能生效
系统环境变量
不修改/etc/profile
而是在/etc/profile.d/下创建sh脚本
在脚本里配置变量
注销
PATH环境变量
PATH环境变量
PATH环境变量
PATH环境变量
PATH环境设置
PATH环境设置
PATH环境设置
手动网络配置
手动网络配置和apt
手动网络配置和apt
手动网络配置和apt
ifconfig显示网卡状态
if->interface
开关网络
开关网络
开关网络
Vim使用
VIM使用
VIM使用
VIM使用
vim 和 vi地区别
vi和vim它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。
vim的这些优势主要体现在以下几个方面:
多级撤消. 我们知道在vi里,按 u只能撤消上次命令,而在vim里可以无限制的撤消。
易用性. vi只能运行于unix中,而vim不仅可以运行于unix,windows ,mac等多操作平台。
语法加亮. vim可以用不同的颜色来加亮你的代码。
可视化操作
安装vim
1 | #在Ubuntu/Debian中的安装方式 |
vim删除指令
删除单行内容
- 将光标移动到需要删除的行
- 按一下ESC键,确保退出编辑模式
- 按两次键盘上面的d键,就可以删除了。
删除所有的行
- 按一下ESC键,确保退出编辑模式
- 按一下:冒号键,shift + ; 就可以输入:冒号了。
- 然后输入%d。%表示文件中的所有行。
删除多行
- 将光标移动到需要删除的行
- 按一下ESC键,确保退出编辑模式
- 在dd命令前面加上要删除的行数。例如,如果要删除第4行以下的3行,请按下 3 dd
删除给定范围的行
实例一
如果你想要删除指定范围的行,比如从第3行到第5行,按ESC,然后输入下面的,然后回车。
1 | :3,5d |
实例二
删除最后一行,按ESC,然后输入下面的命令,然后回车。
1 | :$d |
实例三
删除当前行之前的所有行
1 | :1,.-1d |
实例四
删除当前行之后的所有行
1 | :.+1,$d |
通过条件匹配删除行
实例一
删除包含text关键字的行
1 | :g/text/d |
实例二
删除不包含#关键字的行
1 | :%g!/#/d |
实例三
删除以#开的的注释内容。
1 | :g/^#/d |
实例四
删除所有空行
1 | :g/^$/d |
vim撤销指令
1 | u: 撤销上一步的操作。 |
ps -ef 查看进程
ps -ef | grep java 按包含“java”名字查找
进程
进程
进程
top 动态任务管理器
top -p xxx
xxx为PID
kill -9 xxx关掉进程
任务管理器
任务管理器
任务管理器
检查系统位数
uname -m
注意事项
文件格式注意事项
文件格式注意事项
文件格式注意事项
解决
解决
解决
转换不是必要的,只有编辑shell脚本时才需要转换
JAVA环境配置
java环境配置
java环境配置
java环境配置
系统终端主要程序都放在/usr/bin下面
java运行
运行java
运行java
运行java
java控制台
java控制台
java控制台
运行java脚本
运行java脚本
运行java脚本
搭建服务器
Tomcat
搭建tomcat服务器1
搭建tomcat服务器1
搭建tomcat服务器1
搭建tomcat服务器2
搭建tomcat服务器2
搭建tomcat服务器2
前台进程后台进程
前台进程后台进程
前台进程后台进程
前台进程后台进程
MySQL的替代MariaDB
安装软件3种方式
1.通过deb格式的软件包安装,以安装搜狗输入法
1 | 下载 sogou.deb |
问题1:
dpkg: 错误: 另外一个进程已经为 dpkg frontend lock 加锁
解决1:
进入/var/lib/dpkg/
1 | sudo rm lock-frontend |
2.通过apt
包管理工具从官方软件源安装
3.使用软件的源码手动编译安装
4.安装与卸载软件
1 | sudo apt-get install <package-name> # 安装 |
5.以 notepad++
的使用为例子
1 | 安装 |
换源
安装源
1 | sudo add-apt-repository ppa:user/ppa-name # 添加ppa软件源 |
删除源
sudo add-apt-repository –remove ppa:user/ppa-name # 删除ppa软件源
源目录
/etc/apt/sources.list.d
更换国内源
1.备份
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bcakup
2.编辑源的文件,讲国内镜像的内容输入,
sudo gedit /etc/apt/sources.list
点击问号
国内源
国内源
国内源
3.检测出可以更新的软件
sudo apt-get update
4.软件更新
sudo apt-get upgrade
查看源里有什么软件
sudo apt-cache search skype
搜索skype
sudo apt-cache show skype
展示skype有关详细
阿里巴巴源 20.04
1 | deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse |
代理
局域网代理方法
1 | export http_proxy=http://10.39.163.36:1083 |
127.0.0.1:1080看winxray里的
image-20230324231145326
image-20230324231145326
image-20230324231145326
clash for windows热点代理方法
常见问题 | Clash for Windows (lbyczf.com)
笔记本电脑通过CLASH或SSR开代理热点给手机 - 知乎 (zhihu.com)
git源切换
1 | git config --global url."https://hub.fastgit.org/".insteadOf "https://github.com/" |
startx纯命令下启动图形界面
locale显示目前所支持的语系
date时间
cal 日历
bc计算器
scale = 3小数位数, 默认为整数
find 查找
basename 获取路径最后一个文件夹名
dirname获取前面的路径
chroot更改root目录
作用:
- 建立一个与原系统隔离的系统目录结构,方便用户的开发
- 切换系统的根目录位置,引导 Linux 系统启动以及急救系统等
- 制作镜像打包文件,通过 chroot 构造出一个 mini 系统
命令帮助查询
–help 、 man 、 info 命令帮助信息查找
x –help
【指令 –help】指令帮助 曾经使用过的命令所具备的选项与参数
man x
存放位置:/usr/share/man/
【man 指令 】显示更详细
**- 短选项 **输入参数名称时可以简写
**– 完整选项 ** 输入参数名称时要完整
按 空格往下翻页
image-20220915221216924
image-20220915221216924
DATE(1) 代号内容
IMG_20220915_221247_edit_368517448484392
IMG_20220915_221247_edit_368517448484392
代号 1-7数据切换
1 | man 1~7 指令 |
1 | man 7 man 查看man指令的第7节的信息 |
man page内容解释
IMG_20220915_222545_edit_369220212960847
IMG_20220915_222545_edit_369220212960847
man page 控制
IMG_20220916_203800_edit_391127909752816
IMG_20220916_203800_edit_391127909752816
info x
存放位置; /usr/share/info/
按h打开info按键提示
TAB移动光标
按enter进入相关节点,按U/N 回到上一个节点/回到下一个节点
其他有用文件
存放位置:/usr/share/doc
nano文本编辑器
1 | nano text.txt |
设备关机前准备
查看在线用户 who
查看联机状态 netstat -a
查看后台执行程序 ps -aux
数据同步写入硬盘 sync
关机指令 shutdown
重启,挂起,关机:reboot,halt,poweroff
取消 shutdown -c
1 | 重启时输入 sync;sync;sync;reboot 将内存的数据存入硬盘 |
服务管理systemctl
1 | systemctl [命令] |
文件权限和目录配置
root相关账号信息存在/etc/passwd
个人密码存在/etc/shadow
组名: /etc/group
文件属性
IMG_20220916_212534_edit_393984609261756
IMG_20220916_212534_edit_393984609261756
第一个字符含义
d 表示目录
- 表示文件
l 表示链接文件
b 储存设备
c 串行接口设备,键盘鼠标等一次性读取设备
rwx
r可读 w可写 x可执行
4 2 1
修改文件属性与权限
1 | chgrp 修改文件所属组 |
chgrp
1 | chgrp [-R] 目录名/文件名 |
-R 遍历整个文件夹包括子文件夹里的文件
chown
1 | chown [-R] 账号名称 文件或目录 |
chmod
1 | chmod [-R] xyz 文件或目录 |
r:4 x:2 x:1
x=owner rwx = 4+2+1 = 7
y =group
z = other
1 | 例子:将t.txt文件权限修改为拥有者和同组人可读可写可执行,其他人不可读不可写不可执行 |
1 | chmod u/g/o/a +/-/= rwx 文件或目录 |
u = user
g = group
o =other
a=all
+ 加入
- 移除
= 设置
1 | 例子:chmod u=rwx,go = rx t.txt t.txt的user加上可读可写可执行 group和other 设置为可读和可执行 |
umask文件默认权限
指定目前用户在建立文件或目录时的权限默认值
1 | umask |
建立文件时(-rw-rw-rw-)-(—–w–w-) = -rw-r–r– 建立文件时默认没有x权限
建立目录时(drwxrwxrwx)-(d—-w–w-)=drwxr-xr-x
1 | umask 002 临时修改umask的值,再创建文件会更方便,如果切换用户,umask值会变回去 |
权限对于文件
但文件有W的权限时,可以对文件进行编辑,但是不具备删除文件的权力
权限对于文件夹
文件夹有X权力时,x代表的用户可cd进入该目录
通常要开放目录,至少具备rx权限
chattr配置隐藏属性
1 | + 增加某一个特殊参数,其他原本存在的参数则不动 |
1 | A 当存取此文件时,atime不会被修改避免IO较慢的机器过度读取 |
1 | chattr +i 文件 |
lsattr显示文件隐藏属性
1 | a 将隐藏文件的属性也显示出来 |
文件特殊权限SUID,SGID,SBIT
三个特殊权限都需要x权限为前提,否则就会变成大写的S,T
set UID
image-20220927222827035
image-20220927222827035
image-20220927222827035
当这个s标志出现在拥有者的x上时:
- SUID只对二进制程序有效,对目录无效
- 执行者对于该程序需要具有x的可执行权限
- 执行者将具有该程序拥有者的权限(相当于借权限执行了)
set GID
对于文件
来说:
- SGID对二进制有效
- 对程序执行者来说,需要具备x权限
- 执行者将具有该程序用户组的权限(相当于借权限执行了)
对于文件夹
来说:
- 用户对于此目录具有
r
和x
权限时,该用户能够进入此目录 - 用户在此目录下的有效用户组将变成该目录的用户组
- 用途:如果用户在此目录下具有w的权限,则用户所建立的新文件的用户组于本目录的用户组相同(默认是和用户的用户组一样)
Sticky Bit(SBIT)
只针对目录有效
- 当用户对此目录具有
w
和x
权限时,即具有写入权限 - 当用户在该目录建立文件或目录时,只有自己和root可以操作文件或文件夹
添加特殊权限
1 | SUID 4 |
image-20220927223916045
image-20220927223916045
image-20220927223916045
image-20220927224040438
image-20220927224040438
image-20220927224040438
1 | chmod 4755 test |
文件与目录管理
1 | cd ~ 切换到home目录 |
echo $PATH
显示变量PATH的内容
1 | echo 打印、显示 |
添加环境
1 | PATH="${PATH}:/root" 将/root加入PATH |
文件内容查看
1 | cat 从第一行开始显示文件内容 |
cat
常用参数
1 | -n 打印出行号,空白也有行号与-b不同 |
其他参数
1 | -A 相当于-vET的整合,可列出特殊字符而不是空白 |
nl
1 | -b 指定行号指定方式: |
nl -b a -n rz /etc/issue效果
image-20220923214930509
image-20220923214930509
image-20220923214930509
nl -b a -n rz -w 3 /etc/issue效果
image-20220923215325607
image-20220923215325607
image-20220923215325607
more
文字显示控制
1 | 空格键 下一页 |
less(比more好用)
文字显示控制
1 | Enter 下一页 |
head (用于截取开头)
1 | head -n 20 /etc/man_db.config 显示前20行内容(默认10行) |
tail(用于截取结尾)
1 | tail -n 20 /etc/man_db.config 显示最后20行内容(默认10行) |
显示第11行到20行
1 | head -n 20 /etc/man_db.conf | tail -n 10 |
od二进制读取
1 | -t a 利用默认字符输出 |
最左边的第一列是八进制,代表bytes数
1 | od -t oCc /etc/issue 将内容以八进制显示并列出对应的ascii表 |
image-20220924163650741
image-20220924163650741
image-20220924163650741
将password对应的ascii表输出
1 | echo password | od -t oCc |
file观察文件类型
网络操作
1 | 配置IP地址:sudo ifconfig eth0 IP地址 netmask 子网掩码 |
同步时间
同步网络时间
1 | # ntpdate -u ntp.api.bz |
- ntpdate表示网络同步时间
- -u 表示可以越过防火墙与主机同步。可man ntpdate查看手册
- ntp.api.bz是NTP服务器(上海)。
固定虚拟机网卡ip
设置每台虚拟机的网卡设置:
在虚拟机上右键-》设置
img
img
img
选择网络适配器-》选择自定义-》选择VMnet8:
img
img
img
下面开启虚拟机,进入虚拟机配置IP地址信息(因为修改了IP地址分配方式,ubuntu系统启动可能会比较慢,耐心等待):
进入/etc/netplan目录,查看下面的文件,应该会有一个xxxx.yaml文件:
img
img
img
使用sudo vim ****.yaml命令修改这个文件:
img
img
img
1 | 1 # This file is generated from information provided by |
注意:
ens33就是虚拟机对外通讯使用的端口,这里的配置也就是给这个端口配置IP地址等信息:
addressers:本机IP地址和掩码
img
img
img
dhcp4:false //关闭DHCP
gateway4:192.168.200.2 // VMare的虚拟网络编辑器中查看到的VMnet8子网的网关IP地址。
下面的nameservers中配置了8.8.8.8的IP地址,这里是为了让虚拟机能够访问DNS服务器。
配置OK后,运行 sudo netplan apply 使能配置:
img
img
img
使用ifconfig查看IP地址信息,端口的IP地址已经固定下来了:
#ubuntu #linux
不常用命令
查看内核版本
uname -r
查看操作系统的架构版本(位数)
uname -m
知识点
每个设备被当成一个文件对待 位置在/dev/下面
硬盘为 sd[a-d]
/dev/zero
有一些特殊的设备文件。例如/dev/zero文件代表一个永远输出0的设备文件,使用它作输入可以得到全为空的文件。因此可用来创建新文件和以覆盖的方式清除旧文件。下面使用dd命令将从zero设备中创建一个10K大小(bs决定每次读写1024字节,count定义读写次数为10次),但内容全为0的文件。
1 | dd if=/dev/zero of=file count=10 bs=1024 |
10+0 records in
10+0 records out
10240 bytes transferred in 0.001408 secs (7267903 b ytes/sec)
重要快捷键
ctrl+alt+[F1~F6]终端切换
ctrl+alt+F1 图形用户界面模式
ctrl+alt+[F2F6] 命令行模式登陆tty2tty6终端
ctrl+d 相当于输入了exit
shift+page up or page down 翻页
纯命令行时,输出记录过长,用来翻页