[Linux关键词]内建命令

希望你开心,希望你健康,希望你幸福,希望你点赞!

最后的最后,关注喵,关注喵,关注喵,大大会看到更多有趣的博客哦!!!

喵喵喵,你对我真的很重要!


内建命令

Linux 内建命令是指那些直接由操作系统核心提供,无需额外安装就可以在 Linux 环境下运行的基本命令。它们通常与 Linux 的系统管理、文件操作、网络管理等核心功能相关,例如 ls, cd, pwd, cat, mkdir 等。这些命令是 Bash 或其他 shell 环境默认支持的,不需要额外配置或第三方软件包就能使用。内建命令通常执行效率较高,因为它们是直接集成在内核或shell环境中的。


echo $?

在Linux系统中,echo $?是一个常用的命令行操作,它用于检查上一条命令的退出状态码(Return Code)。当你运行一个命令后,如果该命令成功执行,那么 $? 将显示0;如果命令执行失败, $? 就会显示相应的错误码,这个值通常是非零的。例如,如果你尝试运行一个不存在的命令,echo $?将返回一个非零值,表示命令执行出错。通过这种方式,你可以判断前一条命令是否成功完成。


进程僵尸

进程僵尸(Zombie Process),在计算机科学特别是操作系统中,是指那些已经结束但其父进程尚未通过wait()或waitpid()系统调用收集其退出状态的子进程。当一个子进程正常结束,它会产生一个退出状态,这个状态通常包含一些关于子进程结束原因的信息。如果父进程没有及时接收到这个信息并清除子进程的描述符,子进程就会变成僵尸进程。

僵尸进程不会占用额外的内存或CPU资源,但它会累积在系统中,增加系统资源管理的复杂性,因为每个僵尸进程都需要保留一份记录。此外,过多的僵尸进程可能会导致系统资源统计错误,因为它们虽然没有活动,但在计数上还是存在的。

正确的做法是,父进程应该定期检查是否有僵尸进程,一旦发现就调用wait()或waitpid()清理它们,以维护系统的健康和性能。


export

在Linux环境下,export是一个命令行工具,主要用于设置环境变量,并使其在当前shell会话以及所有由此启动的子shell中有效。当你在一个脚本中设置了某个环境变量,然后希望在后续的命令中也能访问到这个变量,可以使用export关键字。

例如,如果你在bash shell中运行:

Bash

export MY_VAR="some value"

那么,无论你在终端中执行多少次source那个脚本,或者是直接打开一个新的shell窗口,MY_VAR这个环境变量都会存在,并显示为"some value"。如果没有export,则默认该变量只在当前会话可见,新启动的shell将不会继承它的值。

另外,export还可用于导出函数或路径别名给其他用户,如:

Bash

export -f my_function export PATH=$PATH:/path/to/my/script

这样其他用户就可以直接使用my_function,并且他们的PATH也会包含你的自定义路径。


substr()

在C++中,substr()是一个标准库函数,它属于std::string类,用于提取字符串中的子串。这个函数的基本语法如下:

Cpp

std::string substr(size_type pos, size_type len = npos)

其中:

  • pos:起始位置(包含),从0开始计数,如果设置为npos,默认取字符串开头。
  • len:子串长度(可选)。如果不指定,表示一直提取到字符串的结尾。

例如,假设有一个字符串s,你可以这样获取它的前5个字符作为子串:

Cpp

std::string s = "Hello, World!"; std::string sub = s.substr(0, 5); // 子串为 "Hello"

如果省略第二个参数,substr会截取从给定位置到最后的全部字符:

Cpp

std::string tail = s.substr(7); // 子串为 "World!"

值得注意的是,如果起始位置超过字符串长度,或者长度大于剩余字符数,substr()将不会抛出异常,而是返回空字符串。


cd

cd 是Linux命令行中的一个常用操作符,全称为"change directory",即“改变目录”。当你在终端中输入cd后,通常需要跟上一个路径,它可以是你当前工作目录的一个相对路径,也可以是绝对路径。例如:

  • 如果你想移动到当前目录下的某个子目录,如cd Documents,这会使你进入名为"Documents"的目录。
  • 若要直接跳转到根目录,可以输入cd /
  • 如果你知道文件或目录的确切完整路径,比如 /home/user/Documents,则可以直接输入cd /home/user/Documents

通过cd命令,用户可以在Linux文件系统中导航并访问不同的目录。如果你不确定当前所在目录,可以使用pwd(print working directory)命令查看。


pwd

“pwd"是Linux和Unix系统中的一个命令,全称是"print working directory”,即打印工作目录或当前路径。当你在终端中输入"pwd"并回车后,它会显示你当前所在的文件夹路径,帮助用户了解他们正在操作的位置。这个命令非常实用,特别是在需要切换目录或者执行特定操作前确认位置的时候。


ll

在Linux系统中,“ll” 是 “ls -l” 的简写命令,它是一个用于查看文件和目录详细信息的命令行工具。“ls” 是列出(list)的基本命令,加上选项 “-l” 后,会显示出每个文件和目录的长格式列表,包括文件的权限、所有者、所属组、大小、修改时间、以及名称。这个长格式列表对于了解文件属性非常有用。

具体的信息展示如下:

  • 第一列:文件类型,比如 -d 表示目录, - 表示普通文件等。
  • 第二到第三列:用户和用户组的所有权。
  • 第四列:文件的权限,采用三位数字表示,每一位对应 rwx 权限。
  • 第五列:文件大小。
  • 第六列:月份和日期,再加上小时、分钟和秒,表明最后的修改时间。
  • 第七列:文件的名称或链接。

使用 “ll” 命令可以帮助用户更好地管理他们的文件系统,尤其是当需要查看文件属性时。


cat

“cat"是Linux系统中的一个命令行工具,全称是"concatenate”,意思是合并。它主要用于将两个或更多的文本文件内容连接在一起,并将其输出到标准输出(通常是终端),也可以用于查看单个文件的内容。当你在命令行输入cat filename.txt时,就相当于打开了并显示该文件的全部文本。如果省略文件名,则会从标准输入读取内容。


mkdir

mkdir 是 Linux 和 Unix 系统下的一个命令,全称为 “make directory” 或 “create directory”,主要用于创建新的目录。当你想要在文件系统中建立一个新的路径以便存储文件或组织文件夹时,就可以使用 mkdir 命令。例如,如果你想在一个特定的位置创建一个名为 “my_folder” 的新目录,你可以输入 mkdir my_folder。如果你需要指定权限或者递归创建多级目录,还可以添加相应的选项。


Makefile

Makefile是用于管理项目构建过程的工具,它定义了规则和指令,以实现编译、链接等步骤的自动化,从而大大简化了开发者的工作。以下是对Makefile的详细介绍:

一、基本概念

  1. 目标(Target):需要生成的文件,例如可执行文件。
  2. 依赖(Dependencies):生成目标所依赖的文件或目标。
  3. 命令(Commands):构建目标时需要执行的命令。

Makefile是make命令所读取的配置文件,包含了构建项目的规则。其主要作用是检查项目文件的依赖关系,自动执行必要的命令,从而更新目标文件。

二、基本语法

Makefile的基本语法由规则(rule)组成,基本格式如下:

 

makefile复制代码

target: dependencies
command
  • target:目标文件,可以是一个目标文件或一个动作名称(例如:all,clean)。
  • dependencies:生成目标所依赖的文件或其他目标。
  • command:构建目标的命令,必须以Tab键开头。

示例:

 

makefile复制代码

main.o: main.cpp
g++ -c main.cpp -o main.o

上述规则表示,当main.o文件不存在或main.cpp被修改后,执行命令g++ -c main.cpp -o main.o来生成main.o。

三、工作原理

make会根据Makefile中的规则,依次检查目标文件的时间戳和依赖文件的时间戳。如果依赖文件的时间戳比目标文件新,或者目标文件不存在,make就会执行对应的命令来更新目标文件。make会递归检查依赖关系,直到所有目标都更新完成。

四、变量

Makefile支持定义变量,可以简化重复的命令。变量的定义格式为:VARIABLE_NAME = value。在引用变量时使用$(VARIABLE_NAME)

示例:

 

makefile复制代码

CC = g++
CFLAGS = -Wall -g
main.o: main.cpp
$(CC) $(CFLAGS) -c main.cpp -o main.o

在上述例子中,使用变量$(CC)$(CFLAGS)来替代具体的编译器(g++)和编译选项(-Wall -g)。

五、自动化变量

Makefile还提供了一组自动化变量,这些变量在执行规则时会自动被设置为相应的值,从而方便引用当前规则相关的文件名、目录名等信息。

  • $@:代表当前规则的目标文件名。
  • $<:代表当前规则的第一个依赖文件名。
  • $^:代表当前规则的所有依赖文件的列表(去重)。
  • $+:代表当前规则的所有依赖文件的列表(保留重复文件)。
  • $*:代表当前规则的目标文件名去除后缀。

六、伪目标

伪目标(phony targets)并不是文件,而是一种命令名称,可以用于执行一些常见的操作,如清理构建文件。它们通常定义为:

 

makefile复制代码

.PHONY: clean
clean:
rm -f *.o main

在上述例子中,clean是一个伪目标,用于删除中间文件和可执行文件。

七、函数

Makefile函数是Makefile文件中的一种特殊语法,用于在构建过程中执行一些命令,并根据命令执行结果返回相应的值。Makefile函数可以用来定义变量、执行命令和进行条件判断等操作。Makefile函数有两种形式:内置函数和自定义函数。内置函数是由Make工具提供的一些预定义函数,如shell函数、subst函数、patsubst函数等。

八、应用案例

假设有如下文件:add.c、div.c、multi.c、sub.c和main.c,每个文件分别实现加法、除法、乘法、减法以及主程序。项目目录结构如下:

 

复制代码

project/
├── Makefile
├── add.c
├── div.c
├── sub.c
├── operations.h
└── main.c

Makefile文件内容可以如下编写:

 

makefile复制代码

app: add.o div.o multi.o sub.o main.o
gcc add.o div.o multi.o sub.o main.o -o app
add.o: add.c
gcc -c add.c -o add.o
div.o: div.c
gcc -c div.c -o div.o
multi.o: multi.c
gcc -c multi.c -o multi.o
sub.o: sub.c
gcc -c sub.c -o sub.o
main.o: main.c
gcc -c main.c -o main.o

运行指令make后,将依次编译各个源文件并链接生成可执行文件app。


希望你开心,希望你健康,希望你幸福,希望你点赞!

最后的最后,关注喵,关注喵,关注喵,大大会看到更多有趣的博客哦!!!

喵喵喵,你对我真的很重要!

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

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

相关文章

Qt 二进制文件的读写

Qt 二进制文件的读写 开发工具&#xff1a;VS2013 QT5.8.0 实例功能概述 1、新建项目“sample7_2binFile” 完成以上步骤后&#xff0c;生成以下文件&#xff1a; 2、界面设计 如何添加资源文件&#xff1a; 鼠标双击“***.qrc”文件 弹出以下界面&#xff1a; 点击 “Add F…

【AI视频抠图整合包及教程】开启视觉分割新纪元 —— Meta SAM 2

在数字化时代&#xff0c;Meta公司推出的SAM 2&#xff08;Segment Anything Model 2&#xff09;标志着图像和视频分割技术的一个新高度。SAM 2不仅继承了前代SAM模型的卓越性能&#xff0c;更在实时处理、视频分割、交互式提示等方面实现了重大突破。以下是SAM 2的全面营销文…

075_基于springboot的万里学院摄影社团管理系统

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍&#xff1a;CodeMentor毕业设计领航者、全网关注者30W群落&#xff0c;InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者&#xff0c;博客领航之星、开发者头条/腾讯云/AW…

502 错误码通常出现在什么场景?

服务器过载场景 高流量访问&#xff1a;当网站遇到突发的高流量情况&#xff0c;如热门产品促销活动、新闻热点事件导致网站访问量激增时&#xff0c;服务器可能会因承受过多请求而无法及时响应。例如&#xff0c;电商平台在 “双十一” 等购物节期间&#xff0c;大量用户同时…

[分享] SQL在线编辑工具(好用)

在线SQL编写工具&#xff08;无广告&#xff09; - 在线SQL编写工具 - Web SQL - SQL在线编辑格式化 - WGCLOUD

AI修图太牛了! | 换模特、换服装、换背景都如此简单!

前言 推荐一款我最近发现的AI工具&#xff0c;它就是最懂电商的千鹿AI&#xff0c;专门用来做电商产品图、场景图的&#xff0c;除此外还有AI修图、线稿上色、批量抠图等等超多图片处理工具。 本人也从事过电商行业&#xff0c;包括跨境电商&#xff0c;非常知道电商人的疾苦…

Java 多线程(七)—— 定时器

定时器介绍与使用 先简单介绍一下什么是定时器&#xff1a;定时器类似生活中的闹钟&#xff0c;当时间一到&#xff0c;我们就会去做某些事情。 在代码层面理解就是&#xff0c;当我们设置的时间一到&#xff0c;程序就会执行我们固定的代码片段&#xff08;也就是任务&#x…

谷歌新安装包文件形式 .aab 在UE4中的打包原理

摘要 本文学习了aab的基本概念以及UE4中产生aab的构建原理。 从官网了解基本概念 官网&#xff1a;Android Developers 1、什么是aab&#xff1f; .aab包形如&#xff1a; 2021年7月&#xff0c;在Google Play应用程序中&#xff0c;已经有数千个应用程序率先跟进了AAB格式。…

OpenCV视觉分析之运动分析(2)背景减除类:BackgroundSubtractorKNN的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 K-最近邻&#xff08;K-nearest neighbours, KNN&#xff09;基于的背景/前景分割算法。 该类实现了如 319中所述的 K-最近邻背景减除。如果前景…

Zypher Network Layer3 主网上线,“宝藏方舟”活动是亮点

前言 随着 Zytron Layer3 主网的上线&#xff0c;Zypher Network联合Linea共同推出了“宝藏方舟”活动&#xff0c;用户可通过参与活动&#xff0c;获得包括代币、积分、SBT等系列奖励。 Zypher Network 是一个以ZK方案为核心的游戏底层堆栈&#xff0c;其提供了一个具备主权…

C++20中头文件span的使用

<span>是C20中新增加的头文件&#xff0c;此头文件是containers库的一部分。包括&#xff1a; 1.模板类std::span&#xff1a;连续对象序列的非拥有视图(view)。std::span可以具有static extent&#xff0c;在这种情况下&#xff0c;序列中的元素数量在编译时已知并以typ…

探寻医疗行业人力资源管理系统优选方案

医疗机构管理日益重要&#xff0c;ZohoPeople HRMS助力医疗行业优化人力管理&#xff0c;提升效率。其涵盖智能排班、培训发展、合规保障、绩效管理等功能&#xff0c;支持全球化及远程协作&#xff0c;是医疗行业人力资源管理的有效工具。 一、医疗行业人力资源管理的复杂性 …

基于SpringBoot+Vue+uniapp微信小程序的社区门诊管理系统的详细设计和实现(源码+lw+部署文档+讲解等)

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

15.正则化——防止过拟合的有效手段

引言 在人工智能(AI)领域&#xff0c;尤其是在机器学习和深度学习中&#xff0c;正则化(regularization)具有非常重要的地位。它不仅是训练模型过程中不可或缺的一部分&#xff0c;也是提高模型性能的关键因素之一。此外&#xff0c;正则化还可以提升模型的泛化能力&#xff0…

产品如何实现3D展示?具体步骤如下

产品实现3D展示主要依赖于先进的3D建模与展示技术。以下是产品实现3D展示的具体步骤和方法&#xff1a; 一、3D建模 使用专业的3D建模软件&#xff0c;如Blender、Maya、3ds Max等&#xff0c;这些软件提供了丰富的建模工具和材质编辑器&#xff0c;能够创建出高精度的3D模型…

Flutter 12 实现双击屏幕显示点赞爱心多种动画(AnimationIcon)效果

本文主要是使用Flutter封装一个双击屏幕显示点赞爱心UI效果&#xff0c;并实现了爱心Icon 透明度、缩放、旋转、渐变等动画效果。 实现效果&#xff1a; 实现逻辑&#xff1a; 1、封装FavoriteGesture&#xff08;爱心手势&#xff09;实现双击屏幕显示爱心Icon&#xff1b; …

文件摆渡系统选型指南:如何找到最适合您的数据安全解决方案?

在当今数字化时代&#xff0c;数据的安全传输与共享已成为企业运营中不可或缺的一环。文件摆渡系统&#xff0c;作为实现数据在不同安全域之间高效、安全传输的重要工具&#xff0c;其选型直接关系到企业数据的安全性与业务效率。本文将为您详细介绍如何挑选最适合您企业的文件…

视频网站系统的设计与实现(论文+源码)_kaic

毕 业 设 计&#xff08;论 文&#xff09; 题目&#xff1a;视频网站系统 摘 要 使用旧方法对视频信息进行系统化管理已经不再让人们信赖了&#xff0c;把现在的网络信息技术运用在视频信息的管理上面可以解决许多信息管理上面的难题&#xff0c;比如处理数据时间很长&#…

为什么k8s不支持docker-kubernetes

为什么Kubernetes不再支持Docker&#xff1f; 在Kubernetes 1.20版本之后&#xff0c;Kubernetes宣布逐步停止对Docker作为容器运行时的支持。这一改变在容器管理领域引起了广泛关注。许多人不禁疑惑&#xff1a;Kubernetes与Docker一向密切合作&#xff0c;为何会做出这样的决…

骨传导耳机哪个品牌好?2024年五大热门精选骨传导耳机推荐

在当今快节奏的生活中&#xff0c;人们对于个人音频设备的需求不仅限于优质的音质体验&#xff0c;还越来越注重健康与舒适。骨传导耳机作为一种新兴的技术产品&#xff0c;以其独特的听觉传递方式——通过颞骨而非耳道传递声音——赢得了众多用户的青睐。这种技术不仅可以提供…