Linux的常用操作

Linux的常用操作

Linux教程:https://subingwen.cn/linux/

1.简单终端操作

(1)在终端中可以使用tab键来进行自动补全

(2)ctrl shift + 可以放大终端

2.相对路径和绝对路径

(1)cd Lab1 表示进入当前文件下的Lab1文件夹

(2)cd .. 表示进入上一级目录

(.表示当前目录  , ..表示当前目录的上一级目录)

(3)cd ~ 表示切换到home目录下的当前用户目录

(home目录下可以存储多个用户目录,如果这个电脑注册了多个用户)

(4)pwd展示当前所在位置的路径

(5)ls表示list即列出当前目录下的文件和目录

(6)ll表示罗列出当前文件、目录的详情信息,如时间、大小等信息

3.创建目录

mkdir 表示make direction即创建一个目录(文件夹)

mkdir    aaa            在当前目录下创建一个名为aaa的目

mkdir    /usr/aaa     在指定目录下创建一个名为aaa的目录

mkdir  -p  a/b/c   加上参数-p,在当前目录下创建多层目录

4.vim hello.c 表示用vim在当前位置打开hello.c这个文件,如果没有则创建

5.gcc hello.c表示编译这个.c文件

默认的.c文件编译链接后文件名是a.out

gcc后加-o可以命名可执行程序,如gcc hello.c -o hello

6.运行可执行程序

./hello表示运行刚刚编译通过的可执行文件

  ./a.out 若生成的可执行程序未人工命名,系统会默认为a.out

7.罗列文件信息

9.查找文件

wheris stdio.h查找文件所在位置

10.删除文件、目录

rm表示remove(移除、删除)

rm a.out 表示删除当前目录下的a.out文件

  rm -r testfan 加上-r表示递归操作,删除testfan目录

11.拷贝

(1)文件拷贝

语法: cp 要拷贝的文件A  得到的文件B

  如果B不存在则创建B文件,如果B存在那么原来的B文件将被覆盖

(2)目录拷贝

拷贝目录需要参数-r表示递归

A是需要被拷贝的目录

场景1:B目录原来不存在,通过拷贝创建出目录B

$ cp 目录A 目录B  -r

场景2: 目录B原来存在, 执行下边的拷贝 ==> 目录A会被拷贝并被放到目录B中

$ cp 目录A 目录B -r

场景3: 把A目录里的一个或者多个文件拷贝到B目录中

# 拷贝 A目录中的 a.txt 到目录B中

$ cp A/a.txt B 

# 拷贝 A目录中的所有文件(*表示所有)到目录B中。不能确定A中是否有子目录, 因此需要加-r

$ cp A/* B -r  

12.mv命令

mv就是move,这个命令可以对文件、目录进行移动,也可以改名

(1)移动文件、目录

move A  B

A可以是文件或目录,B是一个存在的目录

这个命令表示把A移动到B

(2)改名文件、目录、

  move A B

  A是文件或目录 B是一个不存在的新名字

  如move English.txt eng.txt 表示把English.txt改名为eng.txt

(3)文件覆盖

 move A B

A和B必须都是已经存在的文件,不能是目录!!!

A文件中的内容覆盖B文件中的内容, A文件被删除, 只剩下B文件

13.查看文件

(1)more

$ more 文件名

# 快捷键

- 回车: 显示下一行

- 空格: 向下滚动一屏

- b: 返回上一屏

- q: 退出more

(2)cat

cat 加文件名

适合看比较小型的文件

(3)head/tail

head -20 文件名    查看文件的前20行

tail -30 文件名     查看文件的后30行

14.压缩和解压缩

(1)使用tar压缩文件:

tar  zcvf  all.tar.gz  *

参数解释:

tar是一种打包工具,可以把文件打包,但不会压缩

c: 创建压缩文件

z: 使用 gzip 的方式进行文件压缩

j: 使用 bzip2 的方式进行文件压缩

(z和j是互斥的,只能选取一个压缩工具进行当前的压缩操作)

v: 压缩过程中显示压缩信息,可以省略不写

f: 指定压缩包的名字

上面的指令指定为all.tar.gz,使用gzip进行压缩后缀名需要加上.gz

(2)使用tar解压缩文件

tar zxvf all.tar.gz -C temp

参数解释:

x: 释放压缩文件内容,也就是解压

z: 使用 gzip 的方式进行文件压缩,压缩包后缀为.tar.gz

j: 使用 bzip2 的方式进行文件压缩,压缩包后缀为.tar.bz2

v: 解压缩过程中显示解压缩信息

f: 指定压缩包的名字

-c :指定解压目录

15.gcc 参数

(1)-c             (compile)只编译生成中间同名目标文件,也就是.o文件,不链接

(2)-o           (output)指定生成文件名字,不加-o会默认生成a.out

(3)-g           可以通过gdb进行调试

(4)-l            在程序编译的时候,指定使用的库

(5)-L             指定编译的时候,搜索的库的路径。

(6)-I              指定头文件所在的目录

(7)-fPIC/fpic 生成与位置无关的代码

(8)-shared     生成共享目标文件。通常用于建立共享库时

(9) -D           在程序编译的时候,指定一个宏,例如可以在编译的时候定义Debug这个宏,这样就不需要在代码里面定义Debug

gcc与g++的异同

(1)gcc, g++ 都可以编译C程序,编译程序的规则和参数都相同

(2)g++可以直接编译C++程序,gcc 编译C++程序需要添加额外参数-lstdc++

(3)gcc ,g++ 都可以定义 __cplusplus 宏

16.Makefile

(1)作用

Makefile文件相当于把需要执行的gcc命令放到Makefile文件中

这样不需要重复地在命令行执行gcc命令,直接在命令行写make就可以了

在命令行输入make clean 可以删除Makefile中clean操作指定的文件(一般是.o文件和可执行程序等)

(2)

先编写链接依赖关系,再编写编译依赖关系

如下图:

(3)定义变量

# 普通写法

calc:add.o  div.o  main.o 

        gcc  add.o  div.o  main.o   -o calc

# 使用自定义变量写法

# 定义obj变量

obj=add.o  div.o  main.o

# 定义target变量

target=calc

#$表示取出变量的值

$(target):$(obj)

        gcc  $(obj) -o $(target)

17.静态库和动态库

视频教程:

8.2 制作静态库文件_哔哩哔哩_bilibili

18.gdb调试

GDB调试 | 爱编程的大丙

19.gdb的使用

gdb bomb        调试可执行程序bomb

q                      退出gdb

r                       执行程序,即run

l                       查看c语言代码

x/10i main      查看main函数的反汇编代码

x/10i $rip      rip是用来存放下一条即将用来执行的指令的地址,又称为PC

b 5            在指定位置设置断点

n                      执行下一条程序指令

ni                     执行下一条反汇编指令

c                      继续执行,即continue

x/s 0x405780  查看指定位置的字符串(s表示字符串)

si                     进入函数单步执行

info reg           查看寄存器的内容

layout asm      查看汇编代码

layout regs      查看寄存器

set args haha   设置命令行参数为haha

show args       查看命令行参数

20.edb的使用

edb –run bomb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值