Linux基础命令-02

/* 基本类型定义 */
typedef signed char			    s8;				// 有符号8位整数别名定义  
typedef signed short			s16;			// 有符号16位整数别名定义              
typedef signed int				s32;			// 有符号32位整数别名定义                    
typedef unsigned char			u8;				// 无符号8位整数别名定义                        
typedef unsigned short			u16;			// 无符号16位整数别名定义                          
typedef unsigned int			u32;			// 无符号32位整数别名定义                          
typedef unsigned long long int	u64;			// 无符号64位整数别名定义   
typedef signed long long int	s64;			// 有符号64位整数别名定义 
typedef volatile signed char	vs8;			// volatile 有符号8位整数别名定义               
typedef volatile signed short	vs16;			// volatile 有符号16位整数别名定义               
typedef volatile signed int		vs32;			//volatile 有符号32位整数别名定义                
typedef volatile unsigned char	vu8;			// volatile 无符号8位整数别名定义             
typedef volatile unsigned short	vu16;			// volatile 无符号16位整数别名定义             
typedef volatile unsigned int	vu32;			// volatile 无符号32位整数别名定义              
typedef unsigned char			BOOL;			// 布尔类型定义                              
typedef signed int				SYS_STATUS;	// 函数返回值类型定义                             
typedef s32 					BH_SOCKET;

1、版本宏函数

#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
eg:printf("===%x\n",KERNEL_VERSION(2,6,11));

其他:
typedef unsigned char			u8;				// 无符号8位整数别名定义   
typedef unsigned int			u32;			// 无符号32位整数别名定义   
转换1
	Ip32 = (u32)(*(p + 3) << 24 | *(p + 4) << 16 | *(p + 5) << 8 | *(p + 6));
转换2
	u8 tmp[4] = {0};
	tmp[0] = Ip32 & 0xff;
	tmp[1] = (Ip32 >> 8) & 0xff;
	tmp[2] = (Ip32 >> 16) & 0xff;
	tmp[3] = (Ip32 >> 24) & 0xff;

2、demsg:检测和控制内核环缓冲;显示所有信息

1、dmesg:dmesg --help查看用法
2、用root权限执行 cat /proc/kmsg,查看内核的调试信息
kmsg里面就是显示内核消息的,程序中printk的输出都可以看到,

3、开机信息

开机信息亦保存在/var/log目录中;执行:cat /var/log查看

4、查看系统信息

[ubuntu:root]$ hostnamectl
   Static hostname: ubuntu-virtual-machine
         Icon name: computer-vm
           Chassis: vm
        Machine ID: a310e68e764ffe92628ad74
           Boot ID: e03c392db5e22d892d148f0
    Virtualization: vmware
  Operating System: Ubuntu 16.04.4 LTS
            Kernel: Linux 4.13.0-36-generic
      Architecture: x86-64

5、查看是哪个发行版

[ubuntu:root]$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 16.04.4 LTS
Release:	    16.04
Codename:	    xenial

6、查看内核版本和gcc信息

[ubuntu:root]$ cat /proc/version
Linux version 4.13.0-36-generic (buildd@lgw01-amd64-033) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.9)) #40~16.04.1-Ubuntu SMP Fri Feb 16 23:25:58 UTC 2018

7、查看内核版本

[ubuntu:root]$ uname -a
Linux ubuntu-virtual-machine 4.13.0-36-generic #40~16.04.1-Ubuntu SMP Fri Feb 16 23:25:58 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

8、如果是REDHAT的系统,还可以查看

[root@root]# cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core) 

9、多层目录下的文件格式需要转换,dos2unix 没有-r之类的递归指令,所以需要与find还有管道结合。
find -type f | xargs dos2unix -o 

10、列出物理CPU及各自的逻辑核

cat /proc/cpuinfo | grep "physical id" | sort | uniq -c

假设输出如下,则表示有两个物理CPU,各自包含8个逻辑核
8 physical id : 0
8 physical id : 1

11、查看php相关信息

查看php的错误日志路径
echo '<?php phpinfo(); ?>' | php 2>&1 |grep -i error_log
判断PHP是否为线程安全版本
php -r "var_dump(ZEND_THREAD_SAFE);"

12、进制转换输出

//打印二进制    
for (int i = 0; i < nread; ++i){
			if (i % 4 == 0) printf("\n");
			printf("%02x ", buf[i]);
	}
	printf("\n");
/
16进制转二进制
void hex_to_binary(u8 hex_val) {
    u8 i;
    for (i = 0; i < 8; i++) {
        u8 bit = (hex_val >> (7 - i)) & 1;
        printf("%d",bit);
    }
	printf("\n");
}
//调用
u8 com = 170,comm=0;
printf("com1=%d com2=%d\n",(com >> 0)&1,(com >> 1)&1);
hex_to_binary(com);
comm=(u8)(1 << 0)|(1 << 1)|(1 << 2)|(0 << 3)|(0 << 4)|(1 << 5);
hex_to_binary(comm);

#define LED_CONTROL_REGISTER (*((volatile unsigned int*)0x12345678))
 
// 开启LED 置1
LED_CONTROL_REGISTER |= (1 << LED_BIT);
 
// 关闭LED 置0
LED_CONTROL_REGISTER &= ~(1 << LED_BIT);

13、arm或单片机对齐字节

#pragma pack(push, 1)

14、字符串中的字母全转换成大/小写/去掉最后的换行符

注意: 传参方式
    char *buf=(char *)malloc(64);
    sprintf(buf,"%s","aaahh");
// 将字符串中的字母全转换成小写
char* g_strToLower( char *str )
{
	char *cp = 0;	
	for (cp=str; *cp; ++cp)
	{
		if ('A' <= *cp && *cp <= 'Z')
			*cp += 'a' - 'A';
	}
	
	return(str);
}

// 将字符串中的字母全转换成大写
char* g_strToUpper( char *str )
{
	char *cp = 0;
	for (cp = str; *cp; ++cp)
	{
		if ('a' <= *cp && *cp <= 'z')
			*cp += 'A' - 'a';
	}
	return(str);
}
去掉最后的换行符
void trim_string(char *str)
{
	int len = strlen(str);
 
	//去掉最后的换行符
	if(str[len-1] == '\n')
	{
		len--;		//字符串长度减一
		str[len] = 0;	//给字符串最后一个字符赋0,即结束符
	}
}

15、vim创建程序文件自动添加头部注释 

在当前目录下面创建一个.vimrc 的文件 或者 vim /etc/vim/vimrc放在文件尾部

[root@hegs ~] vim ~/.vimrc
或者
[root@hegs ~] sudo vim /etc/vim/vimrc
autocmd BufNewFile *.sh exec ":call AddTitleForShell()"
function  AddTitleForShell()
   call append(0,"#!/bin/bash")
   call append(1,"# **********************************************************")
   call append(2,"# * Author        : Mankel")
   call append(3,"# * Email         : xxxx@163.com")
   call append(4,"# * Create time   : ".strftime("%Y-%m-%d %H:%M"))
   call append(5,"# * Filename      : ".expand("%:t"))
   call append(6,"# * Description   : ")
   call append(7,"# **********************************************************")
endfunction

autocmd BufNewFile *.py exec ":call AddTitleForPython()"
function  AddTitleForPython()
   call append(0,"#!/usr/bin/python3")
   call append(1,"# **********************************************************")
   call append(2,"# * Author        : Mankel")
   call append(3,"# * Email         : xxxx@163.com")
   call append(4,"# * Create time   : ".strftime("%Y-%m-%d %H:%M"))
   call append(5,"# * Filename      : ".expand("%:t"))
   call append(6,"# * Description   : ")
   call append(7,"# **********************************************************")
endfunction

16、时间戳

#include <time.h>
#include <stdio.h>
int main()
{
	//十进制 u32位
	time_t now;
	now = time(NULL);
	printf("now====%ld\n",now);
	char time_str[20];
	// sprintf(time_str, "%ld", now);
	// printf("当前时间戳:%s秒\n", time_str);
	//转换为时间格式
	struct tm *local_time;
	local_time = localtime(&now);
	strftime(time_str, sizeof(time_str),"%Y-%m-%d %H:%M:%S", local_time);
	printf("格式化后的时间:%s\n", time_str);
return 0;
}
------------------------------------------------------------
now====1712139795
格式化后的时间:2024-04-03 10:23:15
now====1712139796
格式化后的时间:2024-04-03 10:23:16
now====1712139796
格式化后的时间:2024-04-03 10:23:16

12、项目中常用的协同软件

12.1   JIRA

项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域

Jira的安装、使用与集成:Jira的安装、使用与集成_如梦幽香的博客-CSDN博客_jira安装

12.2  confluence

Confluence是一个企业级的Wiki软件,可用于在企业、部门、团队内部进行信息共享和协同编辑

Confluence使用教程:Confluence使用教程_罗_星星的博客-CSDN博客_confluence

12.3  supervisor

Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启

Supervisor使用详解:Supervisor使用详解 - 简书

12.4 fswatch

12.4.1 fswatch是一个跨平台的文件更改监视,获取通知警报在指定的文件或目录的内容被改变或修改。

简介:fswatch - 监视Linux中的文件和目录更改或修改

应用:PHP 版本 - OpenRASP 官方文档 - 开源自适应安全产品

12.4.1  inotify文件监控

Inotify API用于检测文件系统变化的机制。Inotify可用于检测单个文件,也可以检测整个目录。当检测的对象是一个目录的时候,目录本身和目录里的内容都会成为检测的对象

12.5 Visual Studio Code

Visual Studio Code 是一个运行于 OS X、Windows 和 Linux 之上的,针对于编写现代 Web 和云应用的跨平台编辑器。Visual Studio Code 为开发者们提供了对多种编程语言的内置支持,同时也会为这些语言提供丰富的代码补全和导航功能。JavaScript,TypeScriptNode.js 和 ASP.NET 5 开发者也将会获得额外的工具集

12.6 PhpStorm 2020.1 x64 :  php开发的IDE

12.7 PyCharm Community Edition 2020.3.2 x64 :  python开发的IDE

12.8 Navicat Premium 12

一套数据库开发工具,让你从单一应用程序中同时连接 MySQL、MariaDB、MongoDB、SQL Server、Oracle、PostgreSQL 和 SQLite 数据库

12.9 Robo 3T 1.1.1

一个MongoDB管理工具

12.10 向日葵:远程控制软件

12.11  Fiddler 4

Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据,使用Fiddler无论对开发还是测试来说,都有很大的帮助

12.12 Burp Suite

urp Suite是一款信息安全从业人员必备的集 成型的渗透测试工具,它采用自动测试和半自动测试的方式,包含了 Proxy,Spider,Scanner,Intruder,Repeater,Sequencer,Decoder,Comparer等工具模块。通 过拦截HTTP/HTTPS的web数据包,充当浏览器和相关应用程序的中间人,进行拦截、修改、重放数据包进行测试,是web安全人员的一把必备的瑞士军刀

12.12.1 omnipeek7.9.1

世界上功能最强大的网络协议分析器

12.13 软件架构建模软件

powerdesigner
rationalrose
diagrams.net:网络布局图比较详细

12.14 思维导图免费软件

  • XMind (功能更强大)
  • FreeMind 

文档编辑软件

Typora|Typora中文|typora下载|typora 主题

12.15 JMeter工具

Apache JMeter是Apache组织开发的基于Java的压力测试工具

12.6 Apache Tika 内容分析工具包

Apache Tika™ 工具包从一千多种不同的文件类型(如 PPT、XLS 和 PDF)中检测和提取元数据和文本。所有这些文件类型都可以通过一个界面进行解析,使 Tika 可用于搜索引擎索引、内容分析、翻译等。

12.7 Win32DiskImager

Win32DiskImager是一款非常好用的U盘写入工具,主要功能是来写Ubuntuimg文件到SD和USB卡中。只要运行Win32DiskImager工具,填入自己的img,然后选择移动设备写入即可。Win32DiskImager可以使用户将光盘内容恢复到它原来的状态,能够让用户将各类移动磁盘如u盘内的数据进行成像效果,软件还能够创建可移动存储单元和U3设备的精确副本来作为备份。

示例:H3芯片ubuntu镜像系统Orangepione_2.0.8_ubuntu_focal_desktop_linux5.4.65

12.8 Jupyter Notebook

Jupyter Notebook是一个开源的Web应用程序,可以创建和共享包含实时代码,方程式,可视化和说明文本的文档。
Jupyter的官网:
Project Jupyter | Home

12.9 Mininet

       Mininet是由一些虚拟的终端节点(end-hosts)、交换机、路由器连接而成的一个网络仿真器,它采用轻量级的虚拟化技术使得系统可以和真实网络相媲美。

       Mininet可以很方便地创建一个支持SDN的网络:host就像真实的电脑一样工作,可以使用ssh登录,启动应用程序,程序可以向以太网端口发送数据包,数据包会被交换机、路由器接收并处理。有了这个网络,就可以灵活地为网络添加新的功能并进行相关测试,然后轻松部署到真实的硬件环境中。

ubuntu : sudo apt-get install mininet

12.10  网络学习工具

 eNSP

eNSP(Enterprise Network Simulation Platform)是一款由华为提供的、可扩展的、图形化操作的网络仿真工具平台,主要对企业网络路由器交换机进行软件仿真,完美呈现真实设备实景,支持大型网络模拟,让广大用户有机会在没有真实设备的情况下能够模拟演练,学习网络技术。

Packet Tracer

是由Cisco公司发布的一个辅助学习工具,为学习思科网络课程的初学者去设计、配置、排除网络故障提供了网络模拟环境。

12.11   NSIS

NSIS(Nullsoft Scriptable Install System)是一个开源的 Windows 系统下安装程序制作程序。它提供了安装卸载系统设置、文件解压缩等功能。

HM NIS Edit  :(nsis脚本编辑器)是一款功能强大的NSIS脚本编辑工具。NSIS脚本编辑的软件非常多,你在用哪款?想换吗?小编为你推荐HM NIS Edit中文版。这款软件绿色小巧,功能齐全,操作简单!

12.12 Linux终端工具

mobaXterm :亮点:network scan工具、ssh连接左边可以实时传输文件

putty.exe 简单易装      Xmanager_v2.0可以远程界面显示

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值