鸟哥Linux私房菜
文章平均质量分 83
喜欢打篮球的普通人
这个作者很懒,什么都没留下…
展开
-
notepad使用Npp-Obsidian-PyCs Public主题
3、重启Notepad++, 打开 设置 –》 语言格式设置, “选择主题”下拉框中会出现刚才安装的Obsidian PyCs主题,选择点击保存即可生效。2、将下载的Obsidian PyCs.xml拷贝到 themes目录下。从gihutb上下载。原创 2024-10-28 15:20:38 · 135 阅读 · 0 评论 -
Windows安装WSL2精简版教程
WSL中需要手动修改默认的bash为zsh,直接安装zsh可能设置不成功,会显示:Error: chsh command unsuccessful. Change your default shell manually报错。WSL2内部的端口和Windows的端口应该同属于一个空间,所以如果windows占用了443端口,wsl如果想使用的话,就会出现443端口重复占用的问题。导入系统到指定位置,wsl --import WSL版本号。原创 2024-01-18 14:48:21 · 19291 阅读 · 1 评论 -
CMake之CPack
在上面的CMakeLists.txt中,最重要的是INSTALL这个指令,上面的INSTALL指令所表达的意思是,需要将LinkLibraryDemo, PrinterInt, PrinterChar 这3个文件打包,其中可执行文件放在/tmp/cmake_demo,这个目录中,静态库和动态库文件则放在默认目录中。如果你不赋值CPACK_DEBIAN_PACKAGE_DEPENDS这个变量,则在debian/control文件中,没有Depends这一行,虽然在你自己的机器上不影响打包构建。原创 2023-07-07 17:07:45 · 2869 阅读 · 0 评论 -
现代 CMake 模块化项目管理指南
如果模块 Carer 的头文件 Carer.h 虽然引用了其他模块中的 Animal 类,但是他里面并没有解引用 Animal,只有源文件 Carer.cpp 解引用了 Animal。如果不加,在你创建新文件时,myvar 不会自动更新,还是旧的那几个文件,可能出现 undefined symbol,需要重新运行 cmake -B build 才能更新。上图的案例中,我们在根目录下,创建了两个子项目 biology 和 pybmain,他们分别在各自的目录下有自己的 CMakeLists.txt。原创 2023-05-22 11:33:29 · 2926 阅读 · 2 评论 -
使用curl测试nodejs的http server
json数据放在一个文件里:curl -H “Content-Type: application/json” -X POST -d @test.json URL。-d,即指定body里面的参数,参数的数据,需要使用双引号,json里的双引号使用反斜杠转义才可以。nodejs:v10.19.0,安装在了sudo用户下。nodejs就是node,node就是nodejs。node:v19.0.0,安装在了当前用户下。默认是使用POST,可以省略-X参数。新建一条记录的话就用post,原创 2022-10-20 10:33:35 · 1364 阅读 · 0 评论 -
CMake中INSTALL_RPATH与BUILD_RPATH问题
CMake为了方便用户的安装,默认在make install之后会自动remove删除掉相关的RPATH,这个时候你再去查看exe的RPATH,已经发现没有这个字段了。如何让CMake能够在install的过程中写入相关RPATH,并且该RPATH不能使当初build的时候的RPATH呢?设置linker的rpath选项:$ gcc -Wl,-rpath,/your/rpath/ test.cpp。如果需要设置$ORIGIN:$ gcc -Wl,-rpath,‘$ORIGIN/lib’ test.cpp。.原创 2022-08-08 18:18:29 · 4320 阅读 · 0 评论 -
现代CMake高级教程
CMake是一个跨平台的构建系统,可以从CMakeLists.txt生成不同类型的构建系统(比如Linux的make,Windows的MSBuild),从而让构建规则可以只写一份,跨平台使用。如何让CMAKE_BUILD_TYPE在用户没有指定的时候为Release,指定的时候保持用户指定的值不变呢。不建议用CMAKE_SOURCE_DIR,那样会让你的项目无法被人作为子模块使用。和子模块的关系PROJECT_x_DIR和CMAKE_CURRENT_x_DIR的区别,....................原创 2022-07-17 22:50:56 · 4909 阅读 · 0 评论 -
CMake基本语法,cmake常用命令,CMake常用变量
(1)注释的语法:(2)CMake命令:(3)数据类型:使用语法 ${VariableName} 来访问名字为 VariableName 的变量的值(变量名区分大小写)。需要注意的是,即使在字符串中也可以使用${VariableName} 来访问变量的值:使用语法 $ENV{VariableName} 来访问环境变量的值(ENV{VariableName} 则表示环境变量本身)(4)条件控制和循环结构对于 if(string) 来说:(1)如果 string 为(不区分大小写)1、原创 2022-07-11 19:49:56 · 2531 阅读 · 1 评论 -
学C++从Cmake学起
include //方式1 #include "hellolib/hello.h" //方式2// #include "hello.h" or #include //CMake中增加 # target_include_directories(a.out PUBLIC hellolib) int main() {hello();return 0;}如果另一个 b.out 也需要用 hellolib 这个库,难道也得再指定一遍搜索路径吗?不需要,原创 2022-06-26 23:21:09 · 2138 阅读 · 0 评论 -
CMake教程系列-05-选项及变量
此函数向项目添加一个选项,可以包含选项介绍及默认值。第一个参数为选项名称。需要注意的是,此选项不仅仅可以是boolean,也可以是string或list。第二个参数为选项介绍,为string。第三个参数为选项默认值,依据选项类型设置。2.CMAKE_DEPENDENT_OPTION进阶的。我们可以根据一些选项而额外设置其他选项值。eg:第一个参数为选项名称。第二个参数为选项介绍。第三个参数为默认值。当第四个参数为TRUE时,开启此选项并自动设置第二个参数的值为默认值。否则,将强制原创 2022-06-26 23:05:12 · 1322 阅读 · 0 评论 -
CMake教程系列-04-编译相关函数
编译过程与链接过程需要向编译器及链接器传入不同的参数,而这些参数分为以下几类:此函数向目标添加编译选项,eg:需要注意的是,如果要设置c / c++ 标准,不仅可以使用该函数添加 -std=STANDARD,还可以且更推荐设置以下两个cmake预设宏的值:2.target_compile_definitions此函数专门向目标添加预设宏声明及定义。eg:3.target_compile_features此函数专门向目标设置c / c++版本。当然,你仍然可以选择第一个函数中的两种做原创 2022-06-26 16:54:57 · 1450 阅读 · 0 评论 -
CMake教程系列-03-依赖管理
假设我需要使用第三方库去做一些事情,如何在配置中体现这种依赖关系?ind_package旨在使用预先设置的配置文件来查找依赖项,主要用的参数如下:PACKAGE_NAME_CASE_SENSITIVEversionEXACTQUIETCONFIG对于上述前两个变量/列表而言,cmake会在每一条的以下扩展路径中查找配置文件:使用该模式时,一般情况下会提供依赖项对应的 target 名称(包含或不包含namespace)以供使用。极少数情况下也提供依赖项对应的各种宏,这主要是为了兼容预先c原创 2022-06-26 11:03:58 · 2864 阅读 · 0 评论 -
CMake教程系列-01-最小配置示例
如上面所讲,每个cmake项目均应当声明此关键字,这影响了整个项目的属性。cmake也会提供项目对应的各个变量。由于一个项目中可能包含多个库或多个可执行程序,在子库/子可执行程序中禁止使用与该函数声明中的相同的名称。第二个参数代表了要生成的二进制使用的源文件。注意:声明的代码类型影响了编译器的选取。第一个参数代表了该库/可执行程序的名称。该函数第二个参数为该项目的代码类型。这些关键字是用于搭建依赖关系。该函数声明了此项目的名称。原创 2022-06-26 09:24:38 · 421 阅读 · 0 评论 -
CMake教程系列-02-使用cmake代码生成二进制
Win10安装文件:创建的目录以及代码如下:sample.cpp目录结构如下:注意多创建一个build目录存放中间文件和最终二进制文件点击“Configure点击“Generate”右边的“Open Projrct”。使用上面的代码文件,打开命令行,并输入以下命令:执行以下命令生成库文件以及二进制程序:.........原创 2022-06-25 11:01:58 · 1436 阅读 · 0 评论 -
Cmake安装以及升级(Ubuntu)
(1)检查环境配置(2)直接在Cmake官网下载源码包(3)解压在相应文件夹, 博主解压在了home 文件夹下(4)检查安装情况2.升级(1)卸载旧的Cmake(2)安装新的原创 2022-06-22 09:16:44 · 3812 阅读 · 4 评论 -
CMake教程系列-00-简介
CMake 是一个开源、跨平台的工具,旨在构建、测试和打包您的程序。CMake 用于使用简单的平台和编译器独立配置文件来控制程序编译过程,并生成可在您选择的编译器环境中使用的主机配置文件和项目文件。这套 CMake 工具由 Kitware 创建,以满足 ITK 和 VTK 等开源项目对强大的跨平台构建环境的需求。参考:CMake教程系列-00-简介.........原创 2022-06-21 22:35:51 · 351 阅读 · 0 评论 -
为Ubuntu系统添加新的普通用户
一般所有的包基本都可以通过命令进行安装,有的是使用包,有的是开发者包,比如ostree,所以执行虾命令就可以完成包的安装。dpkg -L +软件包的名字,可以知道这个软件包包含了哪些文件, 这个方法可以列出所有安装后留在系统里的文件。注意:不同的ubuntu系统需要修改镜像源的配置文件,上述的配置文件中一般为focal。由于WSL2默认使用NAT的方式,所以需要开启端口转发,这样其他主机就可以ssh进来了。修改这2个位置,增加NOPASSWD:,注意NOPASSWD:的冒号,且前后有空格。原创 2022-06-17 11:09:00 · 20321 阅读 · 0 评论 -
(P7-P10)Cmake构建共享库
文章目录1.静态库和动态库的构建2.同时构建静态和动态库3.使用使用外部共享库和头文件1.静态库和动态库的构建任务:建立一个静态库和动态库,提供 HelloFunc 函数供其他程序编程使用,HelloFunc 向终端输出 Hello World 字符串。安装头文件与共享库。静态库和动态库的区别静态库的扩展名一般为“.a”或“.lib”;动态库的扩展名一般为“.so”或“.dll”。静态库在编译时会直接整合到目标程序中,编译成功的可执行文件可独立运行动态库在编译时不会放到连接的目标程序中原创 2022-05-06 22:00:50 · 665 阅读 · 0 评论 -
(P1-P6)Cmake介绍
文章目录1.Cmake说明2.Cmake之HelloWorld3.Cmkae之HelloWorld语法介绍4.Cmake之内部构件和外部构建5.让Hello World看起来更像一个工程6.如何安装HelloWord1.Cmake说明cmake的定义是什么 ?-----高级编译配置工具当多个人用不同的语言或者编译器开发一个项目,最终要输出一个可执行文件或者共享库(dll,so等等)这时候神器就出现了-----CMake!所有操作都是通过编译CMakeLists.txt来完成的—简单官方网站是原创 2022-05-05 23:10:24 · 395 阅读 · 0 评论 -
Cmake学习目录
––––––––––––Cmake常用模板和makefile常用模板–原创 2022-05-05 21:24:44 · 497 阅读 · 0 评论 -
Cmake常用模板和makefile常用模板
文章目录1.Cmake常用模板2.makefile常用模板1.Cmake常用模板2.makefile常用模板参考:cmake CMakeLists.txt 常用模板,Makefile常用模板原创 2021-11-18 10:39:28 · 1253 阅读 · 0 评论 -
shell 字符串操作 ${} 的截取,删除,和 替换
文章目录1.字符串截取2.字符串匹配删除3.匹配替换1.字符串截取字符长度[user@host dir]$ str=123abc123[user@host dir]$ echo ${#str}9从左边截取${string:position:length} :从字符串 string 的 position 位置截取 length 个字符串[user@host dir]$ str=123abc123[user@host dir]$ echo ${str:3:3} abc[user转载 2021-10-14 11:24:34 · 2593 阅读 · 0 评论 -
(17.1-17.2)项目实战:多机lnmp部署
文章目录安装tengine+phpmain.sh将整个文件夹lnmp推到不同的服务器上获取安装包从172.16.8.100服务器获取php.tar.xz和tengine.tar.gz这两个包lftp 172.16.8.100cd source-softget php.tar.xz tengine.tar.gzbyyum install -y treetree可以看到目录结构,执行的是lnmp.sh脚本:它会调用一切lnmp.sh脚本#!/usr/bin/env bash原创 2020-11-30 23:02:17 · 543 阅读 · 0 评论 -
(16.1-16.2)项目实战:多机mysql部署
文章目录1.多机mysql部署的方式1.多机mysql部署的方式给4台机器安装mysql的方式有以下的三种:ip.txt文件的内容是:ssh连到服务器执行一下hostname,执行一下date命令for i in `cat ip.txt`; do ssh $i hostname; ssh $i date; done结果如下:多机部署的脚本如下:#!/busr/bin/env bashwhile read ipdo { #配置Yum ##命令尽量放在单引号里面原创 2020-11-29 22:48:59 · 802 阅读 · 2 评论 -
(P9)awk:什么是awk,awk简单用法,awk脚本语法,awk执行过程
文章目录1.什么是awk2.awk简单用法3.awk脚本语法4.awk执行过程1.什么是awkawk 是什么awk 是一种用于处理数据和生成报告的编程语言awk 可以在命令行中进行一些简单的操作,也可以被写成脚本来处理较大的应用问题awk 与 grep、sed 结合使用,将使 shell 编程更加容易Linux 下使用的 awk 是 gawkawk 如何工作awk 逐行扫描输入 ( 可以是文件或管道等 ),按给定的模式查找出匹配的行,然后对这些行执行 awk 命令指定的操作。与原创 2020-09-11 23:58:02 · 932 阅读 · 0 评论 -
(P2)Linux基本操作:Linux登录,Linux简单的命令
文章目录1.Linux登录1.Linux登录文件方式登录(1)输入用户名和密码(2)/etc/passwd文件对照(用户文件)(3)/etc/passwd文件对照(影子文件)(4)启动相应的外壳程序(5)用户得到一个虚终端,通过shell与系统交互(6)进入到用户的家目录口令文件:/etc/passwd(1)username:用户名(2)passwd:密码,显示是x,已经转移到了影子文件中了(3)uid:用户标识号(4)gid:组标识号(5)comment:备注信息(6原创 2020-09-06 00:18:05 · 2157 阅读 · 0 评论 -
(P8)sed:什么是流编辑器sed ,sed地址定位方式 ,sed编辑命令
文章目录1.什么是流编辑器sed2.sed地址定位方式3.sed编辑命令1.什么是流编辑器sedsed是一个精简的,非交互式的流式编辑器,它在命令行中输入编辑命令和指定文件名,然后再屏幕上查看输出逐行读取文件内容存储再临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。原文件内容并没有改变。sed简单用法用法示例sed [options] sed_cmds files原创 2020-09-08 23:18:07 · 428 阅读 · 0 评论 -
(P7)Linux文件权限:Linux用户类别 ,组管理 ,用户管理 ,权限管理
文章目录1.Linux用户类别2.组管理3.用户管理4.权限管理1.Linux用户类别Linux用户类别影子文件/etc/shadow的含义2.组管理/etc/group组管理命令3.用户管理用户管理命令eg:不仅将用户切换到了root用户底下,并且将环境切换成了root所对应的环境(还进行了环境的初始化):su - root4.权限管理Linux文件权限位Linux文件权限设置chmod文件夹下的文件进行递归更改:chmod -R原创 2020-09-06 22:05:43 · 156 阅读 · 0 评论 -
(P5)Linux文件系统:什么是文件系统 ,Linux文件类型 ,mount和umount ,硬链接 ,符号连接 ,硬链接和软连接的区别
文章目录1.什么是文件系统1.什么是文件系统文件系统是包括在一个磁盘或分区的目录结构文件系统是在一个磁盘组织文件的方法,eg:NTF3,FAT,System V,ext2,ext3原创 2020-09-06 18:30:54 · 510 阅读 · 0 评论 -
(P3)Linux基本命令:ls命令 ,linux目录操作命令 ,Linux文件操作命令
文章目录1.ls命令2.linux目录操作命令3.Linux文件操作命令1.ls命令总结eg(1)显示某目录下所有的文件及子目录的详细信息ls -lR /test(2)显示当前目录下所有文件详细信息ls -l2.linux目录操作命令总结eg:上面的-i选项的使用方法是:删除一个不存在的文件夹不是有提示-v:删除有提示信息cdcd -,表示回到上一次的目录3.Linux文件操作命令总结...原创 2020-09-06 17:59:22 · 204 阅读 · 0 评论 -
(P4)bash基础:通配符 ,输入/输出重定向 ,管道 ,后台作业 ,历史记录 ,命令补全 ,别名
文章目录1.通配符2.输入/输出重定向3.管道4.后台作业5.历史记录7.命令补全8.别名1.通配符简介最后一个不如直接使用 ls /dec/tty[12369],eg使用如下2.输入/输出重定向ls -l /usr/tmp > dirls -l /usr/tmp >> dirls /usr/tmp 2> err.filels /usr/tmp &> output.filewc < /etc/passwd3.管道将一个程序的标准原创 2020-09-06 17:36:20 · 242 阅读 · 0 评论 -
(P6)Linux最佳入门第6讲:Linux管理命令:df,du,free,ps,top,kill,killall,RPM ,文件备份:tar
文章目录1.df,du2.free3.ps4.top5.kill,killall6.RPM1.df,dudf(1)df -h,以直观的方式显示磁盘分区的使用状况sda1是boot引导分区sda2是/根分区,挂载到跟目录底下(2)df test,查询test属于哪个分区bin路径属于跟分区根路径地下的文件夹,未必属于跟分区boot文件夹属于boot分区,命名为sda1dudu etc目录的容量是15M,因为默认单位是KB(1)du -h etc(2)du -s(3)原创 2020-09-04 23:42:17 · 592 阅读 · 0 评论 -
(15.1)实战项目:保留最近n天的备份文件
文章目录1.2.1.0101:1月1日1000:早上10:002017:2017年#!/usr/bin/env bashback_dir=/datafind /date -mtime +30|xargs rm -rf计划任务将脚本加入到计划任务,每隔1分钟循环一次查看计划任务的状态查看计划任务是否执行chattr给脚本加上只读选项:不能删除脚本,不能修改脚本里面的内容2.最近的两份按照时间排序,其实这俩实质是效果是一样的ll -t /data原创 2020-08-09 16:50:19 · 619 阅读 · 0 评论 -
(18.3)项目实战:内存信息收集(配合zabbix)
文章目录不同操作系统要注意free -m提取内存信息的区别:上面是Centos 7:内存使用了339M,还剩下15G下面是Centos 6:内存使用了770M,还剩余15G。因为Linux会将内存作为文件的缓存使用,15912并不是程序进程真正使用的内存,而是作为inode缓存使用小数据块称为blocksize,也叫page内存页x86的页缓存大小为4k,无论是从磁盘中读还是写数据,都会将其加载到内存页中,写完以后,一页不够,可能需要很多页,这些页就称为脏页,修改的数据发生在内存中,需要持久化到磁原创 2020-08-09 15:22:28 · 744 阅读 · 1 评论 -
(14.1)Nginx日志分析项目实战
文章目录nginx的日志格式:vim /etc/nginx/nginx.conflog_format main '$remote_addr - $remote_user [stime_local] $request' '"$status" $body_bytes_sent "$http_referer"' '"$http_user_agent" "$http_x_forwarded_for"'上面的变量都是nginx的内部变量$remote_addr:远程IP;$remote原创 2020-08-05 23:12:32 · 882 阅读 · 0 评论 -
(13.1)判断主机存活3次机会
文章目录eg:用数组#!/usr/bin/baship_list="10.18.40.1 10.48.42.127"for ip in $ip_list ##循环ipdo for count in {1..3} ##每个ip给3次机会 do ping -c1 -W1 $ip &>/dev/null if [ $? -eq 0 ];then echo "$ip ping is ok" break else echo "$ip ping i原创 2020-08-05 22:59:34 · 567 阅读 · 0 评论 -
(P6)shell编程入门第六讲:循环语句:for、while、until、select菜单
文章目录#!/bin/bashfor i in 1 2 3 4 5do echo value of is $idone不带参量的eg#!/bin/bash##省略in list时,使用带有双引号的"$@"for ido echo value of is $idone#!/bin/bashfor i in $*for i in "$*"for i in $@for i in "$@"do echo $idone参量列表不会因为有双引号而有差别i只循环一次原创 2020-08-02 17:45:22 · 282 阅读 · 0 评论 -
shell最佳入门
––(P7)shell编程入门第7讲:函数原创 2020-07-24 23:17:07 · 283 阅读 · 0 评论 -
(P7)shell编程入门第7讲:函数:字符串操作 ,一些内置命令:expr、shift、eval、trap等 ,Shell内置命令总结
文章目录1.函数的使用2.字符串操作3.一些内置命令:expr、shift、eval、trap等1.函数的使用和其它编程语言一样,Bash也可以定义函数一个函数就是一个子程序,用于完成特定的任务,当有重复代码,或者一个任务只需要很少的修改就被重复几次执行时,这时你应该考虑使用函数函数的一般格式为function function_name{ commands}推荐使用下面的方式function_name (){ commands}函数eg(1)只需要输入函数名即可调用原创 2020-07-24 23:15:55 · 482 阅读 · 0 评论 -
(P8)Linux最佳入门第8讲:vi使用
文章目录替换和删除编辑模式下也可以使用搜索删除第3行若.exrc文件不存在,则可以执行vi a,执行:mk 来生成该文件,该exrc文件一般需要配置到需要保存配置的文件的上层目录中打开vi exrc文件,在最后一行加上set number:sp 水平分隔ctrl ww两个窗口互相切换:close关闭一个窗口:vs 左右分隔,左右分隔2个不同文件:vs Makeflectrl ww两个窗口互相切换...原创 2020-07-11 16:05:46 · 627 阅读 · 0 评论