LinuxC总结一

一.嵌入式Linux操作系统

1.什么是操作系统

操作系统是管理和控制计算机硬件与软件资源的计算机程序,它是直接运行在“裸机”上的最基本的系 统软件,任何其他软件都必须在操作系统的支持下才能运行

2.操作系统的分类

1.批处理操作系统

2.分时操作系统

3.实时操作系统

4.嵌入式操作系统

5.个人计算机操作系统

6.网络操作系统

7.分布式操作系统

3.嵌入式操作系统

1.什么是嵌入式操作系统

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

2.嵌入式系统应用领域

1、工业控制** 机械手臂、集装箱起重机、工业机器人、电机驱动器、智能测量仪、智能控制器、智能数控机床等

2、智能家居领域 智能扫地机器人、空调、冰箱、洗衣机、投影仪、智能门锁、智能门禁、可视对讲门铃、微波炉、电视 机、遥控器、水电表、扫地机器人等

3、安防领域 人脸识别、监控设备、指纹识别、视网膜识别等

4、汽车电子领域 行车记录仪、自动驾驶系统、车辆导航系统等

5、交通物流领域 蜂巢快递柜、共享单车、智能分拣等

6、健康医疗领域 生化分析仪、血液分析仪、CT等各类智能检测仪器、智能血压计、智能手环等 7、通信领域 机顶盒、路由器、通信基站设备、交换机等

8、金融领域 刷卡机、智能ATM终端等

9、消费电子领域 手机、平板电脑、可穿戴设备、游戏机、数码相机、广告机、遥控玩具、音频视频播放器、自动售货机 等

10、军事航空领域 卫星系统、无线传输系统、定位系统、无人机、雷达系统、火炮、导弹和智能炸弹制导引爆等控制装 置、各种智能坦克、舰艇、轰炸机等

3.嵌入式系统分类

Linux      μC/OS     windows CE     Vxworks     QNX

4.嵌入式Linux

1.Linux历史

 (1) .Unix的起源

1969年,由kenThompson在AT&T贝尔实验室实现的。使用的是汇编语言。

1973年,Kenthompson和DennisRitchie使用C语言对整个系统进行了再加工和编写,使得Unix能够很容 易的移植到其他硬件的计算机上。

1977年BSD的诞生(在unix发表之后,柏克莱大学Berkeley的教授对于这个操作系统相当的有兴趣,经 过几经修改之后,在1977年发表了第一代BSD Berkeley Software Distribution,伯克利软件套件 (SUN) 添加了TCP/IP协议,有了以后的网络编程)

百家齐鸣的 Unix 版本例如 ATT 的 System V 、 加州大学的 BSD 版、 IBM 的 AIX 等等

(2).Linux的发展

1984年Richard Matthew Stallman(自由软件之父) 在 1984 年启动了 GNU 项目。(模仿unix但不是unix) 最大的一个目标 - 完全自由的类-Unix 操作系统。

GNU=GNU is Not Unix

最初的软件有Gcc,makefile,glibc可惜没有内核

1991年Linus Torvalds 在芬兰赫尔辛基为了能在家里的PC机上使用与学校一样的操作系统,开始了 Linux 内核开发,类Unix他是为他的硬件 - Intel 30386 CPU 编写的程序。他也使用 Minix 和 GNU C 编 译器。

2.Linux版本

3.Linux:Ubuntu (乌班图)

 Ubuntu镜像下载

www.ubuntu.com

二.Linux操作系统的使用

1.认识shell

1.什么是shell

shell:命令行解释器,用户和内核之间的桥梁

shell也是一个程序,提供给了我们一个界面,(终端)

2.shell版本

Bourne Shell: 最早的Shell

C Shell

Ksh

Z Shell

Bourne-again shell(bash)

2.shell命令的格式

shell命令的三要素

命令名称 [选项] [参数]

linux@ubuntu:~$ ls -l /
total 2097296
drwxr-xr-x 2 root root 4096 5月 10 00:46 bin
drwxr-xr-x 3 root root 4096 6月 4 18:21 boot

注意:

1、一条命令三要素之间必须要有空格隔开

2、若多个命令在一行书写,用分号(;)将各命令隔开

3、如果一条命令不能在一行写完,在行尾使用反斜杠()标明该条命令未结束

linux@ubuntu:~$ date;cal
2023年 07月 28日 星期五 00:42:26 PDT
七月 2023
日 一 二 三 四 五 六
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 31
linux@ubuntu:~$ ls -l \
> /home/linux/Desktop/
total 616352
drwxrwxrwx 3 linux linux 4096 7月 12 00:07 camera
-rwxrw-rw- 1 linux linux 9219 7月 13 23:53 cam_server.c

 3.Linux命令

1.用户系统相关命令

1.用户切换命令(su)
linux@ubuntu:~$ sudo -i #普通用户切换root用户
[sudo] password for linux:
root@ubuntu:~# su - linux
linux@ubuntu:~$
2.系统管理命令

ps: 显示当前系统中由该用户运行的进程列表

在windows查看进程 ctrl+alt+Del

ps -ef :查看所有进程及其PID(进程号),系统时间,命令详细目录,执行者者

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

ps -w 加宽以显示较多的信息 

top:动态显示系统中运行的程序 (一般为每隔几秒刷新一次)

 pstree 以树形格式显示进程

kill 输出特定的信号给指定PID(进程号)的进程

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

 

 clear:清除屏幕上的信息

uptime:显示系统已经运行了多长时间

linux@ubuntu:~$ uptime
01:57:26 up 1:28, 1 user, load average: 0.02, 0.05, 0.01

关机

shutdown -h now 现在立刻关机

shutdown -h +30 30分钟之后关机 

linux@ubuntu:~$ shutdown -h +30
Shutdown scheduled for Fri 2023-07-28 02:28:41 PDT, use 'shutdown -c' to cancel.

 重启

reboot 重启

shutdown -r now 重启

3.磁盘相关命令

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

linux@ubuntu:~$ free
total used free shared buff/cache available
Mem: 1999388 1369732 82144 16660 547512 455616
Swap: 2097148 9228 2087920

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

linux@ubuntu:~$ df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 973652 0 973652 0% /dev
tmpfs 199940 1896 198044 1% /run
/dev/sda1 81985944 22316576 55458784 29% /
tmpfs 999692 0 999692 0% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 999692 0 999692 0% /sys/fs/cgroup


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

linux@ubuntu:~$ du -sh 23072 #显示该文件夹所占的大小
1.3M 23072
linux@ubuntu:~$ du -sh ./ #显示当前目录下所占磁盘空间的大小
du: cannot read directory './.dbus': Permission denied
4.6G ./
linux@ubuntu:~$ du -sh
du: cannot read directory './.dbus': Permission denied
4.6G

fdisk 查看磁盘分区情况及对磁盘进行分区管理

fdisk -l 显示文件系统的分区情况

使用fdisk必须拥有root权限 .

IDE磁盘hda,hdb......,SCSI硬盘是对应sda,sdb......hda1,第一个硬盘分区

linux@ubuntu:~$ sudo fdisk -l | grep sd
Disk /dev/sda: 80 GiB, 85899345920 bytes, 167772160 sectors
/dev/sda1 * 2048 167770111 167768064 80G 83 Linux
Disk /dev/sdb: 117.2 GiB, 125829120000 bytes, 245760000 sectors
/dev/sdb1 93056 245759998 245666943 117.1G 7 HPFS/NTFS/exFAT

2.文件,目录相关命令

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

1、vim 编辑器

2、 vi的查找和替换
1. 查找(命令模式下)

/ 向下查找要查找的字符

? 向上查找要查找的字符

34 }
35 int main(void) #你查找的字符串会高亮
36 {
37 float scores[SIZE]={90,98,96,78,83};
38 output1(scores,SIZE);
39 //output(scores,SIZE); //output(&scores[0])
40
41 return 0;
42 }
/main
2. 替换 (底行模式下)
:range #range 表示要替换范围
s/string1/string2/gc #s:转入替换模式
#string1,string2 把string1转成
string2
#g全部替换
#c 替换前询问
3.chmod:改变文件的访问权限
linux@ubuntu:~$ ls -l
total 618132
d rwx rwx r-x 4 linux linux 4096 7月 28 01:29 23072
- rw- rw- r-- 1 linux linux 1174 5月 23 02:59 2.c
第一个字符表示文件的属性:在Linux当中一共7种文件
d 是文件夹
- 普通文件
l 链接文件 (类似于windows快捷方式)
p 管道文件
s 套接字(socket)文件
c 字符设备文件
b 块设备文件
文件所有者权限 文件属组用户 其他人
- rw- rw- r-- 1 linux linux 1174 5月 23 02:59 2.c

更改权限的方法

方法一:

a --->all 所有人
u --->user 文件所有者
g --->group 同组用户
o --->other 其他人
zhangsan@ubuntu:~$ ls -l
total 20
-rw-r--r-- 1 zhangsan yingxiong 9 7月 30 19:07 1.c
-rw-rw-rw- 1 zhangsan yingxiong 24 3月 7 01:04 1.txt
-rw-r--r-- 1 zhangsan yingxiong 0 3月 7 17:17 2.txt
-rw-r--r-- 1 zhangsan yingxiong 8980 8月 2 2022 examples.desktop
zhangsan@ubuntu:~$ vim 1.c
zhangsan@ubuntu:~$ chmod o-r 1.c #给其他取消可读的权限
zhangsan@ubuntu:~$ ls -l
total 20
-rw-r----- 1 zhangsan yingxiong 25 7月 30 19:07 1.c
-rw-rw-rw- 1 zhangsan yingxiong 24 3月 7 01:04 1.txt
zhangsan@ubuntu:~$ ls -l
total 20
-rw-r----- 1 zhangsan yingxiong 25 7月 30 19:07 1.c
-rw-rw-rw- 1 zhangsan yingxiong 24 3月 7 01:04 1.txt
-rw-r--r-- 1 zhangsan yingxiong 0 3月 7 17:17 2.txt
-rw-r--r-- 1 zhangsan yingxiong 8980 8月 2 2022 examples.desktop
zhangsan@ubuntu:~$ chmod g+w 1.c #给同组用户添加写的权限
zhangsan@ubuntu:~$ ls -l
total 20
-rw-rw---- 1 zhangsan yingxiong 25 7月 30 19:07 1.c
-rw-rw-rw- 1 zhangsan yingxiong 24 3月 7 01:04 1.txt

方法二

用三位二进制,一个八进制
x---1
w---2
r---4
--x 001 1
-wx 011 3
rwx 111 7
chmod 664 1.c
zhangsan@ubuntu:~$ ls -l
total 20
-rw-rw---- 1 zhangsan yingxiong 35 7月 30 19:13 1.c
zhangsan@ubuntu:~$ chmod 664 1.c
zhangsan@ubuntu:~$ ls -l
total 20
-rw-rw-r-- 1 zhangsan yingxiong 35 7月 30 19:13
4.chown:修改文件的所有者和组别
inux@ubuntu:/home/zhangsan$ ls -l
total 20
-rw-rw-r-- 1 zhangsan yingxiong 35 7月 30 19:13 1.c
linux@ubuntu:/home/zhangsan$ sudo chown linux 1.c #必须使用root权限 修改文件所有者
linux@ubuntu:/home/zhangsan$ ls -l
total 20
-rw-rw-r-- 1 linux yingxiong 35 7月 30 19:13 1.c
linux@ubuntu:/home/zhangsan$ ls -l
total 20
-rw-rw-r-- 1 linux yingxiong 35 7月 30 19:13 1.c
linux@ubuntu:/home/zhangsan$ sudo chown :linux 1.c #修改文件组别
linux@ubuntu:/home/zhangsan$ ls -l
total 20
-rw-rw-r-- 1 linux linux 35 7月 30 19:13 1.c
-rw-rw-rw- 1 zhangsan yingxiong 24 3月 7 01:04 1.txt
5.chgrp:改变文件的组所有权
6.cat 查看比较短的文档
linux@ubuntu:~/23072/C补习/day8$ cat 1.c
#include <stdio.h>
int a=10;
int main(void)
{
return 0;
}
more适合查看比较长的文档
按空格(space)向下走一页
按回车(Enter)向下走一行
按B向上走一页
按q退出
less是more的增强版
按空格(space)向下走一页
按回车(Enter)向下走一行
按B向上走一页
按q退出
支持上下箭头
grep: 在指定文件中搜索特定的内容,并将含有这些内容的行标准输出
linux@ubuntu:~/23072/C补习/day8$ grep -n scores arr.c #在arr.c这个文件中查找scores这
个字符串
4://编写一子函数,将scores数组中的元素进行输出
5://参数1: 数组的首地址 float * scores 参数2:元素的个数 int n
7:void output(float * scores,int n);
8:void output1(float scores[5],int n);
9:void output2(float scores[],int n); //[]表示你传过来的是个数组,该数组中的每个元素是
float
11:void output2(float scores[],int n)
16: printf("%.1f ",scores[i]);
22:void output1(float scores[5],int n)
24: printf("sizeof(scores)=%ld\n",sizeof(scores));
26:void output(float * scores,int n)
31: printf("%.1f ",*(scores+i));
37: float scores[SIZE]={90,98,96,78,83};
38: output1(scores,SIZE);
39: //output(scores,SIZE); //output(&scores[0])

一般会和(|)管道配合起来使用

(|) 关联两个命令 将前一个命令的输出作为后一个命令输入

常用的特殊符号
重定向符号 > 文件不存在,则新建,文件存在,覆盖原文件中的内容
linux@ubuntu:~$ cal > 1.txt
linux@ubuntu:~$ cat 1.txt
七月 2023
日 一 二 三 四 五 六
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 31
追加重定向符号 >> 文件不存在则新建,文件存在,则追加在文件的末尾
linux@ubuntu:~$ date >> 1.txt
linux@ubuntu:~$ cat 1.txt
七月 2023
日 一 二 三 四 五 六
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 31
2023年 07月 30日 星期日 20:09:28 PDT
反引号 ``
linux@ubuntu:~$ echo today is date
today is date
linux@ubuntu:~$ echo today is `date` #将date当成命令来执行
today is 2023年 07月 30日 星期日 20:11:52 PDT
通配符

linux@ubuntu:~/23072/LinuxC/day2$ ls ../day3
linux@ubuntu:~/23072/LinuxC/day2$ cp *.txt ../day3 # (*表示任意个字符)
linux@ubuntu:~/23072/LinuxC/day2$ ls ../day3
1.txt 45.txt 78.txt a.txt
linux@ubuntu:~/23072/LinuxC/day2$ ls ../day3
linux@ubuntu:~/23072/LinuxC/day2$ cp ?.txt ../day3 # (?表示任意一个字符)
linux@ubuntu:~/23072/LinuxC/day2$ ls ../day3
1.txt a.txt
linux@ubuntu:~/23072/LinuxC/day2$ ls ../day3
linux@ubuntu:~/23072/LinuxC/day2$ cp [1be].c ../day3 # ([1be]匹配其中指定的一个
字符)
linux@ubuntu:~/23072/LinuxC/day2$ ls ../day3
1.c b.c e.c
linux@ubuntu:~/23072/LinuxC/day2$ ls ../day3
linux@ubuntu:~/23072/LinuxC/day2$ cp [a-e].c ../day3/ # ([a-e]匹配指定范围内的一个
字符)
linux@ubuntu:~/23072/LinuxC/day2$ ls ../day3
a.c b.c c.c e.c
linux@ubuntu:~/23072/LinuxC/day2$ ls
11.c 1.c 2.c 78.txt a.txt c.c er.c gg.c k.c s.c
123.c 1.txt 45.txt a.c b.c e.c f.c j.c qwe.c yua.c
linux@ubuntu:~/23072/LinuxC/day2$ ls ../day3
linux@ubuntu:~/23072/LinuxC/day2$ cp [^1bef].c ../day3 #[^1bef] 匹配除了指定的字符
linux@ubuntu:~/23072/LinuxC/day2$ ls ../day3
2.c a.c c.c j.c k.c s.c
ln (创建链接文件)---->类似于windows快捷方式
硬链接
ln 源文件路径 硬链接文件
linux@ubuntu:~$ ln /home/linux/23072/LinuxC/day2/1.txt ying1.txt
软链接
ln -s 源文件路径 软链接文件
linux@ubuntu:~$ ln -s /home/linux/23072/LinuxC/day2/1.txt ruan1.txt
注意:
<1>.ln命令会保持每一处链接文件的同步性,也就是说,你不论改动哪一处,其他的文件也都会发生相同的变
化
<2>.软链接它只会在选定的位置上生成一个文件的镜像,不会重复占用磁盘空间
 硬链接它会在选定的位置上生成一个和源文件大小相同的文件。
find 在指定目录下搜索文件,它的使用权限是所有用户

#想在当前路径下查找所有的.c
linux@ubuntu:~$ find ./ -name "*.c"
linux@ubuntu:~$ find ./ -name 2*.c

3.压缩打包命令

1.压缩

1.gzip

linux@ubuntu:~/23072/LinuxC/day2$ gzip arr.c #压缩arr.c文件之后生成arr.c.gz
linux@ubuntu:~/23072/LinuxC/day2$ ls
1 arr1 arr.c.gz scores1 scores2.c str1
linux@ubuntu:~/23072/LinuxC/day2$ ls
1 arr1 arr.c.gz scores1 scores2.c str1 str2.c str3.c str4.c
str5.c
linux@ubuntu:~/23072/LinuxC/day2$ gzip -d arr.c.gz #解压
linux@ubuntu:~/23072/LinuxC/day2$ ls
1 arr1 arr.c scores1 scores2.c str1 str2.c str3.c str4.c
str5.c
linux@ubuntu:~/23072/LinuxC/day2$ gunzip scores.c.gz #解压

2.bzip2

linux@ubuntu:~/23072/LinuxC/day2$ bzip2 scores.c
linux@ubuntu:~/23072/LinuxC/day2$ ls
1.c arr1.c scores scores2 scores.c.bz2
linux@ubuntu:~/23072/LinuxC/day2$ ls
1.c arr1.c scores scores2 scores.c.bz2 str1.c str3 str4 str5
yanghui
linux@ubuntu:~/23072/LinuxC/day2$ bzip2 -d scores.c.bz2
linux@ubuntu:~/23072/LinuxC/day2$ ls
1.c arr1.c scores scores2 scores.c str1.c str3 str4 str5 yanghui
linux@ubuntu:~/23072/LinuxC/day2$ bunzip2 scores.c.bz2 #解压
2.tar: 对文件目录进行打包和解包
Examples:
tar -cf archive.tar foo bar # Create archive.tar from files foo and bar.
tar -tvf archive.tar # List all files in archive.tar verbosely.
tar -xf archive.tar # Extract all files from archive.tar.
-c, --create # create a new archive (创建包文件)
-f #指名包文件名
-x #解包
-v #显示打包的过程
-z #自动调用gzip,gunzip
-j #自动调用bzip2
3.打包+压缩
linux@ubuntu:~/23072/LinuxC$ ls
1.txt day1 day2 day3
linux@ubuntu:~/23072/LinuxC$ tar -cvzf mynew.tar.gz day1 day3 1.txt
day1/
day1/demo1.c
day1/demo1
day3/
day3/k.c
day3/j.c
day3/c.c
1.txt
linux@ubuntu:~/23072/LinuxC$ ls
1.txt day1 day2 day3 mynew.tar.gz
4.解压+解包
linux@ubuntu:~/23072/LinuxC$ ls
day2 mynew.tar.gz
linux@ubuntu:~/23072/LinuxC$ tar -xvzf mynew.tar.gz
day1/
day1/demo1.c
day1/demo1
day3/
day3/k.c
day3/j.c
day3/c.c
1.txt
linux@ubuntu:~/23072/LinuxC$ ls
1.txt day1 day2 day3 mynew.tar.gz

4.文件比较命令diff

linux@ubuntu:~/23072/LinuxC/day3$ diff a.c c.c #两个文件第5行不一样
5c5
< printf("helloworld\n");
---
> printf("helloxian\n");

5.Linux环境变量

linux@ubuntu:~$ env # 显示所有环境变量的值
CLUTTER_IM_MODULE=xim
LC_MEASUREMENT=zh_CN.UTF-8
LESSCLOSE=/usr/bin/lesspipe %s %s
LC_PAPER=zh_CN.UTF-8
LC_MONETARY=zh_CN.UTF-8
XDG_MENU_PREFIX=gnomeLANG=en_US.UTF-8
DISPLAY=:0
GNOME_SHELL_SESSION_MODE=ubuntu
COLORTERM=truecolor
DESKTOP_AUTOSTART_ID=1063e93a9771e6cb17169076453241065300000029110007
USERNAME=linux
linux@ubuntu:~$ echo $HOME #显示环境变量HOME的值
/home/linux
linux@ubuntu:~$ echo $PATH #显示环境变量PATH的值
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/loc
al/games:/snap/bin
linux@ubuntu:~$
1.临时修改变量的值 PATH
linux@ubuntu:~/23072/LinuxC/day3$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/loc
al/games:/snap/bin
linux@ubuntu:~/23072/LinuxC/day3$ export
PATH=$PATH:/home/linux/23072/LinuxC/day3
linux@ubuntu:~/23072/LinuxC/day3$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/loc
al/games:/snap/bin:/home/linux/23072/LinuxC/day3
linux@ubuntu:~/23072/LinuxC/day3$ cd
linux@ubuntu:~$ hello
hello
linux@ubuntu:~$ cd 23072
linux@ubuntu:~/23072$ hello
hello
2.永久修改变量的值 PATH
linux@ubuntu:~$ sudo vim /etc/profile

 三、Linux网络配置管理

1.测试虚拟机是否有网 (ping)

linux@ubuntu:~$ ping www.baidu.com
PING www.baidu.com (14.119.104.189) 56(84) bytes of data.
64 bytes from 14.119.104.189 (14.119.104.189): icmp_seq=1 ttl=128 time=34.6 ms
64 bytes from 14.119.104.189 (14.119.104.189): icmp_seq=2 ttl=128 time=33.8 ms
64 bytes from 14.119.104.189 (14.119.104.189): icmp_seq=3 ttl=128 time=33.3 ms
64 bytes from 14.119.104.189 (14.119.104.189): icmp_seq=4 ttl=128 time=33.2 ms

2.如何设置虚拟机的网络

 

 

 

 

 3.查看ip地址

linux@ubuntu:~$ ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.12.143 netmask 255.255.255.0 broadcast 192.168.12.255
inet6 fe80::539c:dee:78b0:c099 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:0d:fd:67 txqueuelen 1000 (Ethernet)
RX packets 1020 bytes 142967 (142.9 KB)

4.设置固定IP地址

 

 

 5.网络基础知识介绍

1.IP地址

1.什么是IP地址

IP地址:在网络中,IP地址是主机的唯一标识,由网络地址+主机地址 32位的二进制 ------->点分十进制("192.168.12.78")

linux@ubuntu:~$ ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.12.78 netmask 255.255.255.0 broadcast 192.168.12.255
inet6 fe80::539c:dee:78b0:c099 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:0d:fd:67 txqueuelen 1000 (Ethernet)
2.IP地址

1.A类:1字节网络地址+3个字节主机地址

网络地址最高位必须为0

0 000 0001 (1)
0 111 1110 (126)
A类:1.0.0.0 -----126.255.255.254

2.B类:2字节网络地址+2个字节主机地址

网络地址最高位10

10 00 0000 2^7 (128)
10 11 1111 2^7+2^6-1 (191)
B类:128.0.0.0~191.255.255.254

3.C类:3字节网络地址+1个字节主机地址

网络地址最高位为110

110 0 0000 2^7+2^6 (192)
110 1 1111 2^7+2^6+2^5-1 (223)
C类:192.0.0.0 到 223.255.255.254

4.D类:主要用于组播

网络地址最高位为1110

1110 0000 2^7+2^6+2^5 (224)
1110 1111 2^7+2^6+2^5+2^4-1 (239)
D类:224.xxx.xxx.xxx-239.xxx.xxx.xxx

5.E类: 网络地址最高为11110

1111 0000 (240)
1111 0111 (247)
E类:240.0.0.0------247.255.255.254

2.子网掩码

1.什么是子网掩码

网络地址部分全为1,主机地址部分全为0 (c类子网掩码 255.255.255.0)

2.子网掩码作用

判别主机发送的数据包是向外网发送,还是向内网发送

 3.网关

网关实质上是一个网络通向其他网络的IP地址

4.DNS服务器 (域名解析服务器) 

 四、Linux软件管理

1.离线安装

linux@ubuntu:~/Desktop$ sudo dpkg -i sl_3.03-17build2_amd64.deb
Selecting previously unselected package sl.
(Reading database ... 484364 files and directories currently installed.)
Preparing to unpack sl_3.03-17build2_amd64.deb ...
Unpacking sl (3.03-17build2) ...
Setting up sl (3.03-17build2) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ..

2.apt高级软件包管理工具

linux@ubuntu:~$ sudo apt-get install vim #安装
Reading package lists... Done
Building dependency tree
linux@ubuntu:~$ sudo apt-get update #下载更新软件包列表
linux@ubuntu:~$ sudo apt-get install openssh-server #安装
Reading package lists... Done
Building dependency tree
linux@ubuntu:~$ sudo apt-get remove openssh-server #卸载

 4.windows和Linux文件共享

 五.Linux用户管理

1.用户的定义

1.用户的属性

用户名 口令 用户ID 用户主目录 用户shell(bash)

2.用户与组

用户组是具有相同特征的用户的集合体,通过用户组可以让多个用户具有相同的权限

2.相关的配置文件

/etc/passwd 系统能够识别的用户清单

 /etc/shadow 加密的用户清单, (打开时必须使用root权限)

/etc/group 该文件包含Unix组的名称和每个组中的成员列表,每一行代表一组 

 3.管理命令(必须使用root权限)

1.创建用户 adduser

linux@ubuntu:~$ sudo adduser lilei
Adding user `lilei' ...
Adding new group `lilei' (1005) ...
Adding new user `lilei' (1003) with group `lilei' ...
Creating home directory `/home/lilei' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for lilei
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y

2.修改密码 passwd        

linux@ubuntu:~$ sudo passwd lilei
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

3.添加组 groupadd        

linux@ubuntu:~$ sudo groupadd student

4.修改用户的属性 usermod 

 5.删除用户 (deluser)

linux@ubuntu:~$ sudo deluser --remove-home hanmeimei #连同主目录一起删除

Looking for files to backup/remove ... Removing files ... Removing user `hanmeimei' ... Warning: group `student' has no more members. Done.

6.删除组 (groupdel) 

linux@ubuntu:~$ sudo groupdel hanmeimei

 六.shell编程

1.什么shell编程

一堆shell命令集合

2.shell执行过程

        

 1.创建一个.sh文件

linux@ubuntu:~/23072/LinuxC/day3$ touch 1.sh #1.创建.sh文件

2.修改文件的权限 

linux@ubuntu:~/23072/LinuxC/day3$ chmod +x 1.sh #2.修改文件的权限
linux@ubuntu:~/23072/LinuxC/day3$ ls -l
total 0
-rwxrwxr-x 1 linux linux 0 7月 31 19:01 1.sh

3.执行3.注释

linux@ubuntu:~/23072/LinuxC/day3$ ./1.sh

3.注释

  4.变量

1.用户自定义变量

1.命名规范:

由数字,字母,下划线组成

首字母不能为数字 .不能为关键字和保留字

尽量见名知意,尽量大写

2.访问shell变量

2.位置参数即命令行参数         

由系统提供的参数为位置参数

3.预定义变量         

$# 包含命令行参数的个数

$@ 包含所有命令行参数:"$1 $2 ...$9"

$* 包含所有命令行参数:"$1,$2.....$9"

 $$: 包含正在执行进程的ID号

$? 包含前一个命令退出的状态

 

4.环境变量 

5.shell程序和语句 

1.说明性语句

2.功能性语句 

1.键盘读入变量值

 2.算术运算命令 expr

3.test命令 
1.测试字符串

s1 = s2 测试两个字符串的内容是否完全一样

s1!= s2 测试两个字符串的内容是否有差异

-z s1 测试s1字符串的长度是否为0

-n s1 测试s1字符串的长度是否不为0

 2.测试整数

a -eq b 测试a与b相等

a -ne b 测试a与b不相等

a -gt b 测试a是否大于b

a -ge b 测试a是否大于等于b

a -lt b 测试a是否小于b

a -le b 测试a是否小于等于b

 

3.文件属性 

-d name 测试name是否为一个目录 

-f name 测试name是否为普通文件

-L name 测试name是否为符号链接

-r name 测试name是否存在且可读

-w name 测试name是否存在且可写

-x name 测试name是否存在且为可执行

-s name 测试name是否存在,且长度不为0

f1 -nt f2 测试文件f1是否比文件f2更新

f1 -ot f2 测试文件f1是否比文件f2更旧

 3.结构性语句

1.顺序

1.read 输入 

read -p "请输入一个整数 " NUM1      

2.echo 输出                

echo "NUM1=$NUM" #默认换行

echo -n "NUM1=$NUM" #表示不换行 

2.选择 
1.单分支
if [条件为真]
then
语句
fi

2.双分支 
if [条件为真]
then
语句1
else
语句2
fi

3.多分支 
if [条件1为真]
then
语句1
elif [条件2为真]
then
语句2
elif [条件3为真]
then
语句3
.....
else
语句n+1
fi

 

case 字符串变量 in
# 1|3|5|7
模式1|模式11|模式12)
语句1
;; #---->break
模式2)
语句2
;;
模式3)
语句3
;;
....
模式n)
语句n
;;
*)
语句n+1
;;
esac

3.循环 
1.for

带列表的fo

不带列表的for

 

 类似于C的for

 

2.while 
while [条件为真]
do
语句
done

3.break :跳出循环

4.continue: 结束本次循环,继续下一次循环 

6.函数 

1.函数的定义

1.方式一
函数名()
{
函数体
}
2.方式二
function 函数名()
{
函数体
}

2.函数的调用

方式一

value_name=`function_name arg1 arg2`
变量名=`函数名 参数1 参数2`
函数的所有标准输出都传递给了主程序的变量

方式二

function_name arg1 arg2
函数名 参数1 参数2
echo $? #$?上一个命令退出的状态

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值