程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 操作系统 - Linux

    • 基础操作
      • 1. 基础知识
        • 1.1 Linux系统的文件结构
        • 1.2 Linux系统命令行的含义
        • 1.3 CentOS和Ubuntu的区别
      • 2. 基础操作
        • 2.1 关闭系统
        • 2.2 关闭重启
        • 2.3 帮助命令(help)
        • 2.4 命令说明书(man)
        • 2.5 切换用户(su)
        • 2.6 普通用户获取root授权
        • 2.6.1 为普通用户配置 sudo 认证
        • 2.6.2 使用 sudo 执行命令
        • 2.7 修改 Linux 中的主机名
      • 3. 光标移动
    • 目录操作
    • 文件操作
    • 用户和权限管控
    • 打包和解压
    • 定时任务管理
    • 系统管理
    • 网络服务操作
    • 磁盘分区管理
    • 其他常用命令
  • 云服务器
  • 操作系统 - Linux
scholar
2024-01-22
目录

基础操作

前言

推荐的Linux 在线命令速查工具:在线命令速成工具 (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系统命令行的含义

image-20231210143044426

控制台中蓝色的表示目录,白色表示普通文件,绿色表示可执行文件,红色表示压缩包。 image-20231210205208066

  • 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 # 系统将在两分钟后关闭
1
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 # 系统将在两分钟后重启
1
2
3
4
  • shutdown -r now:立即重启系统。-r 选项表示重新启动(reboot)。
  • reboot:直接重启系统的命令,等同于 shutdown -r now。
  • shutdown -r 2:系统将在两分钟后重启。这里的 2 同样表示延迟时间(分钟)。

# 2.3 帮助命令(help)

在 Linux 中,如果你想快速了解一个命令的基本用法,可以使用 --help 选项。

# 查看 ifconfig 命令的用法
ifconfig --help
1
2
  • ifconfig --help:显示 ifconfig 命令的选项和用法。ifconfig 是用来配置、管理网络接口参数的工具。

# 2.4 命令说明书(man)

每个 Linux 命令都有一个详细的说明书(manual page),可以通过 man 命令访问。

# 查看 ls 命令的帮助手册
man ls
# 查看 netstat 命令的帮助手册
man netstat
# 打开命令说明后,可按 "q" 键退出
1
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
1
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的密码
1

2. 执行 visudo 命令:然后,使用 visudo 命令编辑 /etc/sudoers 文件。

visudo
1

3. 配置 sudo 权限:在 /etc/sudoers 文件的最后添加以下行来赋予特定用户 sudo 权限。

要授权的用户名 ALL=(ALL) NOPASSWD:ALL
1

这里,“要授权的用户名”应该替换为实际的用户名。这行配置的含义是:

  • 用户名:指定的用户将获得 sudo 权限。
  • ALL=(ALL) NOPASSWD:ALL:允许用户从任何主机(第一个 ALL)作为任何用户(第二个 ALL)执行任何命令(最后的 ALL),并且在执行 sudo 命令时不需要输入密码(NOPASSWD)。

4. 保存并退出:编辑完成后,保存文件并退出。在 vi 编辑器中,你可以通过键入 :wq 来完成这个操作。

image-20240327035954775

# 2.6.2 使用 sudo 执行命令

一旦完成配置,指定的普通用户就可以在命令前加上 sudo 来临时获取 root 权限了。

sudo <其他命令>
1

例如,更新系统软件包列表:

sudo apt update  # 对于基于Debian的系统
1

# 2.7 修改 Linux 中的主机名

在 Linux 系统中修改主机名需要 root 权限。你可以使用 hostnamectl 命令来设置新的主机名。

1. 查看当前主机名:

hostname
1

2. 修改主机名:使用 hostnamectl 命令设置新的主机名。需要替换 <新主机名> 为你想要的主机名。

sudo hostnamectl set-hostname <新主机名> # 需要root权限
1

这个命令立即生效,并且重启后依然有效。

# 3. 光标移动

  • Ctrl + A:将光标移动到命令行的开头。这是快速回到命令行起始位置的方法。
  • Ctrl + E:将光标移动到命令行的末尾。用于快速跳到命令行的结束位置。
  • Ctrl + 左箭头:向左跳转一个单词。这可以帮助你快速在命令行中移动,尤其是在编辑长命令时。
  • Ctrl + 右箭头:向右跳转一个单词。同样,这是快速在命令行文本中前进的一个快捷方式。
编辑此页 (opens new window)
上次更新: 2025/02/09, 11:07:17
目录操作

目录操作→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式