基础操作
前言
推荐的Linux 在线命令速查工具:https://wangchujiang.com/linux-command/ (opens new window)
# 1. 基础知识
# 1.1 Linux系统的文件结构
提示
Linux 系统的文件结构是层次化的,所有的文件和目录都从根目录(/
)开始。这种结构类似于一棵倒置的树,根目录是这棵树的根部,而其他的目录和文件则分布在树的各个分支上。Linux 文件系统的这种设计使得文件和目录的组织非常清晰,并且易于管理。下面是一些 Linux 系统中常见的顶级目录及其所代表的含义:
/bin
:存放基本的用户命令的二进制文件,如 ls、cp 等,这些命令对所有用户都是可用的。/boot
:包含启动 Linux 系统所需的文件,如内核文件、引导加载程序(GRUB 或 LILO)的配置文件等。/dev
:设备文件的存放地。在 Linux 中,设备被视为文件,这些设备文件代表系统中的硬件设备,比如硬盘、键盘、显示器等。/etc
:系统配置文件的存放目录。这里包含了启动脚本、设备挂载点信息、网络配置文件等。/home
:用户的主目录。每个普通用户在系统中都有一个对应的目录,在/home
下以用户名命名。/lib
:系统库文件和内核模块的存放位置。这些库文件支持/bin
和/sbin
目录下的二进制文件的执行。/media
:可移动媒体设备的挂载点,如 CD-ROMs、USB 驱动器等。/mnt
:临时挂载文件系统的目录。系统管理员经常使用这个目录来挂载文件系统。/opt
:可选的应用软件包的安装位置。一些第三方应用程序可能会安装在这里。/proc
:一个虚拟的文件系统,包含了系统运行时的信息,如系统内存、设备配置等。它不占用硬盘空间,因为它直接在内存中生成。/root
:系统管理员(root 用户)的主目录,与普通用户的主目录 (/home/username
) 不同。/sbin
:存放系统管理员使用的系统管理程序。这些命令如 fdisk、sysctl 等,通常只有 root 用户才能执行。/tmp
:用于存放临时文件的目录。系统和用户都可以在这里创建临时文件。/usr
:用户的二级程序、库和文档的存放地。这个目录通常包含子目录如/usr/bin
、/usr/lib
、/usr/local
等。/var
:包含经常变化的文件,如日志文件、邮件队列等。
# 1.2 Linux系统命令行的含义
控制台中蓝色的表示目录,白色表示普通文件,绿色表示可执行文件,红色表示压缩包。
Linux 下有两种用户:管理员(root)、普通用户。
管理员:可以在 Linux 下做任何事情,不受限制。
普通用户:在 Linux 下做有限的事情。
管理员的命令提示符是 "
#
",普通用户的命令提示符是 "$
"。例如:(
yao@app00:/root$
,表示使用用户"yao"访问/root文件夹)
# 1.3 CentOS和Ubuntu的区别
CentOS 和 Ubuntu 是两种流行的 Linux 发行版,它们在管理和运维领域广泛使用,但由不同的组织支持和维护:
- CentOS:由 CentOS 项目社区维护,是基于 Red Hat Enterprise Linux (RHEL) 构建的。它提供免费的社区支持,并且注重稳定性和安全性,通常在服务器环境中较为常见。CentOS 使用
yum
作为其包管理器,直到 CentOS 8 之前一直如此,在 CentOS 8 中引入了dnf
。 - Ubuntu:由 Canonical 公司维护,提供了商业支持和付费服务。Ubuntu 以用户友好和易用性而闻名,适合桌面用户和初学者,同时也在服务器和云计算领域有广泛应用。Ubuntu 使用
apt
作为其包管理器,方便软件的安装、更新和管理。
两者在一些命令和配置文件上有所不同,反映了它们不同的设计哲学和目标用户群。例如,系统服务的管理(systemctl
在两者上都适用,但是细节和配置可能略有不同),包管理器的使用(CentOS 中的 yum
/dnf
与 Ubuntu 中的 apt
),以及默认安装的软件包和工具链。选择哪一个取决于用户的具体需求、偏好以及对系统稳定性、支持和社区资源的考虑。
# 2. 基础操作
# 2.1 关闭系统
关闭 Linux 系统有几种方式,最直接的是使用 shutdown
命令或 poweroff
。
# 立刻关机
shutdown -h now # 或者使用 poweroff
# 两分钟后关机
shutdown -h 2 # 系统将在两分钟后关闭
2
3
4
shutdown -h now
:立即关闭系统。-h
选项意味着 halt,即停止所有进程并关闭系统。poweroff
:另一种立即关闭系统的命令,等同于shutdown -h now
。shutdown -h 2
:系统将在两分钟后关闭。这里的2
表示延迟时间(分钟)。
# 2.2 关闭重启
与关闭系统类似,重启 Linux 系统也有几种命令可以使用。
# 立刻重启
shutdown -r now # 或者使用 reboot
# 两分钟后重启
shutdown -r 2 # 系统将在两分钟后重启
2
3
4
shutdown -r now
:立即重启系统。-r
选项表示重新启动(reboot)。reboot
:直接重启系统的命令,等同于shutdown -r now
。shutdown -r 2
:系统将在两分钟后重启。这里的2
同样表示延迟时间(分钟)。
# 2.3 帮助命令(help)
在 Linux 中,如果你想快速了解一个命令的基本用法,可以使用 --help
选项。
# 查看 ifconfig 命令的用法
ifconfig --help
2
ifconfig --help
:显示ifconfig
命令的选项和用法。ifconfig
是用来配置、管理网络接口参数的工具。
# 2.4 命令说明书(man)
每个 Linux 命令都有一个详细的说明书(manual page),可以通过 man
命令访问。
# 查看 ls 命令的帮助手册
man ls
# 查看 netstat 命令的帮助手册
man netstat
# 打开命令说明后,可按 "q" 键退出
2
3
4
5
man ls
:打开ls
命令的手册页。ls
用于列出目录内容。man netstat
:打开netstat
命令的手册页。netstat
是网络统计的工具。- 在查看手册页时,可以按
q
键退出阅读器回到命令行。
# 2.5 切换用户(su)
在 Linux 系统中,su
(substitute user 或 switch user)命令允许你切换当前用户身份到另一个用户。这对于执行需要不同权限的任务非常有用。使用这个命令时,你可以选择是否加载目标用户的环境变量,这通常通过 -
选项来指定。
# 切换到用户"yao"并加载其环境变量
su - yao # 输入后回车,需要输入用户"yao"的密码
# 退出当前用户并返回上一个用户
exit # 或使用快捷键 Ctrl+d
2
3
4
su - yao
:这条命令切换当前的用户身份到 "yao"。-
选项指示su
加载 "yao" 用户的登录环境,包括设置环境变量等,使得切换后的环境与直接登录该用户时的环境相似。如果省略-
,则不会加载用户的环境变量,可能会导致一些路径或权限问题。exit
或 Ctrl+d:这些操作允许你从当前切换的用户退出,回到原来的用户身份。
用户切换的权限
- 从 root 用户切换到其他用户:当你以 root 用户身份运行时,可以无需密码直接切换到任何用户。这是因为 root 用户拥有系统上的最高权限。
- 从普通用户切换到其他用户:如果你是以普通用户身份运行,想切换到另一个用户(包括 root 用户),那么你需要输入目标用户的密码。这一要求确保了系统的安全性,防止未授权的用户切换到具有更高权限的用户身份。
# 2.6 普通用户获取root授权
在 Linux 系统中,sudo
命令允许普通用户以 root 用户或其他用户的身份执行命令,提供了一种安全的权限提升机制。不过,并非所有用户默认都能使用 sudo
。为了让一个普通用户能够使用 sudo
来执行命令,需要进行适当的配置。
# 2.6.1 为普通用户配置 sudo 认证
要为普通用户配置 sudo 权限,需要编辑 /etc/sudoers
文件。这个文件控制着哪些用户和组可以使用 sudo
命令,以及他们可以执行哪些命令。直接编辑这个文件比较危险,因为错误的配置可能导致系统无法获取 root 权限。因此,推荐使用 visudo
命令来编辑,因为它会检查语法错误。
1. 切换到 root 用户:首先,你需要以 root 用户登录或切换到 root 用户。
su - # 如果需要,输入root的密码
2. 执行 visudo 命令:然后,使用 visudo
命令编辑 /etc/sudoers
文件。
visudo
3. 配置 sudo 权限:在 /etc/sudoers
文件的最后添加以下行来赋予特定用户 sudo 权限。
要授权的用户名 ALL=(ALL) NOPASSWD:ALL
这里,“要授权的用户名”应该替换为实际的用户名。这行配置的含义是:
- 用户名:指定的用户将获得 sudo 权限。
- ALL=(ALL) NOPASSWD:ALL:允许用户从任何主机(第一个 ALL)作为任何用户(第二个 ALL)执行任何命令(最后的 ALL),并且在执行 sudo 命令时不需要输入密码(NOPASSWD)。
4. 保存并退出:编辑完成后,保存文件并退出。在 vi
编辑器中,你可以通过键入 :wq
来完成这个操作。
# 2.6.2 使用 sudo 执行命令
一旦完成配置,指定的普通用户就可以在命令前加上 sudo
来临时获取 root 权限了。
sudo <其他命令>
例如,更新系统软件包列表:
sudo apt update # 对于基于Debian的系统
# 2.7 修改 Linux 中的主机名
在 Linux 系统中修改主机名需要 root 权限。你可以使用 hostnamectl
命令来设置新的主机名。
1. 查看当前主机名:
hostname
2. 修改主机名:使用 hostnamectl
命令设置新的主机名。需要替换 <新主机名>
为你想要的主机名。
sudo hostnamectl set-hostname <新主机名> # 需要root权限
这个命令立即生效,并且重启后依然有效。
# 3. 光标移动
- Ctrl + A:将光标移动到命令行的开头。这是快速回到命令行起始位置的方法。
- Ctrl + E:将光标移动到命令行的末尾。用于快速跳到命令行的结束位置。
- Ctrl + 左箭头:向左跳转一个单词。这可以帮助你快速在命令行中移动,尤其是在编辑长命令时。
- Ctrl + 右箭头:向右跳转一个单词。同样,这是快速在命令行文本中前进的一个快捷方式。