Linux笔记(1)| 常用命令

从今天起,我将陆续分享一些关于linux的学习笔记,这些笔记涵盖了从arm裸机到uboot移植、linux应用编程和网络编程,再到linux驱动开发。同时,也会穿插介绍stm32对一些小模块(如wifi、蓝牙模块等)的驱动开发。请持续关注!

今天我们将探讨Linux中常用的命令,掌握这些命令是进行Linux系统基本操作的关键。

在介绍命令之前,先介绍一下我们的实验平台。我们选择在Windows系统上安装VMware虚拟机,然后在虚拟机中安装Ubuntu系统。Linux有命令行模式和GUI模式,要进入命令行模式,只需右键点击并选择进入终端即可。

一、常用指令

1、ls命令

在讲解ls命令之前,先了解几个概念。

隐藏文件和非隐藏文件:在Windows中,可以通过属性设置让文件隐藏,而在Linux中,隐藏文件是以点(.)开头的文件。

相对路径和绝对路径:相对路径是从当前路径出发,到达某个位置。而绝对路径是从根目录出发,到达某个位置,在Linux中根目录是一个斜杠(/),因此以斜杠开头的就是绝对路径。

(1)ls(list,列表)

用途:以列表形式显示当前文件夹下所有文件。

ls -a显示所有文件,包括隐藏文件。

ls -l以详细信息显示。

ls -a -l、ls -l -a、ls -la、ls -al这四种方式都可以。

直接使用ls命令显示当前文件夹下的文件,但不包括隐藏文件。要显示隐藏文件,需要加上-a选项,而要查看详细信息,则需要加上-l选项。

Linux笔记(1)| 常用命令在详细信息中,我们可以看到前面的10个字符,这些字符是有意义的。第一个字符表示文件类型:

表示普通文件,包括文本文件和二进制文件,如a.c、1.txt、a.out都是普通文件。

d 表示文件夹,d是directory的缩写。

l 表示符号连接文件,后面会用->打印出它指向的文件。

s 表示socket文件。

p 表示管道文件pipe。

后面的9个字符表示文件的属性,每三个字符为一组。第一组表示文件属主的权限,第二组表示属主所在组的权限,第三组表示其他组的权限。(Linux是多用户系统,很多系统都是多用户的,Windows也是)

其中,r表示可读,w表示可写,x表示可执行,-表示无权限。

通过这些字符,我们可以了解文件的属性或权限。

(2) cd(change directory,更改目录)

用途:用于切换目录。

涉及到相对路径和绝对路径。

cd ..表示上一级目录。

.表示当前目录。

cd用于跳转到你需要去的地方,例如cd /abc/def/。

(3) pwd(print work directory,打印工作目录)

用途:打印当前的绝对路径。

(4) mkdir(make directory,创建文件夹)

用途:创建空文件夹。

mkdir -p用于级联创建文件夹。

(5) mv(move,移动)

用途:在目录间移动文件,重命名文件。

mv 源文件路径名 目标文件路径名。

(6) touch

用途:创建空文件。

touch 路径名。

Get笔记 Get笔记

Get笔记,一款AI驱动的知识管理产品

Get笔记 125 查看详情 Get笔记

(7) cp(copy,复制)

用途:复制文件或文件夹。

cp 源文件路径名 目标文件路径名。

cp -r用于复制文件夹。

cp -f用于强制复制。

实际操作中,通常使用cp -f复制文件,cp -rf复制文件夹。

(8) rm(remove,去除,删除)

用途:删除文件或文件夹。

rm 文件路径名。

rm -r 文件夹路径名。

(9) cat

用途:直接在命令行下显示文件内容。

也可以用来向文件输入,暂时不详细讨论。

(10)rmdir(remove directory,删除文件夹)

用途:删除空文件夹。

rmdir和rm -r的区别:rmdir只能删除空文件夹,而rm -r可以删除空文件夹和非空文件夹。

(11) ln(link,连接文件)

基础:在Windows中,快捷方式实际上是与其指向的文件独立的两个文件,两个都占用硬盘空间,但访问快捷方式的效果等同于访问指向的文件。

Linux中有两种连接文件:

一种是软连接(符号连接),相当于Windows中的快捷方式。

一种是硬连接。

创建软连接文件:ln -s 源文件名 符号连接文件名。

例如:ln -s src.c linker.c,linker.c就是src.c的一个符号连接文件。

注意:这里的源文件名只能是当前文件夹下的,而符号连接名可以在其他目录下。否则会出现错误。

硬连接:ln 源文件名 连接文件名。

硬连接实际上与源文件在硬盘中是同一个东西,效果类似于硬盘上的一个文件,在文件系统上看起来像是多个文件。每次删除一个文件时,只要它还有其他硬连接存在,这个文件就不会被真正删除。只有当所有连接文件都删除后,这个文件才会被真正从硬盘上删除。

(12) man

用途:查询man手册,获取帮助信息。这类似于某些软件的help功能,用于查询一些指令的用法,或者是API函数,或者是C库函数。

man 1 ls表示查询的是Linux命令。

man 2 xxx表示查询的是Linux API。

man 3 xxx表示查询的是C库函数。

注意:在man手册中查询时,退出按Q键(Q是quit的缩写)。

(12) apt-get

用途:在Ubuntu中用于在线安装、卸载软件的程序。

apt-get install vim。

apt-get remove vim。

注意,安装和卸载都是在线进行的,因此Ubuntu必须能上网才能使用apt-get。还要注意的是,安装或卸载程序需要在管理员模式(root)下进行,其他用户可能会没有权限。(关于如何切换用户等内容将在后面说明)

以上就是Linux笔记(1)| 常用命令的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/606901.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月10日 23:06:50
下一篇 2025年11月10日 23:08:01

相关推荐

  • 怎样用C++实现文件分块读写 大文件分片处理技术详解

    处理大文件时,c++++推荐使用“文件分块读写”方式以节省内存并提升io效率。1. 分块读取时应以二进制模式打开文件,定义固定大小缓冲区,循环使用read()函数逐块读取,并通过gcount()判断实际读取字节数及是否到达末尾;2. 分块写入时可先写入临时文件,确认完整后再重命名替换原文件,同时注意…

    2025年12月18日 好文分享
    000
  • C++状态模式如何管理状态 使用有限状态机的实现方法

    有限状态机在c++++中通过定义状态接口、创建具体状态类、实现上下文类和管理状态转换逻辑来实现状态模式。1. 定义状态接口或基类,声明通用方法如handleinput()和getcolor();2. 创建具体状态类,继承接口并实现各自行为;3. 创建上下文类,持有当前状态并处理状态切换;4. 实现状…

    2025年12月18日 好文分享
    000
  • C++如何实现备忘录模式 C++备忘录模式的设计

    备忘录模式是一种保存和恢复对象状态的设计模式,其核心在于通过备忘录类存储对象状态,发起人类负责创建和恢复状态,管理者类用于管理多个备忘录。1. 使用模板实现通用备忘录类,避免类型限制;2. 采用智能指针(如 std::shared_ptr)管理内存,防止内存泄漏;3. 注意深拷贝对象状态,确保备忘录…

    2025年12月18日 好文分享
    000
  • C++如何监控文件变化?文件系统观察者模式

    在c++++中监控文件变化的实现方法有三种:windows平台使用readdirectorychangesw、linux平台使用inotify、跨平台可使用boost或第三方库。具体步骤如下:1. windows下通过createfile打开目录并调用readdirectorychangesw监听目…

    2025年12月18日 好文分享
    000
  • C++跨模块异常传递安全吗 动态链接库异常处理注意事项

    跨模块抛异常需谨慎处理,主要原因包括:1.编译器差异导致兼容性问题,不同编译器或设置可能导致异常无法被捕获,建议避免跨模块抛自定义异常,改用返回码和错误描述;2.动态链接库导出函数时异常规范不一致可能引发崩溃,建议在接口层隔离异常并使用返回值传递错误;3.标准库异常也可能因stl实现版本不同而失效,…

    2025年12月18日 好文分享
    000
  • C++中结构体与类的性能差异 对比内存布局和访问效率

    结构体和类在c++++中的性能差异通常可以忽略不计。1. 内存布局默认相同,但内存对齐、虚函数、继承等因素会影响实际布局,进而可能影响性能;2. 虚函数会引入虚函数表指针(vptr),增加对象大小并降低调用效率;3. 继承会包含基类成员变量,多重继承使布局更复杂;4. 空基类优化(ebo)可减少内存…

    2025年12月18日 好文分享
    000
  • C++17结构化绑定怎么应用 多返回值解构与元组处理实践

    c++++17结构化绑定是一种语法糖,用于将聚合类型(如数组、结构体、std::tuple等)的成员解包为独立变量。1. 其核心语法是auto [变量1, 变量2, …] = 表达式;,适用于解构std::pair和std::tuple、结构体与类、以及数组;2. 它显著提升代码可读性与…

    2025年12月18日 好文分享
    000
  • 如何实现数组的深拷贝 memcpy与循环赋值的效率比较

    深拷贝数组的关键在于使新旧数组在内存中完全独立。1. 对于基本类型数组,可用 memcpy 或循环赋值实现;2. memcpy 适用于连续内存块复制,效率高且代码简洁,但不适用于含指针或嵌套结构的数据;3. 循环赋值适合需特殊处理的结构体字段,可控性强,可确保深层数据也被复制;4. 具体选择取决于数…

    2025年12月18日 好文分享
    000
  • C++中如何使用多文件编程_多文件项目组织技巧分享

    c++++多文件编程的核心在于模块化,通过将大型项目拆分为多个头文件(.h)和源文件(.cpp)来提升可读性、可维护性和可重用性;为避免重复定义错误,应使用头文件卫士(header guards)、inline关键字、extern声明全局变量、命名空间避免冲突以及pimpl惯用法隐藏实现细节;头文件…

    2025年12月18日 好文分享
    000
  • C++怎么进行性能分析 C++性能分析工具的使用指南

    c++++性能分析的核心意义在于找出代码中的性能瓶颈并加以优化。它不仅提升程序运行效率,还帮助开发者深入理解代码和算法,在资源受限的环境中尤为重要。常见工具包括gprof(适合快速定位瓶颈)、perf(功能强大但复杂)、valgrind(用于内存泄漏检测)、intel vtune amplifier…

    2025年12月18日 好文分享
    000
  • C++如何保证文件操作的原子性 事务性文件操作设计模式

    c++++实现文件操作的原子性和事务性可通过多种方法。1. 临时文件+重命名:先写入临时文件,完成后原子性重命名替换原文件,确保失败时原文件不受影响;2. 日志+回滚:记录操作前状态,失败时根据日志恢复,适用于多文件事务;3. copy-on-write:修改文件副本并在确认无误后替换原文件,适合小…

    2025年12月18日 好文分享
    000
  • STL排序算法如何选择最佳方案 sort stable_sort partial_sort区别

    普通排序首选std::sort,适用于完整排序且不关心相等元素顺序的情况,平均时间复杂度o(n log n),不稳定;2. 保持稳定顺序用std::stable_sort,适合需保留相同元素原始顺序的场景,如多字段排序,时间复杂度接近o(n log n);3. 只取前k个值时使用std::parti…

    2025年12月18日 好文分享
    000
  • C++动态数组如何创建?讲解new和delete的使用

    c++++动态数组的创建是通过new在堆上分配连续内存空间,并用指针指向首地址,使用delete[]释放内存。主要步骤为:1. 分配内存:使用new运算符分配指定大小的内存块,如int* arr = new int[size];2. 释放内存:使用delete[] arr释放内存,并建议将指针置为n…

    2025年12月18日 好文分享
    000
  • 怎样避免STL容器的常见陷阱 迭代器失效与深浅拷贝问题解析

    理解stl容器的常见陷阱需掌握迭代器失效场景与深浅拷贝区别。1. 迭代器失效发生在容器结构变化时,如vector插入删除中间元素导致后续迭代器失效,正确做法是使用erase返回的新迭代器。2. 浅拷贝复制指针而非内存,易引发double free错误,应手动实现深拷贝或使用智能指针自动管理内存。3.…

    2025年12月18日 好文分享
    000
  • C++桥接模式如何应用于跨平台开发 平台相关实现的分离技巧

    桥接模式的核心思想是分离两个独立变化的维度,即功能层次结构与实现层次结构。其核心在于通过抽象接口与具体实现的解耦,使它们各自演化而不相互干扰。例如在图形库中支持多种形状和平台时,避免类数量指数增长的问题。分离平台相关实现的方法包括:定义platform接口并由各平台实现;application持有p…

    2025年12月18日 好文分享
    000
  • C++中内存重叠问题怎么处理 memmove与memcpy的安全使用场景

    在c++++中处理内存重叠问题应优先使用memmove而非memcpy。1. memcpy假设源和目标内存区域不重叠,若发生重叠,其行为未定义,可能导致数据损坏或程序崩溃;2. memmove通过判断源和目标区域的相对位置,选择从前往后或从后往前复制,确保重叠区域的数据正确复制;3. 若能确定内存区…

    2025年12月18日 好文分享
    000
  • 如何用C++实现简易图片查看器 读取并显示BMP格式图片

    要使用c++++编写一个简易图片查看器读取并显示bmp格式图片,需理解bmp文件结构并通过win32 api绘图。1.了解bmp文件结构,包括文件头、信息头、调色板(可选)和像素数据;2.在c++中使用ifstream读取头部信息,并处理图像上下颠倒问题;3.通过win32 api创建窗口并在wm_…

    2025年12月18日 好文分享
    000
  • 模板中auto作为返回类型 推导返回类型与decltype(auto)区别

    auto和dec++ltype(auto)在c++中的主要区别在于类型推导方式。1. auto会忽略表达式的引用和const属性,返回值为副本;2. decltype(auto)保留原始表达式的类型信息,包括引用和const。例如,auto get_value()返回int,而decltype(au…

    2025年12月18日 好文分享
    000
  • C++ map和unordered_map有什么区别 红黑树与哈希表的性能对比分析

    map基于红黑树实现,保证有序性,适用于需要有序遍历的场景;unordered_map基于哈希表实现,追求平均情况下的快速查找,适用于对性能要求高且不关心顺序的场景。1.map的插入、删除、查找时间复杂度为o(log n),内存占用较小,支持有序遍历;2.unordered_map平均时间复杂度为o…

    2025年12月18日 好文分享
    000
  • C++中堆和栈内存有什么区别 分析自动存储与动态存储的特性差异

    在c++++中,栈用于自动变量,生命周期由编译器自动管理;堆用于动态分配的内存,需程序员手动控制申请和释放。1. 栈内存速度快、容量有限、生命周期受作用域限制,适合小对象和局部变量;2. 堆内存灵活但需手动管理,容量更大,适合大对象或不确定生命周期的数据;3. 使用栈应避免定义大数组或返回局部变量指…

    2025年12月18日 好文分享
    000

发表回复

登录后才能评论
关注微信