Linux根目录结构

Linux根目录结构

野火在线文档链接

Linux根目录结构

(类似 正点原子 STM32 的 USER)程序和配置相关(4个):存储系统命令:bin;配置文件:etc;程序文件:usr; 第三方软件:opt

(类似HARDWARE)挂载外设相关(3个):dev, mnt, media

(类似SYSTEM)进程与内核信息相关(2个):proc,sys

(类似 CORE/LIB)共享库:lib

网络服务:srv

临时文件相关:run, tmp

开机启动:boot

centos7 下安装tree

在有网络的情况下:

1、包管理器安装centos 中用 yum -y install treeubuntu 中用 apt-get install tree当然如果需要权限不要忘了在前面加上 sudo

在没有网络的情况下:

1、提前下载源码文件 ftp://mama.indstate.edu/linux/tree/ ,将准备好的源码文件放在 root 目录下2、 tar zxvf tree-1.7.0.tgz3、 cd tree-1.7.04、 make5、 cp tree /bin————————————————在 Debian 系统中时,

apt-get install tree时Unable to locate package tree使用sudo apt-get update再进行apt-get install tree

一些 Shell 命令

echo: 有重定向功能:例如 echo 12345 >> x.txt 向x.txt 的下一行添加12345。

ln 命令: 硬链接: 格式 ln 原文件名 现文件名 软链接:格式 ln -s 原文件名 现文件名

cp命令:复制命令,格式:cp 原文件名 现文件名

tar命令:打包\解包文件(不进行压缩)

find命令:查找当前文件夹符合名字的文件 find \ -name "123.txt"

grep命令:在相应文件中查找相应的字符串 格式:grep 字符串 文件名

rm命令:删除文件或者文件夹

cp命令:cp 文件名 文件夹名 将文件复制到指定的文件夹。

cp -r 命令:复制文件夹 cp -r ./makefile ./makefiletest

cd 命令:加“-”:减号,作为cd 命令的参数时可以返回上一次cd 切换前的目录。

which 命令:系统调用的文件都存在$PATH 环境变量中的一个路径上,对某一个命令,可以用which得到其具体的路径。

例如:which ls

另外,在windows 命令行中 where 命令与 Linux 的which命令等价。

一些 vim 命令

1. set nu :显示行号(set nonu, 不显示行号)

2. /关键词 :查找关键词

3. 行号+Shift+g: 跳转到指定行

shell 脚本编程

基础知识:

shell 脚本语言是一种解释语言(C语言是编译语言)

环境变量:通过 echo $PATH 查看

解释器:通过 cat /etc/shells 查看

情况:bash: ./test.sh: Permission denied

修改权限即可:

chmod 777 test.sh

一个较好的Makefile

当main.c改动时,而mp3.c没改动时,只编译main.c,省去了将mp3.c编译成mp3.o的过程。反之亦然。

1 test:main.o mp3.o

2 gcc main.o mp3.o -o test

3

4 main.o:main.c

5 gcc -c main.c -o main.o

6

7 mp3.o:mp3.c

8 gcc -c mp3.c -o mp3.o

第二版:

注意:

Line3 : 不能写为:OBJS=“main.o mp3.o”

Line9 :#要放在最前面,才起注释作用

1 CC=gcc

2 TAR=test

3 OBJS=main.o mp3.o

4

5 $(TAR):$(OBJS)

6 $(CC) $^ -o $@

7

8 #main.o:main.c

9 # $(CC) -c main.c -o main.o

10

11 #mp3.o:mp3.c

12 # $(CC) -c mp3.c -o mp3.o

13

14 %.o:%.c

15 $(CC) -c $< -o $@

16

17 .PHONY:clean

18

19 clean:

20 rm -r *.o test

在做贪吃蛇项目的时候,参考同学,我做了以下的Makefile:

1 #使用Makefile的优势:1.命令简单,不用长串的g++命令 2. 编译效率高,不用重复编译没有修改过的文件

2 #原来的长命令是: g++ main.cpp data_process.cpp comm.cpp map_build.cpp food_define.cpp snake_define.cpp -o test -levent -lpthread

3

4 #设置编译器

5 CC = g++

6 #设置最终目标

7 TARGET = ./server_test

8 #设置源文件(可用 *.c 但是这里必须除去 test.cpp,因此我罗列出来)

9 C_SOURCE += main.cpp data_process.cpp comm.cpp map_build.cpp food_define.cpp snake_define.cpp

10

11 #设置头文件路径

12 INCLUDE_PATH += -I ./

13

14 #设置库文件路径 (这里没用到另外的非系统的库,因此注释掉)

15 #LIBRARY_PATH += -L ./

16 #设置库名

17 LIB += -lpthread

18 LIB += -levent

19

20

21 #最终Makefile有效的内容(前面都是定义变量,为这一步做准备的)

22 #方式一:其实这里并没有第二点提高编译效率的作用,因为每一次都重新编译了,对于小项目来说是可行的

23 #$(TARGET):$(C_SOURCE)

24 # $(CC) $^ -o $@ $(INCLUDE_PATH) $(LIB)

25 #方式二:采用Makefile模式匹配语法(%)

26 #设置目标文件(与上面的C_SOURCE 一一对应)

27 C_OBJECT += main.o data_process.o comm.o map_build.o food_define.o snake_define.o

28 $(TARGET):$(C_OBJECT)

29 $(CC) -o TARGET $(C_OBJECT) $(INCLUDE_PATH) $(LIB)

30

31 %.o:%.c

32 $(CC) -c $<

33

34 #伪目标——防止存在clean文件,从而使得rm无法执行。目的是区别生成文件的相关命令

35 .PHONY: clean

36 clean:

37 rm *.o

38 rm $(TARGET)

39

40 #这个文件还有不足,就是生成的.o 文件都在当前文件下,如果能生成在一个独立的 BUILD 文件夹之下就更好了。

41 .PHONY: cleanobj

42 cleanobj:

43 rm *.o

相关推荐

365登录器 GND、RX、TX ------------(详解)

GND、RX、TX ------------(详解)

📅 08-22 👁️ 2870
36365 云笈七籖 卷二十四

云笈七籖 卷二十四

📅 10-13 👁️ 4181
office365网页版无法使用 《FGO》核桃哪裏掉率最高 世界樹之種速刷點分享