Ubuntu 是一个基于 Debian 的 Linux 发行版,旨在提供简单易用的操作系统。2004 年,由南非企业家 Mark Shuttleworth 创建,以用户友好和开源软件为目标。
1. 用户友好性
Shuttleworth 的目标之一是提供易于使用和理解的操作系统。专注于桌面用户体验,并通过简单的图形用户界面和易于理解的默认设置来确保新手和普通用户能够轻松使用 Ubuntu。
2. 免费和开源
Ubuntu 开源: 可以免费使用。为个人用户、企业以及教育机构提供一个稳定、安全且免费的操作系统。
Ubuntu 社区驱动 : 有庞大的社区贡献者和开发人员网络。社区为软件包的开发、维护和支持提供了重要的贡献。
3. 版本发布周期
Ubuntu 采用了明确的版本发布周期,通常每六个月发布新版本,并提供长期支持(LTS)版本。LTS 版本通常每两年发布一次,为用户提供更长时间的支持和更新。
注: 长期支持(LTS)版本是指在发布后更长时间的技术支持和维护周期。在 LTS 版本发布后,用户将获得更长时间的更新和安全补丁,一般是 5 年支持期。支持周期越长越有助于企业和组织在更长时间内保持系统的稳定性和安全性。这样的支持周期有助于企业和组织在更长时间内保持系统的稳定性和安全性。
过去这些年,Ubuntu 不断扩展其功能和服务,包括增强安全性、改善用户体验、优化性能,并积极响应新技术的发展。Ubuntu 的目标是为用户提供一个功能齐全、易于使用和高度可定制的操作系统。
目录名称的由来有些是历史遗留,有些则是为了提高系统的组织性和管理性而创建的。
/bin(Binary):存放基本系统命令,其名称来源于“二进制”。在Unix系统中,二进制文件一般是可执行文件。
/boot:存放引导系统所需的文件,包括启动加载程序和内核等。是系统启动时第一个被访问的目录。
/etc(Editable Text Configuration):目录包含系统配置文件,名称源自“可编辑的文本配置”,因为大多数文件都是文本文件,可以用文本编辑器修改。
/home:用户主目录的基础目录。名称直接指向用户的家(home)目录,每个用户在这里有一个独立的文件夹。
/lib 和 /lib64:存放着系统和程序所需的共享库文件。名称“库”(library)源自于程序库的概念,提供程序运行所需的功能和支持。
/mnt(Mount):用于挂载其他文件系统的目录。名称指的是挂载(mount)其他设备或分区到文件系统中。
/opt(Optional):目录一般用于存放第三方软件的安装。名称源自“可选”(optional),表示存放的软件是额外添加的并非系统默认的。
/proc(Process)和 /sys(System):这两个目录是虚拟文件系统,提供关于系统内核和运行进程的信息。名称直接指向“进程”和“系统”。
/root:这是root用户的主目录,名称表示系统管理员的根目录。
/sbin(System Binaries):类似于/bin,存放系统管理员和root用户使用的系统管理命令。名称来自于“系统二进制文件”。
/tmp(Temporary):存放临时文件的目录。名称直接指向“临时”(temporary)文件的存放地。
/usr(Unix System Resources):包含大部分用户安装的应用程序、文件和文档。名称源自“Unix系统资源”。
/var(Variable):包含经常变化的文件,如日志文件、缓存文件和临时文件等。名称来自“可变”(variable)的文件,因为这里面的文件是动态变化的。
/dev (Device):目录包含设备文件,用于表示系统中存在的硬件设备。在Unix系统中,“一切皆文件”,因此硬件设备也以文件的形式存在于/dev目录下,例如硬盘、打印机、键盘等设备都通过文件来表示和访问。
/srv(Service):目录用于存放系统服务的相关数据。通常,一些服务(比如Web服务器、FTP服务器等)会将其数据存储在/srv目录下。例如,一个网站的相关文件可以放置在/srv/www目录中,使其与服务本身分离,方便管理和维护。
这些命名既有历史传承,也反映了为更好地组织和管理文件系统而采用的逻辑命名。
基础命令对于了解导航文件系统、管理文件和目录,以及处理权限至关重要。
常用基础命令和功能:
文件系统导航:
ls
: 列出目录中的内容。cd
: 更改目录。pwd
: 显示当前工作目录的路径。示例:
ls # 列出当前目录的内容
ls /dev/ # 列出指定目录的内容
cd /dev/ # 进入指定目录
cd # 进入用户主目录
pwd # 显示当前工作目录的路径
文件和目录管理:
mkdir
: 创建目录。touch
: 创建空文件或更新文件的访问和修改时间戳。cp
: 复制文件或目录。mv
: 移动文件或目录,也用于重命名文件和目录。rm
: 删除文件或目录。示例:
mkdir new_directory # 创建一个名为“new_directory”的目录
touch new_file.txt # 创建一个名为“new_file.txt”的空文件
cp file1.txt file2.txt # 复制 file1.txt 到 file2.txt
mv file1.txt new_dir/ # 移动 file1.txt 到 new_dir/ 目录
mv old_file.txt new_name.txt # 重命名文件
rm unwanted_file.txt # 删除 unwanted_file.txt
rm -r unwanted_directory # 递归删除目录及其内容
权限管理
在 Linux 中,文件和目录的权限由三个主要部分组成:所有者权限、群组权限和其他用户权限。
ls -l
命令显示文件的详细权限信息。
chmod: 修改文件或目录的权限。使用数字或符号来更改文件权限
# 使用数字表示法更改权限
chmod 755 file.txt
# 使用符号表示法更改权限
chmod u=rwx,g=rw,o=r file.txt
chown: 更改文件或目录的所有者和/或群组。例如,chown user:group file.txt
将 file.txt
的所有者更改为 user
,群组更改为 group
。
# 更改所有者和群组
chown user:group file.txt
sudo: 允许普通用户以超级用户的身份运行特定命令。使用 sudo
可以暂时获取管理员权限执行特权命令。
# 以超级用户权限执行命令
sudo apt-get update
介绍文件内容查看和编辑(cat, less, vim)、压缩和解压缩(tar, zip, unzip)以及搜索命令(grep, find)。
当涉及文件操作时,以下是一些在 Ubuntu 中常用的命令:
cat
: 显示文件内容。less
: 分页查看文件内容。vim
: 文本编辑器。示例:
cat filename.txt # 显示文件内容
less filename.txt # 分页查看文件内容
vim filename.txt # 使用 Vim 编辑文件
tar
: 创建和解压 tar 归档。zip
: 创建 zip 压缩文件。unzip
: 解压 zip 文件。示例:
tar -cvf archive.tar file1 file2 # 创建 tar 归档
tar -xvf archive.tar # 解压 tar 归档
zip -r archive.zip folder # 创建 zip 压缩文件
unzip archive.zip # 解压 zip 文件
grep
: 在文件中搜索匹配的内容。find
: 在指定路径下查找文件。示例:
grep "pattern" filename.txt # 在文件中搜索匹配的内容
find /path/to/search -name "filepattern" # 在指定路径下查找文件
在 Ubuntu 中,apt
是一个强大的软件包管理工具,可以轻松地安装、更新和删除软件包。
更新软件包
sudo apt update
这个命令将更新本地软件包列表,使系统了解可用更新的软件包版本。
安装软件包
sudo apt install package_name
用于安装指定的软件包。将 package_name
替换为要安装的软件包名称。
卸载软件包
sudo apt remove package_name
从系统中卸载指定的软件包,但保留其配置文件。
卸载软件包及其配置文件
sudo apt purge package_name
从系统中卸载指定的软件包,并移除其配置文件。
升级已安装的软件包:
sudo apt upgrade
升级已安装的软件包,将现有的软件包版本更新到最新可用的版本。
以上命令提供基本的软件包管理功能,需要以管理员权限(sudo
)运行这些命令。
系统管理:包括用户管理(adduser, userdel, passwd)、进程管理(ps, kill, top)、服务管理(systemctl)和网络配置(ifconfig, ping, netstat)等命令。
在 Ubuntu 中,系统管理命令是进行基本系统任务和配置的关键。
adduser
: 添加新用户。userdel
: 删除用户。passwd
: 更改用户密码。示例:
sudo adduser newuser # 添加新用户
sudo userdel olduser # 删除用户
sudo passwd username # 更改用户密码
ps
: 显示当前进程的状态。kill
: 终止指定的进程。top
: 显示系统资源和进程信息。示例:
ps aux # 显示所有进程
kill PID # 杀死指定进程
top # 实时显示系统资源和进程信息
systemctl
: 管理系统服务。示例:
sudo systemctl start service_name # 启动服务
sudo systemctl stop service_name # 停止服务
sudo systemctl restart service_name # 重启服务
sudo systemctl status service_name # 查看服务状态
sudo systemctl enable service_name # 设置服务开机自启动
ifconfig
: 显示和配置网络接口信息。ping
: 测试与另一个主机的连接。netstat
: 显示网络连接、路由表和网络接口信息。示例:
ifconfig # 显示网络接口信息
ping google.com # 测试与 Google 的连接
netstat -tuln # 显示监听端口和连接信息
基本的 Shell 脚本编写,包括变量、条件语句、循环和函数。
编写 Shell 脚本帮助自动化任务和处理操作系统任务。
变量
在 Shell 脚本中,使用变量来存储数据,并在需要时引用。
示例:
# 定义变量
name="John"
age=30
# 使用变量
echo "My name is $name and I am $age years old."
条件语句
使用条件语句(if...else
)在脚本中进行条件判断。
示例:
age=25
if [ $age -gt 18 ]; then
echo "You are an adult."
else
echo "You are not an adult."
fi
循环
Shell 脚本支持不同类型的循环,比如 for
和 while
循环。
示例:
# For 循环
for i in {1..5}; do
echo "Count: $i"
done
# While 循环
count=0
while [ $count -lt 5 ]; do
echo "Count: $count"
((count++))
done
函数
定义函数来组织和重复使用代码块。
示例:
# 定义函数
greet() {
echo "Hello, $1!"
}
# 调用函数
greet "Alice"
其他工具:介绍一些其他常用的命令和工具,例如 ssh, scp, rsync 等。
当涉及 Linux 系统管理时,有一些其他常用的命令和工具可以派上用场:
SSH(Secure Shell): 用于远程登录到其他计算机或服务器的协议和工具。ssh
命令用于通过终端远程连接到其他主机。
ssh username@remote_host
SCP(Secure Copy): 在本地系统和远程系统之间安全地复制文件和目录。
使用 scp
命令将文件从本地系统复制到远程系统,或者从远程系统复制到本地系统。
# 从本地复制到远程
scp /path/to/local/file username@remote_host:/path/to/destination
# 从远程复制到本地
scp username@remote_host:/path/to/remote/file /path/to/destination
find: 用于搜索文件和目录。可以通过多种条件和选项来查找文件。
find /path/to/search -name "filename"
awk 和 sed: 用于处理文本数据。awk
是一种强大的文本处理工具,而 sed
是一种流编辑器,用于对文本进行替换、删除等操作。