面试基础知识巩固
常用Linux指令的基础知识点
ls命令执行什么功能?可以带哪些参数?
#功能:列出指定目录中的目录和文件
#参数:
ls -a #显示所有的文件和目录(包括.开头的隐藏文件)
ls -l #除文件名称外,将文件形态、权限、拥有者、文件大小等信息详细列出
ls -r #将文件以相反的顺序显示(原定依英文字母次序)
ls -t #将文件依建立时间之先后次序列出
ls -A #同-a,但不会列出“.”(当前目录)及“...”(父目录)
ls -F #在列出的文件名称后加一符号;例如可执行文件加“*”,目录则加“/”
ls -R #若目录下有文件,则将所以文件依序列出
如何创建目录,如何创建文件?
#创建目录
mkdir test #在当前目录下,建立一个名为 test 的子目录
mkdir -p run/test #在当前目录下的 run 目录中,建立一个名为 test 的子目录。#若 run 目录原本不存在,则建立一个。
#(注:本例若不加 -p 参数,且原本 run 目录不存在,则产生错误。)
#创建文件
vim file.txt #直接创建并打开一个文件file.txt
touch file.txt #创建新的空文件file.txt
echo "this is a new file" > file.txt
#创建文件file.txt并将this is a new file写入
#(说明:使用>指令覆盖文件原内容并重新输入内容,若文件不存在则创建文件。)
echo "add contents" >>file.txt
#在已存在的文件补充写入新内容add contents
#(说明:使用>>指令向文件追加内容,原内容将保存。)
cat 1.txt > file.txt
less 1.txt > file.txt
more 1.txt > file.txt
#三者都可以根据已经存在的文件创建新的文件
#三者都是将文件内容输出到标准输出,其中less和more可以分页显示,cat是显示全部
cd > file.txt #创建新的空文件file.txt
cd >> file.txt #创建新的空文件file.txt
#它和echo的区别之处在于echo可写文件内容,而cd并不能
#查看文件
vi file #编辑方式查看,可修改
cat file #显示全部文件内容
more file #分页显示文件内容
less file #和more相似,但是可以向前翻页
tail file #仅查看尾部,还可以指定行数
head file #仅查看头部,还可以指定行数
如何查找文件?如何查找文件内容?
#查找文件
find . -name *file #将当前目录及其子目录下所有文件后缀为.c的文件列出来
find . -ctime -20 #将当前目录及其子目录下所有最近20天内更新过的文件列出
#查找文件内容
grep test *file #在当前目录中,查找后缀为file的文件中包含test字符串的文件,并打印出该字符串的行
grep -r update /etc/acpi #查找指定目录/etc/acpi及其子目录(如果存在子目录的话)下所有文件中包含字符串"update"的文件,并打印出包含该字符串的行
grep -v xxx *test* #查找文件名中包含test的文件中不包含xxx的行
常用gcc命令
gcc编译文件命令与流程
//预处理
gcc -E test.c -o test.i /*把预处理的结果导出到test.i文件*/
//汇编
gcc -S test.i -o test.s /*编译器将test.i翻译成汇编语言,并将结果存储在test.s文件中*/
//编译
gcc -c test.s -o test.o /*将汇编代码编译成目标文件,但不链接*/
//链接
gcc test.o -o test /*将生成目标文件test.o生成最终的可执行文件test*/
//一步编译
gcc test.c -o test /*将源文件test.c编译链接为可执行文件test*/
//多文件编译
gcc test1.c test2.c -o test
//警告处理
gcc -w test.c -o test /*忽略编译时的警告*/
gcc -Wall test.c -o test /*编译后显示所有警告*/
gcc -Werror test.c -o test /*在产生警告的地方停止编译*/
常用GDB调试指令
gcc -g test.c -o test #编译时生成debug有关的程序信
gdb test #启动调试
help #查看命令帮助,具体命令查询在gdb中输入help + 命令,简写h
run #重新开始运行文件(run-text:加载文本文件,run-bin:加载二进制文件),简写r
start #单步执行,运行程序,停在第一执行语句
list #查看原代码(list-n,从第n行开始查看代码。list+ 函数名:查看具体函数),简写l
set #设置变量的值
next #单步调试(逐过程,函数直接执行),简写n
step #单步调试(逐语句:跳入自定义函数内部执行),简写s
backtrace #查看函数的调用的栈帧和层级关系,简写bt
frame #切换函数的栈帧,简写f
info #查看函数内部局部变量的数值,简写i
finish #结束当前函数,返回到函数调用点
continue #继续运行,简写c
print #打印值及地址,简写p
quit #退出gdb,简写q
break+num #在第num行设置断点,简写b
info breakpoints #查看当前设置的所有断点
delete breakpoints num #删除第num个断点,简写d
display #追踪查看具体变量值
undisplay #取消追踪观察变量
watch #被设置观察点的变量发生修改时,打印显示
i watch #显示观察点
enable breakpoints #启用断点
disable breakpoints #禁用断点
x #查看内存x/20xw 显示20个单元,16进制,4字节每单元
run argv[1] argv[2] #调试时命令行传参
set follow-fork-mode child #Makefile项目管理:选择跟踪父子进程(fork())
常用驱动开发指令
gcc如何查看内核已有的字符设备的信息?
lsmod可以查看模块的依赖关系,modprobe在加载模块时会加载其他依赖的模块
gccLinux驱动如何查看驱动模块中打印信息?
dmesg
gcc加载/卸载驱动
insmod/modprobe #加载驱动
rmmod #卸载驱动
gcc如何查看正在使用的有哪些中断号?
cat /proc/interrupt