Day 3 Linux(目录篇 、文件操作篇 、压缩解压相关命令, 编辑器vi 、编译器gcc 、调试器gdb、 makefile工程管理器初学)

一.目录篇:

1.文件处理命令:cp

英文原意:copy

语法:cp -rp[源文件或目录][目的目录] 源文件可以同时是多个,即同时复制到多个文件

-r 复制目录

-p保留文件属性,比如文件创建时间等等,此时和创建硬链接有点相似,但是不能实时更新

-f强制打开文件即使文件不能打开,也要强制打开

 

2.文件处理命令:mv

英文原意:move

语法:mv [源文件或目录] [目录目录]

功能:移动文件目录(即剪切),也可以重命名目录或文件

例:mv file1 file3

将当前目录下文件file1更名为file3

mv file2 dir2

将文件file2移动到目录dir2下

比如:mv services service将当前目录下的services更名为service(如果移动后不改变名称,则可以不写目标文件名称),直接写目录,和mv /test/inittab /tmp/ copy一样,也可以同时移动多个文件 ,将test/inittab文件移动到/tmp/目录下。

 

3.文件处理命令:rm

原意:remove

语法:rm [文件或目录]

-r(选项) 递归删除目录(递归即深度到所有的子目录下) 如果要删除一个文件,则不需加任何的选项

功能:删除文件 在用这种方式删除一个文件时,系统会提示是否确认删除,此时需要敲入y,(实际上rm命令在Unit下,是直接删除文件的,但是Linux下,有别名机制,也就是rm也捆绑了一个选项,即-i,它会有一个询问过程)但是我们可以使用rm -f file3 直接将文件删除,而不需要系统提示确认删除例:rm file3 删除文件file3rm -r dir1 删除目录dir1 rm -r test 删除目录test 在使用这种方式删除一个目录的时候,系统会提示你是否进入该目录,然后再帮你一个一个删除,如果目录里有很多文件时,这种方式也不可取的,所以如果你非常确定要删除该目录,可以使用 rm -rf test 强制删除(f 表示never prompt,从不询问),而cp -rf /etc /test/etc.back 表示复制目录/etc,并且如果目录里的文件无法打开,则强制打开,并复制。

 

二.文件操作篇:

1. 权限处理命令:chmod                  

功能:改变文件或目录的权限,有时候我们要调整一个文件或者目录的权限

原意:change the permissions mode of a file

改变文件的权限有两种方式:

针对某一类用户执行权限的设置:+表示添加,-表示去除,=表示不管之前权限,现在就是这样的权限

第一种方式:chmod u  +   授权              r可读

  g   -   去权               w可写

  o  =   直接赋权       e可执行

(文件的执行权限有三种:u-所有者,g-文件所属组,o-其他人)

例子:chmod u+wx 文件名       chmod o-rx   文件名      chmod g=rwx 文件名 

也可以同时改变多种用户的权限:

    chmod u=rwx,g=rx,o=rx newfile                     不同用户之间使用逗号“,”隔开          

 

这种方法虽然很简单,但不是我们要掌握的重点,我们要掌握的方法是通过数字的方法来授权,下面是第二种方式:

r-4        2的2次方,分别对应一个数字     读的数字是最大的

w-2        2的一次方

x-1        2的0次方

rwxr-xr--就可以表示为:7 5 4

rw-r-x--x         6 5 1

直接使用chmod 641 a     就将a的执行权限更改为rw-r----x,不同用户有不同的执行权限,这种方式能同时改变所有的用户的权限

 

2. 创建链接文件 :ln

原意:link

语法:ln -s [源文件] [目标文件]-s(表示soft)   表示创建软链接  例子:ln  –s  example.c link

 ln [源文件] [目标文件] 这样就可以创建一个硬链接,不需要选项-s(soft)  例子:ln example.c link1

 

3. 文件搜索命令grep

功能:在”文件内容“搜索字符串匹配的行,并输出

语法:grep [指定字符串] [源文件]

例子:grep ftp /etc/services

 

4. find

find是一个通用的查找文件的命令,它可以用来查找所有的文件(图片,网页,压缩包,配置文件,命令文件,硬件文件等)所在路径:/usr/bin/find

语法:find [搜索路径] [搜寻关键字]

 

三.压缩解压:

1. 压缩解压命令:tar     (不产生后缀名)

功能:将一个目录打包成一个文件,源目录还是存在的

语法:tar 选项[cvf] [目录]

-c 产生.tar打包文件      我们在使用tar打包目录的时候,-c是必要的选项,表示create创建一个打包文件

-v显示详细信息     可选项,是在命令执行的时候,显示命令执行的过程

-f指定压缩后的文件名   必选项,该选项必须放在所有选项的后面,后面跟住新的文件名

-z打包同时压缩  

例子:tar -cvf file1.tar file1 打包

 tar -xvf file1.tar 解打包

 tar -czvf file1.tar.gz file1 打包并压缩

 tar –xzvf file1.tar.gz 解打包并解压缩

 

四.其他 :

1. 帮助命令:man

功能:获得帮助信息

原意:manual

语法:man [命令或配置文件]

例子:man ls 表示查看ls命令的帮助信息

man services 表示查看services配置文件的帮助信息

 

2. 系统关机命令:shutdown

语法:shutdown

例子:shutdown -h now

 

3. ps

ps 是 Linux 中最基础的浏览系统中的进程的命令。

能列出系统中运行的进程,包括进程号、命令、CPU使用量、内存使用量等

ps -aux - 显示进程信息,包括无终端的(x)和针对用户(u)的进程:如USER, PID, %CPU, %MEM等

ps -ef |grep - 列出需要进程

 

4.网络通信命令:ifconfig

例子:ifconfig [-a]在Linux中-a可以不加

一般我们都是ifconfig +网卡名称:ifconfig eth0

例子:#ifconfig eth0 192.168.11.46 netmask 255.255.255.0 broadcast 192.168.1.234

# ifconfig完成更改

 

5.uname

uname命令用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)。

 

四.编辑器vi:

学习vi之前,必须知道,vi有三种工作模式:

(1)命令模式

(2)插入模式

(3)编辑模式

我们使用vi filename进入vi的命令模式,输入"i"或者"a"或者"o"其中一个,进入插入模式,插入完敲打Esc键,返回到命令模式,可以通过“:”从命令模式到达编辑模式,回车后结束编辑模式,回到命令模式,输入":wq"("write quit"保存并退出)可以退出vi

 

以下命令都是在命令模式下输入的:

在命令模式下,我们还有很多的命令可以用到,比如我们要让编辑器显示行号,就可以使用":set number"(或者使用简写":set nu")

接下来是高效的使用vi,我们在命令模式下,使用下面的命令:

a      在光标后附加文本

A      在本行行末附加文本

i      在光标前插入文本

I      在本行开始处插入文本         0零也可以移动到行首,但不执行插入操作

o      在光标下一行插入新的一行

O      在光标上一行插入新的一行

 

定位命令:

h                方向左键    

l                方向右键    

k                方向上键    

j                方向右键    

$                移至行尾

0(零)            移至行首,但不执行插入操作

H                移至屏幕上端

M             移至屏幕中央

L             移至屏幕下端

 

:set nu          设置行号

:set nonu        取消行号

gg               到第一行

G                都最后一行

ng(n为数值)     到第n行

:n(n为数值)     到第n行

 

删除命令:

x             删除光标所在处的字符

nx             删除光标所在处后n个字符

dd             删除光标所在行,ndd删除n行

dG             删除光标所在行到文件末尾的内容

D             删除从光标所在处到行尾

:n1,n2d         删除指定范围的行

 

复制和剪切命令:

yy或者Y 复制当前行

nyy或者nY 复制当前行以下n行

dd         剪切当前行(其实就是删除)

ndd         剪切当前行以下n行

p、P     将内容粘贴在当前光标所在行下或行上

 

替换和取消命令:

r             取代光标所在处的一个字符,操作:按下r,然后再按你要替换的新的字符

R             从光标所在处开始替换字符,直到按Esc结束

u             取消上一步操作,撤销,在你没有保存退出之前都可以撤销

 

搜索和替换命令:

/关键字          敲完“/关键字”之后,按下回车,以后向前搜索指定的字符串n(next),向前搜索按N键

s表示替换

":%s/old/new/g"(命令的最后一个指令:g表示不询问确认,如果是c则表示询问确认,询问中a:all,q:quit),其中%s表示全文替换,即将全文中的所有old都替换为new,比如,将所有的ftp替换为lamp,":%s/ftp/lamp/c"

 

":n1,n2s/old/new/g"表示将第n1行到第n2行的old用new来替换,比如将10行到20行中的The替换为this,就可以使用":10/20s/The/this/g"

 

那如何退出vi编辑器呢,我们可以使用“:wq”来保存退出,同时我们也可以使用“shift+zz”,表示两个大写的“ZZ”,也就等同于“:wq”,保存退出

 

我们还可以使用“:w /root/services.bak”,将文件另存为(备份)到另外一个目录

 

五.编译器gcc:

一个C文件要变成可执行的文件,需要经过四个过程:

 

预处理(处理以“#”为开头的命令)

编译(将.c .i等文件翻译成汇编代码)

汇编(将汇编代码翻译成机器代码)

连接(将生成的多个目标文件(.o文件)连接起来,生成可执行文件)

几条常用命令选项:

 

     -E:        预处理后即停止

     -S:        编译后不汇编

     -c:        预处理+编译+汇编,但不连接

     -o file:    指定输出文件为file。无论哪个环节,这个选项都可以使用

编译单个文件的语句,只需要一句话即可

1 gcc hello.c -o hello  

这条指令,即直接将C文件生成成可执行文件"hello"

虽然这里是一条指令,但已经包含了几个步骤了。

1 gcc -E hello.c -o hello.i //对C文件做预处理

2 gcc –S hello.i -o hello.s //进行编译,生成汇编文件

3 gcc –c hello.s -o hello.o //对汇编代码编译成目标文件

4 gcc hello.o -o hello     //生成可执行程序hello

注:1.若直接gcc hello.c 生成a.out则运行a.out(./a.out)

2.linux头文件默认放在/usr/include中

 

六.调试器gdb:将调试信息加入可执行代码中

给定一个c文件,步骤:1.gcc –g func.c –o test

2.gdb test

Gdb命令:

1.list命令

在gdb中运行list命令(缩写l)可以列出代码

2.run命令

在gdb中,运行程序使用run命令。

3. break命令

在gdb中用break命令来设置断点:b+行号 该行设置断点

4.i b(info break)查看断点信息

5.d num(删除该断点)(num通过I b 查询)

6.clear+行号 删除行断点

7.p(print)+变量(显示值)

8.s(step)(单步执行进入调用函数)

9.n(next)(只在主函数中)

10.return/finish 退出step进入调用函数

11.q(quit)退出gdb调试

 

七.Makefile工程管理器

1.makefile就是写一个指定格式的文件,将一系列的编译、链接、转换等操作打包在一起,方便以后一键生成可执行的二进制文件而产生的。下面记录一下这种文件的写法,方便以后忘了来查询。

makefile文件一般格式(又叫规则)

2.makefile的格式

target:dependency

(Tab字符)command

注:若dependencyt比target日期新或target不存在,则make会执行command

3、makefile中变量的使用

OBJECTS = sum.o sub.o operator.o             #定义变量

$(OBJECTS)                                #使用变量

4、makefile的自动推导(隐晦规则)

     GNU的make很强大,它可以自动推导文件以及文件依赖关系后面的命令,于是我们就没必要去在每一个[.o]文件后都写上类似的命令,因为,我们的make会自动识别,并自己推导命令。只要make看到一个[.o]文件,它就会自动的把[.c]文件加在依赖关系中。如:如果make找到一个main.o,那么main.c就会是main.o的依赖文件。并且gcc -c main.c -o main.o也会被推导出来。

猜你喜欢

转载自blog.csdn.net/j_xianyu/article/details/81122211