Linux基础指令,vim,gcc,gdb,git,makefile基础操作

目录

一、基础指令

1、ls

 2、cd

3、pwd

4、 mkdir

5、touch

 6、more

7、cat

8、cp

9、mv

 10、rm

11、which

12、find

13、grep

 14、wc

 15、echo

16、tail

 二、vim编辑器相关操作

切换和退出:

移动光标:在命令模式下使用以下键盘按键可以移动光标:

插入和编辑文本:

删除和复制文本:

撤销和重做:

搜索和替换:

设置标记和跳转:

 三、gcc相关操作

四、gdb调试

五、git

六、makefile


一、基础指令

1、ls

ls 是一个常用的命令,用于列出当前目录下的文件和文件夹。

基本用法:

ls

该命令会列出当前目录下的文件和文件夹的名称。

常见的参数:

  • -l:以长格式显示文件和文件夹的详细信息。
  • -a:显示所有文件和文件夹,包括以点开头的隐藏文件。
  • -h:人类可读格式显示文件大小。
  • -R:递归地列出当前目录下的所有文件和文件夹。
  • -t:按修改时间排序,最近修改的文件或文件夹在前。
  • -S:按文件大小排序,文件大小大的在前。
  • -r:逆序显示文件和文件夹。

例如,要以详细信息的长格式显示当前目录下的所有文件和文件夹,可以使用以下命令:

ls -l
 2、cd

cd 是一个常用的命令,用于更改当前工作目录。

基本用法:

cd <目录路径>

该命令会将当前工作目录更改为指定的目录路径。

常见的用法和参数:

  • cd:不带任何参数,返回用户的主目录(home directory)。
  • cd -:返回之前所在目录。
  • cd ..:返回上一级目录。
  • cd .:保持在当前目录。
  • cd /:返回根目录。
  • cd ~:返回用户的主目录(home directory)。

例如,要进入名为 “Documents” 的子目录,可以使用以下命令:

cd Documents
3、pwd

pwd 是一个常用的命令,用于显示当前工作目录的路径。

基本用法:

pwd

该命令会在终端中显示当前所在的工作目录的完整路径。

例如,如果当前工作目录是 “/home/user/Documents”,那么使用 pwd 命令会显示:

/home/user/Documents

pwd 命令通常用于确认当前所在的目录,或在脚本中获取当前工作目录的路径。

4、 mkdir

mkdir 是一个常用的命令,用于创建新的目录。

基本用法:

mkdir <目录名>

该命令会在当前目录下创建一个新的目录,目录名由 <目录名> 指定。

例如,要在当前目录下创建一个名为 “new_dir” 的目录,可以使用以下命令:

mkdir new_dir

如果要在其他目录下创建目录,可以在命令中指定完整的目录路径,如:

mkdir /path/to/new_dir
5、touch

touch 是一个常用的命令,用于创建新的空文件或更新已有文件的访问时间和修改时间。

基本用法:

touch <文件名>

该命令会创建一个新的空文件,文件名由 <文件名> 指定。如果文件已存在,touch 命令将更新文件的访问时间和修改时间,但文件内容不会改变。

例如,要在当前目录下创建一个名为 “file.txt” 的空文件,可以使用以下命令:

touch file.txt
 6、more

more 是一个用于分屏显示文件内容的命令。它允许你按页浏览文本文件,适用于较长的文件内容。

基本用法:

more <文件名>

该命令会将 <文件名> 指定的文件内容按页显示在终端中。你可以通过按空格键向下翻页,按 “q” 键退出浏览。

例如,要查看名为 “file.txt” 的文件内容,可以使用以下命令:

more file.txt
7、cat

cat 是一个常用的命令,用于显示文件的内容或将多个文件合并成一个文件。

基本用法:

cat <文件名>

该命令会将 <文件名> 指定的文件的内容显示在终端中。

例如,要显示名为 “file.txt” 的文件内容,可以使用以下命令:

cat file.txt

cat 命令还可以用于将多个文件的内容合并,并输出到一个文件或标准输出。如下所示:

合并多个文件,并输出到标准输出:

cat file1.txt file2.txt

合并多个文件,并输出到一个新文件:

cat file1.txt file2.txt > merged_file.txt

除了基本用法,cat 命令还有其他选项和功能,比如显示行号、多文件显示等。

8、cp

cp 命令用于复制文件或目录。
基本用法:

cp <源文件路径> <目标文件路径>

例如,将文件 “file.txt” 从当前目录复制到 “backup” 目录中,可以使用以下命令:

cp file.txt backup/
9、mv

mv 命令用于移动文件或目录,也可以用于修改文件或目录名。
基本用法:

mv <源文件路径> <目标文件路径>

例如,将文件 “file.txt” 从当前目录移动到 “backup” 目录中,可以使用以下命令:

mv file.txt backup/

如果目标路径与源路径相同,mv 命令也可以用于修改文件或目录名。例如,重命名文件 “file.txt” 为 “new_file.txt”:

mv file.txt new_file.txt
 10、rm

rm 命令用于删除文件或目录。需要注意的是,该命令会直接删除文件或目录,并且在删除之前没有任何提示信息,请谨慎使用。
基本用法:

rm <文件或目录路径>

删除文件 “file.txt”:

rm file.txt

删除目录 “dir”:

rm -r dir/

需要注意的是,在删除目录时需要添加 -r 参数,以递归删除目录中的所有文件和子目录。

11、which

which 命令用于查找并显示可执行程序的路径。

基本用法:

which <命令名>

例如,要查找命令 ls 的路径,可以使用以下命令:

which ls

该命令会输出 ls 命令的完整路径,例如 /bin/ls

12、find

find 命令用于在指定目录下递归搜索文件和目录。

基本用法:

find <目录> <表达式>

例如,要在当前目录及其子目录下查找所有扩展名为 .txt 的文件,可以使用以下命令:

find . -name "*.txt"

find 命令还支持更多的用法和选项,例如按文件类型、文件大小等进行搜索。

13、grep

grep 命令用于在文件中搜索指定的模式并显示匹配的行。

基本用法:

grep <模式> <文件名>

例如,要在文件 “file.txt” 中搜索包含字符串 “example” 的行,可以使用以下命令:

grep "example" file.txt
 14、wc

wc 命令用于统计文件中的单词数、行数和字符数。

基本用法:

wc <选项> <文件名>

例如,要统计文件 “file.txt” 中的行数、单词数和字符数,可以使用以下命令:

wc file.txt

wc 命令的选项包括:

  • -l 统计行数
  • -w 统计单词数
  • -c 统计字符数

使用管道符 | 可以将多个命令连接起来,将一个命令的输出作为另一个命令的输入。

例如,要统计文件 “file.txt” 中包含字符串 “example” 的行数,可以使用以下命令:

grep "example" file.txt | wc -l

这个命令首先使用 grep 命令找到包含 “example” 的行,然后将这些行作为输入传递给 wc 命令,使用 -l 选项统计行数。

 15、echo

echo 命令用于在终端上输出指定的文本。

基本用法:

echo <文本>

例如,要在终端上输出 “Hello, World!”,可以使用以下命令:

echo Hello, World!

echo 命令还支持一些特殊字符和转义序列,如换行符 \n、制表符 \t 等,用于格式化输出文本。你可以通过以下命令来实现换行输出:

echo -e "Line 1\nLine 2"
16、tail

tail 命令用于显示文件的末尾几行,默认显示文件的最后 10 行。

基本用法:

tail <选项> <文件名>

例如,要显示文件 “file.txt” 的最后 10 行,可以使用以下命令:

tail file.txt

常用的选项包括:

  • -n <行数> 显示指定行数的末尾内容,例如 -n 20 显示最后 20 行。
  • -f 实时监视文件的变化,并动态显示新增的内容。

重定向符用于将命令的输入或输出重定向到文件或设备。

常见的重定向符包括:

  • > 将输出重定向到文件,覆盖原有内容。
  • >> 将输出重定向到文件,追加到原有内容末尾。
  • < 将文件内容作为输入重定向给命令。
  • 2> 将错误输出重定向到文件。

例如,要将命令的输出保存到文件 “output.txt”,可以使用以下命令:

command > output.txt

 二、vim编辑器相关操作

  1. 切换和退出:
  • 启动 Vim:在终端中输入 vim 命令。
  • 退出 Vim:
    • 命令模式下输入 :q
    • 保存并退出:命令模式下输入 :wq 或者按下 ZZ
    • 强制退出:命令模式下输入 :q!
  1. 移动光标:
    在命令模式下使用以下键盘按键可以移动光标:
  • h:左移一个字符。
  • j:下移一行。
  • k:上移一行。
  • l:右移一个字符。
  • w:向后移动一个字(由空格或标点分隔的词)。
  • b:向前移动一个字。
  • 0:移至行首。
  • $:移至行尾。
  • G:跳至文件末尾。
  • gg:跳至文件开头。
  • <Ctrl-f>:向前翻页。
  • <Ctrl-b>:向后翻页。
  1. 插入和编辑文本:
  • 进入插入模式:
    • i:在光标前插入文本。
    • a:在光标后插入文本。
    • o:在当前行下面插入新行。
    • O:在当前行上面插入新行。
  • 退出插入模式:按下 ESC 键。
  1. 删除和复制文本:
  • 删除:
    • x:删除光标所在位置的字符。
    • dw:删除一个字(删除光标位置到下一个空格之间的文本)。
    • dd:删除当前行。
  • 复制和粘贴:
    • yy:复制当前行。
    • yw:复制一个字。
    • p:在光标后粘贴内容。
  1. 撤销和重做:
  • u:撤销最后的操作。
  • <Ctrl-r>:重做撤销的操作。
  1. 搜索和替换:
  • /:进入搜索模式。
    • 输入要搜索的文本并按下回车进行搜索。
    • 按下 n 跳转到下一个匹配项。
  • 替换:
    • :%s/旧文本/新文本/g:将文件中的所有旧文本替换为新文本。
  1. 设置标记和跳转:
  • 设置标记:
    • m<标记>:在当前位置设置标记。例如,ma 设置标记为 a
  • 跳转到标记:
    • 'a:跳转到标记 a 的行。
    • `a:跳转到标记 a 的位置。

三、gcc相关操作

在Linux系统上使用gcc编译器执行C语言程序的各步骤指令如下:

  1. 查看gcc版本:

    gcc --version
    
  2. 编写C语言源代码文件(例如,hello.c)。

  3. 预处理(Preprocessing):在这个阶段,gcc 会根据源代码中的预处理指令对代码进行预处理。预处理指令以 # 开头,例如 #include#define 等。预处理器会处理这些指令,包括文件包含、宏替换等。预处理后的文件保存为 .i 或 .ii 文件(通常为临时文件)。

    gcc -E hello.c -o hello.i
    

    这将把C源代码预处理为纯文本,并将其输出到hello.i文件中。

  4. 编译(Compiling):在编译阶段,预处理后的源代码将被转换为汇编语言。这个过程由编译器完成,其主要任务是将高级语言代码转换为底层汇编代码,以便机器能够理解。编译后的文件通常以 .s 扩展名保存,也是临时文件。

    gcc -S hello.i -o hello.s
    

    这将把预处理后的代码编译为汇编语言,并将其输出到hello.s文件中。

  5. 汇编(Assembling):在汇编阶段,汇编器接受编译器生成的汇编代码文件,并将其转换为机器可执行的二进制目标文件。目标文件通常以 .o 扩展名保存。

    gcc -c hello.s -o hello.o
    

    这将把汇编代码转换为机器代码,并将其输出到hello.o目标文件中。

  6. 链接(Linking):

    gcc hello.o -o hello
    

    这将把目标文件与必要的库文件链接在一起,生成可执行文件hello。

  7. 运行可执行文件:

    ./hello
    

    这将执行生成的可执行文件hello。

四、gdb调试

1、启动gdb
使用vim编辑器编写一个简单的测试程序并保存:

vim hello.c
然后使用gcc将其编译为可执行文件,同时使用-g表示该程序可调试:

gcc -g hello.c -o hello
接下来输入gdb -q + 可执行文件,启动gdb进行调试:

gdb hello

gdb -q hello
-q参数可以屏蔽一些gdb版本等相关信息,使得页面看起来干净些(我用了)。至此gdb启动完毕。

2、启动源码
输入list(l)即可查看程序源码:
默认显示10行,回车显示更多


3、运行程序
输入run(r)开始运行程序,直到遇到“断点”或者“结束”:
因为还没设断点,所以直接运行到最后


4、设置断点
输入 break(b)+数字 可以对程序进行断点操作(数字就是设置断点的代码行数)
输入 info breakpoints 即可查看断点信息:

Num: 断点编号
Disp:断点执行一次之后是否有效(keep:有效 dis:无效)
Enb: 当前断点是否有效 (y:有效 n:无效)
Address:内存地址
What:位置

5、单步执行
next:单步执行程序,但是遇到函数时会直接跳过函数,不进入函数

step:单步执行程序,但遇到函数会进入函数

continue:继续执行程序,直到遇到断点或结束

6、查看变量
print + 变量:查看变量值

whatis + 变量:查看变量数据类型

7、退出
输入q即可退出gdb

8、一些其他命令
(1)运行命令
until    如果你厌倦了在一个循环内单步跟踪,它可以运行程序直到退出循环体
until + 行号    运行至某行
finish    运行程序,直到当前函数返回完成,并且打印函数返回时的堆栈地址和返回值及参数值等信息
call + 行数 + (参数)    
调用程序中可见的函数,并传递参数

如:call gdb_test(66)

(2)断点
delete + n    删除第n个断点
disable + n    暂停第n个断点
enable + n    开启第n个断点
clear + n    清除第n行的断点
info b ( info breakpoint )    显示当前程序的断点设置情况
delete breakpoints    清除所有断点
(3)运行信息
where / bt

当前运行的堆栈列表
bt backtrace    显示当前调用堆栈
up / down    改变堆栈显示的深度
set args + 参数    指定运行时的参数
show args    查看设置好的参数
info program    查看程序是否在运行,以及进程号被暂停的原因

五、git

在Linux中使用Git,你可以按照以下步骤进行:

  1. 安装Git:在终端中运行以下命令来安装Git:

    sudo apt update
    sudo apt install git
    
  2. 配置Git:在终端中运行以下命令来进行Git的全局配置,用于设置你的用户名和电子邮件地址:

    git config --global user.name "Your Name"
    git config --global user.email "youremail@example.com"
    
  3. 克隆仓库:在终端中导航到你想要克隆的目录,并执行以下命令来克隆一个Git仓库:

    git clone <repository_url>
    
  4. 添加文件:将你要跟踪的文件添加到暂存区中,可以使用以下命令:

    git add <file_name>
    

    或者,如果你要添加当前目录下的所有文件,可以运行:

    git add .
    
  5. 提交更改:使用以下命令将暂存区中的更改提交到本地仓库:

    git commit -m "Commit message"
    
  6. 推送更改:如果你希望将本地的提交推送到远程仓库,可以使用以下命令:

    git push
    
  7. 拉取更新:如果你想获取远程仓库的最新更改,可以使用以下命令:

    git pull

六、makefile

Makefile 是一个命名为 Makefile(或者 makefile 或者 GNUmakefile)的文本文件,它包含一系列规则和指令,用于告诉构建系统如何编译和构建项目。

Makefile 使用一种类似于自然语言的结构,其中包含目标、依赖关系和命令。

基本的 Makefile 结构是:

target: dependencies
    commands

  • target 是需要生成的文件或者执行的任务的名称。
  • dependencies 是构建目标所依赖的文件或者任务。
  • commands 是构建目标的具体操作。每个命令必须以 Tab 键开始。

Make 命令根据 Makefile 中的规则,以目标为依据,检查依赖关系,并执行相应命令来生成目标文件。

对于简单的项目,你可以将规则和命令直接放在 Makefile 中。例如,以下是一个简单的示例:

hello: main.o hello.o
    gcc main.o hello.o -o hello

main.o: main.c
    gcc -c main.c

hello.o: hello.c
    gcc -c hello.c

clean:
    rm -f hello hello.o main.o

在这个示例中,我们定义了一个目标 hello,它依赖于 main.o 和 hello.o。当 hello 目标被执行时,相应的命令 gcc main.o hello.o -o hello 将被执行。

此外,我们还定义了 main.o 和 hello.o 的规则与命令,以及一个名为 clean 的伪目标,用于清理生成的文件。

.PHONY 是一个特殊的目标,它用于声明一个伪目标。伪目标不对应实际的文件,而是用于表示一个任务或命令。通过声明 .PHONY 目标,可以告诉 Make 工具在执行这些任务时不要检查对应的文件是否存在。

例如:

.PHONY: clean

clean:
    rm -f *.o

在这个示例中,我们声明了一个名为 clean 的伪目标,用于删除所有 .o 文件。在执行 make clean 命令时,Make 工具会直接执行对应的命令,而不会检查是否存在 clean 目标对应的文件。

要使用 Makefile,只需在命令行中进入项目目录,然后执行 make 命令。Make 工具会读取当前目录中的 Makefile 文件,并根据其中的规则和命令执行构建任务。

例如:

$ make

这将启动 Make 工具,它会根据 Makefile 中定义的规则和命令来构建项目。默认情况下,它将执行 Makefile 中的第一个目标。

如果你想执行特定的目标,可以在 make 命令后面加上目标名称。例如:

$ make clean

这将执行 Makefile 中名为 clean 的目标,并执行其对应的命令。

总结来说,Makefile 是一个用于自动化构建和管理项目的工具,通过规则和命令描述如何生成目标文件,.PHONY 目标用于声明伪目标来执行任务而不考虑文件是否存在。通过在命令行中使用 make 命令,可以使用 Makefile 来构建和管理项目。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白也有开发梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值