一些linux常用命令
ctrl c
: 取消命令,并且换行ctrl u
: 清空本行命令tab
键:可以补全命令和文件名,如果补全不了快速按两下tab键,可以显示备选选项ls
: 列出当前目录下所有文件,蓝色的是文件夹,白色的是普通文件,绿色的是可执行文件pwd
: 显示当前路径cd XXX
: 进入XXX目录下,cd ..
返回上层目录cd /
:切换到系统根目录,cd ~
:切换到用户主目录,cd -
: 切换到上一个操作所在目录cp XXX YYY
: 将XXX文件复制成YYY,XXX和YYY可以是一个路径,比如../dir\_c/a.txt
,表示上层目录下的dir\_c
文件夹下的文件a.txt
mkdir XXX
: 创建目录XXXrm XXX
: 删除普通文件;rm XXX -r
: 删除文件夹mv XXX YYY
: 将XXX文件移动到YYY,和cp命令一样,XXX和YYY可以是一个路径;重命名也是用这个命令touch XXX
: 创建一个文件cat XXX
: 展示文件XXX中的内容- 复制文本
Ctrl + insert
- 粘贴文本
Shift + insert
tmux 的使用
tmux 是终端复用工具,支持在屏幕上同时显示多个终端,允许断开Terminal连接后,继续运行进程。
常用命令
(1)ctrl + b + %
左右分屏
(2)ctrl + b + "
上下分屏
(3)ctrl + b + d
挂起终端
vim的使用
vim是常用的文本编辑器,使用vim编辑时,不用频繁的移动鼠标。
vim有三种模式,分别是一般模式、编辑模式和命令模式
切换模式命令
`i`
进入编辑模式`esc`
退出编辑模式- 按
`?`
、`/`
、`?`
三者中的任意一个进入命令模式
一般模式下常用的操作
`h`
,`j`
,`k`
,`l`
分别表示光标向左、下、上、右移动。- 先按下数字n,再按空格键 光标会在该行内向右移动n个字符。
- 按
`0`
移动到本行开头,按`$`
或`end`
移动到本行结尾 `G`
使光标移动到最后一行,`gg`
移动到光标第一行,`nG`
或`:n`
表示移动到第n行- 先按下数字n,再按
`Enter`
键,表示光标向下移动n行。 - 按下
`/word`
表示在光标以上寻找第一个值为`word`
的字符串,按下`?word`
表示在光标以下寻找第一个值为`word`
的字符串,`n`
表示重复前一个查找操作,`N`
表示反向重复上一个查找操作。 - 可以对以上命令进行组合,比如
`:n1,n2s/word1/word2/g`
其中n1,n2为数字,这串指令表示在n1行和n2行之间查找`word1`
并替换为`word2`
,类似的`:1,$s/word1/word2/g`
表示全文查找`word1`
并替换为`word2`
,`:1,$s/word1/word2/gc`
与上面的命令相仿,不同点在于末尾的`c`
表示替换时需要确认。
Makefile简介
简介
Makefile 用于帮助决定一个大型程序的哪些部分需要重新编译。makefile通过检测文件的依赖项是否发生更改来决定该文件是否需要重新编译。
除了make,还有一些比较流行的构建系统,如CMake等。其他编译型语言往往有自己的构建工具,例如java的Ant、Maven、Gradle,Golang的go build工具以及rust的Cargo工具,像 Python、Ruby 和 JavaScript 这样的解释型语言是不需要类似 Makefiles 的东西的。Makefiles 的目标是基于哪些文件发生了变化来编译需要被编译的一切文件。但是,当解释型语言的文件发生了变化,是不需要重新编译的,程序运行时会使用最新版的源码文件。
从一个简单的例子开始
1 | hello: |
然后在终端中运行make,结果如下
1 | make |
makefile 文件有一系列 规则(Rules) 组成。每一个规则类似
1 | targets: prerequisites |
(1)targets
指的是这条规则指定的文件名称,多个文件名以空格隔开
(2)command
通常是一系列生成targets
的步骤,他们需要一个Tab
键开头
(3)prerequisites
也是文件名称,多个文件名以空格分隔。在运行生成目标(targets)的commands
之前,要确保这些文件是存在的。他们也被称为依赖。
一个简单的例子
1 | blah: blah.o |
这个makefile
按以下步骤执行
首先
blah
给make
提供了构建目标的名称,所以他会在makefile中优先被make
程序搜索构建系统发现
blah
依 赖blah.o
,所以make
开始搜索blah.o
这个目标blah.o
又依赖blah.c
,所以make
又开始搜索blah.o
这个目标blah.c
没有依赖,直接运行echo
命令接着运行
cc -c
命令,因为blah.o
的依赖的所有commands
都执行完了同理,接着运行顶部的
cc
命令就这样,一个编译好的c程序
blah
就诞生了