一.Linux系统相关介绍(了解一下)
1.unix 操作系统
Unix 20 世纪 70 年代出现的一个操作系统,除了作为网络操作系统之外,还可以作为单机操作系统使用。Unix作为一种开发平台和台式操作系统获得了广泛使用,主要用于工程应用和科学计算等领域。Unix系统依然凭借其稳定性、可伸缩性和强大的网络功能等优点,在许多领域得到广泛应用。最开始的时候是免费的,后来 AT&T 发现 unix 操作系统是有一定的商业价值的,不在将 unix 操作系统免费授权给学术研究机构,对使用 unix 的科研机构开始收取版权费,大学里就开始使用 minix 类 unix 操作系统。
2.linux 操作系统
最初由林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds)于1991年10月5日首次发布继承了 unix 思想,发明出了一个操作系统,叫做 Linux。全称叫做 GNU/linux(因为单独的Linux内核并不可直接使用,一般搭配GNU套件) 基于 POSIX 的多用户、 多任务、 支持多线程多 CPU 的操作系统,它能运行绝大多数的 unix 软件,是一个稳定的多用户的操作系统。
补充一下:
①POSIX 是可移植操作系统接口。 它是一个定义了操作系统核心功能的接口标准, 目的在于使应用程序和操作系统内核之间的通信更加简便、可移植的操作。
②POSIX 接口定义了一系列的函数、 参数和常量, 用于执行文件操作、 进程管理、 线程控制、 共享内存和信号处理等操作。 它为不同的操作系统提供了一致的编程接口, 使得开发人员可以在不同的操作系统上编写可移植的应用程序。
③通过使用 POSIX 接口, 开发人员可以更容易地编写可以在多个操作系统上运行的应用程序, 从而简化了跨平台开发的复杂性, 并增强了应用程序的可移植性和可重用性。 值得注意的是, POSIX 标准并不包含操作系统的具体实现, 只是定义了操作系统与应用程序之间的接口规范。
3.linux 与 unix 的区别与联系
linux 是一个类 unix 操作系统 unix 要早于 linux;linux出现的原因是因为unix操作系统收费;linux 在功能和用户体验上模仿并优化了 Unix;linux 和 Unix 有很多的共通之处,当你掌握了linux 的开发方法 那你就可以在 unix 上做开发;大多数 unix 操作系统,并不能安装在服务器或者个人电脑上,linux 操作系统则可以运行在各种各样的硬件平台上;还有一点,Unix属于商业软件是收费的,Linux 是开源软件,是免费的开源的;
4.GNU 和 GPL
GNU:GNU's not unix
针对 unix 操作系统开始收费之后,发起的一项运动,目的是打造一款完全免费、开源的操作系统,为了支持 GNU 运动,成立了自由软件基金,来为 GNU 计划提供技术、法律、财务上的支持。
GPL:GNU General Public Licese(就是一个许可证);
GNU 通用公共许可证简称为 GPL,是由自由软件基金会发行的用于计算机软件的协议证书,使用该证书的软件被称为自由软件。大部分 GNU 的程序和超过一半的自由软件使用这种许可证。
5.GNU 和 Linux 的关联
Linux 和 GNU( GNU’s Not Unix) 有密切的关联。
GNU(GNU's Not Unix!)是一个自由的操作系统,它的设计类似Unix,但不包含具著作权的Unix代码。GNU的创始人是理查德·马修·斯托曼,他将GNU视为“达成社会目的技术方法”。然而,GNU的发展并未完成,其中最大的问题是具有完备功能的内核尚未被开发成功。尽管如此,GNU计划已经开发出了许多重要的软件和工具,如Emacs文字编辑器、GCC(GNU Compiler Collection,GNU编译器集合)等。Linux操作系统包含了Linux内核与其他自由软件项目中的GNU组件和软件,因此它有时被称为GNU/Linux。
GPL(General Public License)是一种由自由软件基金会(Free Software Foundation)发布的软件许可证,也被称为GNU GPL、GPLv2或GPLv3。它是一种开源软件许可协议,授予计算机程序的使用人权利,使得用户可以在满足许可条款的前提下,无偿或有偿地使用、复制和传播这些程序。GPL的目的是促进自由软件的发展,让软件可以自由地被公众使用、改编和交流。
GNU是一个致力于开发自由操作系统的项目,而GPL则是保障这些自由软件能够自由传播和使用的许可证。这两者共同构成了自由软件运动的重要组成部分。
6.操作系统的概念以及常见的操作系统
概念:操作系统(英语:Operating System,缩写:OS)是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序。
常见的操作系统:unix(服务器,银行,超级计算机);Linux(开源免费, IT 行业,企业);windows(个人电脑,游戏,常用软件);IOS(苹果);安卓(底层是 Linux);鸿蒙(华为)。
7.linux 操作系统的主要特性
Linux 操作系统的重要思想:一切皆文件
linux 操作系统的特性:开源性(完全免费);开放性(支持多平台);支持多用户、多任务;有良好的界面;完全兼容 POSIX1.0 的标准,文件系统具有较高的安全性和稳定性,网络功能完善。
8.ubuntu 操作系统的安装及使用
基于linux内核的ubuntu20.04版本可自行下载
二.LINUX环境搭建
建议利用虚拟机:第一步,先安装虚拟机;第二步,进行配置内存、CPU、磁盘等,先安装Ubuntu操作系统,进行设置。进行配置网络连接确保网络连接正常,可以通过ping命令测试。安装完界面很小,并且也不能复制粘贴,需要安装一个tools工具;练习使用的是Ubuntu20.04桌面版,另外还有服务器版。
三.Ubuntu操作系统目录以及路径介绍
1.目录:
~:用户的家目录
用户的家目录也可以是:/home/用户名
root用户的家目录:/root
2.路径
相对路径:从从当前路径起始的路径 例:./0412
绝对路径:从根目录起始的路径 例:/home/wj/9206/0415
3.终端介绍
普通用户的用户名@计算机名:当前路径$
root@计算机名:当前路径#
四.Linux/shell指令
1.用户管理类指令
用户切换:su 用户名
修改密码:sudo passwd root(sudo管理员权限下放)
添加用户:sudo adduser 用户名(如果用‘sudo useradd 用户名’指令创建出来的用户,没有家目录,没有密码,不建议用)
删除用户:sudo userdel 用户名 -r(如果显示进程在运行,重启虚拟机)
2.磁盘管理类
1.查看:ls
格式 1:ls 路径
格式 2:ls -l 路径 //查看详细信息
格式 3:ls -a 路径 //查看所有内容,包括隐藏文件
格式 4:ls -i 路径 //查看文件的i节点,每个文件/文件夹都有一个独一无二的 i 节点,i节点是文件唯一性的标识;
2.修改权限:chmod
格式 1:chmod 数值 文件名
数值:八进制数
最终需要的权限是:r-x r-x r--> 101 101 100 =>0554,例:chmod 0554 text
格式 2: chmod u+x 文件名
u -- user -用户自己
g -- group -同组
o -- other -其他
a -- all -所有用户
+ 添加该权限
- 去掉该权限
x –可执行
w –可写
r –可读
3.切换路径
终端指令:cd 路径(如果省略路径直接回到家目录)
特殊路径:
- :回到路径切换之前的路径
/:根目录
~:当前用户的家目录
.:当前路径
..:上一级路径
4.打印当前位置路径
终端指令:pwd
5.创建文件夹
格式 1:mkdir 路径/文件夹名
格式 2:mkdir 文件夹 1/文件夹 2/文件夹 3 -p
6.删除文件夹
rmdir 文件夹名:只能删除空的文件夹(比较单一,一般不用)
7.删除文件
格式 1:rm 文件夹 -r
格式 2:rm 文件名
8.创建文件
使用touch创建:如果文件不存在只创建,不打开;如果文件存在则创建失败。
使用gedit(编辑器)创建:如果文件不存在先创建,并打开;如果文件存在则只打开
9.查看:cat
格式 1: cat 文件名
将文件中的内容, 打印到终端;
格式 2(cat和重定向符>配合使用):cat 文件名 1 > 文件名 2
将文件名 1 中的内容,打印到文件名2中,类似于复制
>类似于 w+如果文件名2中原本有内容,会被清空
格式 3(cat和重定向符>>配合使用):cat 文件名1 >> 文件名2
>>类似于a+,追加写
10.回显:echo
格式 1: echo 字符串
将字符串打印到终端
格式 2.1(echo 和重定向符配合使用 >): echo 字符串 > 文件名
将字符串,写入到文件中,>类似于w+,如果文件中原本有内容,会被清空
格式 2.2(echo 和重定向符配合使用 >>): echo 字符串 >> 文件名
将字符串,写入到文件中,>类似于a+,如果文件中原本有内容,追加写(自带一个换行)
11.复制
格式 1: cp 文件名1 目标位置/文件名2
格式 2: cp 文件名1 文件名2
格式 3: cp 文件名1 目标位置
格式 4: cp 文件夹1 文件夹2 -r
12.剪切
格式 1:mv 文件名1 目标位置/文件名2
格式 2:mv 文件名1 文件名2 《类似于重命名 rename》
格式 3:mv 文件名1 目标位置
格式 4:mv 文件夹1 文件夹2
13.链接:ln(小写的 L,ln)可以实现跨路径文件操作
格式 1(硬链接):ln 原文件 链接后你起的文件名
原文件和链接后的文件,有相同的 i 节点,修改其中任意一个文件, 另外一个也会跟着被修改。删掉其中任意一个,对另外一个没有影响;链接文件的类型,是原文件的类型;
格式 2(软链接):ln 原文件 链接后你起的文件名 -s
链接文件和原文件有不同的 i节点,修改其中任意一个,另外一个也会跟着被修改,如果删除原文件,链接文件将不能使用;链接文件的类型,就是l(小写的L)
14.压缩与解压
压缩:tar -cvf 包名 原文件 (包名: .tar.gz 结尾)
解压:tar -xvf 包名
15.通配符:
*(匹配字符个数不受限制)
?(只匹配单一字符)
16.清屏:clear
17.自动补全:table
18.翻看指令:可以通过键盘的上下键
19.终端的复制、粘贴:ctrl+shift+c、ctrl+shift+v
20.查看历史:history
3.系统相关命令
1.查看进程
ps -ef
ps -aux
2.杀死进程
Kill -9 程序的PID
3.显示系统的运行时间
uptime
(当前时间、系统已经运行了多长时间、有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载)
4.网络相关
1.测试网络连接
第一步:存在网络图标
如果不存在,ubuntu20.04 网络图标丢失: 执行下面三行代码:
sudo service NetworkManager stop
sudo rm/var/lib/NetworkManager/NetworkManager.state
sudo service NetworkManager start
第二步:ping www.baidu.com
2.查看IP
联网前提下(下载net-tools工具)需要先输入指令:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install net-tools
下载完成后,终端输入指令:ifconfig
5.软件安装
①离线安装软件
需要有安装包,Linux下安装包以.deb结尾
安装:sudo dpkg -i 安装包名 (建议在当前路径下安装,输入安装包名时尽量使用tab键补全,防止出错)
卸载: sudo dpkg -r 软件名
②在线安装软件
sudo apt-get update //更新源
sudo apt-get upgrade //根据更新后的源,更新软件
下载: sudo apt-get install 软件名
卸载: sudo apt-get remove 软件名
五.主函数传参
在Linux下,使用C或C++编写程序时,主函数(main)可以接受命令行参数。这些参数是通过 argc(参数数量)和 argv(参数值数组)两个参数传递给main函数的。
用代码演示
#include<stdio.h>
int main(int argc,char *argv[])
{
// 使用一个for循环遍历命令行参数
for(int i=0;i<argc;i++)
{
// 打印出参数索引和对应的参数值
printf("argv[%d]=%s\n",i,argv[i]);
}
return 0;
}
使用 C 编译器(如 gcc)编译代码:gcc main.c -o main
将会生成一个名为main的可执行文件;
在终端输入指令:./main hello world 123
可以得到结果:
argv[0]=./main # 这是程序本身的名称
argv[1]=hello
argv[2]=world
argv[3]=123
注意:argv[0] 是程序的名称(在这里是 ./main),随后是传递给程序的参数。
拓展一下:
C 语言中的一个标准库函数,用于将字符串 nptr 转换(解析)为一个整数(int 类型)
int atoi(const char *nptr);将字符串转化为整型
形参: nptr:字符串指针
返回值:成功,转化得到整数;失败返回0;