linux环境中的一些常用命令
ll --> 显示当前路径下目录的详细信息
ls --> 显示当前路径下的目录信息
-a --> 列出目录下所有文件
-l --> 列出文件详细信息
cd --> (+目录名)进入指定目录
cd .. --> 进入当前目录的上级目录
cd . --> 进入当前目录
cd /home/tyy --> 绝对路径访问方式
cd ../tyy --> 相对路径访问方式
pwd --> 显示当前目录的路径
/ --> 显示该路径时表示进入Linux的根目录
clear --> 清屏操作
ctrl+l --> 也可以达到清屏的效果
mkdir -->(+目录名)创建目录
touch --> (+文件名)创建文件
rm --> (+文件名)删除文件
rm -r --> 为rm带上选项 --> (+目录名)删除目录
rm -rf --> (+目录名)强制删除目录
sudo rm -rf --> (+目录名)进行权限上的升级后强制删除目录 --> 实际应用中没必要这么较真的删目录哈
whoami --> 查看当前我是谁
man --> 向man进行咨询
man 3 printf --> man会告诉你printf这个函数的用法以及头文件等等
mv --> 有三种常见用法
mv 目录名1 目录名2 --> 将目录名1改为目录名2
mv 目录名 路径 --> 将该目录剪切到该路径中
mv 目录名1 路径/目录名2 --> 更改路径并且更改目录名
例:mv a.text /home/tyy/b.text --> 将目录a.text放到路径为/home/tyy中,并将目录名改为b.text
cp --> 复制源文件(或目录)到目标文件(或目录)
cat --> 查看文件内容
more --> 类似cat,还能进行分屏显示
b --> 向上翻屏
空格键 --> 向下翻屏
less --> 类似more,除了分屏还能上下走一行,还能进行查找
k --> 向上走一行
j --> 向下走一行
/ --> 后直接加需要查找的内容,系统会用高光进行标识
head --> 显示文件的前几行(默认打印前10行)
-n --> 后接行数m,显示前m行
tail --> 显示指定文件末尾内容
-n --> 后接行数m,显示后m行
history --> 查看历史命令
后直接数字m --> 查看刚敲过的m条命令(包括刚敲的histroy m命令)
cal --> 显示当月的日历信息
find --> 在目录下查找文件
-name --> 后接文件名,以该文件名去寻找当前目录以及子目录下所有的该文件
-exec --> 后接命令,将找到的文件均执行该命令
-ok --> 和exec一样的功能,区别在于每次执行命令都会进行询问
grep --> 在文件中搜索字符串,将找到的对应行均打印出来
tar --> 将文件进行打包/解包
tar -czvf 目录名.tar.gz 目录名 --> 将该文件进行打包
tar -xzvf 压缩包 --> 将打包的文件进行解包
bc --> 浮点数计算器
chmod --> 修改文件的访问权限
+、-、= --> 分别指加、减、赋予后面跟的权限
r、w、x --> 分别指查看、修改、执行权限
Linux的编译器(gcc)
gedit file.c --> Linux下的记事本,拥有编辑功能,编辑完成后会出现一个file.c~文件,其实是将file.c进行了备份不用考虑 --> 可在该文件中编写代码
gcc file.c --> 生成可执行程序 --> 默认生成的可执行程序写入到文件a.out
gcc -E file.c -o file.i --> 将文件执行完预处理后(c语言)结束,并将结果写入file.i中
gcc -S file.c -o file.s --> 将文件执行完编译后(汇编语言)结束,并将结果写入file.s中
gcc -c file.c -o file.o --> 将文件执行完汇编后(机器语言)结束,并将结果写入file.o中
gcc file.c -o mytext --> 将文件执行完预处理、编译、汇编、链接(及生成可执行程序),并将结果写入mytext中 --> 完成整个翻译过程
./a.out --> 执行当前工作目录下的a.out
当执行的程序陷入死循环时,ctrl+c可以终止循环
注意:Linux默认的发布版本为Release,转换为Debug发布 --> gcc file.c -o mytext_d -g
Linux默认的链接方式为动态链接,转换为静态链接 --> gcc file.c -o mytext_s -static
当然了,不适用默认的就会占用更大的空间
Linux的编辑器(vim-系统自带的文本编辑器)
vim 文件名 --> 新建文件/修改文件 --> 当该文件名存在时为修改,不存在时为新建并且下方会进行提醒
编辑
i --> 光标所在位置前插入
a --> 光标所在位置后插入
o --> 在当前行下面插入一行
O --> 在当前行的上面插入一行
I --> 在当前行的行首插入
A --> 在当前行的行尾插入
保存
:wq(:x)--> 保存并退出
:wq! --> 强制保存退出
:q! -->强制退出
查找
/ --> 后接查找内容,定位到第一个找到的
n --> 查找下一个
N --> 查找上一个
? --> 后接查找内容,定位最后一个找到的
n --> 查找上一个
N --> 查找下一个
替换
r --> 替换光标中的字符
:开始行,结束行s/旧的内容/新的内容 --> 替换每一行的第一个
:开始行,结束行s/旧的内容/新的内容/g --> 替换所有
:开始行,结束行s/\<旧的内容\>/新的内容/g --> 将旧的内容作为单词替换,若旧的内容作为其他单词的一部分则不进行替换
:%s/旧的内容/新的内容 --> 全文替换
删除
s --> 删除光标的一个字符并直接进入插入模式
x --> 删除光标中的位置
dw --> 删除光标所在位置到当前单词词尾
db --> 删除光标所在位置到当前单词词首
dd --> 删除当前行
m(数字)dd --> 删除当前行及以下m行
dG --> 删除光标所在行到文件结尾
d0 --> 删除光标到当前行行首
d$ --> 删除光标到当前行行尾
预处理
预处理包含宏替换、去注释、头文件展开、条件编译
预定义符号
__FILE__ //进行编译的源文件
__LINE__ //文件当前的行号
__DATE__ //文件被编译的日期
__TIME__ //文件被编译的时间
__STDC__ //如果编译器遵循ANSI C其值为1,否则报错提示未定义
宏定义
宏定义分为:#define定义标识符、#define定义宏
注意:#define机制允许把参数替换到文本中,这种实现称为宏(或定义宏)
#define ADD( x ) x*x --> 参数列表的左括号必须与ADD紧邻,如果两者之间有任何空白存在,参数列表就会被解释为后面x*x的一部分