个人Ubuntu使用指南
什么是Ubuntu?Linux隶属于GNU,遵循GPL,Debian是Linux众多主要发行版中的一个,而Ubuntu是Debian在桌面领域的一个改版系统,更多细节请前往这里。
我的新书《LangChain编程从入门到实践》 已经开售!推荐正在学习AI应用开发的朋友购买阅读!
DAY 1 走进Ubuntu
关于Ubuntu
- 什么是Ubuntu?Linux隶属于GNU,遵循GPL,Debian是Linux众多主要发行版中的一个,而Ubuntu是Debian在桌面领域的一个改版系统,更多细节请前往这里。
- 与Windows区别
- 多任务,多用户
- 适合嵌入式系统
- 丰富的网络功能
- 自由开放
- 免费
- 几点注意
- 修改基于文本的配置文件来设置Ubuntu系统
- windows通过文件扩展名来识别文件类型,linux通过文件的头部信息来来获取文件类型或者编码格式,用到命令file
- 学习网站参考
- [http://www.chinaunix.net]
- [http://www.linuxeden.com]
- [https://www.linuxfans.org]
- [http://www.linuxsir.org]
- (学习路径:尝试自己解决->搜索->提问)
安装Ubuntu
- Ubuntu 16.04与Win10双系统安装(讲的比较全面的一个教程,分盘原理都有讲到)
Ubuntu 16.04与Win10双系统双硬盘安装图解 - 简单理解磁盘分区。Ubuntu中,IDE接口的设备称为hd,SCSI和SATA接口的设备称为sd,以sd为例,硬盘依次称作sda(第一块),sdb(第二块)…,一块儿上面四个主分区(sda1,sda2,sda3,sda4),接下来是逻辑分区,从sda5开始,数量无限制。主分区(sda1)存放引导整个系统的程序和参数,相当于Windows下C盘,逻辑分区对应D,E,F盘。已建立文件系统的磁盘分区被挂载到某一个目录下,用户通过操作目录实现磁盘读写。
- 推荐搞清楚:引导加载程序GRUB
读取U盘失败
- ubuntu挂载u盘出现错误:
mount:unknown filesystem type 'exfat'
解决办法:打开终端,以root身份(普通用户使用root身份命令:sudo -i
),输入:apt-get install exfat-fuse
,重新插入U盘,即可识别 - 扩展阅读:阮大的这篇博文exFAT 文件系统指南可以帮助理解报错原因
DAY 2 一切皆命令
目录操作命令
创建目录
1
2
3
4cd ~ #进入用户主目录
mkdir doc1 doc2 #创建目录doc1 doc2,可以同时创建多个
mkdir /home/mygodot/doc3 #使用绝对路径创建
mkdir -p ~/home/test/doc4 #当test目录开始不存在时,利用参数-p,可以创建一个完整的目录结构而不会报错,区别见图1.移动目录
1
2
3mv doc1 /home/mygodot/home/ #把doc1移动到/home/mygodot/home/
mv -i doc1 /home/mygodot/home/ #/home/mygodot/home/已经有doc1了,如果此时再移动相同的doc1,就会覆盖原来的doc1,利用参数-i就可以避免这种情况,回答n即可跳过,见图2
mv -b doc1 /home/mygodot/home/ #如果非要移动,利用参数-b,会先在原来doc1后加~,避免同名覆盖删除目录
1
2
3
4
5
6rmdir doc2 #rmdir只能删除空目录
rm doc3/*.py #rm可以一次删除一个或者几个文件
rm -i doc3/test.md #日常使用推荐添加-i参数,会给出提示;y确认删除,n跳过文件
注意: 对于只读文件,不加-i也会提示
rm -r test #-r参数,删除test以及test目录下所有文件和子目录(慎重操作,难道你忘了删库跑路(:?)
rm -f doc1 #默认删除有写保护的普通文件复制目录
1
2
3
4cp test.txt test/ #复制test.txt到test文件夹下
cp -i test.txt test/ #-i提示防覆盖
cp -b test.txt test/ #-b 加~
cp -r test/ 桌面/ #-r 将test整个目录及文件复制到桌面跳转目录
cd 绝对路径|相对路径
查看文件
- 先简单了解Linux下七种文件类型
- 查看目录
1
2
3
4ls #列出所有目录及文件,类型由颜色确定,推荐加参数-F
ls -F #目录后加/,链接文件后加@,可执行文件加@,普通文件什么都不加
ls -a #显示所有的隐含文件,头部带点.
ls -l #查看文件属性(权限,链接个数,文件用户名,用户名所在用户组,大小,更新日期,更新时间,文件名)
注意: 权限由10个字符组成,以-rw-r–r–为例,第一个-表示普通文件,rw-文件所有者读写权限,r–用户组只有读权限,r–其他人(除文件所有者和root之外的所有人)只有读权限,有时出现rwx,表示拥有执行和读写权限,下面还会提到。
(试试看,将参数两两组合会有什么效果)
查看普通文件
1
2
3
4cat test1.txt test2.txt #查看文件内容
cat -n test.txt #参数-n,显示行号
head -n 2 test.txt #显示开头两行
tail -n 2 test.txt #显示结尾两行文件内容精确查找
1
2
3grep 被搜索关键字 搜索文件(可以多个)
grep ex test.txt test2.txt #在test,test2找包含ex的内容
(注意,有时会看见egrep命令,作用与grep一样,只是更规范而已)
- 文件查找与定位
1
find ~/ -name *.txt -print #列出用户主目录下所有的txt文件,并输出到屏幕
- 更多前往
权限操作
- 先了解ubuntu中的用户及分组
- 先阅读关于文件权限的八进制表示
更改权限
1
2
3
4
5
6chmod 使用”用户组+/-/=权限“的方式来增加/删除/直接设置相应的权限
用户组:文件所有者(u),用户组(g),其他人(o),所有人(a)
权限:读取(r),写入(w),执行(x)
chmod u+x test.txt
chmod o-r test.txt
chmod ug=rw test.txt更改文件所有权
1
2
3
4sudo chown user test.txt #改变用户
sudo chown :group test.txt #改变用户组
sudo chown user:group test.txt #同时改变
sudo -R user test/ #参数-R,user拥有所有目录及子文件的所有权创建链接文件
1
2
3符号链接通过名称引用原文件,硬链接直接引用原文件,两文件独立,但内容相同,对其中一个文件更改,另一个也会发生改变。
ln -s test.txt test_link #创建符号链接(快捷方式)
ln test.txt test.link2 #创建硬链接
DAY 3
deb软件包管理
1 | dpkg -i(-installl) 软件包名称 #安装,-i参数会把系统旧版本删除掉 |
apt软件包管理工具(解决依赖问题)
1 | apt-get install #下载安装 |
修改Ubuntu的apt-get源为阿里源(改善更新速度)
- 复制原文件备份
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
- 编辑源列表文件
sudo vim /etc/apt/sources.list
- 将原来的列表删除,添加如下内容
1
2
3
4
5
6
7
8
9
10
11deb http://mirrors.aliyun.com/ubuntu/ vivid main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid-backports main restricted universe multiverse
#deb和deb-src表示软件包类型(debian类型)
- (按ESC键,输入
:wq
即可保存退出,见vim语法)
- 更新源和软件
使用sudo apt-get update
更新获取阿里云软件源提供的软件列表 - 使用
sudo apt-get upgrade
更新软件
Ubuntu系统实用软件推荐
为知笔记
(安装deb文件,双击安装或者命令安装:sudo dpkg -i ******.deb
)Shutter是一款截图软件,功能丰富,堪称神器。(安装:
sudo apt-get install shutter
)ssr代理软件(科学上网)
1
2
3sudo add-apt-repository ppa:hzwhuang/ss-qt5
sudo apt-get update
sudo apt-get install shadowsocks-qt5系统监视器,实时查看电脑的cpu,内存占用率,查看网速
1
2
3sudo add-apt-repository ppa:fossfreedom/indicator-sysmonitor
sudo apt-get update
sudo apt-get install indicator-sysmonitor下载软件uget
1
2
3sudo add-apt-repository ppa:plushuang-tw/uget-stable
sudo apt-get update
sudo apt-get install uget图片编辑器GIMP
sudo apt-get install gimp
Typora,Ubuntu上有颜值又有实力的markdown编辑器
1
2
3
4sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA300B7755AFCFAE
sudo add-apt-repository 'deb https://typora.io ./linux/'
sudo apt-get update
sudo apt-get install typora
Ubuntu利用Aria2下载百度云文件
- 先安装Chrome百度网盘助手插件(在
https://github.com/acgotaku/BaiduExporter
下载BaiduExporter.crx,手动安装到Chrome) - 安装Aria2
sudo apt-get install aria2
- 下载文件
打开网页端百度网盘,选中要下载的文件,选择导出下载菜单的文本导出。把显示的文件内容复制下来,然后在粘贴到命令框即可下载。(如果被断开连接,可以重新输入命令实现断点续传^.^)
主题定制
仿Mac OS X主题设置(有兴趣的可以尝试)
DAY 4
ubuntu16.4下的mp3播放
- 解决Ubuntu16.4不能播放mp3的问题
- MP3编码由于许可证问题,linux不能在其基础发行版上包括 MP3 解码或编码功能.
1
2
3
4
5
6
7
8sudo apt install gstreamer1.0-fluendo-mp3 #安装gstreamer,版本可能不断更新
mid3iconv -e GBK *.mp3 #切换到音乐的目录,执行
//此时系统会提示你安装python-mutagen
sudo apt install python-mutagen #执行即可
mid3iconv -e GBK *.mp3 #再执行(作用:mid3iconv 命令主要是将原来mp3音乐文件的ID3信息转换
成了Unicode并用ID3v2的格式存回文件中。)
//进入Rhythmbox,随便点一首mp3的歌曲,
会弹出一个对话框,直接点确认,下载,继续,都完成之后,应该就已经可以听mp3
DAY 5
用户管理文件
ID与账号的对应关系就在/etc/passwd中,每行代表一个账号,UID代表账号的种类。
1
2
3
4
5
6cat /etc/passwd #查看命令
mygodot:x:1000:1000:mygodot,,,:/home/mygodot:/bin/bash(共7个字段)
登录名/口令占位符/用户ID/默认组ID/用户私人信息/用户主目录/登录shell
UID=0 #系统管理员root
UID=1~499 #供系统保留给服务使用
UID=500~65535 #普通用户使用利用加密算法MD5加密的口令保存在/etc/shadow中,仅仅对root用户可读
1
2mygodot:$IoPgKPfQ$aKtMO:17733:0:99999:7:::
登录名/加密后口令/上次修改指令日期/一些与口令相关的可选项...用户分组在/etc/group文件中定义
1
2sambashare:x:128:mygodot
组名/组口令占位符/组号(GID)/成员列表用户所属的组是passwd文件和group文件中相应组的并集
确定某用户对文件的访问权限时,系统会先考察用户所在所有组
添加用户
-
1
2
3
4sudo useradd -m otherUser #添加用户otherUser,并自动建立目录(-m参数)
sudo useradd -g group otehrUser #为用户指定所属群组,默认创建同名的用户组
sudo useradd -s /bin/bash mike #指定用户登录后所使用的shell,默认使用sh(指向bash的符号链接)
使用root权限,输入`passwd 用户名`,即可更改密码 -
删除用户
-
1
2sudo userdel -r otheruser #删除用户的同时,删除与用户相关的所有文件
sudo userdel otheruser #仅仅删除账号,不删除相关文件
用户间切换
管理员通过配置/etc/sudoers指定用户可以执行的特权(sudo)命令
-
1
2
3
4
5sudoer中一行权限包括以下内容:
该权限适用的用户
这行配置在哪些主机上适用
该用户可以运行的命令
该命令应该以哪个用户身份执行 了解
history
命令
DAY 6
多用户、多进程的系统(了解)
1 | 进程:正在运行中的程序 |
文件系统
1 | 逻辑盘空间: |
磁盘管理
- 了解文件系统的挂载
1
2
3
4
5ls /dev/ | grep sd #磁盘分区查看
df -t ext4 #显示文件系统的挂载情况
du -sh ./ #当前目录大小
du -a #罗列每个文件大小
[du命令](http://man.linuxde.net/du)查看空间使用量
系统备份
-
1
2
3
4tar -cvf test.tar test/ #打包test目录及其下的所有文件
tar -cvwf test.tar test/ #在原基础上添加,确认提醒
tar -xvf test.tar #解包
更多[tar命令](http://man.linuxde.net/tar)参数 压缩文件
1
2
3
4gzip test.tar #生成test.tar.gz,将打包好的.tar文件压缩成.gz
gunzip test.tar.gz #解压
gunzip -l test.tar.gz #查看压缩效果
gunzip -tv test.tar.gz #测试压缩完整性
DAY 7
定时任务自动化
-
1
2
3
4
5
6关于crontab原理的几点理解:
Linux周期性任务通常是由cron守护进程完成的,cron随系统启动而启动,启动时读取配置文件,把信息保存在内存中,每分钟重新检查一次配置文件,并执行这一分钟的任务,所以cron执行最短周期是1分钟。
sudo /etc/init.d/cron restart #手动启动cron脚本
cron配置文件有两种:
系统的全局cron配置文件(分为三种):etc/crontab,和系统维护有关的全局任务计划,由系统管理员手动制定;/etc/cron.d某些应用软件设置的计划任务;/etc/cron.hourly、/etc/cron.daily...存放每小时、每天等的任务。
普通用户的配置文件:/var/spool/cron/用户名命名的配置文件,用crontab命令配置 at指令详解-定时任务执行,类似于windows计划任务的功能,太好用了
1
2
3
4
5mygodot@ubuntu:~$ at 18:08 tomorrow
warning: commands will be executed using /bin/sh
at> date >/home/mygodot/桌面/yestoday.log
at> <EOT>
job 1 at Tue Nov 20 18:08:00 2018
网络管理
路由配置route命令
1
netstat -r #查询Linux内核中的路由表
流量监控工具NetHogs和Ifstat了解
检测端口
1 | netstat -a #列出当前所有连接 |
个人Ubuntu使用指南