Linux命令大全【最齐全,没有之一】

1.文件和目录操作:


  ls: 列出文件和目录
cd: 切换目录
pwd: 显示当前工作目录
touch: 创建空文件或更新文件的访问时间
mkdir: 创建新目录
cp: 复制文件或目录
mv: 移动文件或目录
rm: 删除文件或目录
cat: 查看文件内容
more 或 less: 分页查看文件内容
head: 查看文件开头部分
tail: 查看文件结尾部分

2.文件内容处理:


grep: 在文件中搜索指定字符串
find: 在目录中查找文件
wc: 统计文件中的行数、字数和字节数
sort: 对文件内容进行排序
uniq: 删除文件中的重复行
cut: 从文件中截取字段
sed: 流编辑器,用于处理文本流

3.文件权限和所有权管理:


chmod: 修改文件或目录的权限
chown: 修改文件或目录的所有者和所属

4.系统信息查看:

date: 显示或设置系统时间和日期
uptime: 查看系统运行时间和负载
ps: 显示进程状态
top: 实时显示系统进程状态
df: 查看磁盘空间使用情况
du: 查看文件和目录的磁盘使用情况

5.网络命令:


ping: 测试网络连通性
ifconfig 或 ip: 显示或配置网络接口信息
netstat: 显示网络状态信息
ssh: 安全远程登录
scp: 安全复制文件或目录
wget 或 curl: 下载文件或网页

6.系统管理:


reboot: 重启系统
shutdown: 关闭系统
useradd: 添加新用户
passwd: 修改用户密码

userdel: 删除用户
su: 切换用户

linux下软件安装

两种安装包管理机制:

debian linux:deb软件包 - ubuntu用的就是这个

redhat linux:rpm软件包

deb软件包分为两种:

二进制软件包(deb) .deb --> 安装软件的软件包

源码包(deb-src) .dsc

软件包命名:

软件包的管理工具:dpkg、apt

1.dpkg

特点:安装时需要软件包存在,不需要从镜像站点获取软件包。

不需要网络,不能检查软件的依赖关系

dpkg命令:

sudo dpkg -i 软件包的完整名称:安装软件

sudo dpkg -r 软件名:卸载软件

sudo dpkg -s 软件名:查看软件的安装状态

sudo dpkg -P 软件名:完全卸载

sudo dpkg -L 软件名:列出软件目录信息

2.apt

特点:安装时不需要软件包存在,需要从镜像站点获取软件包

需要网络,能检查软件之间的依赖关系

apt-get:

sudo apt-get install 软件名:下载并安装软件

sudo apt-get remove 软件名:卸载软件

sudo apt-get remove --purge 软件名 :完全卸载

/var/cache/apt/archives --> 软件包默认存放的路径

sudo apt-get clean : 清除下载的软件包

sudo apt-get download 软件名 :下载软件包,但是不安装

sudo apt-get upgrade 软件名 :更新软件

sudo apt-get update :更新源

执行download命令会出现的问题:

原因:只让虚拟机下载了软件包,并没有安装软件包的权限

进程管理命令

进程:是程序运行一次的过程,动态的

程序:存放在此版空间上的可执行文件

ps 查看进程状态

ps -aux

USER(用户) PID(进程id) %CPU %MEM VSZ RSS TTY(终端 ?:不依赖终端) STAT(状态) START TIME COMMAND

PID:是唯一标识id号

ps -ef:查看父进程的id :PPID

ps -ajx:PPID PID PGID(组id) SID(会话ID)

可以通过man ps 查看关于进程状态的信息

进程状态:
  D    uninterruptible sleep (usually IO)不可中断睡眠态
  R    running or runnable (on run queue)运行态
  S    interruptible sleep (waiting for an event to complete)可中断睡眠态
  T    stopped by job control signal停止态
  t    stopped by debugger during the tracing调试器打断
  X    dead (should never be seen)死亡态
  Z    defunct ("zombie") process, terminated but not reaped by its
       parent僵尸态
       
 <    high-priority (not nice to other users)高优先级
 N    low-priority (nice to other users)低优先级
 L    has pages locked into memory (for real-time and custom I
      锁定到内存中
 s    is a session leader 会话组组长
 l    is multi-threaded (using CLONE_THREAD, like NPTL pthread
      do)线程
 +    is in the foreground process group前台进程

./a.out &:将a.out在后台运行

fg 编号:将后台运行的进程拉到前台运行

ctrl z:将前台运行的进程暂停同时放在后台

bg 编号:将后台暂停的进程在后台运行起来

​​​​​​​top 动态显示进程的状态

在进程管理中,NI通常表示进程的Nice值(Nice Value)。Nice值是用来调整进程优先级的参数,它可以影响进程在系统中的调度顺序

Nice值通常是一个整数,在大多数操作系统中,它的范围通常是-20到+19。较小的Nice值表示进程的优先级较高,而较大的Nice值表示进程的优先级较低

NI:优先级 +19 ~ -20 值越小,优先级越高

PR:20 + NI

在进程管理中,PR通常表示进程的优先级(Priority)。进程优先级是操作系统用来管理和调度进程的一种机制。每个进程都有一个与之相关联的优先级,用于确定进程在系统中的调度顺序。

​​​​​​​renice 修改正在运行的进程的优先级

sudo renice -n num PID

num:要修改的NI值

PID:要修改的进程id

下图是top查看到的更改之后的优先级

下图是ps-aux查看到的进程状态:

​​​​​​​nice 定制运行的优先级

sudo nice -n num ./可执行文件

下图是top查看到的更改之后的优先级

下图是ps-aux查看到的进程状态:

​​​​​​​kill:发送信号

kill -l:查看linux下的信号

2) SIGINT ctrl+c 结束进程

3) SIGQUIT 退出

4) SIGILL 结束进程

9) SIGKILL 杀死进程 不可忽略信号

10) SIGUSR1 未定义功能

12) SIGUSR2 未定义功能

13) SIGPIPE 管道破裂信号

14) SIGALRM 时钟信号

17) SIGCHLD 子进程状态发生改变会给父进程发送

  1. SIGSTOP 停止 不可忽略信号

kill num PID:给指定的进程发送num信号

网络管理

配置方法:

ifconfig: 查看网络信息

ping 域名/ip: 检查网络连通性

文件系统命令

文件系统类型

磁盘文件系统:指本地主机中实际可以访问到的文件系统,包括硬盘、CD-ROM、DVD、USB存储器、磁盘阵列等。常见文件系统格式有:autofs、coda、Ext(Extended File sytem,扩展文件系统)、Ext2、Ext3、VFAT、ISO9660(通常是CD-ROM)、UFS(Unix File System,Unix文件系统)、ReiserFS、XFS、JFS、FAT(File Allocation Table,文件分配表)、FAT16、FAT32、NTFS(New Technology File System)等;

网络文件系统:是可以远程访问的文件系统,这种文件系统在服务器端仍是本地的磁盘文件系统,客户机通过网络远程访问数据。常见文件系统格式有:NFS(Network File System,网络文件系统)、Samba(SMB/CIFS)、AFP(Apple Filling Protocol,Apple文件归档协议)和WebDAV等;

专有/虚拟文件系统:不驻留在磁盘上的文件系统。常见格式有:TMPFS(临时文件系统)、PROCFS(Process File System,进程文件系统)和LOOPBACKFS(Loopback File

Linux文件

/bin:存放系统中最常用的可执行文件

/dev:存放所有设备文件,包括硬盘、分区、键盘、鼠标、USB、tty等

/home:用户主目录的默认位置

/mnt:该目录通常用于作为被挂载的文件系统的挂载点

/usr:用于存放与系统用户直接有关的文件和目录,例如应用程序及支持它们的库文件

文件操作相关的命令

  1. file 文件名:查找文件属性信息

a.out:文件名
ELF:类型
64-bit LSB shared object:小端存储
x86-64:64位操作系统
version 1 (SYSV):版本
dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2:动态链接的库
BuildID[sha1]=929170c6441faf1ed8244921a012c77550a8584a:动态ID
for GNU/Linux 3.2.0:gcc编译器的版本
not stripped: 文件没有被压缩

  1. cat 文件名:将文件的内容输出终端

cat -n 文件名:输出显示行号

  1. find 查找文件

格式:find 路径 -name "文件名" --> 从路径开始往后查找文件

find ./ -name "*.c"

grep 查询指定字符串

grep "字符串" 文件名:在一个文件中查找

grep "字符串" 路径 -nR:从路径开始往后查找,找到所有用到这个字符串的文件

-n:回显找到的行数

-R:查找路径可以是目录,-R会进行递归查找

rm -f 文件名:强制删除,文件存不存在都会删除

rm -rf 目录名:强制删除目录,目录存不存在都会删除

head 文件名:默认输出文件内容的前10行

head -num 文件名:输出文件内容前num行

tail 文件名:默认输出文件内容的后10行

tail -num 文件名:输出文件内容后num行

tail 文件名 | head -5

5.解压和压缩

gzip 和 gunzip

特点:

只能对单个的普通文件进行压缩或解压

不能进行归档,压缩后或解压后源文件不存在

压缩后生成压缩格式为 .gz 格式

压缩:gzip 文件名 ---> 默认生成:文件名.gz 压缩文件

解压:gunzip 压缩文件名 ---> 默认解压为:文件名

bzip2 和 bunzip2(特点和 gzip相似)

压缩后生成的压缩格式为 .bz2 格式

压缩:bzip2 文件名 ---> 默认生成:文件名.bz2 压缩文件

解压:bunzip2 压缩文件名 ---> 默认解压为:文件名

xz 和 unxz(特点和 gzip相似)

压缩后生成的压缩格式为 .xz 格式

压缩:xz 文件名 ---> 默认生成:文件名.xz 压缩文件

解压:unxz 压缩文件名 ---> 默认解压为:文件名

zip和unzip

zip命令用于将一个或多个文件压缩成单一的压缩文件

注意:

1)具有归档功能,并进行压缩

2)可以压缩文件夹,后缀为.zip。压缩文件夹需加-r

3)压缩或者解压后源文件依然存在

压缩:zip 压缩文件名 要压缩的文件列表

解压:unzip 压缩文件名

tar

选项:

-c:创建一个新的归档文件

-v:显示归档和释放的过程信息

-x:释放归档文件

-f:用户指定归档文件的文件名

-t:列出tar归档文件中包含的文件或目录

-j:由tar生成归档,然后由bzip2压缩 .bz2

-z:由tar生成归档,然后由gzip压缩 .gz

-J: 由tar生成归档,然后由xz压缩 .xz

格式:

tar 选项 压缩文件名 要压缩的文件列表

压缩组合:

tar -cvjf file.tar.bz2 *

tar -cvzf file.tar.gz *

tar -cvJf file.tar.xz *

解压:tar -xvf xxx.tar.压缩格式

注:tar -cvf file.tar * --> 只归档不压缩

注意:

1)具有归档功能,并通过选项可以进行压缩或解压

2)压缩或解压后源文件存在

3)需要写全压缩或解压的文件名格式:

压缩文件名.tar.压缩格式

查看压缩或归档文件中存在的内容:

6.硬链接和软连接(符号链接)

硬链接

硬链接文件可以理解为文件的副本(可以理解为复制粘贴)

ln 根据 Linux系统分类给文件 inode(ls -li) 号进行建立,没有办法跨越文件系统

格式:ln 被链接的文件(源文件) 生成链接文件(目标文件)

  1. 硬链接的属性是 - 相当于生成一个副本 起别名
  2. 源文件删除链接文件依然存在
  3. 删除源文件后,即使创建一个和源文件同名文件,也和硬链接文件之间不存在链接关系
  4. 修改其中一个文件的内容另一个会更改
  5. 硬链接文件和源文件拥有相同的inode号

软连接

理解为wins下的快捷方式

ln -s 利用文件的路径来建立的,最好从绝对路径开始

格式:ln -s 被链接的文件(源文件) 生成链接文件(目标文件)

  1. 软连接文件属性 l 相当于快捷方式
  2. 修改内容都变化
  3. 软连接文件可以连接目录
  4. 源文件删除,链接断开,在原来的位置创建就可以重新链接

硬链接和软连接的区别

首先,从使用的角度讲,两者没有任何区别,都与正常文件访问方式一样,支持读写,如果是可执行文件的话也可以直接执行

本质区别:

硬链接:本质上是同一个文件

软连接:本质上不是同一个文件

跨设备区别:

硬链接:不支持

软连接:支持

inode区别:

硬链接:相同

软连接:不同

连接数:

硬链接:创建新的硬链接,连接数会增加,删除硬链接,链接数减少

软连接:创建或删除,链接数不会变化

文件夹:

硬链接:不支持

软连接:支持

7. gdb调试

启动GDB:在终端中运行gdb命令,然后在GDB提示符中输入要调试的可执行文件的路 径, 例如: gdb ./my_program。

设置断点: 使用break命令设置断点,例如:break main在main函数处设置断点。

运行程序:在GDB中使用run或r命令运行程序,例如:run。

单步执行:使用step或s命令单步执行程序,按行执行并进入函数。

运行到断点:使用continue或c命令运行程序,直到遇到下一个断点。

查看变量:使用print或p命令查看变量的值,例如:print my_variable。

查看堆栈:使用backtrace或bt命令查看函数调用堆栈。

跟踪变量:使用watch命令跟踪 变量的值变化,例如:watch my_variable。

删除断点:使用delete命令删除断点,例如:delete 1删除序号为1的断点。

退出GDB:使用quit或q命令退出GDB。

8. gcc编译步骤

预处理:对以#号开头的内容进行替换,不会检查语法错误。

gcc -E hello.c -o hello.i

编译:对代码进行编译,可以检查语法错误 。

gcc -S hello.i -o hello.s

汇编:将汇编代码转换成机器代码。

gcc -c hello.s -o hello.o

链接:将目标文件和其他可能需要的库文件链接在一起,生成可执行文件。

gcc hello.o -o hello

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值