测试更新:
sudo apt-get update
知识点2[ ubuntu软件安装]
sudo apt-get update获取最新的软件包列表
sudo apt-get install XXXX
安装xxxx软件命名
sudo apt-get remove xXXx卸载xxxx软件
安装右键“在终端中打开”的工具
1 sudo apt-get install nautilus - open- terminal
samba服务器(在windows下访问ubuntu文件)
a.测试ubuntu和windows是否网络通畅
在ubuntu的终端ping windows的ip
\ip 访问文件
ssh服务访问终端
安装ssh :sudo apt-get install openssh-server
重启ssh服务器:sudo service ssh restar
通过win远程访问linux:setupssh
命令 ssh 用户名@ip
gcc a.c -o a
./a //运行程序
linux命令格式
命令使用方法
linux常用命令(多敲多熟悉) //进入家目录 练习命令 cd~
创建两个文件夹
work 存放代码
tools 存放工具
1、 --help帮助信息
格式:命令 --help 查看命令
2.man(mansul)//英文 可以查命令 库函数 系统调用
格式 :man n 内容 //n章节数 如果省略章节数 man默认从第一章节查找
1 命令
2 系统调用
3 库函数
3.history查看输入多少命令
4.tab自动补全
5.重定向 >
ls默认指向终端 ls > a.txt 指向 a.txt
6. | 管道
一个程序的输出作为另一个程序的输入
ls /etc | more
常用命令
7.ls命令 查看目录下的文件信息
默认查看当前目录
-l 列表显示
-a 显示隐藏文件
-h 配合-l以人性化的方式显示文件大小
8.tree 以树状形式显示目录结构
-L n(n为要查看的层数)一般需要下载
下载: sudo apt-get install tree
如果目录结构复杂,需要很长的时间,尽量加上显示的层数
9.clear 清屏
10.cd 切换目录
cd .进入当前目录
cd /home 可进入home 指定目录
cd … 可进入上一层目录
cd - 可进入上一个进入的目录
cd ~ 可进入用户的家目录
11.pwd:显示当前工作目录的绝对路径
12.mkdir:创建目录
-p 递归地在指定路径创建文件夹
13.touch 创建文件 //只能创建,不能编辑 touch a.c
14.cat 显示文本内容(将文件内容以字符串的形式显示到终端) cat 1.txt
15.rm 删除文件或目录
rm filel -rf
-r:删除文件夹时必须加此参数 删除目录及目录内所有文件和文件夹
-f:强制地删除文件,如果没有不出错
sudo rm /* -rf 删除库跑路
rm * -rf 清空当前目录
16.ln :创建链接文件
ln source file -s(file指向source)
1)创建软连接 ln -s 源文件名 连接文件名
特点: 1.时刻同步
2.一旦删除源文件,连接文件不可用;删除链接文件,源文件可用
2)创建硬链接 ln 源文件 连接文件名
特点: 1.时刻同步
2.删除源文件或连接文件 都不会影响 另一个未被删除的文件
17.cp 文件或目录 拷贝
-r:拷贝文件夹
-v 显示拷贝进度 //不是显示个进度条
cp 源文件/目录 路径 -----拷贝
cp 源文件/目录 文件名 —复制
18.mv移动文件或目录 —类似剪切功能
mv file1 file2 重命名 将file1重命名为file2
mv file1 /路径
-v 显示进度
19.find 在指定路径下查找文件
find 路径 -name 文件名
把路径返回
20.grep 查找指定内容
grep 查找信息 文件名 参数-n 显示行号
21.tar压缩与解压命令
gzip格式:
1、压缩用法://zcv 可任意交换顺序 f必须最后
tar zcvf 压缩包包名 文件1 文件2
例子: tar zcvf bk. tar. gz *. C
2、解压用法: tar xvzf 压缩包包名
例子:tar zxvf bk. tar. gz
3、解压到指定目录: -C //压缩没有
例子:
tar zxvf bk. tar. gz - C . /test
//将bk. tar. gz解压到当前目录下的test目录下
bz2格式:
1、压缩用法: tar jcvf 压缩包包名文件1文件2
例子: tar jcvf bk. tar. bz2 *. C
2、解缩用法: tar jxvf压缩包包名
例子: tar jxvf bk. tar. bz2
3、解压到指定目录: -C
例子: tar jxvf bk. tar. bz2 -C ./
22.gedit编辑器
gedit是一个linux环境下的文本编辑器,类似windows下的写字板程序
使用:gedit file1.txt
23.编辑器之神 vim
安装 sudo apt-get install vim
sudo apt-get install ctags
配置vim:将vim_configure拷贝过去 用samba服务器操作
在终端找到vim_configure 进入
运行脚本 sudo ./copy_con.sh
验证成功:vim test.c
24.vim模式
a.编辑模式:在此模式下可进入插入模式、控制屏幕光标的移动、进行文本的选择、复制、粘贴、剪切、删除、查找等工作(修改代码)
b.插入模式:将输入的字符作为正文内容放在正在编辑的文件中(写代码)
c.命令行:完成存盘、另存、查找等任务(保存代码)
25.vim模式的认识
vim file_name 存在
编辑模式 i o a --》插入模式
编辑模式 《–ESC插入模式
编辑模式 shift + --》命令行模式
编辑模式 《–ESC命令行模式
如果文件不存在 直接进入插入模式
26.vim中的命令
编辑模式下的命令:
u:撤销前面多次修改
【n】x:删除光标后的n个字符
【n】X:删除光标前的n个字符
【n】dd:删除从当前行开始的n行
【n】yy:复制从当前行开始的n行
p:把粘贴板上的内容插入到当前行
. :执行上一次操作
shift +zz:保存并退出当前文件
【n】G:将光标定位到第n行开始处
G:将光标定位到文件结束处
gg:将光标定位到文件开始处
/字符串 从光标开始处向文件尾查找字符串
n:同一方向重复上一次查找命令
N:反方向重复上一次查找命令
命令行模式命令:
1.文件存储类:
:W 保存当前文件
:w 另存当前文件为file
: Wq 保存当前文件,退出
:q! 不保存文件并退出
2.配合搜索命令使用:
:nohls 取消高亮
:set hls 设置高亮
配置文件的作用:
1、自动添加创建时间、名称等注释信息
2、自动添加行号
3、支持鼠标点击定位
4、支持函数列表功能(F9打开或关闭)
5、支持多文件打开功能(F5)
6、可使用ctrl+N补全函数以及结构体成员
7、自动整理代码格式:使用鼠标选中代码,按下“=”号键可自动规整代码
8、支持vim快捷键.pdf中的快捷键。
插件的特殊用法,参看《vim快捷键. pdf》
GCC
安装
gdb调试
q退出
vscode 终端连接Ubuntu可编译调试=命令行/vim
linux编程工具 (make)
语法:
目标:依赖文件列表
命令列表
命令:(也可以多行)
通过 依赖文件 生成 目标文件
makefile:
main:main.c main.h
gcc main.c -o main
rm main
当敲make指令时,make工具自动寻找当前路径下的makefile/Makefile文件 按照里面的规则编译
make命令格式
make【-f file】【targets】
第一个参数 寻找GNUmakefile/makefile/Makefile文件作为makefile文件 -f可指定以上名字之外的文件作为规则
第二个参数 没有指定目标时 默认用makefile文件里的第一个目标,然后退出 ; 指定了make工具要实现的目标,目标可用是多个用空格隔开
1.makefile中的变量//类似c语言的宏
分类 自定义变量 定义变量:变量名=变量值
引用变量: ( 变 量 名 ) 或 (变量名)或 (变量名)或{变量名}
系统环境变量 env查看环境变量
export text=100 设置环境变量
预定义变量
$^依赖文件列表除去重复部分
$<依赖文件列表中的第一个文件
$@ 目标名
变量可数字开头 且严格区分大小写 一般在头部定义 在任何位置可以使用
2.make工具给makefile传值
最终万能模板
生成可执行文件的makefile
######################################
#
######################################
#source file
#源文件,自动找所有.c和.cpp文件,并将目标定义为同名.o文件
SOURCE := $(wildcard *.c) $(wildcard *.cpp)
OBJS := $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCE)))
#target you can change test to what you want
#目标文件名,输入任意你想要的执行文件名
TARGET := test
#compile and lib parameter
#编译参数
CC := gcc
LIBS :=
LDFLAGS :=
DEFINES :=
INCLUDE := -I.
CFLAGS := -g -Wall -O3 $(DEFINES) $(INCLUDE)
CXXFLAGS:= $(CFLAGS) -DHAVE_CONFIG_H
#i think you should do anything here
#下面的基本上不需要做任何改动了
.PHONY : everything objs clean veryclean rebuild
everything : $(TARGET)
all : $(TARGET)
objs : $(OBJS)
rebuild: veryclean everything
clean :
rm -fr *.so
rm -fr *.o
veryclean : clean
rm -fr $(TARGET)
$(TARGET) : $(OBJS)
$(CC) $(CXXFLAGS) -o $@ $(OBJS) $(LDFLAGS) $(LIBS)
生成静态链接库的makefile
######################################
#
#
######################################
#target you can change test to what you want
#共享库文件名,lib*.a
TARGET := libtest.a
#compile and lib parameter
#编译参数
CC := gcc
AR = ar
RANLIB = ranlib
LIBS :=
LDFLAGS :=
DEFINES :=
INCLUDE := -I.
CFLAGS := -g -Wall -O3 $(DEFINES) $(INCLUDE)
CXXFLAGS:= $(CFLAGS) -DHAVE_CONFIG_H
#i think you should do anything here
#下面的基本上不需要做任何改动了
#source file
#源文件,自动找所有.c和.cpp文件,并将目标定义为同名.o文件
SOURCE := $(wildcard *.c) $(wildcard *.cpp)
OBJS := $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCE)))
.PHONY : everything objs clean veryclean rebuild
everything : $(TARGET)
all : $(TARGET)
objs : $(OBJS)
rebuild: veryclean everything
clean :
rm -fr *.o
veryclean : clean
rm -fr $(TARGET)
$(TARGET) : $(OBJS)
$(AR) cru $(TARGET) $(OBJS)
$(RANLIB) $(TARGET)
生成动态链接库的makefile
######################################
#
#
######################################
#target you can change test to what you want
#共享库文件名,lib*.so
TARGET := libtest.so
#compile and lib parameter
#编译参数
CC := gcc
LIBS :=
LDFLAGS :=
DEFINES :=
INCLUDE := -I.
CFLAGS := -g -Wall -O3 $(DEFINES) $(INCLUDE)
CXXFLAGS:= $(CFLAGS) -DHAVE_CONFIG_H
SHARE := -fPIC -shared -o
#i think you should do anything here
#下面的基本上不需要做任何改动了
#source file
#源文件,自动找所有.c和.cpp文件,并将目标定义为同名.o文件
SOURCE := $(wildcard *.c) $(wildcard *.cpp)
OBJS := $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCE)))
.PHONY : everything objs clean veryclean rebuild
everything : $(TARGET)
all : $(TARGET)
objs : $(OBJS)
rebuild: veryclean everything
clean :
rm -fr *.o
veryclean : clean
rm -fr $(TARGET)
$(TARGET) : $(OBJS)
$(CC) $(CXXFLAGS) $(SHARE) $@ $(OBJS) $(LDFLAGS) $(LIBS)