Linux基础学习
文章目录
ls命令
ls 查看当前目录下的文件名
ls 目录名 查看指定目录下的文件名
ls / 根目录下的文件名
ls -a 查看当前目录下文件的所有文件,包括隐藏文件
ls -l 查看当前目录下的详细信息
ls -al 查看当前目录下的所有文件,包括隐藏文件的详细信息
ls -hl 详细信息中的字节数可以带单位显示
drwxrwxr-x -2 stu stu 4096 12月19 09:30 share
d:文件类型,linux里面不以后缀名作为文件类型的区分Linux里面共有其中文件类型bcd-lsp,8种
- b:块设备文件
- c:字符设备问及那
- d:目录文件
- -:普通文件
- l:软连接文件
- s:套接字文件
- p:管道文件
rwxrwxr-x:文件权限,以三个为一组,分别表示用户,用户组以及其他用户对文件的操作权限,r:读,w:写:x:可执行,如果是-,就表示没有这个权限
2:链接文件个数
stu:用户名
stu:用户组
4096:文件大小,默认自己为单位
12月19 09:30 文件的最后修改时间
share 文件名
tree
树形结构显示文件信息
//系统默认没有这个命令,需要安装
sudo apt-get install tree
//删除几个文件
sudo rm /var/lib/dpkg/lock
sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/cache/apt/archives/lock
//如果还不行升级apt-get
sudo apt-get update
tree -L 3 指定显示层级的树形结构目录
clear
clear 清屏
ctrl+l 快捷键清屏
cd
cd 当前目录名称
cd / 进入根目录
cd ~ 进入家目录,就是当前用户的目录,home/用户名
cd . 当前路径
cd … 前一个路径
cd - 回到上一次的目录
绝对路径:
从根目录开始的路径(最顶层)
/home/teacher/xiutao/test
/home/teacher/test.txt
相对路径:
相对当前路径下的那个路径
./xiutao/test
./xiutao/test.c
pwd
pwd 显示当前目录的绝对路径
cat
cat 文件名 显示文件内容,主要显示文本文件,也可以根路径
cat /text/test.txt
rm
rm是remove的意思。移除即删除的意思
rm 选项 文件夹或者文件路径或者名称
rm test.c
rm -rf xiutao
rm -rf /home/teacher/xiutao
注意:选项-rf可以没有,但是删除文件夹的时候必须带 -r
-f的意思是强制删除
cp
cp 选项 源文件或者文件夹路径或者名称 目的路径
cp -r -v test.txt /home/teacher/xiutao
将当前目录下的test.txt 文件拷贝到/home/teacher/xiutao目录下
注意:cp后面可以加选项
拷贝文件夹的时候必须加-r
-v显示卡贝进度
cp 文件名 目录名 将文件复制到目录中
cp 目录1 目录2 -a 将目录1复制到目录2中
cp 文件名1 文件名2 如果文件2不是目录,则文件1复制一份为文件2,如果文件2存在且不是一个目录,则 直接替换成文件1内容
MV
mv 文件名 目录名 将文件移动到指定目录中
mv 目录1 目录2 将目录1移动到目录2
mv 文件1 不存在的文件 给文件1重名名文件
mv 目录1 不存在目录 给目录1重名名目录名称
mkdir
mkdir 目录名称1 目录名2 目录名3 创建多个目录
mkdir -p 目录名1/目录名2/目录名3/目录名4 创建一个目录嵌套树形
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ux6EVYeJ-1653962687661)(…/AppData/Roaming/Typora/typora-user-images/image-20220525151151113.png)]
touch
touch 文件名 创建一个普通文件,如果创建的文件名存在会更新文件的时间戳
find
用法:find 路径 -name 文件名 在指定路径下查找指定文件,会从指定路径下包括所有子目录中寻找
find . -name mydir 在当前路径下寻找mydir文件
grep
指定文件中查找指定内容
用法 : grep 查找信息 文件名 参数-n 显示行号
grep hello /home/teacher/test.txt -n
grep 查找信息 文件名 在指定文件中查找指定内容,并将查找到的内容整行,并高亮显示输出
grep 查找信息 文件名 -n 在指定文件中查找指定内容,并将查找到的内容整行且带行号显示,并高亮显示
grep 查找信息 * -R -n 从当前目录以及子目录的文件中查找指定信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cBRVa5LP-1653962687664)(…/AppData/Roaming/Typora/typora-user-images/image-20220525153327210.png)]
ln
创建链接文件
ln 源文件名 链接文件名 -s 创建一个链接文件(类似windows的快捷方式)
注意:
不管对原文件还是链接文件修改,双方内容都会修改
如果删除链接文件对源文件没有任何影响,如果删除源文件则链接文件失效
tar 压缩与解压缩
//zcvf 格式压缩与解压
tar zcvf 压缩包包名.tar.gz 文件1 文件2 文件3 ...
tar zxvf 压缩包包名 -C 路径 解压文件到指定路径
//bzp2
tar jcvf 压缩包包名.tar.gz 文件1 文件2 文件3 ...
tar jxvf 压缩包包名 -C 路径 解压文件到指定路径
vim
安装vim
sudo apt-get install vim
安装ctags
sudo apt-get install vim
配置vim
GCC
在windows操作系统下,编译工具继承开发环境用的式vc6.0
在liunx操作系统下没有很好的继承环境让我门,用的是编译器gcc
在程序的编译氛围四个阶段:由.c到可执行程序
- 预编译
- 编译
- 汇编
- 链接
编译程序:
一步到位
gcc hello.c -o hello
运行程序:./hello
分步骤完成
分步进行
makefile
makefile的语法规则
- 目标:依赖文件列表
通常是要产生的文件名称,目标可以是可执行文件或其他obj文件,也可是一个动作名称
2.依赖文件:
用来输入从而产生目标的文件
一个目标通常有几个依赖文件(可以没有)
3.命令:
make执行的动作,一个规则可以含几个命令(可以没有)
有多个命令时,每个命令占一行
make命令的格式
make [ -f file] [targets]
1.[-f file]:
make默认在工作目录中寻找名为GNUmakefile,makefile,Makefile文件作为makefile输入文件,-f 可以指定以上名字意外的文件作为makefile输入文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iICvyXTa-1653962687665)(…/AppData/Roaming/Typora/typora-user-images/image-20220527153231971.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q9VoUHXG-1653962687667)(…/AppData/Roaming/Typora/typora-user-images/image-20220527153217549.png)]
前面makefile中出现的文件称之为假想目标
假想目标并不是一个真正的文件名,通常时一个目标集合或者动作
可以没有依赖或者命令
一般需要显示的使用make +名字 显示调用
all:execl exec2
clean :
rm *.o exec
运行时使用make clean 就会执行clean 后面的命令
makefile变量
makefile变量类似于c语言当中的宏,当makefile被make工具解析时,其中的变量会被展开,变量的作用:
保存文件名列表
保存文件目录列表
保存编译器名
保存编译参数
保存编译的输出
makefile的变量分类
- 自定义变量
在makefile文件中的定义变量。
make工具传给makefile的变量
2.系统环境变量
make工具解析makefile前,读取系统环境变量并设置为makefile变量
3.预定义变量
自定义变量语法
定义变量:
变量名=值
引用变量:
$(变量名)或${变量名}
makefile变量名:
makefile变量名可以数字开头
注意:
1.变量大小写敏感
2.变量一般都在makefile头部定义
3.变量几乎可在makefile的任何地方使用
例2_2:
修改例2中的makefile.使用自定义变量使其更加通用。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u69wl9Bi-1653962687669)(…/AppData/Roaming/Typora/typora-user-images/image-20220527161908801.png)]
系统环境变量
make工具会拷贝系统的环境变量并将其设置为makefile的变量,在makefile中可直接读取或修改拷贝后的变量
#export test=10
#make clean
#echo $test
预定义变量
makefile中有许多预定义变量,这些变量具有特殊的含义,可在makefile中直接使用
$@ 目标名
$< 依赖文件列表中的第一个文件
¥^ 依赖文件列表中的出去重复文件的部分
AR 归档维护程序的程序名,默认值为ar
ARFLAGS 归档维护程序的选项
AS 汇编程序的名称,默认值为as
ASFLAGS 汇编程序的选项
CC C编译器的名称,默认值为cc
CFLAGS C编译器的选项
CPP C预编译器的名称,默认值为$(CC) -E
CPPFLAGS C预编译的选项
CXX C++编译器的名称,默认值为g++
CXXFLAGS C++编译器的选项
最精简版
CC=gcc
obj=main
OBJ=main.o sub.o sum.o
CFLAGS= -Wall -g
$(obj):$(OBJ)
$(CC) $^ -O $@
%*.O:%*.C
$(CC) $(CFLAGS) -C $< -O $@
clean:
rm *.o $(obj) a.out -rf