一 .
grep : 查找字符串,
-w : 按单词查找
-R: 实现递归查找,主要用于路径是目录的情况
-i: 不区分大小写
-n:显示行号
find: 查找文件
find 查找的路径 -name 文件名: 在指定路径下,以文件名为条件查找文件
find -name 文件名 : 在当前路径下,查找文件
find -name *.c : find可以进行模糊查找
cut: 截取字符串
cut -d “分隔符” -f “域” 文件名
分隔符:要截取的内容以什么作为分隔
域:截分隔后的哪一块
f后面可以跟的格式
tar: 归档/打包和拆包
打包:就是把多个文件合并成一个文件
tar -cvf 打包后的文件名.tar 打包的文件
-v:显示指令执行的过程
-c:实现打包功能的
-f:file -f参数后面一定要跟文件名
apt-get: 在线安装软件
install: 安装软件
remove: 卸载软件
download: 下载软件,但不安装
source: 下载软件源码
clean: 清空安装包|
dpkg: 离线安装软件
-i 软件包名 : 安装软件
-r 软件名: 卸载软件
-P 软件名: 完全卸载软件
-l 软件名: 查看软件的安装列表
-L 软件名: 查看软件的安装路径
ln: 创建硬链接文件
ln 被链接文件的路径 创建的硬链接文件的路径
ln创建硬链接文件
1、硬链接文件和源文件有相同的inode号(ls -i)
#inode号,表示文件存储的扇区,有相同的inode号意味着占用同一片空间,硬链接文件是源文件的别名/保存了一个副本
2、硬链接文件的修改会影响到源文件,源文件的修改也会影响硬链接文件
3、ls显示的文件的描述信息中链接文件的个数,指的是硬链接文件的个数
4、只有硬链接文件个数为0时,文件才被删除
ln -s: 创建软链接文件
ln -s 被链接文件的绝对路径 软链接文件的绝对路径
ln -s /home/ubuntu/23041C/day2/1.c /home/ubuntu/23041C/100.c
给/home/ubuntu/23041C/day2/1.c创建了一个路径为/home/ubuntu/23041C/100.c文件
1、创建软链接文件时,使用绝对路径
2、软链接文件可以理解为快捷方式
3、软链接文件的文件类型是l,他不会增加文件描述中的链接文件个数
4、软链接文件,如果源文件被删除,链接会断开,软链接文件会失效,如果重新创建一个同名的源文件,软链接文件会重新链接,并且链接到新创建的文件
5、软链接文件的修改会影响到源文件,源文件的修改也会影响软链接文件
6、wins下不支持软链接文件,Linux下的压缩包不要放到主机下解压
二.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <sys/wait.h>
#include <pthread.h>
#include <signal.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/time.h>
#define ERROR_MSG(msg) do{\
fprintf(stderr, "line:%d: %s %s", __LINE__, __FILE__, __func__);\
perror(msg);\
}while(0)
#define SUCCESS_MSG(msg) do {\
printf("%s, line:%d \n", msg, __LINE__);\
}while(0)
int main(int argc, const char *argv[]) {
unsigned int row, col;
printf("请输入行和列:");
scanf("%u %u", &row, &col);
unsigned int arr[row][col];
for (int i=0; i<row; i++) {
for (int j=0; j<col; j++) {
printf("第%d行,第%d列:", i, j);
scanf("%u", &(arr[i][j]));
}
}
unsigned int min = -1, secondMin = -1;
unsigned int allCount = 1;
unsigned long max = 0;
for (int i=0; i<row; i++) {
for (int j=0; j<col; j++) {
printf(" -------------------------- \n");
printf("[%d][%d]=%u ", i, j, arr[i][j]);
min = -1;
secondMin = -1;
allCount = 1;
for (int x=0; x<row; x++) {
for (int y=0; y<col; y++) {
if (x == i || y == j) {
allCount *= arr[x][y];
unsigned int value = arr[x][y];
if (x == row && y<=1) {
continue;
}
if (min == -1) {
min = value;
continue;
}
if (secondMin == -1) {
if (value < min) {
secondMin = min;
min = value;
} else {
secondMin = value;
}
continue;
}
if (value < min) {
secondMin = min;
min = value;
}else if (value < secondMin) {
secondMin = value;
}
}
}
}
printf(" all=%d, min=%d, sec=%d ", allCount, min, secondMin);
unsigned long result = allCount/min/secondMin;
printf("result = %ld \n", result);
if (result > max) {
max = result;
}
}
printf("\n");
}
printf("输出结果:%ld\n", max);
return 0;
}