深入解析Ubuntu操作系统的目录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入解析Ubuntu操作系统的目录相关的知识,希望对你有一定的参考价值。

参考技术A

第Ⅰ部分 安装与配置
第1章 Ubuntu概述
1.1 什么是Ubuntu
1.1.1 Ubuntu内部
1.1.2 Ubuntu的安装特点
1.1.3 Ubuntu文件系统的特点
1.2 Ubuntu的商业应用
1.3 Ubuntu的个人应用
1.4 64位Ubuntu
1.5 基于PPC平台的Ubuntu
1.6 基于双核处理器的Ubuntu
1.7 充分利用Ubuntu与Linux的文档
1.8 Ubuntu开发者与文档
1.9 阅读参考
第2章 安装Ubuntu前的准备
2.1 计划Ubuntu的部署方案
2.1.1 商业部署需要考虑的因素
2.1.2 系统部署需要考虑的因素
2.1.3 用户因素
2.1.4 预部署计划的核对表
2.1.5 安装计划
2.2 硬件需求
2.2.1 安装Ubuntu的最低硬件配置
2.2.2 在遗留的设备上安装Ubuntu
2.2.3 为Ubuntu安装分配硬盘空间
2.2.4 检查硬件的兼容性
2.2.5 为潜在的硬件问题做准备
2.2.6 准备并使用硬件列表
2.3 安装过程的准备
2.4 安装前与安装过程中的硬盘分区操作
2.4.1 选择分区方案
2.4.2 将Linux文件系统安排到各个分区上
2.5 使用Ubuntu的kickstart安装方式
2.6 阅读参考
第3章 安装Ubuntu
3.1 开始安装前的准备
3.1.1 检查硬件规格
3.1.2 安装选项
3.1.3 计划分区策略
3.1.4 引导程序
3.1.5 本地光盘安装
3.2 逐步安装
3.2.1 开始安装
3.2.2 首次更新
3.3 关机
3.4 阅读参考
第4章 安装后的配置
4.1 安装后配置问题的故障诊断
4.2 sudo命令
4.3 首次更新
4.4 配置软件源
4.5 安装显卡驱动
4.6 更改Ubuntu的桌面风格
4.6.1 更改桌面背景
4.6.2 更改颜色
4.6.3 更改系统字体
4.7 首选行为
4.7.1 首选应用程序
4.7.2 Removable Drives and Media
4.8 输入设备
4.8.1 键盘快捷键
4.8.2 键盘布局
4.8.3 鼠标
4.9 检测与配置调制解调器
4.9.1 配置串口调制解调器
4.9.2 为笔记本电脑配置WinModem
4.10 配置Ubuntu中的电源管理
4.11 重设日期和时间
4.11.1 使用date命令
4.11.2 使用hwclock命令
4.11.3 更改时间和日期
4.12 管理PCMCIA
4.12.1 使用PCMCIA
4.12.2 控制PCMCIA服务
4.13 配置与使用CD. DVD和CD-RW光驱
4.14 配置无线网络
4.15 配置Firestarter
4.16 阅读参考
第5章 Ubuntu初步
5.1 使用Linux文件系统
5.1.1 查看Linux文件系统
5.1.2 使用/bin和/sbin目录下的基本命令
5.1.3 在/boot目录和/dev目录中存储引导的内核和查看存储设备
5.1.4 使用和编辑/etc目录下的文件
5.1.5 保护用户目录/home中的内容
5.1.6 使用/proc目录的内容与内核进行交互
5.1.7 使用/usr目录下的共享数据
5.1.8 在/tmp目录下存储临时文件
5.1.9 访问/var目录下的可变数据文件
5.2 登录与使用Linux
5.2.1 基于文本的控制台登录
5.2.2 使用虚拟控制台
5.2.3 在Linux控制台会话中使用简单的键盘和鼠标技巧
5.2.4 退出
5.2.5 从远程计算机登录与退出
5.3 修改用户信息
5.4 阅读文档
5.4.1 使用手册页
5.4.2 查找和阅读软件包文档
5.5 使用shell
5.5.1 使用环境变量
5.5.2 使用shell导航和搜索
5.5.3 使用shell管理文件
5.5.4 通过shell压缩和解压的文件
5.6 使用文本编辑器
5.6.1 使用vi
5.6.2 使用emacs
5.7 使用权限
5.7.1 指派权限
5.7.2 目录权限
5.7.3 理解设置用户ID和设置组ID权限
5.8 以root用户身份工作
5.8.1 创建用户
5.8.2 删除用户
5.8.3 关闭系统
5.8.4 重启系统
5.9 阅读参考
第6章 X Window系统
6.1 X的基本概念
6.2 使用X11R7
6.2.1 xorg.conf文件的元素
6.2.2 配置X
6.3 启动X
6.3.1 使用显示管理器
6.3.2 通过使用startx从控制台启动X
6.4 选择和使用窗口管理器
6.5 GNOME和KDE桌面环境
6.5.1 GNU网络对象模型环境GNOME)
6.5.2 K桌面环境(KD)
6.5.3 Xfce:备选的轻量级桌面环境
6.6 阅读参考
第7章 管理软件
7.1 使用Add/Remove Applications管理软件
7.2 使用Synaptic管理软件
7.3 保持最新
7.4 使用命令行
7.4.1 日常使用
7.4.2 查找软件
7.5 从源代码编译软件
7.6 阅读参考
第8章 Internet应用:Web冲浪. 写邮件. 读新闻
8.1 选择Web浏览器
8.1.1 Mozilla Firefox
8.1.2 Mozilla Suite
8.1.3 Epiphany
8.1.4 Konqueror
8.2 选择电子邮件客户端
8.2.1 Evolution
8.2.2 Mozilla Thunderbird
8.2.3 Balsa
8.2.4 KMail
8.2.5 Mozilla Mail
8.2.6 mail应用程序
8.2.7 mutt
8.2.8 其他邮件客户端
8.3 网络新闻概述
8.4 选择新闻阅读器
8.4.1 slrn新闻客户端
8.4.2 Pan新闻客户端
8.4.3 Mozilla新闻客户端
8.4.4 Thunderbird新闻客户端
8.5 Internet Relay Chat
8.6 GAIM IM
8.7 使用Ekiga进行视频会议
8.8 阅读参考
第9章 生产应用程序
9.1 Ubuntu中的办公套件
9.1.1 使用OpenOffice.org
9.1.2 使用OpenOffice.org Writer
9.1.3 使用OpenOffice.org Calc
9.1.4 使用GNOME Office
9.1.5 使用KOffice
9.2 为Microsoft Windows编写的生产应用程序
9.3 阅读参考
第10章 多媒体应用
10.1 在Ubuntu中烧录CD和DVD
10.1.1 从命令行创建CD
10.1.2 从命令行创建DVD
10.1.3 使用Ubuntu的图形界面客户端创建CD和DVD
10.2 声音和音乐
10.2.1 声卡
10.2.2 录音
10.2.3 声音格式
10.2.4 翻录音乐
10.2.5 音乐播放器
10.2.6 流式音频
10.3 观看电视和视频
10.3.1 电视和视频硬件
10.3.2 视频格式
10.3.3 在Linux中观看视频
10.3.4 使用Linux观看电视
10.3.5 个人录像机
10.3.6 DVD和视频播放器
10.4 阅读参考
第11章 图形处理
11.1 在Ubuntu中使用数码相机
11.1.1 网络摄像头
11.1.2 手持式数码相机
11.1.3 使用F-Spot
11.2 在Ubuntu中使用扫描仪
11.2.1 使用图形格式
11.2.2 捕获屏幕图像
11.3 阅读参考
第12章 Ubuntu打印
12.1 Ubuntu打印概述
12.2 配置和管理打印服务
12.2.1 快速完成基于GUI的打印机配置
12.2.2 管理打印服务
12.3 创建和配置本地打印机
12.3.1 创建打印队列
12.3.2 编辑打印机设置
12.4 阅读参考
第13章 游戏
13.1 Linux游戏
13.1.1 安装专有显卡驱动程序
13.1.2 安装DOOM 3
13.1.3 安装Unreal Tournament 2004
13.1.4 安装Quake 4
13.1.5 安装Wolfenstein: Enemy Territory
13.1.6 安装Battle for Wesnoth
13.1.7 使用Cedega玩Windows游戏
13.2 阅读参考
第Ⅱ部分 系统管理
第14章 管理用户
14.1 用户账户
14.1.1 用户ID和组ID
14.1.2 文件访问权限
14.2 用户组管理
14.3 用户管理
14.3.1 用户管理工具
14.3.2 添加新用户
14.3.3 监视用户在系统上的行为
14.4 口令管理
14.4.1 系统口令策略
14.4.2 口令文件
14.4.3 shadow口令
14.4.4 管理用户口令的安全性
14.4.5 用户口令的批量更改
14.5 权限提升
14.5.1 用su命令临时改变用户身份
14.5.2 适时地用sudo命令获取root权限
14.5.3 用受限shell控制用户权限
14.6 用户登录过程
14.7 磁盘配额
14.7.1 使用磁盘配额
14.7.2 手动配置磁盘配额
14.8 阅读参考
第15章 自动执行任务
15.1 自启动服务
15.1.1 开始启动加载过程
15.1.2 加载Linux内核
15.1.3 系统服务和运行级别
15.1.4 运行级别的定义
15.1.5 启动到默认运行级别
15.1.6 用GRUB启动到非默认的运行级别
15.1.7 理解init脚本以及初始化的最后步骤
15.1.8 用管理工具控制自启动服务
15.1.9 改变运行级别
15.1.10 利用运行级别排除故障
15.2 手动启动和停止服务
15.3 计划任务
15.3.1 使用at和batch命令制定计划任务
15.3.2 使用cron命令重复执行任务
15.4 shell控制基础
15.4.1 shell命令行
15.4.2 在shell中进行模式匹配
15.4.3 输入输出的重定向
15.4.4 管道数据
15.4.5 后台处理
15.5 编写和执行shell脚本
15.5.1 运行shell脚本程序
15.5.2 系统启动时自动加载shell脚本
15.5.3 使用指定的命令行解释器运行shell脚本
15.5.4 在脚本中使用变量
15.5.5 给变量赋值
15.5.6 获取变量的值
15.5.7 位置参数
15.5.8 位置参数实例
15.5.9 使用位置参数从命令行获取变量
15.5.10 使用简单的脚本自动执行任务
15.5.11 内置变量
15.5.12 特殊字符
15.5.13 用双引号处理字符串中含有空格的变量
15.5.14 用单引号保留未被扩展的变量
15.5.15 使用反斜杠作为逃逸符号
15.5.16 使用backtick符号
15.5.17 pdksh和bash中的表达式比较
15.5.18 tcsh中的表达式比较
15.5.19 for语句
15.5.20 while语句
15.5.21 until语句
15.5.22 repeat语句(tcsh)
15.5.23 select语句(pdksh)
15.5.24 shift语句
15.5.25 if语句
15.5.26 case语句
15.5.27 break和exit语句
15.5.28 在shell脚本中使用函数
15.6 阅读参考
第16章 系统资源
16.1 系统监视工具
16.1.1 控制台环境下的系统监视
16.1.2 使用kill命令控制进程
16.1.3 进程优先级调度与控制
16.1.4 使用free命令显示内存使用情况
16.1.5 磁盘配额
16.1.6 图形界面的进程和系统管理工具
16.1.7 KDE桌面环境的进程和系统监视工具
16.2 阅读参考
第17章 备份. 还原和恢复
17.1 选择合适的备份策略
17.1.1 为什么会丢失数据
17.1.2 备份需求与所需资源的评估
17.1.3 如何评价备份策略的好坏
17.1.4 做出选择
17.2 选择备份硬件和介质
17.2.1 可移动存储介质
17.2.2 网络存储
17.2.3 磁带驱动器备份
17.3 使用备份软件
17.3.1 tar:最基本的备份工具
17.3.2 GNOME中的File Roller软件
17.3.3 KDE中的归档工具(KDE ark和kdat)
17.3.4 使用dd命令归档
17.3.5 使用Amanda备份程序
17.3.6 可供选择的其他备份软件
17.4 复制文件
17.4.1 用tar命令复制文件
17.4.2 压缩. 加密和发送tar数据流
17.4.3 用cp命令复制文件
17.4.4 用mc命令复制文件
17.4.5 用scp命令复制文件
17.4.6 用rsync命令复制文件
17.5 恢复被删除的文件
17.5.1 在遇到未知的文件系统错误时使用-S选项重新格式化
17.5.2 用mc命令恢复被删除的文件
17.6 系统修复
17.6.1 Ubuntu系统修复盘
17.6.2 备份和恢复主引导记录
17.6.3 从普通的可引导软盘启动系统
17.6.4 使用GRUB可引导软盘
17.6.5 使用系统恢复功能
17.7 阅读参考
第18章 网络连接
18.1 基础:localhost接口
18.1.1 检查loopback接口是否可用
18.1.2 手动配置loopback接口
18.2 TCP/IP网络
18.2.1 TCP/IP地址
18.2.2 在Ubuntu中使用IP伪装技术
18.2.3 端口
18.3 网络结构
18.3.1 子网划分
18.3.2 子网掩码
18.3.3 广播. 单播和多播地址
18.4 网络硬件设备
18.4.1 网卡
18.4.2 网线
18.4.3 集线器和交换机
18.4.4 路由器和网桥
18.4.5 初始化新的网络硬件
18.5 使用网络配置工具
18.5.1 在命令行中配置网络接口
18.5.2 网络配置文件
18.5.3 使用图形界面配置工具
18.6 动态主机配置协议
18.6.1 DHCP工作原理
18.6.2 在安装和启动时激活DHCP
18.6.3 DHCP软件的安装和配置
18.6.4 使用DHCP配置网络主机
18.6.5 DHCP的其他用途
18.7 无线网络
18.7.1 Ubuntu对无线网络的支持..
18.7.2 无线网络的优势
18.7.3 从现有的无线网络协议中选择合适的协议
18.8 连接Internet
18.9 通用的配置信息
18.10 配置数字用户线路访问Internet
18.10.1 理解以太网上的点对点协议
18.10.2 手动配置PPPoE连接
18.11 配置拨号Internet访问
18.12 排除连接故障
18.13 阅读参考
18.13.1 通用
18.13.2 DHCP
18.13.3 无线网络
18.13.4 书籍
第19章 使用ssh和telnet进行远程访问
19.1 架设Telnet服务器
19.2 Telnet与SSH的对比
19.3 架设SSH服务器
19.4 SSH工具
19.4.1 使用scp在计算机之间复制单个文件
19.4.2 使用sftp在计算机之间复制多个文件
19.4.3 使用ssh-keygen启动Key-based登录方式
19.5 远程X图形环境
19.5.1 XDMCP
19.5.2 VNC
19.6 阅读参考
第Ⅲ部分 服务器应用
第20章 Apache Web服务器管理
20.1 Apache Web服务器简介
20.2 安装Apache服务器
20.2.1 使用APT安装
20.2.2 亲自从源代码构建
20.3 启动与停止Apache
20.3.1 手动启动Apache服务器
20.3.2 使用/etc/init.d/apache2
20.4 设置运行时服务器配置
20.4.1 运行时配置指令
20.4.2 编辑httpd.conf
20.4.3 Apache多处理模块
20.4.4 使用.htaccess配置文件
20.5 文件系统认证与访问控制
20.5.1 使用allow和deny限制访问
20.5.2 认证
20.5.3 关于访问控制的结束语
20.6 Apache模块
20.6.1 mod_access
20.6.2 mod_alias
20.6.3 mod_asis
20.6.4 mod_auth
20.6.5 mod_auth_anon
20.6.6 mod_auth_dbm
20.6.7 mod_auth_digest
20.6.8 mod_autoindex
20.6.9 mod_cgi
20.6.10 mod_dir和mod_env
20.6.11 mod_expires
20.6.12 mod_headers
20.6.13 mod_include
20.6.14 mod_info和mod_log_config
20.6.15 mod_mime和mod_mime_magic
20.6.16 mod_negotiation
20.6.17 mod_proxy
20.6.18 mod_rewrite
20.6.19 mod_setenvif
20.6.20 mod_speling
20.6.21 mod_status
20.6.22 mod_ssl
20.6.23 mod_unique_id
20.6.24 mod_userdir
20.6.25 mod_usertrack
20.6.26 mod_vhost_alias
20.7 虚拟主机
20.7.1 基于地址的虚拟主机
20.7.2 基于名字的虚拟主机
20.8 日志
20.9 动态内容
20.9.1 CGI
20.9.2 SSI
20.9.3 基本的SSI指令
20.9.4 流程控制
20.10 可在Ubuntu中使用的其他Web服务器
20.10.1 Sun ONE Web服务器
20.10.2 Zope
20.10.3 Zeus Web服务器
20.11 阅读参考
第21章 管理数据库服务
21.1 简要回顾数据库的基本概念
21.1.1 关系数据库的工作方式
21.1.2 了解SQL的基础知识
21.1.3 创建表
21.1.4 向表中插入数据
21.1.5 从数据库中检索数据
21.2 选择数据库:MySQL和PostgreSQL
21.2.1 速度
21.2.2 数据锁定
21.2.3 在事务处理中用来保护数据完整性的ACID兼容性
21.2.4 SQL子查询
21.2.5 过程语言与触发器
21.3 配置MySQL
21.3.1 为MySQL root用户设置口令
21.3.2 在MySQL中创建数据库
21.3.3 在MySQL中授予与撤销特权
21.4 配置PostgreSQL
21.4.1 在PostgreSQL中初始化数据目录
21.4.2 在PostgreSQL中创建数据库
21.4.3 在PostgreSQL中创建数据库用户
21.4.4 在PostgreSQL中删除数据库用户
21.4.5 在PostgreSQL中授予和撤销特权
21.5 数据库客户端
21.5.1 通过SSH访问数据库
21.5.2 通过本地GUI客户端访问数据库
21.5.3 通过Web访问数据库
21.5.4 MySQL命令行客户端
21.5.5 PostgreSQL命令行客户端
21.5.6 图形界面的客户端
21.6 阅读参考
第22章 文件和打印
22.1 使用网络文件系统
22.1.1 安装和启动/停止NFS
22.1.2 NFS服务器配置
22.1.3 NFS客户端配置
22.2 让Samba工作
22.2.1 用/etc/samba/smb.conf手动配置Samba
22.2.2 使用testparm命令测试Samba
22.2.3 启动smbd守护进程
22.2.4 挂载Samba共享
22.2.5 使用SWAT配置Samba
22.3 使用Ubuntu进行网络和远程打印
22.3.1 创建网络打印机
22.3.2 在局域网上进行网络打印
22.3.3 任务消息块打印
22.4 使用通用UNIX打印系统GUI
22.5 避免打印机支持问题
22.5.1 多功能一体机(打印/传真/扫描)设备
22.5.2 使用USB和老式打印机
22.6 阅读参考
第23章 FTP远程文件服务
23.1 使用FTP客户端
23.1.1 FTP客户端界面
23.1.2 使用基于文本的FTP客户端界面
23.1.3 使用图形界面FTP客户端
23.2 FTP服务器
23.2.1 选择认证的或匿名服务器
23.2.2 Ubuntu的FTP服务器包
23.2.3 其他FTP服务器
23.3 安装FTP软件
23.4 FTP用户
23.5 为wu-ftpd配置inetd
23.6 配置VSFTP服务器
23.6.1 控制匿名访问
23.6.2 其他的vsftpd服务器配置文件
23.6.3 默认的vsftpd行为
23.7 配置Wu-FTPd服务器
23.8 使用ftpaccess文件中的命令对wu-ftpd进行配置
23.8.1 配置访问控制
23.8.2 配置用户信息
23.8.3 配置系统日志
23.8.4 配置权限控制
23.8.5 配置定向到cdpath的命令
23.8.6 shutdown文件的结构
23.9 配置FTP服务器的文件转换操作
23.9.1 剥离前缀
23.9.2 剥离后缀
23.9.3 添加前缀
23.9.4 添加后缀
23.9.5 外部命令
23.9.6 类型
23.9.7 选项
23.9.8 描述
23.9.9 一个转换操作的例子
23.10 使用ftphosts文件中的命令允许或禁止FTP 服务器连接
23.11 服务器管理
23.11.1 显示关于连接用户的信息
23.11.2 计算连接的数目
23.11.3 使用/usr/sbin/ftpshut安排FTP服务器停机时间
23.11.4 使用/var/log/xferlog查看服务器事务的日志
23.12 阅读参考
第24章 处理电子邮件
24.1 电子邮件是如何发送和接收的
24.1.1 邮件传输代理
24.1.2 选择一个MTA
24.1.3 邮件分发代理
24.1.4 邮件用户代理
24.2 基本的Postfix配置和操作
24.2.1 配置伪装
24.2.2 使用智能主机
24.2.3 设置消息传递时间间隔
24.2.4 邮件中继
24.2.5 转发带别名的电子邮件
24.3 使用Fetchmail获取邮件
24.3.1 安装Fetchmail
24.3.2 配置Fetchmail
24.4 选择邮件分发代理
24.4.1 Procmail
24.4.2 Spamassassin
24.4.3 Squirrelmail
24.4.4 病毒扫描器
24.5 邮件守护程序
24.6 Microsoft Exchange Server的替代者
24.6.1 Microsoft Exchange Server/Outlook客户端
24.6.2 CommuniGate Pro
24.6.3 Oracle协作套件
24.6.4 Bynari
24.6.5 Open-Xchange
24.6.6 phpgroupware
24.6.7 PHProjekt
24.6.8 Horde
24.7 阅读参考
24.7.1 Web资源
24.7.2 参考书目
第25章 代理与反向代理
25.1 什么是代理服务器
25.2 安装Squid
25.3 配置客户端
25.4 访问控制列表
25.5 指定客户端IP地址
25.6 配置示例
25.7 阅读参考
第26章 LDAP
26.1 配置LDAP服务器
26.2 配置客户端
26.2.1 Evolution
26.2.2 Thunderbird
26.3 管理
26.4 阅读参考
第Ⅳ部分 Linux编程
第27章 使用Perl
27.1 在Linux中使用Perl
27.1.1 Perl的版本
27.1.2 一个简单的Perl程序
27.2 Perl中的变量和数据结构
27.2.1 Perl的变量类型
27.2.2 特殊变量
27.3 操作符
27.3.1 比较操作符
27.3.2 复合操作符
27.3.3 算术操作符
27.3.4 其他操作符
27.3.5 特殊字符串常量
27.4 条件语句:if/else和unless
27.4.1 if
27.4.2 unless
27.5 循环
27.5.1 for
27.5.2 foreach
27.5.3 while
27.5.4 until
27.5.5 last和next
27.5.6 do…while和do…until
27.6 正则表达式
27.7 访问shell
27.8 模块和CPAN
27.9 代码示例
27.9.1 发送电子邮件
27.9.2 清理日志
27.9.3 往新闻组发信
27.9.4 单行小程序
27.9.5 命令行处理
27.10 阅读参考
27.10.1 书目
27.10.2 新闻组
27.10.3 万维网
27.10.4 其他资源
第28章 使用Python
28.1 Linux中的Python
28.2 Python基础
28.2.1 数字
28.2.2 进一步讨论字符串
28.2.3 列表
28.2.4 字典
28.2.5 条件和循环
28.3 函数
28.4 面向对象
28.4.1 类和对象变量
28.4.2 构造函数和析构函数
28.4.3 类继承
28.4.4 多重继承
28.5 标准库和Vaults of Parnassus
28.6 阅读参考
第29章 编写PHP脚本
29.1 PHP入门
29.1.1 进入和退出PHP模式
29.1.2 变量
29.1.3 数组
29.1.4 常量
29.1.5 引用
29.1.6 注释
29.1.7 转义序列
29.1.8 变量替换
29.1.9 操作符
29.1.10 条件语句
29.1.11 特殊操作符
29.1.12 switch语句
29.1.13 循环
29.1.14 包含其他文件
29.2 基本函数
29.2.1 字符串
29.2.2 数组
29.2.3 文件
29.2.4 其他函数
29.3 处理HTML表格
29.4 数据库
29.5 阅读参考
第30章 Ubuntu中的C/C++ 编程工具
30.1 Linux中的C编程
30.1.1 C++编程
30.1.2 Linux C/C++编程入门
30.1.3 编程的步骤
30.2 C/C++语言的基本元素
30.3 Ubuntu中的C语言编程项目管理工具
30.3.1 使用make构建程序
30.3.2 使用autoconf工具配置代码
30.3.3 使用RCS和CVS管理软件项目
30.3.4 调试工具
30.4 使用GNU C编译器
30.5 一个简单的C程序
30.6 图形界面开发工具
30.6.1 使用KDevelop客户端
30.6.2 Trolltech的Qt Designer
30.6.3 GNOME中的开发工具Glade客户端
30.7 阅读参考
第Ⅴ部分 Ubuntu日常维护
第31章 保护您的机器
31.1 了解计算机攻击
31.2 评估机器的弱点
31.3 保护您的机器
31.3.1 保护无线网络
31.3.2 口令和物理安全
31.3.3 配置和使用Tripwire
31.3.4 设备
31.4 病毒
31.5 配置防火墙
31.6 构建一个灾难恢复计划
31.7 在Linux安全问题上要保持最新
31.8 阅读参考
第32章 性能调整
32.1 硬盘
32.1.1 使用BIOS和内核来调整磁盘驱动器
32.1.2 hdparm命令
32.1.3 文件系统调整
32.1.4 tune2fs命令
32.1.5 e2fsck命令
32.1.6 badblocks命令
32.1.7 禁止文件访问时间
32.2 内核
32.3 Apache
32.4 MySQL
32.4.1 衡量关键字缓冲区的使用
32.4.2 使用查询缓存
32.4.3 其他调整
32.4.4 查询优化
32.5 阅读参考
第33章 命令行高级班
33.1 为什么使用Shell
33.2 基本命令
33.2.1 使用cat输出文件的内容
33.2.2 使用cd改变目录
33.2.3 使用chmod修改文件访问权限
33.2.4 使用cp复制文件
33.2.5 使用du输出磁盘使用情况
33.2.6 通过使用find查找文件
33.2.7 使用grep在输入中查找字符串
33.2.8 使用less为输出翻页
33.2.9 使用ln在文件间创建链接
33.2.10 使用locate通过索引查找文件
33.2.11 使用ls命令列出当前目录下的文件
33.2.12 使用man阅读用户手册页
33.2.13 使用mkdir创建目录
33.2.14 使用mv移动文件
33.2.15 使用ps列出进程
33.2.16 使用rm删除文件和目录
33.2.17 使用tail输出文件的最后一行
33.2.18 使用top输出资源利用率
33.2.19 使用which输出命令的位置
33.3 将命令组合使用
33.4 多终端
33.5 阅读参考
第34章 高级APT
34.1 使用Aptitude
34.2 dpkg后端
34.3 配置APT
34.4 阅读参考
第35章 内核和模块管理
35.1 Linux内核
35.1.1 Linux源代码树
35.1.2 内核的类型
35.2 管理模块
35.3 何时进行重新编译
35.4 内核版本
35.5 获得内核源代码
35.6 为内核打补丁
35.7 编译内核
35.7.1 使用xconfig配置内核
35.7.2 创建一个初始的RAM磁盘映像
35.8 当发生故障时
35.8.1 编译时的错误
35.8.2 运行时错误. 启动加载器问题和内核oops
35.9 阅读参考
第Ⅵ部分 附录
附录A Ubuntu和Linux的Internet资源
A.1 Web站点和搜索引擎
A.2 Usenet新闻组
A.3 邮件列表
A.4 Internet Relay Chat

Git之深入解析如何贮藏工作分支与清理工作目录

一、前言

二、贮藏工作

  • 为了演示贮藏,需要进入项目并改动几个文件,然后可以暂存其中的一个改动。如果运行 git status,可以看到有改动的状态:
$ git status
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

	modified:   index.html

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

	modified:   lib/simplegit.rb
  • 现在想要切换分支,但是还不想要提交之前的工作,所以贮藏修改。将新的贮藏推送到栈上,运行 git stash 或 git stash push:
$ git stash
Saved working directory and index state \\
  "WIP on master: 049d078 added the index file"
HEAD is now at 049d078 added the index file
(To restore them type "git stash apply")
  • 可以看到工作目录是干净的:
$ git status
# On branch master
nothing to commit, working directory clean
  • 此时,可以切换分支并在其他地方工作,我们的修改被存储在栈上。要查看贮藏的东西,可以使用 git stash list:
$ git stash list
stash@{0}: WIP on master: 049d078 added the index file
stash@{1}: WIP on master: c264051 Revert "added file_size"
stash@{2}: WIP on master: 21d80a5 added number to log
  • 在本例中,有两个之前的贮藏,所以接触到了三个不同的贮藏工作,可以通过原来 stash 命令的帮助提示中的命令将刚刚贮藏的工作重新应用:git stash apply。如果想要应用其中一个更旧的贮藏,可以通过名字指定它,像这样:git stash apply stash@{2}。 如果不指定一个贮藏,Git 认为指定的是最近的贮藏:
$ git stash apply
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

	modified:   index.html
	modified:   lib/simplegit.rb

no changes added to commit (use "git add" and/or "git commit -a")
  • 可以看到 Git 重新修改了当我们保存贮藏时撤消的文件。当尝试应用贮藏时有一个干净的工作目录,并且尝试将它应用在保存它时所在的分支,并不是必须要有一个干净的工作目录,或者要应用到同一分支才能成功应用贮藏。可以在一个分支上保存一个贮藏,切换到另一个分支,然后尝试重新应用这些修改。当应用贮藏时工作目录中也可以有修改与未提交的文件,如果有任何东西不能干净地应用,Git 会产生合并冲突。
  • 文件的改动被重新应用了,但是之前暂存的文件却没有重新暂存。想要那样的话,必须使用 --index 选项来运行 git stash apply 命令,来尝试重新应用暂存的修改。如果已经那样做了,那么将回到原来的位置:
$ git stash apply --index
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

	modified:   index.html

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

	modified:   lib/simplegit.rb
  • 应用选项只会尝试应用贮藏的工作,在堆栈上还有它,可以运行 git stash drop 加上将要移除的贮藏的名字来移除它:
$ git stash list
stash@{0}: WIP on master: 049d078 added the index file
stash@{1}: WIP on master: c264051 Revert "added file_size"
stash@{2}: WIP on master: 21d80a5 added number to log
$ git stash drop stash@{0}
Dropped stash@{0} (364e91f3f268f0900bc3ee613f9f733e82aaed43)
  • 也可以运行 git stash pop 来应用贮藏然后立即从栈上扔掉它。

三、贮藏的创意性使用

  • 有几个贮藏的变种可能也很有用,第一个非常流行的选项是 git stash 命令的 --keep-index 选项,它告诉 Git 不仅要贮藏所有已暂存的内容,同时还要将它们保留在索引中。
$ git status -s
M  index.html
 M lib/simplegit.rb

$ git stash --keep-index
Saved working directory and index state WIP on master: 1b65b17 added the index file
HEAD is now at 1b65b17 added the index file

$ git status -s
M  index.html
  • 另一个经常使用贮藏来做的事情是像贮藏跟踪文件一样贮藏未跟踪文件。默认情况下,git stash 只会贮藏已修改和暂存的已跟踪文件,如果指定 --include-untracked 或 -u 选项,Git 也会贮藏任何未跟踪文件。然而,在贮藏中包含未跟踪的文件仍然不会包含明确忽略的文件,要额外包含忽略的文件,请使用 --all 或 -a 选项。
$ git status -s
M  index.html
 M lib/simplegit.rb
?? new-file.txt

$ git stash -u
Saved working directory and index state WIP on master: 1b65b17 added the index file
HEAD is now at 1b65b17 added the index file

$ git status -s
$
  • 最终,如果指定了 --patch 标记,Git 不会贮藏所有修改过的任何东西,但是会交互式地提示哪些改动想要贮藏、哪些改动需要保存在工作目录中。
$ git stash --patch
diff --git a/lib/simplegit.rb b/lib/simplegit.rb
index 66d332e..8bb5674 100644
--- a/lib/simplegit.rb
+++ b/lib/simplegit.rb
@@ -16,6 +16,10 @@ class SimpleGit
         return `#{git_cmd} 2>&1`.chomp
       end
     end
+
+    def show(treeish = 'master')
+      command("git show #{treeish}")
+    end

 end
 test
Stash this hunk [y,n,q,a,d,/,e,?]? y

Saved working directory and index state WIP on master: 1b65b17 added the index file

四、从贮藏创建一个分支

  • 如果贮藏了一些工作,将它留在那儿了一会儿,然后继续在贮藏的分支上工作,在重新应用工作时可能会有问题。如果应用尝试修改刚刚修改的文件,会得到一个合并冲突并不得不解决它。如果想要一个轻松的方式来再次测试贮藏的改动,可以运行 git stash branch 以指定的分支名创建一个新分支,检出贮藏工作时所在的提交,重新在那应用工作,然后在应用成功后丢弃贮藏:
$ git stash branch testchanges
M	index.html
M	lib/simplegit.rb
Switched to a new branch 'testchanges'
On branch testchanges
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

	modified:   index.html

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

	modified:   lib/simplegit.rb

Dropped refs/stash@{0} (29d385a81d163dfd45a452a2ce816487a6b8b014)
  • 这是在新分支轻松恢复贮藏工作并继续工作的一个很不错的途径。

五、清理工作目录

  • 对于工作目录中一些工作或文件,想做的也许不是贮藏而是移除,git clean 命令就是用来干这个的。清理工作目录有一些常见的原因,比如说为了移除由合并或外部工具生成的东西,或是为了运行一个干净的构建而移除之前构建的残留。
  • 但是,需要谨慎地使用这个命令,因为它被设计为从工作目录中移除未被追踪的文件。如果改变主意,可能也不一定能找回来那些文件的内容,一个更安全的选项是运行 git stash --all 来移除每一样东西并存放在栈中。
  • 可以使用 git clean 命令去除冗余文件或者清理工作目录,使用 git clean -f -d 命令来移除工作目录中所有未追踪的文件以及空的子目录,-f 意味着“强制(force)”或“确定要移除”,使用它需要 Git 配置变量 clean.requireForce 没有显式设置为 false。
  • 如果只是想要看看它会做什么,可以使用 --dry-run 或 -n 选项来运行命令,这意味着“做一次演习然后告诉你将要移除什么”:
$ git clean -d -n
Would remove test.o
Would remove tmp/
  • 默认情况下,git clean 命令只会移除没有忽略的未跟踪文件,任何与 .gitignore 或其他忽略文件中的模式匹配的文件都不会被移除。如果也想要移除那些文件,例如为了做一次完全干净的构建而移除所有由构建生成的 .o 文件,可以给 clean 命令增加一个 -x 选项。
$ git status -s
 M lib/simplegit.rb
?? build.TMP
?? tmp/

$ git clean -n -d
Would remove build.TMP
Would remove tmp/

$ git clean -n -d -x
Would remove build.TMP
Would remove test.o
Would remove tmp/
  • 如果不知道 git clean 命令将会做什么,在将 -n 改为 -f 来真正做之前总是先用 -n 来运行它做双重检查。另一个小心处理过程的方式是使用 -i 或 “interactive” 标记来运行它,将会以交互模式运行 clean 命令,这种方式下可以分别地检查每一个文件或者交互地指定删除的模式。
$ git clean -x -i
Would remove the following items:
  build.TMP  test.o
*** Commands ***
    1: clean                2: filter by pattern    3: select by numbers    4: ask each             5: quit
    6: help
What now>
  • 在一种奇怪的情况下,可能需要格外用力才能让 Git 清理工作目录。如果恰好在工作目录中复制或克隆了其他 Git 仓库(可能是子模块),那么即便是 git clean -fd 都会拒绝删除这些目录。这种情况下,需要加上第二个 -f 选项来强调。

以上是关于深入解析Ubuntu操作系统的目录的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu 操作系统的目录结构

ubuntu 怎么知道安装的软件在哪个目录

Python Web:了解Ubuntu操作系统

ubuntu基本操作

ubuntu权限不够data目录下运行程序

linux Ubuntu操作系统的全部命令 附解释