跳转到正文
莫尔索随笔
返回

Ubuntu 个人使用指南:从安装到日常命令的 Linux 最佳实践

预计 6 分钟

第一时间捕获有价值的信号

本 Ubuntu 个人使用指南覆盖 Linux 基础、系统安装、文件管理与常用命令。助你从 Windows 平稳过渡,掌握 Ubuntu 桌面版最佳实践。

核心内容

什么是Ubuntu?Linux隶属于GNU,遵循GPL,Debian是Linux众多主要发行版中的一个,而Ubuntu是Debian在桌面领域的一个改版系统,更多细节请前往这里

DAY 1 走进Ubuntu

关于Ubuntu

  1. 什么是Ubuntu?Linux隶属于GNU,遵循GPL,Debian是Linux众多主要发行版中的一个,而Ubuntu是Debian在桌面领域的一个改版系统,更多细节请前往这里
  2. 与Windows区别
  • 多任务,多用户
  • 适合嵌入式系统
  • 丰富的网络功能
  • 自由开放
  • 免费
  1. 几点注意
  • 修改基于文本的配置文件来设置Ubuntu系统
  • windows通过文件扩展名来识别文件类型,linux通过文件的头部信息来来获取文件类型或者编码格式,用到命令file
  1. 学习网站参考

安装Ubuntu

  1. Ubuntu 16.04与Win10双系统安装(讲的比较全面的一个教程,分盘原理都有讲到) Ubuntu 16.04与Win10双系统双硬盘安装图解
  2. 简单理解磁盘分区。Ubuntu中,IDE接口的设备称为hd,SCSI和SATA接口的设备称为sd,以sd为例,硬盘依次称作sda(第一块),sdb(第二块)…,一块儿上面四个主分区(sda1,sda2,sda3,sda4),接下来是逻辑分区,从sda5开始,数量无限制。主分区(sda1)存放引导整个系统的程序和参数,相当于Windows下C盘,逻辑分区对应D,E,F盘。已建立文件系统的磁盘分区被挂载到某一个目录下,用户通过操作目录实现磁盘读写。
  3. 推荐搞清楚:引导加载程序GRUB

读取U盘失败

  • ubuntu挂载u盘出现错误:mount:unknown filesystem type 'exfat' 解决办法:打开终端,以root身份(普通用户使用root身份命令:sudo -i),输入:apt-get install exfat-fuse,重新插入U盘,即可识别
  • 扩展阅读:阮大的这篇博文exFAT 文件系统指南可以帮助理解报错原因

DAY 2 一切皆命令

目录操作命令

Open 目录操作命令

  1. 创建目录
cd ~ #进入用户主目录
mkdir doc1 doc2   #创建目录doc1 doc2,可以同时创建多个
mkdir /home/mygodot/doc3    #使用绝对路径创建
mkdir -p ~/home/test/doc4   #当test目录开始不存在时,利用参数-p,可以创建一个完整的目录结构而不会报错,区别见图1.
  1. 移动目录
mv 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. 删除目录
rmdir 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. 复制目录
cp test.txt test/   #复制test.txt到test文件夹下
cp -i test.txt test/    #-i提示防覆盖
cp -b test.txt test/    #-b 加~
cp -r test/ 桌面/       #-r 将test整个目录及文件复制到桌面
  1. 跳转目录 cd 绝对路径|相对路径

查看文件

  1. 查看目录
ls       #列出所有目录及文件,类型由颜色确定,推荐加参数-F
ls -F    #目录后加/,链接文件后加@,可执行文件加@,普通文件什么都不加
ls -a    #显示所有的隐含文件,头部带点.
ls -l    #查看文件属性(权限,链接个数,文件用户名,用户名所在用户组,大小,更新日期,更新时间,文件名)

注意: 权限由10个字符组成,以-rw-r—r—为例,第一个-表示普通文件,rw-文件所有者读写权限,r—用户组只有读权限,r—其他人(除文件所有者和root之外的所有人)只有读权限,有时出现rwx,表示拥有执行和读写权限,下面还会提到。 (试试看,将参数两两组合会有什么效果)

  1. 查看普通文件
cat test1.txt test2.txt  #查看文件内容
cat -n test.txt    #参数-n,显示行号
head -n 2 test.txt  #显示开头两行
tail -n 2 test.txt  #显示结尾两行
  1. 文件内容精确查找
grep 被搜索关键字  搜索文件(可以多个) 
grep ex test.txt test2.txt  #在test,test2找包含ex的内容
(注意,有时会看见egrep命令,作用与grep一样,只是更规范而已)
  1. 文件查找与定位
find ~/ -name *.txt -print   #列出用户主目录下所有的txt文件,并输出到屏幕
  1. 大文件查看,推荐了解more命令less命令

权限操作

  1. 更改权限
chmod 使用”用户组+/-/=权限“的方式来增加/删除/直接设置相应的权限
用户组:文件所有者(u),用户组(g),其他人(o),所有人(a)
权限:读取(r),写入(w),执行(x)
chmod u+x test.txt
chmod o-r test.txt
chmod ug=rw test.txt
  1. 更改文件所有权
sudo chown user test.txt        #改变用户
sudo chown :group test.txt      #改变用户组
sudo chown user:group test.txt  #同时改变
sudo -R user test/       #参数-R,user拥有所有目录及子文件的所有权
  1. 创建链接文件
符号链接通过名称引用原文件,硬链接直接引用原文件,两文件独立,但内容相同,对其中一个文件更改,另一个也会发生改变。
ln -s test.txt test_link      #创建符号链接(快捷方式)
ln test.txt test.link2        #创建硬链接
  1. 文件操作进阶,扩展阅读:输入/输出重定向流、管道和重定向

DAY 3

deb软件包管理

dpkg -i(-installl) 软件包名称   #安装,-i参数会把系统旧版本删除掉
dekg -r(-remove)  软件    #卸载

apt软件包管理工具(解决依赖问题)

apt-get install  #下载安装
apt-get upgrade  #下载并安装最新版本
apt-get remove  #卸载软件包
apt-get source  #下载特定软件的源代码
apt-get clean  #删除所有包文件
apt-get -h     #查看更多

修改Ubuntu的apt-get源为阿里源(改善更新速度)

  1. 复制原文件备份sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
  2. 编辑源列表文件sudo vim /etc/apt/sources.list
  3. 将原来的列表删除,添加如下内容
deb 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语法)
  1. 更新源和软件 使用sudo apt-get update更新获取阿里云软件源提供的软件列表
  2. 使用sudo apt-get upgrade更新软件

Ubuntu系统实用软件推荐

  1. 搜狗输入法
  2. chrome浏览器
  3. 为知笔记 (安装deb文件,双击安装或者命令安装:sudo dpkg -i ******.deb)
  4. Shutter是一款截图软件,功能丰富,堪称神器。(安装:sudo apt-get install shutter
  5. ssr代理软件(科学上网)
sudo add-apt-repository ppa:hzwhuang/ss-qt5 
sudo apt-get update
sudo apt-get install shadowsocks-qt5
  1. VSCode代码编辑器
  2. 系统监视器,实时查看电脑的cpu,内存占用率,查看网速
sudo add-apt-repository ppa:fossfreedom/indicator-sysmonitor 
sudo apt-get update  
sudo apt-get install indicator-sysmonitor  
  1. 下载软件uget
sudo add-apt-repository ppa:plushuang-tw/uget-stable
sudo apt-get update
sudo apt-get install uget
  1. 图片编辑器GIMPsudo apt-get install gimp
  2. Typora,Ubuntu上有颜值又有实力的markdown编辑器
sudo 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下载百度云文件

  1. 先安装Chrome百度网盘助手插件(在https://github.com/acgotaku/BaiduExporter下载BaiduExporter.crx,手动安装到Chrome)
  2. 安装Aria2 sudo apt-get install aria2
  3. 下载文件 打开网页端百度网盘,选中要下载的文件,选择导出下载菜单的文本导出。把显示的文件内容复制下来,然后在粘贴到命令框即可下载。(如果被断开连接,可以重新输入命令实现断点续传^.^)

主题定制

仿Mac OS X主题设置(有兴趣的可以尝试)

DAY 4

ubuntu16.4下的mp3播放

sudo 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代表账号的种类。
cat /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用户可读
mygodot:$IoPgKPfQ$aKtMO:17733:0:99999:7:::
登录名/加密后口令/上次修改指令日期/一些与口令相关的可选项...
  • 用户分组在/etc/group文件中定义
sambashare:x:128:mygodot
组名/组口令占位符/组号(GID)/成员列表
  • 用户所属的组是passwd文件和group文件中相应组的并集
  • 确定某用户对文件的访问权限时,系统会先考察用户所在所有组

添加用户

sudo useradd -m otherUser    #添加用户otherUser,并自动建立目录(-m参数)
sudo useradd -g group otehrUser    #为用户指定所属群组,默认创建同名的用户组
sudo useradd -s /bin/bash mike   #指定用户登录后所使用的shell,默认使用sh(指向bash的符号链接)
使用root权限,输入`passwd 用户名`,即可更改密码

删除用户

sudo userdel -r otheruser   #删除用户的同时,删除与用户相关的所有文件
sudo userdel otheruser    #仅仅删除账号,不删除相关文件

用户间切换

sudoer中一行权限包括以下内容:
该权限适用的用户
这行配置在哪些主机上适用
该用户可以运行的命令
该命令应该以哪个用户身份执行
  • 了解history命令

DAY 6

多用户、多进程的系统(了解)

进程:正在运行中的程序
父进程、子进程、谦让度、优先级
ps aux
ps lax
top(实时监控)、q(退出)
kill(“杀死”一个进程) -(SIG)TERM(信号编号或者信号名) PID
Kill -l
RSS:内存中页(管理内存的单位,4K)的数量
TTY: 进程所在终端的ID号
SAT:
COMMAND:
PROC文件系统
谦让度调整:renice(绝对) nice(相对)

文件系统

逻辑盘空间:
引导块(文件系统开头,存放引导程序);超级块(记录文件系统的管理信息);indoe区(索引节点);数据区
ext4fs文件系统(预留专门区域保存日志文件)
free(查看内存使用情况)
swap交换分区[http://smilejay.com/2012/06/swap_size/],类似于Windows的虚拟内存
EXT2文件系统(Linux发布的标准文件系统)
虚拟文件系统
/PROC文件系统(为访问系统内核数据的操作提供接口)

磁盘管理

ls /dev/ | grep sd    #磁盘分区查看
df -t ext4   #显示文件系统的挂载情况
du -sh ./   #当前目录大小
du -a   #罗列每个文件大小
[du命令](http://man.linuxde.net/du)查看空间使用量

系统备份

tar -cvf test.tar test/  #打包test目录及其下的所有文件
tar -cvwf test.tar test/   #在原基础上添加,确认提醒
tar -xvf test.tar    #解包
更多[tar命令](http://man.linuxde.net/tar)参数
  • 压缩文件
gzip test.tar   #生成test.tar.gz,将打包好的.tar文件压缩成.gz
gunzip test.tar.gz  #解压
gunzip -l test.tar.gz  #查看压缩效果
gunzip -tv test.tar.gz  #测试压缩完整性

DAY 7

定时任务自动化

关于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命令配置
mygodot@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

网络管理

netstat -r    #查询Linux内核中的路由表
  • 流量监控工具NetHogs和Ifstat了解

检测端口

netstat -a   #列出当前所有连接
netstat -at  #列出TCP协议的连接
netstat -au  #列出UDP协议的连接