LinuxC(一)

Linux基础

嵌入式系统:以应用为中心,以计算机技术为基础,软硬件可剪裁。

Linux历史

1969年:Linux前身unix,20世纪60年代计算机采用批处理作业积累到一定数量时,计算机才会处理),为了改变此现状,AT&T公司的贝尔实验室联合(MIT)麻省理工大学开发了UNIX系统。但是才是UNIX采用汇编语言编写的(很难移植

1973年:C语言诞生,于是立马用C语言对UNIX进行了重新编写。解决了难移植的问题,并且飞速在高校圈和企业间流行起来。

1973-1983年:许多业内大神对UNIX进行了高度的个性化,产生了一些好用的版本例如BSD

1983年:AT&T公司意识到UNIX的商业价值,于是对UNIX进行闭源,并对市面上已有的各种版本进行了版权声明。针对AT&T公司的做法,理查德*斯托曼发起了自由软件运动(GNU计划),旨在创造一个与UNIX相似的完全自由的操作系统GNU/Hard.

1985年:成立了自由软件运动基金会去支持这个运动。

1987年:请律师起草了一个公共许可协议GPL

1990年:GNU计划已经开发出很多功能强大的软件,唯一没有完成就是操作系统的内核

1991年:林纳斯*托瓦兹(linus)——Linux之父,为了能够在家里的PC机上使用和学校一样的操作系统,自己写了一个操作系统命名为Linux,并且在GNU计划上发布

于是业内采用了Linux当做内核——>GNU/Linux

GNU计划和GPL并没有限制商业行为,于是很多公司就争相退出了自己独特的版本。

在这里插入图片描述

GNU&GPL
GNU = GNU is Not Unix
由Richard Stallman在1984创建
最初的软件:gcc、make、glibc…
GPL = General Public License
通用公共许可证
GPL = General Public License通用性公开许可证(General Public License,简称GPL)。

GNU是什么?

  1. Linux的外围组件
  2. GNU计划,自由运动

GPL是什么?公共许可协议,法律约束,行为约束

Linux版本

在这里插入图片描述
Ubuntu就是Debian系列,遵守GNU计划

什么嵌入式操作系统

嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于对功能、可靠性、成
本、体积、功耗有严格要求的专用计算机系统。

嵌入式系统

1.Linux
2.μC/OS
3.WindowsCE
4.VxWorks
5.QNX

Linux操作系统的使用

LinuxOS的组件

在这里插入图片描述

什么是shell

<1>.shell是Linux内核的一个外层保护工具,并负责完成用户与内核之间的交互
<2>.shell是一个命令行解释器,将用户命令解析为操作系统所能理解的指令,从而实现用户与操作系统的交互
<3>.shell的分类
(1).sh
(2).csh
(3).ksh
(4).bash 是sh的增强版本

在这里插入图片描述

shell命令

shell命令的格式

通常一条命令包含3个要素:命令名称 [选项] [参数]

注意:

<1>.一条命令的三要素之间用空格隔开
<2>.若将多个命令在一行书写,用分号(;)将各命令隔开
linux@ubuntu:~$ cal;date
四月 2024
日 一 二 三 四 五 六
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
2024年 04月 08日 星期一 19:37:38 PDT
<3>.如果一条命令不能在一行写完,在行尾使用反斜杠(\)表明该命令未结束
linux@ubuntu:~$ ls -l /home #一条命令在一行写完
total 4
drwxr-xr-x 23 linux linux 4096 48 00:24 linux
linux@ubuntu:~$ ls -l \ #一条命令分两行写完
> /home
total 4
drwxr-xr-x 23 linux linux 4096 48 00:24 linux

Linux命令

用户系统相关命令

创建用户adduser(在root权限下)

在这里插入图片描述

切换用户su(在root权限下)

在这里插入图片描述

删除用户deluser(在root权限下)
deluser <username> //只删除用户,保留工作目录
deluser --remove-home username //删除用户并删除工作目录

在这里插入图片描述
在这里插入图片描述

修改密码passwd

普通用户权限下

passwd  //用户模式下:只能更改自己的密码

管理员root权限下

passwd username //可以更改任何用户密码

系统管理命令

进程:正在运行的程序叫进程
<1>.ps -ef 查看所有进程及其PID(进程号),系统时间,命令详细目录,执行者等。

linux@ubuntu:~$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 10:16 ? 00:00:29 /sbin/init auto noprompt
root 2 0 0 10:16 ? 00:00:00 [kthreadd]
root 3 2 0 10:16 ? 00:00:00 [rcu_gp]
root 4 2 0 10:16 ? 00:00:00 [rcu_par_gp]

<2>.ps aux 除可显示-ef所有内容之外,还可显示CPU及内存占用率,进程状态

linux@ubuntu:~$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 225632 7480 ? Ss 10:16 0:30 /sbin/init
auto noprompt
root 2 0.0 0.0 0 0 ? S 10:16 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< 10:16 0:00 [rcu_gp]

<3>.top 动态显示系统中运行的程序

top - 19:51:42 up 9:35, 1 user, load average: 1.27, 1.25, 1.12
Tasks: 366 total, 2 running, 291 sleeping, 0 stopped, 0 zombie
%Cpu(s): 4.8 us, 7.2 sy, 47.9 ni, 39.9 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st
KiB Mem : 2006004 total, 183728 free, 1451664 used, 370612 buff/cache
KiB Swap: 2097148 total, 1610492 free, 486656 used. 360724 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1907 root 39 19 244936 103528 70656 R 99.0 5.2 571:48.65 unattendedupgr
1944 linux 20 0 798056 130068 39760 S 8.9 6.5 2:25.41 Xorg

<4>.pstree 以树形格式显示进程

在这里插入图片描述
<5>.kill -l 列出所有可用的信号名称

linux@ubuntu:~$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX

<6>.kill 输出特定的信号给指定PID(进程号)的进程

在这里插入图片描述

磁盘相关命令

free 查看当前系统内存的情况

linux@ubuntu:~$ free
total used free shared buff/cache available
Mem: 2006004 1482000 212352 33764 311652 330368
Swap: 2097148 524032 1573116

df 查看文件系统磁盘空间占用情况

linux@ubuntu:~$ df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 978704 0 978704 0% /dev
tmpfs 200604 1952 198652 1% /run
/dev/sda1 82043288 13332000 64500704 18% /
tmpfs 1003000 0 1003000 0% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 1003000 0 1003000 0% /sys/fs/cgrou

du 统计目录(或文件)所占磁盘空间的大小

linux@ubuntu:~$ du
4 ./one/wd
8 ./one
4 ./Desktop
4 ./Downloads
8 ./.dbus/sessi

fdisk 查看磁盘分区情况及对磁盘进行分区管理
fdisk -l 列出文件系统的分区情况 ,必须使用root权限

linux@ubuntu:~$ sudo fdisk -l
[sudo] password for linux:
Disk /dev/loop0: 704 KiB, 720896 bytes, 1408 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

文件,目录相关命令

cd,ls,mkdir,cat,cp,mv,rm,

chmod

1.chmod 修改文件的权限
mode:读r(4)/写w(2)/运行x(1)

0777 0644——>对权限的代表数字加权而来,然后给文件赋予权限

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

-rwxr-xr-x
1、有三种访问权限(读w)(写w)(执行x)
2、3个不同的用户级别:文件拥有者(U),所属的用户组(g)和系统里的其他用户(o)
chmod +/-(r/w/x) 文件名

在这里插入图片描述

drwxr-xr-x 4 linux linux 4096 36 22:29 23121
-rw-r--r-- 1 linux linux 223 31 00:41 s1.c

在这里插入图片描述

chown

chown修改文件所有者和组别,必须使用root权限

chown 用户名:组名 文件名
root@ubuntu:/home/zhangsan# ls -l
total 16
-rw-rw-r-- 1 zhangsan shenxian 24 48 22:35 1.txt
-rw-r--r-- 1 zhangsan shenxian 8980 48 22:29 examples.desktop
root@ubuntu:/home/zhangsan# chown wangwu:yaoguai 1.txt
root@ubuntu:/home/zhangsan# ls -l
total 16
-rw-rw-r-- 1 wangwu yaoguai 24 48 22:35 1.txt
chgrp

chgrp修改文件的组,必须使用root权限

grep

grep:在指定文件中搜索特定内容,并将含有这些内容的行标准输出

格式:grep [选项]格式[文件及路径]
grep -r "字符串" filename

在这里插入图片描述
选项

-c:只输出匹配行的计数
-I:不区分大小写(只适用于单个字符)
-h:查询多文件时不显示文件名
-l:查询多文件时只输出包含匹配字符的文件名
-n:显示匹配行及行号
-s:不显示不存在或无匹配文本的错误信息
-v:显示不包含匹配文本的所有行
若缺省"文件及路径"则默认表示在当前目录下搜索。

find 查找
find [路径] [选项] [描述]
-name 指定名称 支持通配符*和?
whereis

whereis:找到程序,并列出程序的文件绝对路径

在这里插入图片描述
该指令会在特定目录中查找符合条件的文件,这些文件包括二进制文件、源代码文件和man手册页

whereis [-bfmsu][-B <目录>...][-M <目录>...][-S <目录>...][文件...]

参数

-b  只查找二进制文件。
-B<目录>  只在设置的目录下查找二进制文件。
-f  不显示文件名前的路径名称。
-m  只查找说明文件。
-M<目录>  只在设置的目录下查找说明文件。
-s  只查找原始代码文件。
-S<目录>  只在设置的目录下查找原始代码文件。
-u  查找不包含指定类型的文件。

which

which:找到程序,不列出程序的文件绝对路径

在这里插入图片描述

常用特殊符号

*任意个字符

linux@ubuntu:~$ find -name "*.c"
./s1.c
./.cache/vmware/drag_and_drop/zUq4sd/day10-gaoxiaofeng.c
./.cache/vmware/drag_and_drop/GtMX9E/day10-gaoxiaofeng.c
./23121/day1/testg1.c
./23121/day1/mx.c
./23121/day1/add.c
./23121/day1/fun.c
./23121/day1/test1.c
./23121/day1/testg2.c

在这里插入图片描述

? 任意一个字符

linux@ubuntu:~$ find -name "?.c"
./24031/1-1/zhang/3.c
./24031/1-1/zhang/1.c
./24031/1-1/zhang/2.c

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[]:正则表达式

[1-n] :匹配1-n中间的任意一个数组

[a-z] :匹配a-z中间的任意一个字符

[abc] :匹配a、b、c这些单个字符

在这里插入图片描述
在这里插入图片描述

管道 |

| —>将前一个命令的输出作为后一个命令的输入

linux@ubuntu:~$ ls /dev | grep video #快速的查询摄像头是否连接成功
video0
video1
video2
video3

在这里插入图片描述

命令置换

命令$(命令2):将命令2的输出作为命令1的参数
命令1`命令2`:将命令2的输出作为命令1的参数

`` 反引号 (置换符号)

linux@ubuntu:~$ echo Today is date
Today is date
linux@ubuntu:~$ date
2024年 04月 09日 星期二 17:52:12 PDT
linux@ubuntu:~$ echo Today is `date`
Today is 2024年 04月 09日 星期二 17:52:36 PDT

在这里插入图片描述

在这里插入图片描述

命令置换和管道的区别:
在这里插入图片描述

重定向

> 以清空的方式输出,若文件不存在则新建,只存正确
>> 以追加的方式输出,若文件不存在则新建,只存正确
2> 以清空的方式输出,若文件不存在则新建,只存错误
2>> 以追加的方式输出,若文件不存在则新建,只存错误
&> 以清空的方式输出,若文件不存在则新建
&>> 以追加的方式输出,若文件不存在则新建

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
意义:

  1. 将程序的调试结果重定向到文件里
  2. 可以输出程序或者命令的运行日志

注意:

  1. 以清空方式重定向不可以重定向到文件本身,因为清空的方式是先做文件的删除 然后重新创建新的同名文件。
  2. 使用的时候要根据需求选择用存正确还是错误

ln 创建链接文件

ln命令会保持每一处链接文件的同步性,也就是说,不论改动了哪一处,其他的文件都会发生相同的变化

硬链接

它会在用户选定的位置上生成一个与源文件大小相同的文件
概念:利用Linux为每个文件分配物理编号——inode建立链接

ln 源文件 硬链接文件
ln /home/linux/24031/day5/1.txt ying1.txt

软连接

它只会在用户选定的位置上生成一个文件的镜像,不会重复占用磁盘空间,平时使用较多的是软连接
使用的是绝对路径,不是相对路径,以最大限度增加可移植性。

ln -s 源文件 软链接文件
ln -s /home/linux/24031/day5/1.txt ruan1.txt

在这里插入图片描述

区别

  1. 硬链接是相当于直接复制整个源文件使用源文件的环境,软连接是生成一个源文件镜 像去使用
  2. 软连接不占用内存空间,硬链接会占用
  3. 如果源文件名字修改,软连接会断开,硬链接不会
  4. 对于删除之后重新建立的同名源文件,软连接将恢复,硬链接可能不再有效

压缩打包命令

gzip

gzip:将文件进行压缩或解压(自动识别);针对的是单个文件

格式:gzip [选项] 压缩/解压缩的文件名

选项

-c:保留源文件并输出信息
-d:将文件解压
-t:测试,检查压缩文件是否完整
-r:查找指定目录并压缩或解压缩其中的所有文件
-v:对每一个压缩和解压的文件,显示文件名和压缩比
-l:对每个压缩文件显示下列字段(压缩文件的大小,未压缩文件的大小、压缩比、未压缩文件名字)

在这里插入图片描述
在这里插入图片描述

tar

tar:对文件目录进行打包或解包;

-c:建立新的打包文件
-x:对包文件解包
-z:调用gzip进行压缩打包
-f:对普通文件操作,指定存档文件的名称(File)
-v:处理过程中输出相关信息

区分打包和压缩

  1. 打包:是指将一些文件或目录变成一个总的文件
  2. 压缩:是将一个大文件通过一些压缩算法变成一个小文件
格式:tar [选项] [打包后文件名] 文件目录列表
压缩格式:tar [-z|-j|-J] -c [-v]  [-f ] 目标文件名 源文件
解压格式:tar [-z|-j|-J] -x [-v]  [-f ] 待加压文件名  [-C 目录] 
  1. 默认解压时在当前目录,如果要指定目录的话,则加上[-C 目录] 参数

  2. 当有多个参数时,-f命令参数必须在最后一个,否则会报错,原因是 -f后面跟的是目标文件名称,如果-fc,则会把c当做源文件名称。

  3. 文件目录列表:要进行打包备份的文件目录列表,也可以是进行解包的文件目录列表

网络管理

ipconfig

配置网卡的基本命令
在这里插入图片描述

ping命令

ping命令:可以检查两个主ip之间是否能够互通

Linux环境变量

1.env 查看Linux下所有的环境变量

linux@ubuntu:~$ env

2.常用的

linux@ubuntu:~$ echo $HOME
/home/linux
linux@ubuntu:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/loc
al/games:/snap/bin

3.修改PATH临时添加

linux@ubuntu:~/24031/day2$ pwd
/home/linux/24031/day2
linux@ubuntu:~/24031/day2$ export PATH=$PATH:/home/linux/24031/day2
linux@ubuntu:~/24031/day2$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/loc
al/games:/snap/bin:/home/linux/24031/day2

4.永久修改PATH

linux@ubuntu:~$ sudo vim /etc/profile

在这里插入图片描述
重启ubuntu有效

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值