算法工程师18——Linux从入门到熟练

linux把下面这个教程和后面的参考课程里面的视频看了就行了,linux比较简单,主要就是一些命令

Linux

1 简介

1.1 什么是Linux,为什么要学Linux

答:(1)Linux作为3大操作系统之一,在服务器市场占据重要地位,我们要进行服务器端开发,必须要学会Linux,它的重要特点就是快,几乎没有图形界面,因为用不到,让服务器能跑就行。
(2)Linux的操作就好像我们windows打开cmd命令一样,只需要用命令就可以实现电脑的各种操作,文件的保存删除修改等,不需要界面。所以学Linux主要就是学命令。
Linux基本特点
1、没有文件扩展名,windows中利用后缀名找到相应的打开软件
2、所有东西都是文件,包括硬件在Linux中也是文件。Linux没有盘符,硬盘对应一个文件夹。
3、多用户使用

在这里插入图片描述

1.2 Linux系统安装

我们一般一个电脑安装一个系统,我们电脑安了windows操作系统了,如果要安Linux需要再用一台电脑,为了方便,我们就直接在本机的电脑上创建一个虚拟机。以下两步:
(1)虚拟机就是一台独立的电脑,我们先按虚拟机VMware;
(2)有了电脑以后,就需要安操作系统了,我们再安装CentOS操作系统,这样就可以学习Linux。就相当于有了一台服务器了,自己的电脑把屏幕撤了就是服务器,撤了屏幕鼠标啥的主机里的程序照样可以继续跑。

1.3 操作系统

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

咱们自己的电脑去掉鼠标、键盘、显示器它也是运行的了,比如放个电影,你插显示器它也在播放,不插显示器它也在播放。

1.4 服务器

我们说的云服务器就是购买阿里腾讯的服务器,然后使用,它们有很多服务器,专门来出租,比如张北县的大数据中心就放了很多服务器。

服务器:
(1)稳定
(2)安全
(3)快速
(4)不能关机

敲黑板!
敲黑板!
敲黑板!

服务器(电脑)用Linux操作系统不用windows的,最重要的一点就是因为免费,服务器要求稳定安全,你搞个烂界面占了一堆内存。所以就不要界面了,通过命令进行交互就行了。
和python编程一个道理,可以让程序有界面,界面下操作,也可以直接在命令窗口用命令行进行操作。

定位不同,Linux本来就是用来给服务器的,而不是给客户端用,所以基本不需要图形界面。

运维就是维护服务器,我们平时整理自己的电脑就是运维。只不过是运维自己的。

嵌入式和普通电脑的区别:
https://jingyan.baidu.com/article/9faa7231f9d671473d28cb57.html

2 Linux辅助软件3个足够

我们如果要使用Linux,第一步的就是开机了。开机以后我们要用的话,就直接在上面敲命令,让它执行就可以了。但是我们打开虚拟机在里面操作比较麻烦。能不能用外面的电脑控制了,当然可以了。
比如我们在张北阿里巴巴大数据中心安了100万台服务器,就是100万台电脑。我们控制的时候不可能到了大数据中心去控制它们。我们在北京的个人电脑上敲命令让它传到服务器执行就行了。
这里就用到了远程控制软件,主要是下面两个:

2.1 Xshell

这个软件安到我们普通的电脑上,我们做运维做部署直接操作用它操作远程服务器就行了。
(1)首先需要输入我们要控制的服务器的ip,登上账号和密码,我们就连接到远程服务器了,就可以发送命令了。
(2)操作起来和直接在Linux上操作是一样的,都是输入命令,这样通过这个软件就起到了远程操作的作用了。

在这里插入图片描述

2.2 Xftp

这个软件主要用来进行文件的操作,直接用手拖放文件就行了,省的我们敲命令了。

2.3 FileZilla Client(用前两个,不用它)

这个软件和上面的Xftp一样,用这个就行了,这个更好用一些

3 Linux操作(命令)

3.1 界面和命令行操作的区别

在这里插入图片描述

linux发行版有很多功能模块组成:
其中图形界面是X Window系统模块。
(1)X Window系统是客户机/服务器结构的。X Window的实现是与操作系统内核分开的,其主要由X Server和X Client两部分组成。
(2)X Window系统不是Unix/Linux操作系统的必须的构成部分,而只是一个可选的应用程序组件。

3.2 命令解释器

输入的命令解释给操作系统执行
sheel和bash是两种不同的命令解释器。
在这里插入图片描述

3.3 命令是怎么执行的?(2步,shell调用,操作系统执行)

在Linux系统中,shell解释器并不直接将命令翻译成机器码。其主要任务是解释和执行用户输入的命令,而实际的翻译成机器码的任务是由操作系统的内核完成。

具体来说,当用户在shell中输入一个命令时,shell解释器会解析该命令并调用相应的系统调用。系统调用是一组由操作系统提供的接口,允许用户程序请求操作系统的服务,例如文件操作、进程管理等。

操作系统内核接收到系统调用后,会进行一系列操作,其中包括将用户命令翻译成机器码。这个翻译的过程涉及到很多底层的操作,包括内存管理、进程调度、权限检查等。最终,内核会执行相应的机器码指令来完成用户命令指定的操作。

总结起来,shell解释器负责解析和调用系统调用,而操作系统内核则负责将用户命令最终翻译成机器码并执行。这个过程确保了用户能够通过高级的命令行接口与底层的硬件和操作系统进行交互。

3.4 内部命令和外部命令的区别

在这里插入图片描述

3.5 常见命令

type -a 查看命令是内件命令还是外部命令。
man主要查看系统命令的用法文档;
help + 内建命令: 查看Bash shell 内建命令
外部命令(–help): 查看外部命令,比如anaconda中的conda命令。

conda命令即是外部命令,也可以叫系统命令。简单把系统命令认为就是外部命令就行。

系统命令: 系统命令是在操作系统中作为独立的可执行文件存在的命令。这些命令通常是在文件系统中的某个目录(如 /bin、/usr/bin)下的可执行文件,例如 ls、cp、mkdir 等。
Bash 内置命令: Bash 内置命令是直接嵌入到 Bash shell 程序中的命令。它们不是外部可执行文件,而是作为 Shell 的一部分,例如 echo、cd、pwd 等。

主要就是文件的增删改查,另外可能涉及一些管理的命令,命令和编程是一个道理。

在这里插入图片描述
出来黑乎乎的界面就已经进去了
不要界面,界面占内存,服务器不需要这些东西

在这里插入图片描述

3.6 基本规则

(1)命令和参数一定要用空格隔开,多个空格等于一个空格;
(2)区分大小写;
(3)有些命令是自带的(内置命令),有些命令是我们安装的,有些命令是关键字,有些是脚本,有些是文件;
(4)help查看内部命令, man

3.7 掌握常见的增删改查命令就可以了

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

4 一切都是文件

万事万物皆文件
wiindows分盘,mac和linux不分盘,不要更改二级目录,从3级目录开始更改,因为2级目录都有自己的默认含义。
在这里插入图片描述
在这里插入图片描述

不使用windows的驱动器,它的分区磁盘是挂载到某一个目录里面。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在Unix/Linux操作系统中也必须区分文件类型,通过文件类型可以判断文件属于可执行文件、文本文件还是数据文件。在Unix/Linux系统中文件可以没有扩展名。

4.1 文件操作(增删改查文件)

一切皆文件
在这里插入图片描述
(1)cd … 就是到当前目录的上一文件夹
(2)cd / 就是到根目录
(3)ll /etc 就是展开etc文件夹下的文件
(4)./是当前文件夹下
(5)cd 就是返回到用户的目录
(6)rm -f install.log 强制删除,不出现提示信息, 其中-f ,另外还有-a,-p等都是参数,有特定意义,比如删除文件夹,删除文件等

在这里插入图片描述
在这里插入图片描述
ls或者ll后出现的total代表文件占用资源总量
在这里插入图片描述

4.1.1 移除文件大全

Linux中删除文件的命令叫移除。bash shell中删除文件的命令是rm
(1)删除空目录 rmdir deleteEmptyFolder
(2)rm -i filename删除文件,使用-i命令参数会在删除前提示你是不是要真的删除该文件,因为文件一旦删除就无法找回
(3)rm filename或rm -f filename直接删除文件,该命令会直接删除文件,不会给出提示
(4)删除文件夹 rm -ir filedir命令,该命令需要缺每个文件是否要被删除,如果文件过多会非常繁琐
(5)rm -rf filedir 该命令会直接删除文件夹,不会给出警告信息和提示,之间把文件夹以及里面的附属文件和文件夹都删除了
(6)只删除文件或文件夹
在这里插入图片描述
(7)批量删除文件
在这里插入图片描述

4.2 vi编辑器(编辑文件)

vi 就类似于记事本,但是功能比记事本强,VIM
用于在工程中编辑配置文件啥的

4.2.1 3种模式(编辑,输入,命令行)

编辑模式全是快捷键
输入直接输入就行
vi有三种基本工作模式: 命令模式、文本输入模式(编辑模式)、末行模式。

在这里插入图片描述

4.2.2 VIM

(4条消息) vim编辑器里面一些不为人知的操作_乐猿-CSDN博客
https://blog.csdn.net/MrDing991124/article/details/78483731

4.2.3 文件传输

(1)电脑和虚拟机
直接用xfps
用rz.sz命令

(2)虚拟机和虚拟机

4.3 文本文件、链接、文件夹

它们的标记不一样,

5 网络命令

6 用户和组权限

linux文件权限常用操作

文件分为组权限,用户权限和其它用户权限3种
在这里插入图片描述
在这里插入图片描述

6.1 root

root用户是最牛逼的一个用户,拥有所有权限,是个超级管理员。

6.2 组

把用户分成几个组,方便管理,比如1组的学生去打篮球,2组的学生去跑步,就不用一个一个点名字,张三李四王五去看球了

用户和组是多对多的关系

7 三种安装软件方式

安装包安装,解压安装(直接解压就行),源码安装

7.1 yum管理软件

yum和anaconda里的conda是一个道理

8 Linux三剑客(对文本操作的6个命令)

awk一般不用
在这里插入图片描述

sed语法格式
在这里插入图片描述

9 后台运行程序(前台运行你不能执行其它命令,后台隐藏在后台)

在这里插入图片描述

9 shell编程(shell就是一门编程语言)

shell命令和linux命令有什么区别

在这里插入图片描述

我们输入电脑的abcd等ascii码通过shell翻译成机器代码,供内核使用,调用硬件执行。

我们在linux中输入命令的时候,计算机怎么理解,那就需要shell解释器,把我们的命令翻译成机器能识别的二进制代码,然后得到输出再翻译成我们能理解的字符。

在这里插入图片描述

在这里插入图片描述
操作系统有一些服务程序,一般都是没有界面的,维护电脑运行,比如网络连接,接口监视等。

在这里插入图片描述

为什么用shell,他就是为了操作linux操作系统,进行增删改查等,就这么简单,而不是为了识别图像,不是为了做网站,就是为了执行一些命令操作linux系统。

shell就是一个程序文件,或者叫脚本,和python一样,不过linux内核可以运行它

Linux内核主要来操作硬件,如果我们要操作硬件就去操作Linux内核

9.1 shell就是做命令集合的程序文件

(和python一样,只不过shell程序可以直接用linux安的环境来执行)
(1) shell和python一样,不过shell的作用是为了操作linux内核,就是操作操作系统,来执行不同的事情。python一般文件结尾是.py,shell结尾一般是.sh,但是在linux中一切都是文件,加不加.sh都一样,只不过加了以后让我们好理解这是一个shell文件,对于程序执行没有任何影响。

(2) 在一个文件里写好多个命令,然后统一去执行,就这么简单,只不过把多个命令放到了一起。写好shell文件,linux内核可以直接用

(3)在一个shell里执行的文件,你拿出来直接用都能用,shell文件就是把他们放到了一起,就这么简单。

学程序无非4个步骤
(1)变量(数组,字符串,日期时间)
(2)逻辑处理结构运算符
(3)函数
(4)代码间的调用执行

9.2 linux开机启动特定服务

linux开机启动流程图
在这里插入图片描述

我们要做的就是把shell脚本文件放到开机启动的服务里面,让它也运行我们的脚本文件。

10 shell概述

10.1 shell理解

在这里插入图片描述

  • 1 命令行就是shell语言,但是有时候需要做一些定制化的操作,我们就把每一个命令行放到1个文件中,这样多个命令统一执行,这个文件就叫做脚本。
  • 2 脚本文件就是可以直接翻译执行的文件,能写脚本文件的语言叫脚本语言,比如python和shell,java不行,因为java文件需要先编程,用javac编译成.class文件,而python不用。
  • 3 linux系统分为两大派别,红帽和乌班图,它们使用的linux内核一样,shell不一样,但是shell不一样的地方很少,红帽系统和乌班图系统的区别就类似于win8和win10,红帽执行的时候是用bash软件,乌班图是dash软件。
  • 4 不同linux系统用的软件也有所区别,centos属于红帽分支,按装基于乌班图的软件可能会无法正常运行。
  • 5 启动linux时候,会自动执行bash软件,出来那个命令行界面,我们在里面写命令;
  • 6 sh的命令是一个软连接,它指向了bash

10.2 创建shell脚本

后缀.sh可以加也可以不加
在这里插入图片描述

10.3 执行shell脚本

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

  1. 相对路径直接就是文件必须加./
  2. sh 可以执行shell脚本,因为它是软连接,直接指向了bash,实际上调用的还是bash。
  3. 可以不加bash或者sh,直接指向.sh文件,原因是我们打开的这个命令行界面,本身就是bash软件,可以在里面直接执行。
  4. 当用bash执行的时候不用考虑权限,是因为它后面的文件只是bash命令的一个参数。

10.4 深入理解绝对路径和相对路径

(1)绝对路径加/
(2)相对路径1,相对路径下右文件夹目录可以直接用,./可加可不加。
(3)相对路径2,如果相对路径下直接就是文件,必须要./ 。
在这里插入图片描述

11 shell的局部变量和全局变量

在这里插入图片描述

11.1 自定义变量

赋值的时候不加$,使用的时候要加,这是一个很重要的问题,很多时候都是因为它出一些问题
在这里插入图片描述
export将局部变量转为全局变量;

11.2 变量之间的运算

在这里插入图片描述

12 流程语句

12.1 判断

在这里插入图片描述

12.2 if then

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

12.3 case

12.4 for

12.5 while

13 函数

13.1 系统函数(系统内置的一些函数)

实际上linux中的一些命令就是函数,命令都放在系统环境变量中,我们每执行一个命令,相当于就调用这个工具或者叫函数。

13.2 自定义函数

自定义函数可以用return,,但是return只能返回0-255的数,我们基本上不用。
在这里插入图片描述

在这里插入图片描述

14 gcc编译工具(进行c++编译的编译器)

4.1 gcc编译器

可以编译程序
可以编译动态库
可以编译静态库

4.2 gcc编译时让程序能找到动态库的3种方式

1)拷贝自己制作的共享库到/lib或者/usr/lib(不能是/lib64目录)2)临时设置LD_LIBRARY_PATH:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:库路径

(3)永久设置,export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:库路径,设置到~/.bashrc或者 /etc/profile文件中
deng@itcast:~/share/3rd/2share_test$ vim ~/.bashrc
最后一行添加如下内容:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/deng/share/3rd/2share_test

4.3 GDB调试器

GNU工具集中的调试器是GDB(GNU Debugger),该程序是一个交互式工具,工作在字符模式。

4.3.1 GDB四个方面的功能

GDB主要帮忙你完成下面四个方面的功能:

启动程序,可以按照你的自定义的要求随心所欲的运行程序。
可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)
当程序被停住时,可以检查此时你的程序中所发生的事。
动态的改变你程序的执行环境。

4.3.2 编译时加入调试信息

一般来说GDB主要调试的是C/C++的程序。要调试C/C++的程序,首先在编译时,我们必须要把调试信息加到可执行文件中。使用编译器(cc/gcc/g++)的 -g 参数可以做到这一点。如:

gcc -g hello.c -o hello

g++ -g hello.cpp -o hello

如果没有-g,你将看不见程序的函数名、变量名,所代替的全是运行时的内存地址。

参考课程

下面两个足够了
[1] 太厉害了 已跪!终于有人能把Linux讲的这么通俗易懂了,现在分享给大家(操作系统、Linux运维、全套教程,从入门到精通)linux看这个,shell看下面的

对应的pdf文件:linux介绍https://download.csdn.net/download/xiaotiig/63805105
对应的课程资料:https://pan.baidu.com/s/1suRiI7ikcW3gLjJNXpU3Ug 提取码:lzj8
就是下面这门课
在这里插入图片描述
[2]3天搞定Linux,1天搞定Shell,这个shell讲的不错()

这个视频带的shell的pdf文件,把这个看了shell就懂了,自己电脑也有

[3] 这个感觉太深入了,最好的课程【小白入门 通俗易懂】2021韩顺平 一周学会Linux_哔哩哔哩_bilibili

(1)linux命令大全平时背诵用的

就背诵下面2个就行:
1、Linux命令大全(超详细版)_linux命令大全手册-CSDN博客

2、Linux常用命令大全 | 176个_linux 外部命令-CSDN博客

#你可以使用 pidstat 命令结合 watch 命令来实现每秒显示某个程序的内存使用情况。首先,你需要找到该程序的进程ID(PID),然后运行以下命令:
watch -n 1 pidstat -r -p <PID>

要找到程序的进程ID(PID),可以使用 ps 命令或 pgrep 命令。
ps aux | grep <程序名>
pgrep <程序名>

(2)linux命令大全查询用的

下面3个是查询用的,不要背诵:

[1] Linux 命令大全 | 菜鸟教程
https://www.runoob.com/linux/linux-command-manual.html

[2] Linux命令大全(手册) – 真正好用的Linux命令在线查询网站
https://www.linuxcool.com/

[3] shell在线编程

(3)linux常用面试问题,面试用(面试知道下面的就足够了)

  1. 文件增删改查;
  2. 用户组操作;
  3. 文件权限操作;chmod
  4. 后台程序控制
  5. 软件安装yum;
  6. 文件编辑vim

(1)Linux常用操作指令(面试专用) - ccy1106 - 博客园
https://www.cnblogs.com/ccy1106/p/6637661.html

(2)linux面试常问命令 - USTC丶ZCC - 博客园
https://www.cnblogs.com/USTC-ZCC/p/13686351.html
(3)程序员必备:46个Linux面试常见问题!收藏! - 知乎
https://zhuanlan.zhihu.com/p/86075753

(4)(22条消息) Linux命令面试常考的简单汇总_别说话写代码的博客-CSDN博客
https://blog.csdn.net/qq_21997625/article/details/84071344?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0.pc_relevant_paycolumn_v3&spm=1001.2101.3001.4242.1&utm_relevant_index=3

(5)shell常见命令

(6)24 道必知必会的 Shell 脚本面试题_shell面试_WakeUpCcc的博客-CSDN博客

#!/bin/bash
if [ $1 -gt $2 ]
then echo "参数$1大于参数$2"
else echo "参数$1小于参数$2"
fi


数字判断一些命令:
#-gt是大于
#-lt是小于
#-eq是等于
#-ne是不等于
#-ge是大于等于
#le是小于等于   

# 为了确保最佳的兼容性,应该始终使用单个等号=来比较字符串。在Bash中,==也可以工作,但是为了可移植性,最好避免使用它。BASH中可以用!=来比较字符串不相等

1 系统命令

// ssh 链接一个服务器
ssh 133.5.37.233
// su 切换用户
su yarn

// 


2 增删改查

// 不同服务器之间传输文件
scp local_file.txt remote_username@remote_ip:remote_path/

3 文件夹和文件的其它操作

# 提取目录路径
directory=$(dirname "$input_path")
# 获取文件全路径
params_path=$(realpath Params.txt)
# 提取文件名
filename=$(basename "$input_path")
# 文件权限
chmod -R 777 文件夹
# 统计文件夹下文件数量
ls -l /path/to/folder | grep "^-" | wc -l
// 统计文件夹内大小
du -sh /path
// 文件夹还剩多少存储容量
df -h /home
// 硬盘挂载情况
df -h 

4 进程处理

# 1 按名字查询进程
ps -ef | grep name 
# 2 查看各个进程的资源占用状况和运行情况
top
# 3 查看系统内存
free -h
# 4 清空系统内存,sudo sync命令可以将内存中的数据写到磁盘中,避免数据丢失;sudo echo 3 > /proc/sys/vm/drop_caches命令会将buffers、cache、swapcache中的缓存全部清空。
sudo sync && sudo echo 3 > /proc/sys/vm/drop_caches

Linux下free和top命令详解 - 郭慕荣 - 博客园
https://www.cnblogs.com/jelly12345/p/17299018.html

5 vim

6 重要命令

// 统计文件夹内大小
du -sh /path
// 导入环境变量
export 
// ldd 查看程序的依赖库
// linux下查看文件md5值的命令为:md5sum 目标文件
// linux 系统比对两个文件内容是否完全相同:md5sum file1 file2
// linux 系统比对两个文件内容不同的地方:diff  file1 file2

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓码bigdata

如果文章给您带来帮助,感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值