一.目录篇:
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也会被推导出来。