Linux的基本指令
- 一、Linux下基本指令
- 1、ls-----显示当前目录(当前用户所处的目录)下的文件/文件夹
- 2、pwd-----查看当前用户所处的目录
- 3、cd-----改变工作目录
- 4、touch-----只能用来创建普通文件(makefile也是touch创建的)
- 5、stat-----查看一个文件的属性(进入时间,修改时间,改变时间)
- *6、mkdir-----制作一个目录(路径)
- 7、tree-----以树状目录形式显示目录结构
- *8、rm-----删除目录
- *9、man [选项] 命令-----查看命令参数(cman为汉化)_按q退出
- 10、echo-----把echo后面的以字符串形式显示到显示器中
- 11、cat-----正序拷贝打印(只能拷贝普通文件)
- *12、mv-----对文件进行重命名/剪切
- 13、cp-----复制文件/命令
- 14、more-----将文件中运行,并搜索关键字
- *15、less-----将文件中运行,并搜索关键字
- 16、head-----打印文件中的前十行代码
- 17、tail-----打印文件中的后十行代码
- 18、date-----打印现在的时间
- 19、cal-----日历(默认显示现在这个月的)
- *20、find-----特定路径下查找
- 21、alias-----取别名
- 22、grep-----文本行过滤工具(以行为基本单位)
- *23、'|'管道-----将'|'前的输出作为'|'后的输入
- 24、zip-----打包压缩
- 25、tar-----打包/压缩(f必须紧跟文件名)
- 26、bc-----计算器(浮点型)
- *27、uname-----查内核版本,电脑的CPU架构
- 28、clear-----清屏
- 29、sudo-----以系统管理员的身份运行
- 30、shutdown-----关机(没有开机,所有的指令必须在开机情况才能使用)
- 31、"<"-----重定向(将要放入的文件清空,再写入)
- 32、sz:将选定的文件发送(send)到本地机器
- 33、rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到Linux服务器
- 34、file-----查看文件类型
- 35、ldd-----用于打印程序/库文件所依赖的共享库列表
- 36、make(命令)-----构建工程
- 37、makefile(是一个文件)-----文件的依赖关系和依赖方法
- 38、git代码的使用
- 39、chown-----改变文件的拥有者
- 40、ps-----显示进程
- 41、$?-----最近一个命令执行的退出网
- 42、sudo top-----通过调整ni值调整进程的优先级
- 二、热键
- 三、函数(头文件:unistd.h)
一、Linux下基本指令
1、ls-----显示当前目录(当前用户所处的目录)下的文件/文件夹
ls -l 显示列表 //.:当前目录
//..:上级目录
ls -a //显示所有文件(包括隐藏文件——以.开头的文件)
ls -a -l
ls -al
2、pwd-----查看当前用户所处的目录
3、cd-----改变工作目录
cd ~ //进入当前用户的主工作目录
cd / //回到根目录
cd - //返回最近访问目录
//进入72班目录里
cd usr/
./可以用来执行某段代码
./a.out
从根目录("/")开始的路径称为绝对路径,只有一种路径,不会失效
/home/bit/test.c
从现在所在的目录开始的路径称为相对路径,容易失效
//比如说现在在bin
../../home/bit/test.c
4、touch-----只能用来创建普通文件(makefile也是touch创建的)
touch test.c
5、stat-----查看一个文件的属性(进入时间,修改时间,改变时间)
进入时间:Access
修改时间:Modify
改变时间:Change
stat file.txt
*6、mkdir-----制作一个目录(路径)
mkdir dir
//只包含目录
mkdir -p
7、tree-----以树状目录形式显示目录结构
tree .
tree 72——class
tree /
*8、rm-----删除目录
rm test2
rm -rf //删除所有文件(包括被保护的文件,且不用询问)---删库跑路必备
rmdir-----删除空目录
*9、man [选项] 命令-----查看命令参数(cman为汉化)_按q退出
选项:
- 1:用户指令
- 2:系统调用
- 3:程序库调用(C语言)
命令:
10、echo-----把echo后面的以字符串形式显示到显示器中
echo hello linux //显示到显示器中(将字符串写到显示器文件里)
echo hello linux > test.txt //将本来应该写到显示器文件中的内容写入到文件里)
cat test.txt //将文件中的内容显示出来
echo和cat的区别:
- echo是显示字符串
- cat是显示文件中的内容
11、cat-----正序拷贝打印(只能拷贝普通文件)
cat src /dst(绝对路径/相对路径)
tac-----逆序拷贝打印
*12、mv-----对文件进行重命名/剪切
重命名:
mv my.txt you.txt
剪切:
mv test.txt rid //把test.txt拷到rid
13、cp-----复制文件/命令
14、more-----将文件中运行,并搜索关键字
- 先将文件中的代码运行,循环走满屏,剩下的折叠起来
- 回车下翻
- /10000跳转到10000行
- 按q退出
*15、less-----将文件中运行,并搜索关键字
- 先将文件中的代码运行,循环走满屏,剩下的折叠起来
- 上下键上下翻
- /10000跳转到10000行
- 按q退出
16、head-----打印文件中的前十行代码
- 默认打印文件(循环)中前10行代码
//要拿前二十行
head -20 file.txt
17、tail-----打印文件中的后十行代码
- 默认打印文件(循环)中后10行代码
//要拿后20行
tail -20 file.txt
//要拿中间
"|"-----管道,把"|"前面的当成后面的数据源
//这里,file.txt有10000个数
head -5010 file.txt | tail -10 //提取5000——5009
18、date-----打印现在的时间
时间戳:格林威治1970年1月1日0时0分0秒开始,到现在的秒数
北京1970年1月1日8时0分0秒开始,到现在的秒数
19、cal-----日历(默认显示现在这个月的)
当年的
近期三个月
*20、find-----特定路径下查找
//在72_class路径下找test.c文件
find 72_class -name test.c
which-----帮我们找一个命令所在路径
which ls
whereis-----所有该词出现的所在路径
21、alias-----取别名
22、grep-----文本行过滤工具(以行为基本单位)
----------------一般性的文本过滤
-n 加行号
-v 如果匹配到关键字,就把不包含关键字的行匹配出来
-i 忽略大小写
grep '999' file.txt
//忽略大小写
grep -i 'ERror' file.txt
*23、’|‘管道-----将’|‘前的输出作为’|'后的输入
cat file.txt | grep '999'
24、zip-----打包压缩
//将2_lesson的tree整个打包压缩到2_lesson.zip
zip 2_lesson.zip 2_lesson/*
unzip-----解压
//将2_lesson.zip解压到test目录(文件夹)中
unzip 2_lesson.zip -d test
25、tar-----打包/压缩(f必须紧跟文件名)
//压缩
tar -czf 72_class.tgz 72_class
//解压
tar -xzf 72_class.tgz -C test
26、bc-----计算器(浮点型)
bc
1*1
echo "1+1+2+4+6" | bc
*27、uname-----查内核版本,电脑的CPU架构
全部
//全部
uname -a
查内核版本
//查内核版本
uname -r
图中的3.10为内核版本
x86_64代表当前的计算机用的CPU架构(64位)
28、clear-----清屏
29、sudo-----以系统管理员的身份运行
30、shutdown-----关机(没有开机,所有的指令必须在开机情况才能使用)
31、"<"-----重定向(将要放入的文件清空,再写入)
“>>”-----重定向(写入要放入的文件)
echo "helle world!" >> file.txt
32、sz:将选定的文件发送(send)到本地机器
//从服务端发送文件到客户端:
sz filename
33、rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到Linux服务器
//从客户端上传文件到服务端:
rz
34、file-----查看文件类型
file helloworld.c
35、ldd-----用于打印程序/库文件所依赖的共享库列表
- 用户在链接的时候如果出现了链接错误,应该先确认是否存在对应的库
.so-----动态库
-static-----变成.a静态库
程序体积比较小,比较节省系统资源(磁盘+内存)
一旦库缺失,所有依赖的程序都不可运行了!!
- 优点:电脑共享,节省社会资源
- 缺点:不方便,慢
.a-----静态库
程序的体积非常大,浪费系统空间
库缺失,程序不会受到影响
- 优点:快,不依赖第三方场所
- 缺点:浪费
36、make(命令)-----构建工程
make
- 一旦写编写好 Makefile 文件,只需要一个 make 命令,整个工程就开始自动编译,不再需要手动执行 gcc 命令。
37、makefile(是一个文件)-----文件的依赖关系和依赖方法
makefile默认生成自顶向下扫描到的第一个可执行程序
ls > makefile
在vim内创建makefile:
//依赖关系
hello:hello.c
//依赖方法
TAB gcc hello.c -o hello
//运行且不打印
//依赖关系
hello:hello.c
//依赖方法
TAB @gcc hello.c -o hello
在vim内项目清理:
PHONY修饰的目标总是被执行
//项目清理:
.PHONY:clean
clean:
rm -f hello
在vim外打项目清理:
make clean
运行并清理文件:
①版本
main:main.o cal.o
TAB gcc -o main main.o cal.o
main.o:main.c
TAB gcc -c main.c
cal.o:cal.c
TAB gcc -c cal.c
.PHONY:clean
clean:
TAB rm -f *.o main
- $@:依赖关系中的目标文件
- $^:依赖文件列表
- $<:把所有一个一个拿出来
②版本
main:main.o cal.o
TAB gcc -o $@ $^
main.o:main.c
TAB gcc -c main.c
cal.o:cal.c
TAB gcc -c cal.c
.PHONY:clean
clean:
TAB rm -f *.o main
③版本
main:main.o cal.o
TAB gcc -o $@ $^
%.o:%.c
TAB gcc -c $<
.PHONY:clean
clean:
TAB rm -f *.o main
make VS makefile
- make是执行依赖关系和依赖方法的命令
- makefile是维护该机制的文件,保存的是项目的依赖结构
38、git代码的使用
git clone http://
39、chown-----改变文件的拥有者
40、ps-----显示进程
ps aux-----显示进程的所有信息
ls /proc/-----查看进程
41、$?-----最近一个命令执行的退出网
echo $?
42、sudo top-----通过调整ni值调整进程的优先级
二、热键
1、CTRL+C-----终止失控程序
2、快速TAB两下-----可以把以其为头的全部显示出来
whi,快速TAB两下,寻找系统中以whi开头的
TAB一下,可以自动补齐
3、CTRL+D-----快速退出某个链接
三、函数(头文件:unistd.h)
1、fork()-----创建子进程
fork函数的子进程和父进程共享代码,数据各自私有一份!
fork的返回值-----pid_t ret = fork()
pid_t ret = fork()
fork函数的写时拷贝(页表映射)
父进程创建子进程时,页表会将父进程和子进程的权限改为只读状态
写入时,出发写时拷贝(写多少字节,拷多少字节),谁先写入,谁报错,然后操作系统将触发写时拷贝(将数据拷贝过来)