linux学习笔记(1)----基础知识

news2024/11/28 16:26:52

1.linux用户

ubuntu有三种用户:

1)初次创建的用户

2)root用户

3)普通用户

linux用户记录在etc/passwd这个文件内

linux用户密码在etc/shadow这个文件内

2.linux用户组

为了方便管理,将用户进行分组,这样就可以设置非本组人员不能访问某些文件。每个用户可以属于多个不同的组。

用户:家里有多个家庭成员,但是每个人都有自己的私人空间,别人不可以去乱翻

用户组:每个家庭成员却有公共的活动区域,例如:厨房,客厅......

每个用户都有自己的ID,叫做:UID。

每个用户组都有自己的ID,叫做:GID。

用户组查看命令为:/etc/group

3.图形化创建用户和用户组 

 4.创建并执行.c文件

步骤:

1.gedit hello.c

2.gcc hello.c -o hello

3../hello

查看当前的文件权限: ls hello -l            修改文件的权限:chmod 权限 hello  

修改文件的用户及用户组 chown      sudo chown  xxx  xxx  文件名

5.vim编辑器

vim 打开文本文档,  输入 “a,A”进入编辑模式

退出按一下 Esc,输入:wq,退出保存文档【Esc:文档进入一般模式】

:wq---保存退出       :q---退出              :q!---不保存退出     :w---保存

cat 文本文档: 显示当前的文档内容

6.linux  c编程

建立c_project文件夹 ,打开修改vim的设置,将tab设置为4位,并且显示行号

输入下面两行的代码进行修改,然后保存退出

 编辑 main.c

运行结果: 

 

 2)多文件c编程

创建了main.c tool1.c,tool1.h

main.c

 tool1.c

 tool1.h

 使用命令  gcc main.c tool1.c -o main   进行编译,生成main文件

结果:

优化: 在多个文件的情况下,如果修改一个文件,则需要进行全部的重新编译,非常麻烦

使用 gcc- c 文件.c   进行文件的编译,后续只需要执行这个修改文件的代码,然后链接就行了

进一步优化:使用Makefile

将所有的编译和链接放在makefike文件中

然后使用命令make

结果:

可以使用 make  clean删除生成的链接文件

7.Makefile基本语法:

注意:每条命令的开头一定是tab开头的,不可以是空格。【会为每个以tab为命令的开启一个shell命令】。

1.#makefile变量的使用

  1 objects = main.o tool1.o
  2 main: $(objects)
  3     gcc -o main$(objects)

 2.

1)赋值符“=”【为最后被指定的】

 13 name = ms
 14 curname = $(name)
 15 name = olss
 16 
 17 print:
 18     @echo curname: $(curname)
 19 

 结果:

 2)“:=”将当前指定的数值进行赋值

 13 name = ms
 14 curname := $(name)
 15 name = olss
 16 
 17 print:
 18     @echo curname: $(curname)
 19 
v

结果:

3)"?="当前变量未赋值,则将等号后面的赋值给变量

 13 name = ms
 14 curname := zzk
 15 curname ?= kkk
 16 name = olss
 17 
 18 print:
 19     @echo curname: $(curname)

结果:

 

4)"+="将等号后面的加在变量的后面

8.shell脚本

 1)使用vim命令创建一个shell脚本文件,然后使用chmod命令将shell脚本文件权限打开。

 2)接收键盘变量

read:读取接收变量

结果:

3)shell脚本的数值计算

4)test命令

test命令用于查看当前文件是否存在,权限等信息,可以进行数值,字符,文件三方面的测试。

&&和||命令:

cmd1&&cmd2 当 cmd1 执行完并且正确,那么cmd2 开始执行,如果cmd1 执行完毕错误,那么cmd2不执行

cmd1 || cmd2 当cmd1 执行完毕并正确,那么cmd2不执行,反之cmd2 执行。

 5)$0,1.....的用法

$0 : Shell本身的文件名
$! : Shell最后运行的后台进程PID
$$ : 当前脚本运行的进程PID
$? : 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
$* : 所有参数列表。如"$*“用双引号引起来的情况、以”$1 $2 … $n"的形式输出所有参数,此选项参数可超过9个
$@ : 所有参数列表。如"$@“用双引号引起来的情况、以”$1" “$2” … “$n” 的形式输出所有参数
$# : 添加到Shell的参数个数
$- : 显示shell使用的当前选项,与set命令功能相同
$1~$n :添加到Shell的各参数值。$1是第1参数、$2是第2参数…

 结果:

 6)if  else 语句

格式: 

if [条件判断] ;then

//条件成立的事件

elif 条件判断[];then

//条件成立的事件

 else

//条件成立的事件

fi

7)case语句

格式:

case $变量 in

        "第一个变量的内容")

                程序段

                ;;

        "第二个变量的内容")

                程序段

                ;;

        "第n个变量的内容")

                程序段

                ;;

esac

结果:

 8)shell脚本函数

shell脚本也支持函数,函数的写法如下:

function fname(){

        //函数代码段

}

 结果:

 9)shell----while循环

结果:

 10)for 循环语句

格式1:

for  var in con con1 con2

do 

      循环语句

done

  

结果: 

 

 格式2:

for((初始值,限制值,执行步长))          //两个括号

do

     //循环代码段

done

 

结果:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

.NET Native AOT的静态库与动态库

.NET不仅可以使用 C静态库与动态库,也可以将.NET实现的函数导出为C静态库与动态库。在没有Native Aot之前,.NET只能通过P/Invoke享受C/C生态,而在Native Aot之后,不仅可以享受这些生态,还可以开发SDK供其他语言调用。 …

多层、六边形、洋葱和clean架构简介

想想回到过去的美好时光,根本没有所谓架构,那些日子是多么幸福啊,只有了解 GoF 模式,你就能称自己为架构师。 然而,计算机变得更加强大,用户的需求增加,导致应用程序的复杂性增加。 开发人员解决…

一场内容生产的革命 :从PGC、UGC到AIGC

1 概念解读 1.1 什么是PGC? PGC 是指专业生成内容(Professional Generated Content),是由专业的内容创作者或团队进行创作、编辑和发布的内容。PGC创作方式起源于传统媒体时代,如报纸、杂志、电视和电影等&#xff0…

低代码技术在各大行业中的应用探讨

随着低代码开发平台的兴起,越来越多的企业开始探索和采用这一技术,以加速应用程序的开发和数字化转型。低代码开发平台的优势在于简化和加速开发过程,降低了技术门槛,使得非专业开发人员也能参与应用程序的创建。在本篇文章中&…

Linux下挂载NFS服务

描述:在Linux下把文件挂在到Linux开发板中实现文件共享 准备步骤:Ubuntu和一块Linux开发板 网络环境:确保在同一个网段:例如192.168.1.226 和192.168.3.226 是不同的网段 NFS介绍 网络文件系统,英文 Network File …

Linux上安装和使用SSH工具

文章目录 前言一、安装SSH Server1. 安装ssh安装包2. 启动ssh3. 设置ssh开机启动 二、 检查SSH状态三、备注 前言 SSH(Secure Shell,安全外壳)是一种网络安全协议,通过加密和认证机制实现安全的访问和文件传输等业务,…

MySQL 的全局锁、表锁和行锁

在前一篇文章我讲了下 MySQL 的全局锁、表记锁和行级别锁,其中行级锁只提了概念,并没有具体说。 因为行级锁加锁规则比较复杂,不同的场景,加锁的形式还不同,所以这次就来好好介绍下行级锁。 对记录加锁时,加…

PyTorch模型安卓部署流程(NCNN)

上一篇介绍了PyTorch模型部署流程(Onnx Runtime)的相关部署流程,再来简单的回顾一下~ 深度学习模型部署介绍 模型部署指让训练好的深度学习模型在特定环境中运行的过程。模型部署会面临的难题: 运行模型所需的环境难以配置。深度学习模型通…

驱动设备的IOCTL

一、ioctl操作实现 已知成员的地址获得所在结构体变量的地址: container_of(成员地址,结构体类型名,成员在结构体中的名称) long xxx_ioctl (struct file *filp, unsigned int cmd, unsigned long arg); 功能:对相应设备做指定的控制操作&…

GB28181设备接入侧录像查询和录像下载技术探究之实时录像

技术背景 我们在对接GB28181设备接入侧的时候,除了常规实时音视频按需上传外,还有个重要的功能,就是本地实时录像,录像后的数据,在执法记录仪等前端设备留底,然后,到工作站拷贝到专门的平台。 …

订单系统、报名、预约、表单系统 定制开发功能展示

安装教程环境说明:正常情况下PHP5.3-5.6、阿帕奇、mysql安装即可 安装说明: 1、上传源码压缩包到网站根目录(这个请去问下空间商哪个是根目录,每家服务器商不一样,我们也不能确定,请确定是根目录再安装&am…

Java设计模式之行为型-解释器模式(UML类图+案例分析)

目录 一、基础概念 二、UML类图 三、角色设计 四、案例分析 五、总结 一、基础概念 解释器模式是指给定一个语言(表达式),来表示它的文法,并定义一个解释器,使用该解释器来解释语言中的句子(表达式&a…

Linux基础内容(25)—— 线程控制和线程结构

Linux基础内容(24) —— 线程概念_哈里沃克的博客-CSDN博客https://blog.csdn.net/m0_63488627/article/details/131294692?spm1001.2014.3001.5501 目录 1.线程操作 1.线程创建问题 2.线程终止问题 1.exit退出 2.pthread_exit退出 3.直接退出 3…

只需一个提示词解除GPT-4的字符限制!

ChatGPT的内存有限,GPT-3.5-turbo的限制为4897个令牌,而GPT-4的最大限制为8192。如果您在使用GPT-4进行聊天时超过8192个令牌(约6827个单词),它就会开始遗忘。我想出了一种新的技巧,可以轻松将对话扩展10倍。 这种技巧不会将对话中的每个字都保存到内存中。当您去开会时,会有人…

0502事务原理-InnoDB引擎-MySQL-数据库

1 概述 事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有操作作为一个整体一起向系统提交或者撤销操作请求,即这些操作要么同时成功,要么同时失败。 事务特性 原子性(Atomatic):事…

MiniGPT4系列之一部署篇:在RTX-3090 Ubuntu服务器部署步骤详解

MiniGPT4系列之一部署篇:在RTX-3090 Ubuntu服务器部署步骤详解_seaside2003的博客-CSDN博客 MiniGPT4系列之二推理篇命令行方式:在RTX-3090 Ubuntu服务器推理详解_seaside2003的博客-CSDN博客 MiniGPT4系列之三模型推理 (Web UI):在RTX-309…

外包软件定制开发中关于沟通障碍及对应解决方案

引言 外包软件定制开发在当今的商业环境中越来越常见。它为公司提供了许多好处,包括降低成本、加速交付和专注于核心业务。然而,沟通障碍常常是外包软件定制开发中的一个重要挑战。由于外包团队和客户位于不同的地理位置、文化和语言差异,沟…

Python 列表 sort()函数使用详解

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:小白零基础《Python入门到精通》 sort函数使用详解 1、升序降序2、sort()和sorted()的区别3、切片排序4、指定排序…

【C++】设计模式-单例模式

目录 一、单例模式 单例模式的三个要点 针对上述三要点的解决方案 常用的两类单例模式 二、懒汉模式实现 1.基本实现 2.锁静态成员析构单例 3.双层检查锁定优化 4.双层检查锁定智能指针 三、饿汉模式实现 1.基础实现 2.嵌套内部类解决内存泄漏 3.智能指针解决内存泄…

一种用于RBF神经网络的新型自适应内核研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…