1、基本操作
- ctrl+p 查找上一个历史命令
- ctrl+n 查找下一个历史命令
- ctrl+b 光标往回走一个
- ctrl+f 光标往前走一
- ctrl+a 光标移到行首
- ctrl+e 光标移到行尾
- ctrl+d 删除光标后边的一个字符 光标盖住的字符为光标后边的字符
- ctrl+u 删除光标前边的所有字符
- 智能提示功能 tab 按两次显示所有当前输入字符开头的命令 可以用于目录的自动填充 按两次会显示当前输入目录下的所有文件
- ls / 显示所有根目录(ls与/之间有空格)
- cd /根目录名称 进入到该根目录
2、Linux目录结构
- bin-binary的缩写,存放最常用命令
- boot-存放启动Linux的一些核心文件,包括一些链接文件以及镜像文件
- dev-device(设备)的缩写,该目录下存放的是Linux的外部设备,在Linux中访问设备的方式与访问文件的方式相同(将一切外设抽象成文件,一切皆文件)
- etc-存放所有系统管理所需要的配置文件和子目录
- home-用户的主目录、在Linux中每个用户都有一个自己的目录,一般该目录名都是以用户的账号命名的
- lib-存放系统最基本的动态链接共享库,其作用类似于windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库
- lost+found-一般为空 当系统非法关机后 将存放一些文件碎片
- media-Linux系统会自动识别一些设备(U盘、光驱)并将识别到的设备挂载到该目录(系统自动挂载)
- mnt-让用户临时挂载别的文件系统(用户手动挂载)
- root-超级用户的目录
- sbin-super user 存放系统管理员使用的系统管理程序
- usr-存放当前用户的应用程序和文件 类似windows下的progrom file
3、用户目录:
- 绝对路径:从根目录开始写
- 相对路径:bb 相对于当前的工作目录而言(当前工作目录下的bb文件)
- .表示当前目录
- ..当前的上一级目录
- - cd-临近的两个目录间切换
- 提示字符串 itcase@ubantu:~$~:
- itcase: 当前登录用户 ;@:at 在 ; Ubantu: 主机名;~:用户的家目录(宿主目录);$:当前用户为普通用户,#表示超级用户,通过 sudo su 可以从普通用户切换到超级用户,exit可以从超级用户切换到普通用户
4、文件和目录操作
4.1查看我的目录
- tree需安装相关软件
- ls, ls -a 全部目录(列出隐藏文件),ls -l(列出文件详细信息),ls -la隐藏文件的详细信息
4.2不同目录切换
- 跳到任意目录 cd /目录名称
- 回到home目录: cd /home/文件名; cd ~; cd
- 查看当前路径: pwd
4.3 创建目录: mkdir 目录名称 ; 嵌套目录 mkdir 目录名称/文件名 -p
4.4 4删除目录
- 删除空目录 rmdir 目录名称
- 删除非空目录 rm (-r) 目录名称 -r 删除后一般无法找回
- 删除非空目录+提示 rm (-ri) 目录名称 (-ri)
4.5创建文件
- touch 文件名 若文件不存在创建文件 若文件存在修改文件的时间
4.6删除文件
- rm 文件名 (可加参数-ri表示显示提示)
4.7 移动文件
mv 文件名 要移动的目录(绝对路径从/home开始)
5、软链接
- 相当于给文件创建一个快捷方式
- ln file1 file1soft -s 给file1文件创建一个名为file1soft的软链接
- 将文件的绝对路径加上可以在其他位置使用该软链接
6、硬链接
- 对文件进行备份 但不占据磁盘空间
- ln file1 file1hand 给file1文件创建一个名为filehand的硬链接
7、文件或目录属性
- 获取一个文本文件的信息
- wc 文件名 ->行数 单词个数(以空格间隔为一个单词) 字节数 文件名
- 查看二进制文件信息:od -t(指定数据显示格式c:ACCII码、x十进制......)
- 查看当前目录大小: du 显示当前目录所有文件; du -h 显示当前目录下各文件大小
- 查看磁盘信息: df (-h)显示当前磁盘信息 包括已用的空间等
8、which命令
- which 命令 显示命令解析器查找改外部命令的路径(查看命令所在的目录)
- which cd 不会显示信息 cd是内建命令不是引用外部的
9、查看修改文件权限
9.1 查看当前登录用户 whoami
9.2 修改文件权限
1) 文字设定法: chmod 【who】 【+|-|=】 【mode】文件名
who: 文件所有者 (u)、文件所属组(g)、其他人(o)、所有人(a)(who位置不写默认)
+:增加权限 , - :减少权限, =: 覆盖权限
mod: r:读,w:写,x:执行
2)数字设定法: chmod (-/+/无)数字组合 文件名
-:没有权限;r:4;w:2;x:1;满权限:7;读写:6; 0:不更改权限
例:765: 7——rwx——文件所有者;6——rw——文件所属组;5——rx——其他人
10、修改文件所有者和所属组
10.1 修改文件所有者: (sudo) chown wzy file 将文件file的所有者改为wzy ,通常需要管理员权限所以加sudo
10.2 修改文件所属组: sudo chown wzy:mm file 将文件file的所有者改为wzy,所属组改为mm,所属组需要和所有者一起出现
10.3 只修改文件所属组:sudo chgrp wzy file 将文件file所属组修改为wzy
11、文件查找和检索
11.1 按文件属性查找
1)、文件名:find +查找的目录 + -name+“文件名字“,当不知道文件全名时可以用通配符:*(通配一个或多个字符),?(通配一个字符)
2)、文件大小:find+查找目录+-size+ +10K(大于10k,可用-、=)
按文件大小范围查找: find +查找目录+ -size +10M -size -100M (查找大于10M小于100M文件)
3)、文件类型
普通文件【-】这里用f表示、目录【d】、链接符号【l】、块设备【b】、字符设备【c】、socket文件【s】、管道【p】
find +目录 -type+f
11.2 按文件内容查找
grep -r “查找的内容” +查找路径
12 软件安装
12.1 在线安装
12.1.1 apt-get
1)、安装: sudo apt-get install 软件名
2)、移除:sudo apt-get remove 软件名
3)、更新:sudo apt-get update 不是更新软件 而是更新软件类别
4)、清理所有软件安装包:sudo apt-get clean 实际清理 /var/cache/apt/archives目录下的.deb文件
14.1.2 aptitude 需要先使用apt-get命令安装之后才能使用 安装后使用命令与apt-get相同
12.2 deb安装 需提前下载安装包
dpkg -参数(安装i,卸载r)+安装包名称.deb
12.3 源码安装
13、U盘挂载
系统将自动将Upan挂载到media目录下
解除挂载:umount 设备挂载目录 设备名称
手动挂载:sudo mount 设备名称/挂载目录(一般挂载在mnt,挂载在其他目录将会覆盖其他目录下的内容,可以挂在在空目录)
获取u盘设备名称:sudo fdisk -l
14、打包管理
14.1 压缩与解压缩
1) gzip *.txt 将当前目录下所有的txt文件压缩为gz文件,但源文件不保留,且文件依然单独存在 并不会压缩为一个 不能压缩目录
gunzip *.gz 将所有的gz压缩文件还原
2)bzip2 *.txt 将当前目录下所有的txt文件压缩为bz2文件,源文件不保留,文件不会打包,不能压缩目录
bunzip2 *.bz2还原当前目录下所有bz2文件
bzip2 -k *.txt可以保留源文件
3)tar ----不使用z/j,该命令只能对文件打包
参数: c---创建---压缩;x--释放--解压缩;v--显示提示信息--压缩解压缩--可省略;f--指定压缩文件名称--压缩解压缩
z--使用gzip的方式压缩文件--.gz ;j--使用bizp2的方式压缩文件--.bz2
语法:压缩: tar zvcvf 生成的压缩包的名字(xxx.tar.gz) 要压缩的文件或目录; tar jvcvf 生成的压缩包的名字(xxx.tar.gz) 要压缩的文件或目录;
解压缩:tar jxvf(zxvf) 压缩包的名字(解压到当前目录)
tar jxvf(zxvf) 压缩包的名字 -C(大写) 需解压的目录
4) rar 需要安装rar
参数: 压缩---a 解压缩---x;
压缩: rar a 生成的压缩文件(或目录)的名字(不用加后缀会自动添加.rar) 压缩的文件或目录
解压缩: rar x 压缩文件名(解压缩目录不带解压到当前目录)
5)zip---
参数:压缩目录需要加参数-r
压缩:zip 生成的压缩包名称(不用指定后缀) 压缩的文件或目录
解压缩: unzip 压缩包的名字 (解压到当前文件夹)
unzip 压缩包的名字 -d 指定解压目录
总结:相同之处
tar/rar/zip 参数 生成的压缩文件名字 压缩的文件或目录-----压缩语法
tar/rar/unzip 参数 压缩包的名字 参数(rar没有参数) 解压缩目录---解压缩语法
15 进程管理
15.1 ps
ps a 列出当前所有用户信息
ps au 显示用户详细信息
ps aux 查看没有终端的应用程序
可以使用管道查找需要的信息 例:ps aux | grep bath 在ps aux的结果中查找含有bath的进程(grep bath本身也是一个含有bath的进程)
15.2 kill -l 查看所有信号
kill -信号 进程ID 关闭对应进程
15.3 查看当前进程的环境变量 evn
Linux下环境变量的格式:key-value
key=value:value:value
过滤需要的可以使用管道 evn | grep 需查找的字符
15.4 top 查看任务管理器 但不能做任何操作 ctrl+c退出
16、网络相关命令
16.1 获取ip地址
命令: ifconfig 需要安装net-tool(windows ipconfig)
信息: eth0 当前第一块网卡 若有多块eth1....
硬件地址: 网卡MAC地址、网卡编号
inet 地址(Ip)、广播地址
16.2 测试两台电脑能否通信
ping +其他电脑ip地址 ctrl+c退出
ping +其他电脑IP地址 -c n 显示n条信息后自动结束
16.3 测试电脑能否联网
ping 网址 有反馈说明能联网
16.4 查看网站服务器ip
nslookup 网址
17、用户管理
17.1 用户添加
1) sudo adduser 用户名 (不能有大写字母)
2) sudo useradd -s /bin/bash -g 组名 -d /home/用户名 -m 用户
参数: -s 指定新用户登录时shell类型 -g 指定所属组,该组必须已经存在
-d 用户家目录 -m 用户家目录不存在时,自动创建该目录
17.2 修改用户密码
1) su password 用户名
2) password 修改当前用户密码
17.3 切换用户
su 用户名
17.4 退出当前用户
exit
17.5 删除用户
1) sudo deluser 用户名
2) sudo userdel -r 用户名 (-r用于将用户的主目录一起删除)
18、ftp 服务器搭建(软件使用---vsftpd)
作用:文件的上传和下载 客服端从服务器端下载
18.1 服务器端
1)、修改配置文件--如何修改配置文件 进入/etc/vsftpd.conf 使用命令sudo gedit vsftpd.conf 修改配置文件
2)、重启服务--什么命令能够重启服务 sudo service vsftpd restart
18.2 客服端
1)、实名用户登录
ftp +IP(服务器的IP)
输入用户名(服务器用户名)
输入密码(服务器密码)
文件的上传和下载:
文件的上传(上传到服务器):put 文件名(可以上传登录目录内的文件)
文件的下载(从服务器下载):get 文件名 (需要处于文件所在的服务器目录下,用pwd查看当前目录,cd切换目录)
不允许操作目录,如果想操作----打包 tar/rar/zip
2)、匿名用户登录
ftp +serverIP
用户名:anonymous
密码:直接回车跳过密码输入
不允许匿名用户在任意目录直接切换 需要在ftp服务器上创建一个匿名用户的目录---匿名用户的根目录
3)、lftp客户端访问ftp服务器 需安装lftp软件
登录:lftp +服务器ip
login 以匿名用户方式登录服务器
查看登录目录:lpwd;切换目录:lcd 目录
上传文件:put;上传多个文件:mput
下载文件:get;下载多个文件;mget
下载整个目录及其子目录:mirror
上传整个目录及其子目录:mirror -R
19、nfs服务器的使用 安装 nfs-kernel-server
作用:类型windows共享文件夹
19.1 服务器端
1)创建共享目录: mkdir 目录
2)修改配置文件 : /etc/exports 增加一行:/home/mm/NFsShare *(rw,sync) NFsShare自己创建的共享目录
3)重启服务:sudo service nfs-kernel-server restart
19.2 客户端
1)挂载服务器共享目录
mount fuwuqIP:共享目录 /挂载的目录
20、ssh服务器 安装opensh-server
20.1 作用:服务器管理员通过ssh远程登录外地主机,进行维护
远程登录:ssh 用户名@IP 确认连接的时候要写yes/no
退出登录:logout
20.2 scp命令 前提主机已经成功安装openssh-server
scp==super copy 可以跨越主机在不同主机之间拷贝
使用格式;scp -r 目标用户名@目标主机IP地址:/目标文件的绝对路径/保存到本机的绝对(相对)路径
21、终端一些快捷操作
21.1、创建终端 ctrl+alt+t (ubantu)、ctrl+shift+t(添加新标签)
21.2、清屏:clear、ctrl+l
21.3、看手册(帮助文档):
1)查看文档首页:man man
21.4、查看标准命令是否被封装:alias 命令---会显示实际执行的命令
21.5、将指定字符串输出到终端:echo “字符串”(显示字符串) ,echo $环境变量(显示环境变量值)
21.6 、关机重启(需使用管理员权限):poweroff(关机)、reboot(重启)
22、vim编辑器的使用(不能使用鼠标)
22.1 vi--vim 区别与联系:vim是从vi发展过来的一款文本编辑器
前提:安装了vim软件
22.2 工作模式:1、命令模式-----打开文件之后,默认进入命令模式
2、编辑模式-----需要输入一些命令,切换到编辑模式
3、末行模式-----在末行模式下可以输入一些命令
22.4 模式切换操作:vi 文件名可以查看文件(命令模式)-----i进入编辑模式,可以修改文件,修改完成esc回到命令模式。保存(:w),退出(:p)
命令模式----冒号 进入末行模式,末行模式---两次esc回到命令模式
22.5 命令模式下的操作:1)、光标的移动:H、 J 、K 、L(前、下、上、后),0移动到当前行首部),$(移动带当前行尾部), gg(光标移动到当前文件首部),G(移动到文件尾部),550G(移动到文件550行)
2)、删除(剪切):删除光标后面的一个字符(x)、删除光标前面的一个字符(X)、dw删除单词(光标移到单词第一个字母), 光标到行首(d0)、光标到行尾(D/d$),当前行dd、多行 ndd(n--整数)
3)撤销:u;反撤销:ctrl+r
4)复制:yy;复制多行:nyy;粘贴:p(粘贴到光标所在下一行);P(粘贴到光标所在行)
剪切==删除
5)可视模式:切换到可视模式(v)、选择内容h、j、k、l;复制:y,删除:d
6)查找:\(查找内容) 回车 n键在数个查找结果中切换 ----从光标位置向下查找,最下边之后返回到头部
?(查找内容)回车 n键切换 ---从光标位置向上查找,顶部之后,返回到尾部
#-----将光标移动到所需查找单词按下# n实现切换
7)单个字符替换:光标移动到所需替换字符按下r 再输入替换字符
8)缩进:<< >>
22.6 从命令模式进入编辑模式:a 进入编辑模式,并从光标的后面开始输入;A 进入编辑模式,并从当前行尾开始输入;i 进入编辑模式并从光标的前面开始输入;I 进入编辑模式并从行首开始输入;o 进入编辑模式,并在光标所在的下一行创建一个新行;O进入编辑模式,并从光标所在的上一行创建一个新行;s进入编辑模式,并删除光标后边的字符开始输入;S 删除光标所在的一整行并开始输入;
22.7 末行模式操作:
1)行的跳转(直接输入行号);
2)替换(语法包括从命令模式切换到末行模式):
:s/要替换的内容/替换后的内容/g(加g将全行的替换内容替换,不加只将光标所在替换内容替换)
:%/要替换的内容/替换后的内容/g(加g将文档全部替换内容替换,不加g将每行第一个替换内容替换)
:20.25/要替换的内容/替换后的内容/g(加g将文档20-25行替换内容替换,不加g将每行第一个替换内容替换)
3)保存退出: q退出;q!强制退出;w保存;wq保存退出;x==wq;命令模式下保存退出:ZZ(大写)
22.8 分屏操作
:sp----水平分屏,且分屏显示当前文件;ctrl+ww-----分屏之间切换;关闭分屏,保存等操作同上,但只关闭光标所在的文件,若想要全部关闭或者保存关闭在上面命令的基础上+all即可,例: :qall全部关闭
:vsp----垂直分屏,且分屏显示当前文件;其他操作同水平分屏
:sp /vsp 文件名----水平/垂直分屏,且分屏显示另一文件
23、gcc调试执行源程序 需先安装gcc 可在Linux中先用vim写程序
23.1 查看版本号:gcc -v
23.2 产生目标文件:gcc 源文件名 -o 目标文件名
23.3 指定源文件头文件目录: gcc 源文件名 -o 目标文件名 -I 头文件目录 (不指定默认头文件在源文件目录中查找)
23.4 编译时定义宏: -D 宏
23.5 编译优化:-O0(没有优化)、-O1(缺省值)、-O3(优化到最高级别)
23.6 只编译子程序: -c
23.7 包含调试信息:-g(gdb调试的时候必须加此参数)
23.8 提示更多警告信息(-Wall)
23.9 执行目标文件 : ./目标文件名
24、静态库制作
24.1 命名规则(.a结尾表示静态库):lib +库的名字+.a
24.2 制作步骤:
1)生成对应的.o文件:gcc 调试中加-c参数即可将.c文件生成.o文件(gcc *.c -c可将所有.c文件生成.o文件)
2)将生成的.o文件打包: ar rcs + 生成的静态库名称(libMytest.a) +生成的所有.o
24.3 发布和使用静态库
将发布的静态库与头文件一起提供给用户即可使用
静态库使用:1)指定静态库路径使用: gcc main.c lib/libMytest.a(静态库路径) -o 生成文件名 -I 头文件路径
2)通过参数+静态库名称使用: gcc main.c -I 头文件路径 -L Mytest(静态库名称) -o 生成文件名
静态库优点:发布程序的时候,不需要提供对应的库;加载库的速度快;
静态库缺点:库打包到应用程序中,导致库的体积很大;库发生了改变,需要重新编译程序;
25、共享库
25.1 命名规则:lib+名字+.so
25.2 制作步骤
生成与位置无关的代码(生成与位置无关的.o):gcc -fpic -c *.c -I 头文件路径
将.o打包成共享库(动态库):gcc -shared -o libMyCalc.so *.o -I 头文件路径
25.3 动态库使用
使用人员编写main.c函数---->与动态库一起编译 gcc main.c 动态库目录/动态库.so -o 生成目标文件名 -I 头文件路径
------>执行目标文件得到结果 ./目标文件名
25.4 解决程序执行时动态库无法被加载的问题
临时测试:环境变量 LD_LIBRARY_PATH 将动态库的路径设置给该变量--->将设置的值导入到系统环境变量中: expot LD_LIBRARY_PATH ;当终端关闭设置会失效
不常用方法(永久设置):在家目录的.bashrc文件中添加一句话 :export LD_LIBRARY_PATH=动态目录的绝对路 径;修改完成需要重启终端
常用(重点):找到动态连接器的配置文件--- /etc/ld.so.conf ----->动态库的路径写到配置文件中(绝对路径)
----->更新(sudo ldconfig -v)
25.5 动态库的优缺点
优点:执行程序体积小;动态库更新不需重新编译程序(前提接口不变)
缺点:发布程序时需要将动态库提供给用户;动态库没有打包到应用程序中,加载速度相对较慢
26 gdb调试