Linux_基础命令大全

Linux文件目录系统:inux上一切皆文件

linux是一个多用户操作系统,允许多个用户同时登陆,且同时工作,且相互之间互不影响

/bin:存储系统命令对应的可执行文件                                /dev:设备文件目录
/etc:存储配置文件                                                           /mnt:临时挂载目录
/root:root用户家目录                                                     /boot:系统启动时所需要的核心镜像文件
/usr:第三方插件的资源及文档                                          /home:普通用户家目录
/proc:虚拟目录(以进程为单位存储内存的映射)

linux文件类型:普通文件 -
                         目录文件 d
                         管道文件 p
                         链接文件 l
                         设备文件:字符设备文件c
                                           块设备文件b
                                           套接字文件s

权限划分 --  按三位划分开,分别表示
属主权限                rwx                        r       可读权限
组用户权限            rwx                        w       可写/修改权限
其他用户权限        rwx                         x       普通文件  --  可执行
                                                                     目录文件  --  可进入

linux文件系统EXT4: 索引式文件系统
inode:权限与属性信息 一个档案一个inode
data block:文件内容 记录档案内容,可能占用多个
super block:系统文件的整体信息、inode/block总量、使用量、剩余量文件系统格式等相关信息
在分区完成后,格式化磁盘时创建

文件操作命令: 

ls path:  显示指定目录下的文件, 默认当前目录
ls -a:      显示所有的文件(隐藏文件:以’.’开头)             ls -l:       显示文件的详细属性
pwd:      显示当前位置的绝对路径                                 cd path:切换当前工作目录
绝对路径:从根目录开始的路径                                       相对路径:从当前位置开始的路径

touch filename   创建文件                                              mkdir dirname   创建文件夹
rmdir dirname    删除文件夹(空文件夹)                           rm -r dirname     删除文件夹(非空文件夹)                 
rm -r filename    删除文件   

cp path1/filename path2    拷贝文件                             cp -r path1 path2               拷贝文件夹
mv path1/filename path2   剪切文件                             mv path1 path2   剪切文件
mv path/filename path/newname   文件重命名            mv path/dirname path/newname    文件夹重命名

chown username filename    修改文件属主                    chgrp groupname filename   修改文件组用户

chmod 修改文件权限:   
字符方式 : a/u/g/o   +/-/=  rwx                                   数字方式 : r:4   w:2    x:1

文件查找命令find

find -选项 参数 搜索路径 查找到后的动作
选项:-name: 根据文件名查找                                      动作:-print:   显示             
           -perm:  根据权限查找                                                    -ls:       显示详细信息   
           -user:   根据用户查找                                                    -quit:    查找到第一个退出           
           -group: 根据组查找
           -type:   根据文件类型查找
           -size:   根据文件大小查找 

查看文件内容
more:  一页一页显示文件内容,从前向后读取,space下一页,b上一页
less:   一页一页显示文件内容,从前向后滚动读取,上下即上下滚动查看,G:尾部,g:头部 q:退出
tail:     [-n][num]file,-n num据文件尾num行开始显示,tail -f file最尾部内容显示,用处:查看日志
head: [-n]将文件前num(默认为10)行输出到标准输出,没有文件或文件名为-:从标准输入获取文件
cat:     显示整个文件,创建文件:cat>file,合并文件:cat file1 file2 >file3

vim编辑器
命令模式:完成对文本内容编辑的批处理操作
批处理操作:                                                                    光标的快速移动:
dd:        删除光标所在行                                                    shift 6:  当前行的头
num dd:删除光标开始向下的num行                                  shift 4:  当前行的尾    
d shift g:删除光标到文件尾的内容                                     shift g:  整个文本最后一行
d gg:     删除光标到文件头的内容                                      gg:       整个文本第一行
yy:        拷贝光标当前所在的行                                          num shift g: 第num行
num yy:拷贝光标开始向下的num行                                   shift h:  当前屏幕首行
p:          粘贴                                                                     shift l:    当前屏幕尾行
cc:        删除当前行并进入编辑                                           shift m: 当前屏幕中间行
shift c:  删除当前光标到尾行的内容并进入编辑
u 撤销上一次操作                                       
r 替换一个字符        
shift r 进入替换模式

插入模式(编辑模式):编辑文本内容                       
末行模式:对整个文本的操作
:w  保存文本                                                                      :q  退出编辑
:wq保存并退出                                                                   :q! 强制腿粗
:w newfilename 另存为
:set nu 显示行号                                                                :set nonu 取消显示行号
:num 光标定位到num行                                  
:1,$s/oidstring/newstring   用newstring替换整个文本每一行的第一个oldstring  
:1,$s/oidstring/newstring/g 用newsting替换整个文本的oldstring       1:第一行  
:/string 对文本进行全文向下详细搜索string                           
:?string 对文本进行全文向上搜索string                          使用n来搜索上/下一个

命令模式切换到插入模式:                                               命令模式替换到末行模式:
a 进入到当前光标后开始编辑                                            :对文本的设置或保存工作
i 进入当前光标位置开始编辑                      
o 进入光标下一行开始编辑                         
O 进入光标上一行开始编辑                          

tar && gzip
参数:c:创建包          f:指定目标为文件而不是设备        t:仅显示包内容不是真正的释放
           x:释放文件      v:显示详细过程                           z:GUN版本加入,为一步解压提供支持
压缩文件:                                                                       解压文件:
两步压缩:                                                                       两步解压:
<1>、打包:tar cf bag.tar filelist                                     gzip -d bag.tar.gz/bag.tgz -》bag.tar
<2>、压缩:gzip bag.tar -》bag.tar.gz压缩包                 tar xf bag.tar
一步压缩:                                                                       一步解压:
tar zcf bag.tgz filelist 生成bag.tgz压缩包                         tar zxf bag.tar.gz/bag.tgz

wc:     统计数目
nl:      显示文件内容和行号
umask:  显示/设置文件的缺省权限
where is:搜索命令所在目录和帮助文档的路径
grep:  文本搜索工具
awk:   行处理器、不会出现溢出或处理缓慢问题
sed:    流编辑器、文本处理工具
diff:     比较文件 
sort:    排序工具
uniq:   内容去重

文件的连接:
软连接:ln -s  源文件的绝对路径/文件名    软连接的路径/文件名  相当于快捷方式  修改源文件
硬链接:ln     源文件的绝对/文件名        软连接的路径/文件名  源文件的副本    修改源文件
软连接可以跨文件系统,硬链接不可以    不可对目录文件创建链接
软连接与硬链接使用相同的inode结点,只是链接数增加,软连接源文件与源文件使用不同inode结点

调试相关:
编译链接过程:   *.c==  filename.c
预编译:gcc -E *.c -o *.i    生成---  *.i文件     
编译:gcc -S *.i                 生成---  *.s 汇编文件
汇编:gcc -c *.s                 生成---  *.o 可重定位的二进制目标文件
链接:gcc *.o                    生成---  a.out  可执行文件
gcc *.o -o *                     生成---  *   可执行文件
一步:gcc  -o filename.c(所有需要编译的文件)  *  
一步:gcc  -o main(最终的可执行文件)  filename.c(所有需要编译的文件) -lstdc++

开发版本:
debug版本:可调式版本                                                 release版本
开发版本、可调试版本                                                    发行版本、不可调试版本
生成的可执行文件中包含大量的调试信息                         生成的可执行文件没有调试信息,仅可执行

debug版本的生成
gcc编译过程加入–g                                                          一步从源文件到debug版本的可执行文件
gcc  -c  main.c   -g                                                          gcc  -o   main.c   debugMain    -g
gcc -o  debugMain   main.o                                           执行命令:db debugMain 进入gdb

gdb/core文件方式调试
break/b: 设置断点
run/r:      启动运行
info/i:      描述程序状态
display/d   跟踪查看某个变量的值
next/n:    执行到下一行, 逐过程
continue/c:    继续执行,直到下一个断点处
step/s:    执行到下一行, 逐语句,进入到将被调用的函数中执行
finish:     运行程序,直到当前函数返回
until/u:    运行程序,直到退出循环体
quit/q:    退出调试
bracktarce/bt:查看函数堆栈调用信息
start/st:  开始执行程序,在main()函数的第一条语句前停下来
kill/k:      终止正在调试的程序
watch:   监视变量值的变化
f:            查看栈帧
file:        装入需要调试的程序
set var name=v:设置变量的值
strace:   监控当前进程,跟踪进程执行时的系统调用和接收信号
ltrace:    跟踪进程函数调用库的情况

l:                                显示main函数所在文件的源码
list filename:num:     显示filename文件num行上下的源码
set listsize count:      设置一次显示源代码的行数
list funaction:            显示函数名位funaction的函数的源码
list first,last:            显示first到last之间的源码
list,last:                   显示从当前行到last行的源码

break funaction:                     在funaction函数添加断点
break linenum:                       在linenum行添加断点
break filename:num:              在filename的num行添加断点
break filename:funaction:       在filename的funaction函数添加断点
break … if condition:              如果condition成立时停住
condition bpnum expression:将bpnum的条件改为expression
info break:                             显示断点信息
delete bpnum/range:             删除bpnum断点、range表示范围
disable bpnum/range:            将断点设置为无效
enable bpnum/range:            将断点设置为有效
enable bpnum/range once/delete:停止一次后,将断点disable或delete

p valname:         显示变量的值
p &valname:       显示变量的地址
p 表达式:              显示表达式的值
p funaction(a, b):显示函数的值
p arr/*parr@len     显示数组所有元素        
display:                自动显示、参数和p一样
undisplay displaynum:删除自动显示
info display:        显示自动显示的信息
ptype val:            显示变量类型
x/nuf  addr:        打印addr表示的内存存储值
            n:整数 表示显示内存的长度
            f:表示显示的格式:                       x:16 d:10 o:8 t:2 c字符 f:浮点数
            u:从当前地址向后请求的字节数,默认4bytes可指定:b:1  h:2  w:4  g:8

多进程调试:
(gdb)set follow-fork-mode mode
mode可以选择parent或者chile,即选择调试那个进程
未被选择的进程将直接执行结束

多线程调试:
1、利用info threads 查看线程全部信息
2、thread id 调试目标id指定的线程
3、set scheduler-locking off|on|step
           off:   不锁定任何线程                 
           on:只有当前被调试的线程继续执行
           step:在单步执行为时候,只有当前线程会执行
 

进程:
ps:                  显示进程信息                                                       
ps -e:             显示有关其它用户进程的信息
ps -l:              显示自己bash的进程                                         
ps aux:           显示所有系统运行的程序
ps -f:              显示用户id 进程id 父进程id 最近CPU使用情况等信息
kill pid:           结束进程                                                     
kill -stop pid: 挂起进程 
kill -9 pid:      强制结束进程                                             
kill -1 pid:      重启进程
kill -l:             查看信号
w :                 查看登陆用户
pkill:              按照终端号提出用户
pkill ps+kill :  按照进程名结束指定进程
bg 任务号:     将挂起的进程放到后台执行
pg 任务号:     将挂起或后台的进程放到前台执行
jobs:             查看当前有多少后台运行的进程
pstree:          以树状图显示进程                               
&:                 后台运行 CTRL Z后台(停止)
pidof:           找出正在运行进程的pid
pmap [-x/d/q/V/A] pid:查看进程内存映像信息
time pid:      测量指定进程运行消耗的时间及系统资源的消耗信息
taskset:         将某个进程绑定到CPU的某个核上有效控制CPU资源  taskset -p pid 查看进程的绑核情况

用户管理命令:
useradd/assuser newname 添加一个新的用户 newname
           -g 执行新用户的主组
           -G 将用户添加到副组
           -s 指定信用户默认使用的shell终端
           -d 指定新用户登陆默认进入的目录
passwd username       修改用户密码
userdel username       删除用户
usermod                      修改用户账户信息

系统运行的状态
系统运行的状态存储在/etc/inittab文件中
           0 关机
           1 单用户模式
           2 不带网络的用户模式
           3完全的多用户模式优先进入字符界面模式
           4 未使用的
           5 图形界面模式
           6重启

可在root用户下,通过执行init命令切换系统的工作模式
           init 0 关机(root)
           init 6 重启(root)
           halt 关机                                                                       poweroff 关机 
           shut down 关机                                                             reboot 重启

网络:
netstat:          显示网络相关信息,查看占用端口的进程
vnstat:           性能监控
ping:              测试网络连通性,确定网络和各外部主机的状态
ip:                  网络配置工具
ss:                  socket status 显示socket通讯状态
lsof               列出当前操作系统打开的所有文件描述符 fuser
nc:                 netcat通过tcpudp协议传输读写数据,根据需要创建不同类型的网络连接
tcpdump:      命令行工具,将网络中传送的数据包完全接获提供 网络数据分析
ifstat:            网络接口监测工具,统计网络接口流量状态
ifconfig:        显示或设置网络设备,查看和更改网络接口的地址和参数
iptraf:            ip局域网监控工具,实时监控网卡流量
iftop:             监控网卡流量 iotop
mail:             查看、发送邮件  mail -s http
write:            给用户发信息

系统监测:
top:             提供当前系统的快照,显示最活跃进程,实时显示进程信息   htop
vmstat:       虚拟内存统计:对操作系统的虚拟内存、进程、cpu活动监控  (时间间隔,次数)
iostat:         显示CPU和磁盘IO的统计信息
sar:             cpu 内存 磁盘网络流量
watch:        定时重复执行命令并检测命令的运行结果

内存:
ncdu:       查看磁盘占用情况
Free:         显示内存状态
Slabtop:   实时显示slab的缓冲区的细节信息
valgrind:  内存泄漏监测工具

其他
ulimit:         控制shell执行程序的资源 进程及子进程资源使用限制
nm names:  列出某些文件的符号(函数、全局变量)的逻辑地址
ldd:             打印可执行文件依赖的共享库文件列出动态库关系
ipcs:            打印系统中的进程间通讯方式,显示消息对象/共享内存/信号量             
ipcrm:         删除消息对象/共享内存/信号量
who:           系统上的其它用户        
who am i:   当前登陆系统所使用的用户      
w:               系统上的终端及用户
whatis:       显示查询命令的简单说明                        
--help:        指令的基本用法与选项的介绍      
man:           显示所查询命令的使用说明               
info:           命令使用说明一页一页查看
which:        指令搜索列出所有指令
users:         显示目前哪些用户登陆了系统
uname:      显示系统本身信息
tty:             目前登陆linux使用的终端
date:         系统当前信息
cal:            日历
clear:         清空屏幕 CTRL L
su:             切换到root用户
objdump: 查看目标文件或可执行文件的构成,反汇编目标文件
readelf:     显示elf文件的信息

ELF文件格式:


.text段:  存放代码指令段
.data段: 存放已初始化且初始化不为零的数据
.bss段:  存放未初始化或初始化为零的数据在文件中不存在,.bss段不占空间,但信息已被保存
数据:    全局变量、静态变量
指令:    其余全为指令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值