文章目录

  • **Linux 常用命令与 Shell 简介**
    • **Shell 简介**
      • **什么是 Shell?**
      • **Shell 的工作原理**
      • **常见 Shell 类型**
      • **命令行基础**
        • **Tab 补全与通配符**
    • **Linux 常用命令**
      • **1. 入门必备命令**
        • **1.1 寻求帮助 - `man` 命令**
        • **1.2 用户间切换 - `su` 命令**
        • **1.3 特权命令 - `sudo`**
      • **2. 文件操作常用命令**
        • **2.1 显示当前目录与改变目录**
        • **2.2 列出目录内容 - `ls` 命令**
        • **2.3 创建目录 - `mkdir` 命令**
        • **2.4 移动、复制和删除文件**
        • **2.5 查看文件内容 - `cat`, `more`, `less` 命令**
        • **2.6 编辑文件 - `vim` 编辑器**
        • **2.7 文件权限管理 - `chmod`, `chown`, `chgrp` 命令**
        • **2.8 创建文件链接 - `ln` 命令**
      • **3. 查找和定位常用命令**
        • **3.1 查找文件 - `find` 命令**
        • **3.2 快速定位文件 - `locate` 命令**
        • **3.3 查找文件内容 - `grep` 命令**
      • **4. 开启 Linux 编程之旅**
        • **4.1 编译 C 程序 - `gcc` 命令**
        • **4.2 编译 C++ 程序 - `g++` 命令**
      • **总结**

Linux 常用命令与 Shell 简介

Linux 是一个开源操作系统,以其高效性、稳定性和强大的命令行工具而受到开发者和系统管理员的青睐。作为一名 Linux 用户,熟悉并掌握基本的 Shell 命令是必不可少的。本文将详细介绍 Linux 中常用的 Shell 命令、Shell 的基本概念以及如何通过 Shell 完成各种操作任务。

Shell 简介

什么是 Shell?

Shell 是一个命令行界面(CLI)工具,它是用户与操作系统之间的桥梁。通过 Shell,用户可以直接输入命令,并且这些命令被传递到操作系统内核执行。Shell 的作用不仅仅是命令解释器,它还是一个功能强大的脚本语言,可以用于自动化系统管理任务。Linux 系统通常配备有多个不同类型的 Shell,最常用的 Shell 是 Bash,即 Bourne Again Shell,它是基于传统的 Bourne Shell (sh)发展而来的。

Shell 是交互式的,它可以响应用户输入,并根据这些输入执行不同的操作。Linux 的 Shell 允许用户进行各种操作,包括文件管理、进程控制、系统管理等。

Shell 的工作原理

Shell 的工作原理非常简单,用户通过命令行界面(CLI)向 Shell 提交命令,Shell 会解释这些命令并将其传递给操作系统的内核。操作系统执行命令后,将结果返回给 Shell,Shell 会将结果显示给用户。这一过程大致分为以下几步:

  1. 用户输入命令:用户在命令行界面输入命令,按下回车键。
  2. 命令解释执行:Shell 解析命令,并通过系统调用将命令传递给操作系统内核。
  3. 输出结果:操作系统执行命令后,将执行结果返回给 Shell,Shell 将结果输出到屏幕。

常见 Shell 类型

在 Linux 系统中,有几种常见的 Shell 类型,它们各具特色,适用于不同的需求。以下是几种常见的 Shell 类型:

  • Bash(Bourne Again Shell):Bash 是最常用的 Shell 类型,功能强大且广泛应用。它支持编写脚本,且是大多数 Linux 发行版的默认 Shell。
  • Zsh(Z Shell):Zsh 是一种增强型 Shell,支持智能补全、更丰富的语法高亮和插件系统,适合开发者和高级用户使用。Zsh 提供了比 Bash 更高的生产力。
  • Tcsh(Tenex C Shell):Tcsh 是 C Shell 的一种增强版本,它的语法与 C 语言类似,适合那些熟悉 C 语言编程的用户。
  • Fish(Friendly Interactive Shell):Fish 是一种友好的交互式 Shell,自动补全和高亮功能非常强大,且不需要复杂的配置。

命令行基础

Linux 命令行界面是与用户交互的主要方式。命令行可以用来执行命令、管理文件、处理文本以及控制系统。

在 Linux 中,我们通常会看到两种命令提示符:

  • $:表示普通用户的命令提示符。
  • #:表示 root 用户的命令提示符,root 用户拥有系统管理员权限,能够执行任何操作。

在命令行中,## 被视为注释的开始,后面的内容不会被执行。注释对于脚本编写非常重要,能帮助用户理解代码的功能。值得注意的是,Linux 命令行是区分大小写的,因此在输入命令时要特别小心。例如,lsLS 是两个不同的命令,大小写不同的命令可能有不同的功能。

Tab 补全与通配符

Linux 命令行支持多种提高输入效率的技巧,其中 Tab 补全通配符 是最常用的功能之一。

  • Tab 键补全:按 Tab 键可以自动补全文件名、目录名或命令。这样可以减少错误的发生,并加快输入速度。例如,如果你输入 cd /ho,按下 Tab 键后,它会自动补全为 cd /home/

  • 通配符:通配符用于匹配文件名,可以快速选择多个文件或目录。Linux 中有几种常用的通配符:

    • *:匹配任意长度的字符。例如,ls *.txt 会列出所有以 .txt 结尾的文件。
    • ?:匹配一个字符。例如,ls file?.txt 会列出文件名为 file1.txtfile2.txt 等的文件。
    • []:匹配方括号内的任意字符。例如,ls file[a-c].txt 会列出文件名为 filea.txtfileb.txtfilec.txt 的文件。

这些技巧使得命令行操作更加高效和便捷。


Linux 常用命令

1. 入门必备命令

1.1 寻求帮助 - man 命令

Linux 系统中的 man 命令是查看命令帮助文档的工具,它为每个命令提供了详细的使用说明。通过 man 命令,用户可以查看命令的语法、参数以及使用示例。

用法

man [命令]

例如,查看 ls 命令的帮助文档:

man ls

man 页通常包括以下内容:

  • NAME:命令的名称和简短描述。
  • SYNOPSIS:命令的语法格式。
  • DESCRIPTION:命令的详细描述。
  • OPTIONS:命令的可用选项。
  • EXAMPLES:命令的使用示例。

man 页中,用户可以使用 JK 键进行上下滚动,按空格键翻页,按 Q 键退出。

1.2 用户间切换 - su 命令

su(Switch User)命令用于切换到其他用户,特别是切换到 root 用户。root 用户具有系统管理权限,能够执行系统范围内的操作。

用法

su [用户名]

例如,切换到 root 用户:

su

切换到其他用户(例如 xiaohu):

su martin

注意:在某些 Linux 发行版(如 Ubuntu)中,root 用户是禁用的,无法直接使用 su 切换到 root。这时需要使用 sudo 来获取管理员权限。

1.3 特权命令 - sudo

sudo(Super User Do)命令是 Linux 系统中用来执行特权操作的命令。通过 sudo,普通用户可以在需要管理员权限的操作中临时获取 root 权限。

用法

sudo [命令]

例如,以管理员身份删除文件:

sudo rm test.txt

sudo 提供了更高的安全性,因为它记录每个命令的执行,同时可以限制特定用户的权限。


2. 文件操作常用命令

2.1 显示当前目录与改变目录
  • pwd:显示当前工作目录的完整路径。

用法

pwd
  • cd:改变当前工作目录。cd 命令可以用来在文件系统中导航,支持相对路径和绝对路径。

用法

cd [目录路径]

常见的目录导航方式:

  • cd ~:进入用户的主目录。
  • cd ..:返回上级目录。
  • cd /:进入根目录。
2.2 列出目录内容 - ls 命令

ls 命令用于列出当前目录下的文件和子目录。ls 命令可以加上一些选项,定制显示内容。

常用选项

  • -F:在文件名后添加标识符(如 / 表示目录,* 表示可执行文件)。
  • -a:显示所有文件,包括隐藏文件(以 . 开头的文件)。
  • -l:显示文件的详细信息,如权限、所有者、大小等。

用法

ls -l
2.3 创建目录 - mkdir 命令

mkdir 是用于创建目录的命令。它可以创建一个或多个目录,甚至可以递归创建多级目录。在创建目录时,如果父目录不存在,mkdir 会返回错误;如果希望同时创建父目录,必须使用 -p 选项。

用法

mkdir [目录名]

例如:

mkdir new_directory
  • -p 选项:如果父级目录不存在,创建父级目录。

例如:

mkdir -p /home/user/docs/project

该命令将创建 /home/user/docs/project 目录,同时也会创建其父目录 /home/user/docs,如果这些目录不存在。

2.4 移动、复制和删除文件
  • mv:用于移动文件或目录,也可以用于重命名文件。

用法

mv source_file destination

例如,将 file1.txt 移动到 /home/user/documents/ 目录:

mv file1.txt /home/user/documents/

如果目标是一个目录,文件会被移动到该目录;如果目标是一个文件名,则会重命名源文件。

  • cp:用于复制文件或目录。

用法

cp source_file destination

例如,将 file1.txt 复制到 /home/user/documents/ 目录:

cp file1.txt /home/user/documents/
  • rm:用于删除文件或目录。需要小心使用,尤其是在管理员权限下。

用法

rm file.txt

常用选项:

  • -r:递归删除目录及其中的内容。
  • -f:强制删除文件,不进行提示。

例如,删除一个目录及其中的所有文件:

rm -r /home/user/docs
2.5 查看文件内容 - cat, more, less 命令
  • cat:用于一次性查看文件的全部内容。适合查看小文件,若文件很大,建议使用分页工具(如 moreless)。

用法

cat file.txt
  • more:分页查看文件内容。适用于文件内容较多的情况。按空格键翻页,按回车键滚动一行,按 Q 退出。

用法

more file.txt
  • less:与 more 类似,但更加灵活,支持向前翻页,且可以使用搜索功能。

用法

less file.txt
2.6 编辑文件 - vim 编辑器

vim 是 Linux 上最常用的文本编辑器之一,功能强大,适用于编写和编辑脚本、配置文件等。vimvi 编辑器的增强版,提供了更多的功能,如语法高亮、自动缩进等。

启动 vim

vim filename
  • 模式vim 有两种基本模式:

    • 命令模式:用于执行命令,如保存文件、搜索、复制、删除等。
    • 插入模式:用于编辑文件内容,输入文本。

常用操作

  • i:进入插入模式,在光标所在位置插入文本。
  • Esc:退出插入模式,返回命令模式。
  • :w:保存文件。
  • :q:退出 vim
  • :wq:保存并退出 vim
  • /search:在文件中搜索指定的文本。
  • u:撤销操作。
  • yy:复制一行。
  • dd:删除一行。
  • p:粘贴剪切或复制的内容。
2.7 文件权限管理 - chmod, chown, chgrp 命令

Linux 系统中每个文件和目录都有与之关联的权限。文件的权限可以通过 chmodchownchgrp 命令进行修改。

  • chmod:用于更改文件或目录的权限。权限包括读(r)、写(w)和执行(x)权限。

用法

chmod [权限] [文件/目录]

常见的权限模式:

  • r:读权限,允许读取文件内容。
  • w:写权限,允许修改文件内容。
  • x:执行权限,允许执行文件。

示例:

chmod +x file.sh  # 添加执行权限
chmod 755 file.sh  # 设置文件权限为 rwxr-xr-x
  • chown:用于改变文件或目录的所有者。

用法

chown owner:group [文件/目录]

例如,修改文件 file.txt 的所有者为 user,组为 group

chown user:group file.txt
  • chgrp:用于修改文件或目录的所属组。

用法

chgrp group [文件/目录]
2.8 创建文件链接 - ln 命令

ln 命令用于创建文件的链接,有两种类型的链接:硬链接和软链接(符号链接)。

  • 硬链接:硬链接是指多个文件名指向同一个物理文件。删除其中一个链接不会影响其他链接。

用法

ln source_file link_name
  • 软链接:软链接类似于 Windows 中的快捷方式。软链接会指向原始文件,如果原始文件删除,软链接将无法访问。

用法

ln -s source_file link_name

例如:

ln -s /home/user/file.txt /home/user/link_to_file

3. 查找和定位常用命令

3.1 查找文件 - find 命令

find 是一个非常强大的命令,用于在指定目录及其子目录中查找文件。find 命令支持通过多种条件(如文件名、修改时间、大小等)进行筛选。

用法

find [路径] -name [文件名]

例如,查找当前目录下所有以 .txt 结尾的文件:

find . -name "*.txt"

find 命令支持多种条件,例如:

  • -type f:查找普通文件。
  • -type d:查找目录。
  • -mtime -n:查找最近 n 天内修改的文件。
3.2 快速定位文件 - locate 命令

locate 命令通过查询预先建立的文件数据库,快速查找文件的位置。locate 的速度非常快,但它依赖于一个定期更新的数据库,因此可能不会显示最近创建的文件。

用法

locate [文件名]

例如:

locate file.txt
3.3 查找文件内容 - grep 命令

grep 命令用于查找文件中的指定字符串。它支持正则表达式,可以非常灵活地进行文本搜索。

用法

grep "pattern" [文件名]

例如,查找文件中所有包含 “error” 的行:

grep "error" log.txt

grep 支持多种选项,如:

  • -r:递归查找目录及其子目录中的文件。
  • -i:忽略大小写。
  • -v:反向查找,即显示不匹配的行。

4. 开启 Linux 编程之旅

4.1 编译 C 程序 - gcc 命令

gcc(GNU Compiler Collection)是 Linux 系统上用于编译 C 语言程序的标准工具。通过 gcc,用户可以将 C 语言源代码编译为可执行文件。

用法

gcc [源文件] -o [可执行文件]

例如,将 hello.c 编译为可执行文件 hello

gcc hello.c -o hello

运行编译后的程序:

./hello
4.2 编译 C++ 程序 - g++ 命令

g++ 是 GNU 提供的 C++ 编译器,它可以将 C++ 语言源代码编译为可执行文件。g++gcc 非常相似,但 g++ 会自动链接 C++ 标准库。

用法

g++ [源文件] -o [可执行文件]

例如,将 hello.cpp 编译为可执行文件 hello

g++ hello.cpp -o hello

总结

通过这篇详细的博客,我们已经覆盖了 Linux 系统中常用的 Shell 命令和基本操作。无论是在日常的文件管理、用户权限控制,还是在编程开发、查找文件方面,Linux 提供了丰富的命令和工具来满足各种需求。掌握这些常用命令和技巧,可以帮助我们更加高效地使用 Linux 系统,提升工作效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/83658.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/83658.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/83658.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于51单片机的超声波智能避障小车仿真

目录 具体实现功能 设计介绍 资料内容 全部内容 资料获取 具体实现功能 (1)超声波实时测量小车与障碍物间的距离,并用LCD1602显示。 (2)当测得的距离超过50时,前进电机转动(模拟后轮&#…

AIGC工具平台-GPT-SoVITS-v4-TTS音频推理克隆

声音克隆与语音合成的结合,是近年来生成式AI在多模态方向上的重要落地场景之一。随着预训练模型能力的增强,结合语音识别、音素映射与TTS合成的端到端系统成为初学者可以上手实践的全流程方案。 围绕 GPT-SoVITS-v4-TTS 模块,介绍了其在整合…

Android7 Input(十)View 处理Input事件pipeline

概述: 本文主要描述View对InputEvent事件pipeline处理过程。 本文涉及的源码路径 frameworks/base/core/java/android/view/ViewRootImpl.java InputEvent事件处理 View处理input事件是调用doProcessInputEvents方法,如下所示: void doProcessInputEvents() {//…

Neo4j 完全指南:从入门到精通

第1章:Neo4j简介与图数据库基础 1.1 图数据库概述 传统关系型数据库与图数据库的对比图数据库的核心优势图数据库的应用场景 1.2 Neo4j的发展历史 Neo4j的起源与演进Neo4j的版本迭代Neo4j在图数据库领域的地位 1.3 图数据库的基本概念 节点(Node)与关系(Relat…

网心云 OEC/OECT 笔记(1) 拆机刷入Armbian固件

目录 网心云 OEC/OECT 笔记(1) 拆机刷入Armbian固件网心云 OEC/OECT 笔记(2) 运行RKNN程序 外观 内部 PCB正面 PCB背面 PCB背面 RK3566 1Gbps PHY 配置 OEC 和 OECT(OEC-turbo) 都是基于瑞芯微 RK3566/RK3568 的网络盒子, 没有HDMI输入输出. 硬件上 OEC 和 OECT…

摄像机ISP处理流程

1.Bayer:生成raw图,添加色彩数据(RGB),一般会将G的占比设置为R和B的和,实例: 2.黑电平矫正:减去暗电流造成的误差; 3.镜头矫正:对四周的亮度进行矫正&#x…

【后端架构师的发展路线】

后端架构师的发展路线是从基础开发到技术领导的系统性进阶过程,需融合技术深度、架构思维和业务洞察力。以下是基于行业实践的职业发展路径和关键能力模型: 一、职业发展阶梯‌ 初级工程师(1-3年)‌ 核心能力‌:掌…

Unity VR/MR开发-VR开发与传统3D开发的差异

视频讲解链接:【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili

RabbitMQ如何保证消息可靠性

RabbitMQ是一个流行的开源消息代理,它提供了可靠的消息传递机制,广泛应用于分布式系统和微服务架构中。在现代应用中,确保消息的可靠性至关重要,以防止消息丢失和重复处理。本文将详细探讨RabbitMQ如何通过多种机制保证消息的可靠…

批量图片管理软件介绍

软件介绍 本文介绍一款功能全面的图片处理软件 - FastStone Image Viewer。 软件功能概述 FastStone Image Viewer不仅支持图片查看,还具备编辑、批量重命名和批量转换等多种实用功能。 用户授权说明 该软件对个人用户完全免费,企业用户只需输入用户…

Playwright 测试框架 - Java

🚀【Playwright + Java 实战教程】从零到一掌握自动化测试利器! 🔧 本文专为 Java 开发者量身打造,通过详尽示例带你快速掌握 Playwright 自动化测试。涵盖基础操作、表单交互、测试框架集成、高阶功能及常见实战技巧,适用于企业 UI 测试与 CI/CD 场景。 🛠️ 一、环境…

nvidia系列教程-Usb otg模式修改为host模式

目录 前言 一、了解 USB OTG 模式与 Host 模式 二、host模式切换 总结 前言 在 NVIDIA 设备的使用过程中,有时我们需要将 USB OTG(On-The-Go)模式切换为 Host 模式,以满足连接外部设备(如 U 盘、鼠标、键盘等)的需求。本文将详细介绍如何在 NVIDIA 设备上进行这一模式…

二叉树-104.二叉树的最大深度-力扣(LeetCode)

一、题目解析 这里需要注意根节点的深度是1,也就是说计算深度的是从1开始计算的 二、算法原理 解法1:广度搜索,使用队列 解法2:深度搜索,使用递归 当计算出左子树的深度l,与右子树的深度r时,…

Calendar类日期设置进位问题

背景 报表需求,需要传递每组数据中最小的日期,后台根据传递的最小日期,向前取参数传递的月份的上个月为结束时间的近五个月数据 例:参数传:2025/02,则需返回2025/01, 2024/12, 2024/11, 2024/10, 2024/09这五个年月数据…

编程笔记---问题小计

编程笔记 qml ProgressBar 为什么valuemodel.progress / 100 在QML中,ProgressBar的value属性用于表示进度条的当前进度值,其范围通常为0到1(或0%到100%)。当使用model.progress / 100来设置value时,这样做的原因是为…

【STL】函数对象+常用算法

文章目录 STL- 函数对象函数对象函数对象使用 谓词一元谓词二元谓词内建函数对象算术仿函数关系仿函数 STL- 常用算法常用遍历算法for_eachtransform 常用查找算法findfind_ifadjacent_findbinary_searchcountcount_if 常用排序算法sortrandom_shufflemergereverse 常用拷贝和替…

[JVM] JVM内存调优

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…

Spring Boot 从Socket 到Netty网络编程(下):Netty基本开发与改进【心跳、粘包与拆包、闲置连接】

上一篇:《Spring Boot 从Socket 到Netty网络编程(上):SOCKET 基本开发(BIO)与改进(NIO)》 前言 前文中我们简单介绍了基于Socket的BIO(阻塞式)与NIO(非阻塞式&#xff0…

python编写赛博朋克风格天气查询程序

工具介绍 这个天气查询工具是一个基于 Python 的桌面应用程序,使用了tkinter库来创建图形用户界面(GUI),并通过requests库调用 Open - Meteo API 获取天气数据。它具有赛博朋克风格的界面设计,提供了当前天气信息、15 天天气预报以及详细的天气数据展示,同时还包含温度趋…

从二叉树到 STL:揭开 set 容器的本质与用法

前言: 上次介绍完二叉搜索树后,更新中断了一段时间,先向大家致歉。最近学习状态有些起伏,但我正在努力调整,相信很快会恢复节奏。今天我们继续深入探讨——关联容器,它在算法和工程中都非常常见和重要。 1…