️开讲啦!!!!️苏州程序大白️ |
️开讲啦!!!!️苏州程序大白️ |
个人主页:苏州程序大白
作者介绍:中国DBA联盟(ACDU)成员,CSDN全国各地程序猿(媛)聚集地管理员。目前从事工业自动化软件开发工作。擅长C#、Java、机器视觉、底层算法等语言。2019年成立柒月软件工作室。
如果文章对你有帮助,欢迎关注、点赞、收藏(一键三连)和C#、Halcon、python+opencv、VUE、各大公司面试等一些订阅专栏哦
️ 承接各种软件开发项目
有任何问题欢迎私信,看到会及时回复
微信号:stbsl6,微信公众号:苏州程序大白
想加入技术交流群的可以加我好友,群里会分享学习资料
操作系统是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。
1、管理好硬件设备,为用户提供调用方法。
2、是计算机中最重要的系统环境。
3、管理各种其他的软件和程序的运行。
4、对系统中文件进行管理。
1、桌面系统
:Windows ,MacOS 为主,图形界面良好用户群体大。
2、服务器系统
:Linux,Unix 为主,安全,稳定,费用低占有量大。windows 占有率比较低。
3、嵌入式系统
:Linux 为主,主要用于小型智能设备,如智能手机,机器人等。
1991 年 林纳斯(Linus) 就读于赫尔辛基大学期间,对 Unix 产生浓厚兴趣,林纳斯经常要用他的终端仿真器(Terminal Emulator) 去访问大学主机上的新闻组和邮件,为了方便读写和下载文件,他自己编写了磁盘驱动程序和文件系统,这些在后来成为了 Linux 第一个内核的雏形,当时,他年仅 21 岁!林纳斯利用 C 做工具,编写了 Linux 内核,后来经过全世界的网友的帮助,最终成为优秀的操作系统。
1、Linux 是一款开源免费的操作系统。
2、支持多种硬件平台。
3、支持多用户。
4、具有非常强大的网络功能。
1、Linux 服务器
:目前是服务器系统中最广泛一种。
2、桌面应用
:新版本的 Linux 系统特别在桌面应用方面进行了改进,达到相当的水平。
3、嵌入式系统
:由于 Linux 系统开放源代码,可以方便修改,在嵌入式设备领域有很广阔的市场。
1、内核
:Linux 操作系统的核心代码,是 Linux 系统的心脏,提供了系统的核心功能,用来与硬件交互。Linux 内核官网
2、文件系统
:通常指称管理磁盘数据的系统,可将数据以目录或文件的型式存储。每个文件系统都有自己的特殊格式与功能。
3、命令解释器
:它使得用户能够与操作系统进行交互,负责接收用户命令,然后调用操作系统功能。
4、 应用软件
:包含桌面系统和基础的软件操作工具等。
严格的来讲,Linux
只是一个系统内核,即计算机软件与硬件通讯之间的平台。一些组织或厂家将 Linux
内核与 GNU 软件
(系统软件和工具)整合起来,并提供一些安装界面和系统设定与管理工具,这样就构成了一个发型套件,目前市面上较知名的发行版有:Ubuntu
、RedHat
、CentOS
、Debian
、Fedora
、SuSE
、OpenSUSE
、Arch Linux
、SolusOS
等。
作为 Linux
发行版中的后起之秀,Ubuntu Linux
在短短几年时间里便迅速成长为从 Linux
初学者到资深专家都十分青睐的发行版。由于 Ubuntu Linux
是开放源代码
的自由软件,用户可以登录 Ubuntu Linux
的官方网址免费下载该软件的安装包。Ubuntu 官网
文件系统是计算机操作系统的重要的组成部分,用于组织和管理计算机存储设备上的大量文件。
熟悉的 windows 文件系统,分不同盘符。
Linux 的文件组织中没有盘符。将根(/)作为整个文件系统的唯一起点,其他所有目录都从该点出发。
犹如一颗倒置的树,所有存储设备作为这颗树的一个子目录。
普通文件:包括文本,压缩包,音频视频等文件都是普通文件。
1、/bin 目录
/bin
目录包含了引导启动所需的命令或普通用户可能用的命令 (可能在引导启动后)。这些命令都是二进制文件的可执行程序 (bin 是 binary---- 二进制的简称),多是系统中重要的系统文件。
2、/sbin 目录
/sbin
目录类似 /bin
,也用于存储二进制文件。因为其中的大部分文件多是系统管理员使用的基本的系统程序,所以虽然普通用户必要且允许时可以使用,但一般不给普通用户使用。
3、/etc 目录
/etc
目录存放着各种系统配置文件,其中包括了用户信息文件 /etc/ passwd
,系统初始化文件 /etc/rc
等。linux
正是因为这些文件才得以正常地运行。
4、/root 目录
/root
目录是超级用户的目录。
5、/lib 目录
/lib
目录是根文件系统上的程序所需的共享库,存放了根文件系统程序运行所需的共享文件。这些文件包含了可被许多程序共享的代码,以避免每个程序都包含有相同的子程序的副本,故可以使得可执行文件变得更小,节省空间。
6、/dev 目录
/dev
目录存放了设备文件,即设备驱动程序,用户通过这些文件访问外部设备。比如,用户可以通过访问 /dev/mouse
来访问鼠标的输入,就像访问其他文件一样。
7、/usr 文件系统
/usr
是个很重要的目录,通常这一文件系统很大,因为所有程序安装在这里。本地安装的程序和其他东西在 /usr/local
下,因为这样可以在升级新版系统或新发行版时无须重新安装全部程序。
8、/var 文件系统
/var
包含系统一般运行时要改变的数据。通常这些数据所在的目录的大小是要经常变化或扩充的。
9、/home
/home
普通用户的默认目录,在该目录下,每个用户拥有一个以用户名命名的文件夹。
1、绝对路径
:指文件在文件系统中以根目录为起始点的准确位置描述。例如 “/usr/bin/gnect”
就是绝对路径。最要的标志就是以 ‘/’
作为路径描述的开头。
2、相对路径
:指相对于用户当前位置为起始点,对一个文件位置的逐层描述。例如,用户处在 usr
目录中时,只需要 “games/gnect”
就可确定这个文件。在相对路径描述时。表示当前目录,…
表示上一级目录。
Linux 下有非常丰富的命令,可以用来完成大部分重要的 Linux 服务器操作维护功能,而且至今有些功能仍然通过命令操作比较方便。
实际工作中,大量服务器维护工作都是工程师通过远程控制来完成的,并没有图形界面,这时维护工作都需要通过命令来完成。
作为后端工程师,我们将来所写的代码都需要在服务器上运行,掌握基本的 Linux 操作命令有助于我们将来对项目的部署和控制工作。
终端
:使用命令对 Linux 系统进行操作的窗口。
命令行
:书写 Linux 命令的提示行。
操作 | 功能 |
---|---|
ctrl+alt +t | 打开一个终端 |
shift+ctrl+n | 打开一个终端 |
ctrl+d | 关闭终端 |
命令行输入 exit | 关闭终端 |
ctrl 和 + 号 | 字体放大 |
ctrl 和 - 号 | 字体缩小 |
ctrl + l | 清空屏幕 |
上下箭头 | 调取历史命令 |
Tab 键 | 自动补全文件名,目录名等信息 |
注:这里的 option
使用了复数形式 options
,意思是可以有多个命令。例如:command -a -l
可以简化为 command -al
command [-options] [parameter]
说明:
command:命令名称,一般为英文单词或单词的缩写
[-options]:命令选项,辅助命令进行功能细化,也可以省略
parameter:传给命令的参数,可以是0个或多个
作用:对一类文件名称的书写进行简化,例如 file1.txt
、file2.txt
、file3.txt
……,用户不必一一输入文件名,可以使用通配符完成。
通配符 | 含义 | 实例 |
---|---|---|
星号(*) | 匹配任意长度的字符串 | 用 file_*.txt,匹配 file_wang.txt、file_Lee.txt、file_Liu.txt |
问号(?) | 匹配一个长度的字符 | 用 flie_?.txt,匹配 file_1.txt、file_2.txt、file_3.txt |
方括号([…]) | 匹配其中指定的一个字符 | 用 file_[otr].txt,匹配 file_o.txt、file_r.txt 和 file_t.txt |
方括号([-]) | 匹配指定的一个字符范围 | 用 file_[a-z].txt,匹配 file_a.txt、file_b.txt,直到 file_z.txt |
管道可以把一系列命令连接起来,意味着第一个命令的输出将作为第二个命令的输入,通过管道传递给第二个命令,第二个命令的输出又将作为第三个命令的输入,以此类推。
ls | grep 'hello'
ls | wc -w
查阅 command
命令的使用手册,摁 q
退出。
man command
序号 | 命令 | 作用 | 备注 |
---|---|---|---|
1 | ls | 查看当前文件夹下的内容 | -l 展示详细信息,-a 展示隐藏文件(Linux 下。开头的为隐藏文件)。 |
2 | pwd | 查看当前所在位置绝对路径 | |
3 | cd [目录名] | 切换文件夹 | 参数为绝对路径或者相对路径,直接 cd 表示回到主目录,cd - 回到上一次工作目录 。 |
4 | touch [文件名] | 如果文件不存在,新建文件 | 可以同时跟多个参数表示创建多个文件。 |
5 | mkdir [目录名] | 创建目录 | |
6 | rm [文件名] | 删除指定的文件名 | 删除表示直接删除,无法找回,如果删除目录需要加 -r 选项。 |
7 | cp | 复制一个文件 | 如果拷贝的是一个目录需要使用 -r ,同时这个命令有另存为的作用 。 |
8 | mv | 移动一个文件 | 即使移动目录页不需要选项,有重命名的作用。 |
序号 | 命令 | 作用 | 备注 |
---|---|---|---|
1 | cat [文件名] | 查看文件内容、创建文件、文件合并、追加文件内容等功能 | |
2 | head [文件名] | 显示文件头部 | 选项 - n,n 表示一个数字,即可指定查看前 n 行或者后 n 行,不加选项默认查看 10 行。 |
3 | tail [文件名] | 显示文件尾部 | 选项 - n,类似 head。 |
4 | grep [搜索文本] [文件名] | 搜索文本文件内容 | -n 用于显示行号,-i 忽略大小写。 |
5 | find [目录] -name [文件名] | 在一个目录及其子目录下查找文件 | 会从指定目录及其所有子目录中查询搜索文件。 |
6 | wc [文件名] | 查看文件行数,单词数等信息 | -c 表示查看多少字符,-l 查看多少行,-w 查看多少单词。如果不加选项则显示这三项。 |
序号 | 命令 | 作用 | 备注 |
---|---|---|---|
1 | zip | 将文件压缩为 zip 格式 | 用于常与 windows 交互的情况,-r 选项可以压缩目录 。 |
2 | unzip | 将 zip 格式文件解压 | -d 可以选择解压位置。 |
3 | tar | 对 gz 或者 bz2 格式进行压缩解压 | -cjf 用于压缩 bz2 格式文件,-czf 用于压缩 gz 格式文件,-xvf 用于解压文件,兼容了 gzip 和 bzip2 命令的功能。 |
序号 | 命令 | 作用 |
---|---|---|
1 | sudo | 放在一个命令前,表示使用管理员权限执行。在打开终端第一次使用 sudo 时需要输入密码。 |
2 | chmod | 修改文件权限 |
chmod
在设置权限时,可以字母,也可以使用三个数字分别对应拥有者、组和其他用户的权限。
注:linux
中虽然执行是 execution
但是一般使用 x
作为执行,而不是 e
。
<!-- 直接增删 [所有人|拥有者|组|其他] 的 [文件|目录的] [读|写|执行] 权限 -->
chmod [augo][+/-][rwx] 文件名/目录名
who | 用户类型 | 说明 |
---|---|---|
a | all | 所用用户,相当于 ugo |
u | user | 文件所有者 |
g | group | 文件所有者所在组 |
o | others | 所有其他用户 |
# 直接修改 拥有者、组和其他 的 [文件|目录的] 权限
chmod 3个数字 文件名/目录名
例如:
777 ===> u=rwx,g=rwx,o=rwx
755 ===> u=rwx,g=rx,o=rx
644 ===> u=rw,g=r,o=r
意义 | 数字组合 | 总和 |
---|---|---|
rwx | 4 2 1 | 7 |
rw- | 4 2 0 | 6 |
r-x | 4 0 1 | 5 |
r– | 4 0 0 | 4 |
-wx | 0 2 1 | 3 |
-w- | 0 2 0 | 2 |
–x | 0 0 1 | 1 |
- - - | 0 0 0 | 0 |
序号 | 命令 | 作用 | 备注 |
---|---|---|---|
1 | echo | 向终端打印内容 | -n 表示打印完成不换行。 |
2 | date | 显示当前时间 | |
3 | df | 显示磁盘剩余空间 | -h 选项以 Mb 为单位显示,-T 显示文件系统类型,其中 ext4 的为磁盘。 |
4 | whoami | 显示当前用户 | |
5 | history [num] | 显示历史命令记录 | 默认显示 500 条历史记录,后面可以加具体数字表示显示多少条。 |
6 | whereis | 显示命令的位置 | 定位某个命令的二进制文件、源码和帮助页文件。whereis python3 返回的就是 /usr/bin/python3 。 |
输出重定向
> file 将 file 文件重定向为输出源,新建模式。
>> file 将 file 文件重定向为输出源,追加模式。
# 将执行结果,写到out.txt文件中,若有同名文件将被删除。
echo "hello world" > out.txt
# 将ls /usr的执行结果,追加到Lsoutput.txt文件已有内容后。
ls /usr >> output.txt
序号 | 命令 | 作用 | 备注 |
---|---|---|---|
1 | shutdown | 关机或者重启 | shutdown -r now 立即重启,shutdown now 立即关机,shutdown +10 10 分钟后关机,shutdown -c 取消关机计划 |
2 | ln | 创建链接 | ln -s hello.py hello 创建了 hello.py 的软链接 |
3 | tree | 获取目录树形结构 |
vi
是 Linux
操作系统中一个自带的编辑器。没有图形界面,只能编译文本内容,没有字体段落等设置,通过命令强大的命令完成一系列的编写工作。
在实际工作中,要对 服务器上的文件进行简单的修改,使用 vi 进行快速的编辑即可。
对一些配置文件的修改,需要一定的权限,这时 vi 编辑器是最佳选择。
vi 编辑器在系统管理、服务器管理编辑文件时,其功能不是图形界面的编辑器能比拟的。
打开和新建文件
$ vi [文件名]
如果文件已经存在,会直接打开该文件
如果文件不存在,会新建一个文件
1、命令模式:
打开文件首先进入命令模式,是使用 vi 的 入口。通过 命令 对文件进行常规的,在其他图形编辑器下,通过 快捷键 或者 鼠标 实现的操作,例如:定位、翻页、复制、粘贴、删除。
2、末行模式:
执行 保存、退出 等操作。要退出 vi 返回到控制台,需要在末行模式下输入命令。末行模式 是 vi 的 出口。
3、编辑模式:
命令 | 英文 | 功能 | 常用 |
---|---|---|---|
i | insert | 在当前字符前插入文本 | 常用 |
o | 在当前行后面插入一空行 | 常用 |
命令 | 功能 |
---|---|
w | 保存 |
q | 退出,如果没有保存,不允许退出 |
q! | 强行退出,不保存退出 |
wq | 保存并退出 |
w! | 强制保存 |
命令模式常用命令
命令 | 功能 |
---|---|
w | 向后移动一个单词 |
b | 向前移动一个单词 |
0 | 行首 |
$ | 行尾 |
命令 | 功能 |
---|---|
gg | 文件顶部 |
G | 文件末尾 |
: 数字 | 移动到 数字 对应行数 |
命令 | 功能 |
---|---|
u | 撤销上次命令 |
CTRL + r | 恢复撤销的命令 |
命令 | 功能 |
---|---|
x | 删除光标所在字符,或者选中文字 |
cc | 删除光标所在行并进入插入模式 |
命令 | 功能 |
---|---|
yy | 复制一行,可以 nyy 复制多行 |
dd | 剪切光标所在行,可以 ndd 剪切多行 |
p | 粘贴 |
命令 | 功能 | 工作模式 |
---|---|---|
r | 替换当前字符 | 命令模式 |
R | 替换当前行光标后的字符 | 替换模式 |
:%s/str/replace/g | 替换 str 为 replace | 底行模式 |
R 命令可以进入 替换模式
,替换完成后,按下 ESC 可以回到命令模式
。
命令 | 功能 |
---|---|
/str | 查找 str |
:set nu | 显示行号 |
/
查找到指定内容之后,使用 n
查找下一个出现的位置。
:set nu !
可以取消行号显示。
用户
:Linux 操作系统可以有不同的用户,这是系统管理的重要一环,不同的用户有自己独立的空间内容。
用户组
:为了方便对用户管理,Linux 操作系统使用用户组的概念。将不同的用户添加到对应的组中,可以方便用户设置权限的设置。
root 用户
:Linux 系统中的 root 用户通常用于系统的维护和管理,对操作系统的所有资源具有所有访问权限,一般工作中不会使用 root 用户进行系统操作,防止一些误操作带来系统损坏
序号 | 命令 | 作用 | 备注 |
---|---|---|---|
1 | groupadd | 组名 | 添加组 |
2 | groupdel | 组名 | 删除组 |
3 | useradd -m 用户 -g 组 | 添加用户 | -m 表示添加用户时添加主目录,-g 表示选择用户所在组,如果不写默认会创建一个与用户同名的组。 |
4 | passwd 用户名 | 设置密码 | 设置之后才能切换新用户登录 |
5 | userdel -r 用户 | 删除用户 | 一般都会带 -r,删除用户的主目录和邮件池。 |
** 注:设置密码后为新用户添加 sudo 权限,sudo 打开 /etc/sudoers 文件增加如下内容。然后 :w! 强制保存 :q 退出。**
注:如果切换用户终端命令行只有一个 $ 提示,也没有任何颜色提示,则 vi 打开 /etc/passwd 文件,存储的是所有的用户和密码信息,将该用户对应的内容修改,设置 bash 命令解释器。
注:如果删除失败说明刚刚使用了该用户没有注销,需要重启再删除。或者执行下面命令。
Linux
下安装的软件包是 deb 格式软件包
。由于当时 Linux
系统中软件包存在复杂的依赖关系。因此,通常使用网络安装。安装软件包通常需要使用管理员权限。软件包下载位置:/var/cache/apt/archives
。
作用 | 命令 |
---|---|
更新软件源 | apt update |
安装软件 | apt install |
卸载软件 | apt remove --purge |
删除缓存的软件安装包 | apt clean |
安装本地软件包 | dpkg -i |
卸载软件 | dpkg -P |
多线程软件安装 | apt-fast |
sudo apt install sl # 安装
sudo apt remove --purge sl # 彻底卸载
ssh 是一种安全协议,主要用于给远程登录会话数据进行加密,保证数据传输的安全。在数据传输方面有很多应用。之前说到,实际工作中经常需要远程访问服务器,ssh 就是通用的远程访问服务器的方法。
安装启动
安装 ssh 服务 : sudo apt install openssh-server
查看 ssh 服务状态 : ps -e | grep ssh
启动和关闭 :sudo service ssh start/restart/stop
序号 | 命令 | 作用 |
---|---|---|
1 | ssh 用户名 @ip | 登录远程主机 |
2 | scp 用户名 @ip: 文件名绝对路径 目标位置 | 远程复制文件 |
# 登录
ssh levi@192.168.100.5
# 退出
exit
# 注意:`:` 后面的路径写绝对路径,类似端口操作
scp demo.py levi@192.168.100.5:/home/tarena
# 把远程主目录下demo.py文件 复制到本地当前目录下的copy文件夹内
scp levi@192.168.100.5:/home/tarena/demo.py ./copy
# 加上 -r 选项可以传送文件夹
scp -r demo levi@192.168.100.5:/home/tarena/
ssh 秘钥
什么时候使用: 如果使用的客户端个人计算机是自己独有的计算机,经常通过 ssh 访问服务器,此时不想频繁输入密码,则可以使用秘钥处理。
1、在个人计算机中生产秘钥对 : ssh-keygen
执行以后会在主目录下生成.ssh
文件夹,其中包含私钥文件 id_rsa
和公钥文件 id_rsa.pub
。
2、在服务器主机上创建文件(云服务器当中会自动为我们创建) touch ~/.ssauthorized_keys
,将信任的计算机的 id_rsa.pub
文件内容追加到服 authorized_keys
文件的最后即可。
在服务器中并没有 pycharm 这些集成编译工具,所有当我们最后将程序部署在服务器上执行时,往往需要通过终端运行 python 程序。
1、编写 python 程序在第一行增加解释器声明。
2、修改文件的权限,使其有可执行权限。
3、通过指定文件位置执行代码。
让天下没有学不会的技术
学习C#不再是难问题
《C#入门到高级教程》
有关C#实战项目
C#RS232C通讯源码
C#委托数据传输
C# Modbus TCP 源代码
C# 仓库管理系统源码
C# 欧姆龙通讯Demo
C#+WPF+SQL目前在某市上线的车管所摄像系统
2021C#与Halcon视觉通用的框架
2021年视觉项目中利用C#完成三菱PLC与上位机的通讯
VP联合开源深度学习编程(WPF)
✨有关C#项目欢迎各位查看个人主页✨
机器视觉、深度学习
学习机器视觉、深度学习不再是难问题
《Halcon入门到精通》
《深度学习资料与教程》
有关机器视觉、深度学习实战
2021年C#+HALCON视觉软件
2021年C#+HALCON实现模板匹配
C#集成Halcon的深度学习软件
C#集成Halcon的深度学习软件,带[MNIST例子]数据集
C#支持等比例缩放拖动的halcon WPF开源窗体控件
2021年Labview联合HALCON
2021年Labview联合Visionpro
基于Halcon及VS的动车组制动闸片厚度自动识别模块
✨有关机器视觉、深度学习实战欢迎各位查看个人主页✨
Java、数据库教程与项目
学习Java、数据库教程不再是难问题
《JAVA入门到高级教程》
《数据库入门到高级教程》
有关Java、数据库项目实战
Java经典怀旧小霸王网页游戏机源码增强版
js+css类似网页版网易音乐源码
Java物业管理系统+小程序源码
JavaWeb家居电子商城
JAVA酒店客房预定管理系统的设计与实现SQLserver
JAVA图书管理系统的研究与开发MYSQL
✨有关Java、数据库教程与项目实战欢迎各位查看个人主页✨
分享Python知识讲解、分享
学习Python不再是难问题
《Python知识、项目专栏》
《Python 检测抖音关注账号是否封号程》
《手把手教你Python+Qt5安装与使用》
《用一万字给小白全面讲解python编程基础问答》
《Python 绘制Android CPU和内存增长曲线》
《☀️苏州程序大白用万字解析Python网络编程与Web编程☀️《❤️记得收藏❤️》》
有关Python项目实战
Python基于Django图书管理系统
Python管理系统
2021年9个常用的python爬虫源码
python二维码生成器
✨有关Python教程与项目实战欢迎各位查看个人主页✨
分享各大公司面试题、面试流程
面试成功不是难事
《2021年金九银十最新的VUE面试题☀️《❤️记得收藏❤️》》
《只要你认真看完一万字☀️Linux操作系统基础知识☀️分分钟钟都吊打面试官《❤️记得收藏❤️》》
《❤️用一万字给小白全面讲解python编程基础问答❤️《记得收藏不然看着看着就不见了》》
✨有关各大公司面试题、面试流程欢迎各位查看个人主页✨