Linux基础(一)

一、Linux常见目录介绍:

 /:根目录
 /bin:可执行的二进制文件
 /boot:放置linux系统开机启动程序
 /dev:存放linux系统下的设备文件:字符设备、块设备
 /etc:用户信息和系统配置文件 passwd、group
 /home:系统默认的家目录
 /lib:系统使用的函数库目录
 /media和/mnt:光盘默认挂载点
 /opt:安装第三方软件所需的默认目录
 /proc:此目录的数据都在内存中(不占用磁盘空间),如系统核心、外部设备等
 /root:系统管理员的家目录
 /usr:用户资源管理目录  unix software resource

二、主键盘常用快捷键

 Tab键:补齐命令、补齐路径、显示当前目录下的所有目录
 中断进程:ctrl + c
 光标瞬移:ctrl + a 移动到光标头部,ctrl + e 移动到光标尾部
 删除整行:Ctrl + u    
 删除光标到行末:Ctrl + k
 增大终端字体:Ctrl + Shift + + (Ctrl、Shift、+组合)
 减小终端字体:Ctrl + -
 新建一个终端:Ctrl + Alt + T

三、目录和文件操作

Linux系统文件类型: 7/8 种(包括位置文件则8种)

普通文件:- 包括文本文件、二进制文件和数据文件
目录文件:d 用于组织文件和子目录
字符设备文件:c 使用字符流与设备进行交互,如键盘和鼠标
块设备文件:b 与设备进行交互,如硬盘和 CD-ROM
软连接:l 指向另一个文件的链接
管道文件:p 用于进程间通信
套接字:s 用于网络编程
未知文件

目录项详细信息:

文件权限  硬链接计数  所有者  所属组  大小  时间  文件名/文件夹名
which查看命令所在目录位置        如:which ls

cp -a dirname1 dirname2 复制目录1及其下所有文件到目录2

cp -r dirname1 dirname2 递归复制目录1到目录2

这里-a和-r的差别在于,-a是完全复制,文件权限,改动时间什么的也完全相同

more filename 和cat差不多,但是对于大文件查看很强势

空格翻页,回车一行,用q或者Ctrl-c退出

head -n filename 查看文件前n行

不加-n参数默认查看10行

tail -n filename 查看文件后n行

默认查看10行,顺序显示的,不是倒序显示,1-10查看后4行是78910

tree 命令,查看当前目录结构树

需要安装tree

四、软连接和硬链接

ln -s file file.s 创建一个软链接
软链接就像windows下的快捷方式
ln file file.h  创建一个硬链接
创建硬链接后,文件的硬链接计数+1

五、创建修改用户和用户组

u 		表示"用户(user)",即文件或目录的所有者
g 		表示"同组(group)用户",即与文件所有者有相同组ID的所有用户
o		表示"其他(others)用户"
a		表示"所有(all)用户",它是系统默认值

如:chmod 764 hello.c        

其中:所有者 rwx = 7 所有者所在组 rw = 6 其他用户 r = 4

六、find命令:找文件

-type 按文件类型搜索  d/p/s/c/b/l/ f:文件
-name 按文件名搜索
	find ./ -name "*file*.jpg"
-maxdepth 指定搜索深度。应作为第一个参数出现。
	find ./ -maxdepth 1 -name "*file*.jpg"
-size 按文件大小搜索. 单位:k、M、G
	find /home/itcast -size +20M -size -50M
-atime、mtime、ctime 天  amin、mmin、cmin 分钟。
-exec:将find搜索的结果集执行某一指定命令。
	find /usr/ -name '*tmp*' -exec ls -ld {} \;
-ok: 以交互式的方式 将find搜索的结果集执行某一指定命令
-xargs:将find搜索的结果集执行某一指定命令。  当结果集数量过大时,可以分片映射。
	find /usr/ -name '*tmp*' | xargs ls -ld 
-print0:
	find /usr/ -name '*tmp*' -print0 | xargs  -0 ls -ld 

-atime、mtime、ctime 天 amin、mmin、cmin 分钟。

按照时间搜索

a 表示最近访问时间

m 表示最近更改时间,指更改文件属性一类的

c 表示最近改动时间,指更改文件内容

七、grep和xargs

grep命令:找文件内容

grep hello hello.c  -n    //-n参数:显示行号

管道符:|
将管道符左边命令的结果,作为右边命令的输入,如:

cat hello.txt | grep helloworld    //找到hello.txt中的helloworld

wc命令用于统计字数。它可以计算行数、单词数和字符数

统计文件的行数、单词数量
wc [-c -m -l -w] 文件路径
- 选项,-c,统计bytes数量
- 选项,-m,统计字符数量
- 选项,-l,统计行数
- 选项,-w,统计单词数量
- 参数,文件路径,被统计的文件,可作为内容输入端口

grep、wc、管道符的组合使用

grep hello hello.c | wc -l    //查找hello.c中hello的行数

ps监控后台进程工作情况,默认只显示当前可以和用户交互的进程

ps aux | grep 'cupsd' -- 检索进程结果集

使用grep搜索进程,输出只有一条结果则是搜索进程本身 。

对find操作的结果集进行操作:

find ... | xargs ls -l 
find ... -exec ls -l {} \;

以上命令等价。差别在于当结果集合很大的时候,xargs会对结果进行分段处理,所以性能好些

-xargs:将find搜索的结果集执行某一指定命令。 当结果集数量过大时,可以分片映射

find /usr/ -name '*tmp*' | xargs ls -ld 

xargs默认用【空格】来分割结果集,当文件名有空格的时候,会因为文件名被切割失效

解决xargs的缺陷,指定切分符号位null(-print0)

find /usr/ -name '*tmp*' -print0 | xargs  -print0 ls -l

八、tar

tar压缩:

 tar -zcvf 	要生成的压缩包名	压缩材料。
	tar zcvf  test.tar.gz  file1 dir2   使用 gzip方式压缩。
	tar jcvf  test.tar.bz2  file1 dir2   使用 bzip2方式压缩。

tar解压:

将压缩命令中的 c --> x
	tar zxvf  test.tar.gz   使用 gzip方式解压缩。
	tar jxvf  test.tar.bz2   使用 bzip2方式解压缩。

其中:

z:zip,压缩
c:create,创建
v:vision,显示压缩过程,可以去掉,直接用zcf,但这样不显示压缩过程
f:file,文件

九、rar

rar压缩:

rar a -r 压缩包名(带.rar后缀) 压缩材料   
    rar a -r testrar.rar stdio.h test2.mp3

rar解压:

umrar x 压缩包名(带.rar后缀)

十、zip

zip压缩:

zip -r 压缩包名(带.zip后缀) 压缩材料。
    zip -r testzip.zip dir stdio.h test2.mp3

zip解压:

unzip 压缩包名(带.zip后缀)
    unzip testzip.zip

tar要掌握,rar、zip了解即可

十一、vim

vim的三种工作模式

vim中常用到的命令:

0(数字) 光标移到[行首],工作模式不变
$ 光标移到[行尾],工作模式不变
gg  跳转首行
G   跳转末行
n-yy 赋值光标所在位置的下n行
n-dd 剪切光标所在位置的下n行
p 粘贴(P向前粘贴,p向后粘贴)
u 撤销操作
Ctrl-r 反撤销操作

分屏,末行模式下
:sp   水平分屏
:vsp  竖直分屏
分屏命令+filename,分屏并打开这个文件:
    :sp 文件名    当前文件和另一个文件水平分屏
    :vsp文件名    当前文件和另一个文件垂直分屏

分屏后屏幕切换,Ctrl-w-w
使用:q退出光标所在窗口
使用:qall退出所有窗口

从vim中跳转manpage,命令模式下
将光标放在待查看单词上,按K,默认看第一卷
n+K,查看第n卷

:wq 退出并保存
:q! 退出不保存 
:wq! 强制退出并保存

 自动缩进——在这之前要进行vimrc修改,不然自动缩进是8个空格

ubuntu的vimrc位置在/etc/vim/vimrc
在文件末尾添加三行:
set tabstop=4    //设置制表符宽度为4
set softtabstop=4  // 设置软制表符宽度为4
set shiftwidth=4    // 设置缩进空格数为4

十二、gcc编译

四步骤:

具体操作:

1.预处理

解释:首先编写好了代码文件hello.c,然后gcc -E进行预处理,-o的意思是将输出结果到hello.i中

gcc -E hello.c -o hello.i

2.编译

解释:将预处理文件hello.i编译成了hello.s汇编文件

gcc -S hello.i -o hello.s

3.汇编

解释:将hello.s汇编文件翻译成机器语言(二进制)hello.o

gcc -c hello.s -o hello.o

4.链接 

解释:生成可执行文件

gcc hello.o -o a.out

5.执行文件

./a.out

简化操作:直接一步到位,从预处理直接到可执行文件,相当于执行了上面四步操作

gcc hello.c -o hello(如果没有指定生成的执行文件名,会使用默认名a.out)

常用参数:

gcc -I ./hellodir hello.c -o hello

当头文件和源码不在一个目录下时,需要指定头文件 

其中-I参数指定头文件所在位置,位置可以在编译文件前,也可以在后面

-I			指定头文件所在目录位置
-c 			只做预处理,编译,汇编。得到二进制文件 !!!!!!!
-g 			编译时添加调试文件,用于gdb调试
-Wall 		显示所有警告信息
-D  		向程序中“动态”注册宏定义
-l			指定动态库库名
-L			指定动态库路径

十三、gdb调试

使用gdb之前,要求对文件进行编译时增加-g参数,加了这个参数过后生成的编译文件会大一些,这是因为增加了gdb调试内容

gdb调试工具: 大前提-->程序是你自己写的,如:

gcc test.c -o test -g    //对生成的test进行调试

 生成test文件,再进行gdb test操作进行调试

基础指令:

-g:使用该参数编译可以执行文件,得到调试表。
gdb ./a.out
list: list 1  列出源码。根据源码指定行号设置断点。
b:	b 20	在20行位置设置断点。
run/r:	运行程序
n/next: 下一条指令(会越过函数)
s/step: 下一条指令(会进入函数)
p/print:p i  查看变量的值。
continue:继续执行断点后续指令。
quit:退出gdb当前调试。

其它指令:

run:使用run查找段错误出现位置。
finish:结束当前函数调用。 
set args: 设置main函数命令行参数 (在 start、run 之前)
run 字串1 字串2 ...: 设置main函数命令行参数
info b: 查看断点信息表
b 20 if i = 5:	设置条件断点。
ptype:查看变量类型。
bt:列出当前程序正存活着的栈帧。
frame: 根据栈帧编号,切换栈帧。
display:设置跟踪变量
undisplay:取消设置跟踪变量。 使用跟踪变量的编号

gdb常见错误说明:

没有符号被读取—编译时没加-g参数

file后面加使用-g编译的文件,可以不用退出,gdb直接读取后进行调试

说明:如pwd、cd、mkdir、rmdir、ls、touch、mv、rm、cat等一些最基本的命令不再赘述

补充:

1.管理进程的命令

ps -ef                              查看进程信息

ps -ef l grep 关键字       过滤指定关键字进程信息

ps aux      列出系统上当前所有用户的所有进程信息,侧重于显示进程的资源使用情况

ps ajx       提供了进程的层级信息,如父进程ID和会话ID,侧重于显示进程之间的关系

kill -9  进程号                 关闭指定进程号的进程

2.top命令(类似Windows任务管理器)可以:

查看CPU、内存、进程的信息

3.使用df和du命令可以:

df -h :查看所有磁盘分区占用情况

du -sh 文件名:查看文件所占磁盘空间大小

4.使用iostat可以:

查看磁盘速率等信息

5.使用sar-n DEV命令可以:

查看网络情况

6.使用curl命令可以: 

发起网络请求 

后续有补充的持续更新~

  • 17
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值