赞
踩
目录
Linux是一种免费且开源的类Unix操作系统,由Linus Torvalds于1991年首次发布。Linux操作系统的核心部分被称为“内核”,它是操作系统的主要组件,负责管理硬件资源和提供基本服务,如内存管理、进程调度、文件系统管理和网络功能等。除了内核之外,Linux系统还包括各种工具、库、应用程序和服务,这些通常由GNU项目和其他开源软件项目提供,共同构成了完整的Linux操作系统环境。
开源性:Linux的源代码是开放的,任何人都可以查看、修改和分发其源代码,这使得Linux能够得到全球开发者的持续改进和优化。
稳定性与安全性:Linux以其高稳定性和安全性著称,这使得它在服务器市场中占据主导地位,尤其是在Web服务器、数据库服务器和超级计算机等领域。
灵活性:Linux支持多种硬件架构,从嵌入式设备到大型机,几乎可以在任何类型的硬件上运行。此外,用户可以根据需要定制自己的Linux系统。
丰富的软件生态系统:由于其开源特性,Linux拥有庞大的软件生态系统,包括办公软件、图形界面、游戏、编程工具等各种应用,许多软件都是免费提供的。
社区支持:Linux有一个庞大的社区,包括开发者、用户和技术支持人员,他们共同维护和改进Linux系统,为用户提供技术支持和解决方案。
lsb_release -a
命令来查看详细的Ubuntu版本信息。cat /etc/issue
命令也可以查看Ubuntu版本信息,这是系统启动时显示的发行版信息。uname -r
命令查看当前正在运行的内核版本。cat /proc/version
命令可以获取更详细的内核版本信息。uname
命令选项uname -a
显示系统的所有信息,包括系统名称、节点名、内核版本、操作系统版本、体系结构等。uname -v
显示内核编译器的版本信息。Linux系统大致可以分为以下几层:
关机
sudo shutdown -h now
:立即关机。sudo shutdown -h 时间 "提示语句"
:定义关机时间,并显示提示语句。重启
sudo shutdown -r now
:立即重启。sudo reboot
:这也是立即重启的命令。sudo shutdown -r 时间 "提示语句"
:定义重启时间,并显示提示语句。取消定时操作
sudo shutdown -c
:取消正在进行的定时关机或重启操作。.deb
软件包格式,管理工具为dpkg
和apt
。rpm
软件包管理机制(Red Hat Package Manager)。rpm
软件包管理机制(Red Hat Package Manager),管理工具为yum。.deb
或.rpm
格式,可以直接安装而无需编译。.dsc
或.tar.gz
等。在Debian系的Linux发行版中,主要使用dpkg
和apt
两种工具进行软件包管理。
dpkg
: 主要用于离线安装本地软件包,不检查依赖关系。apt
: 在线安装工具,可以从远程仓库下载软件包,自动解决依赖关系。yum
: 在线安装工具,类似于apt。安装软件:
Bash1sudo dpkg -i 软件包全名.deb
显示软件安装状态:
Bash1sudo dpkg -s 软件包名
显示软件安装路径:
Bash1sudo dpkg -L 软件包名
卸载软件:
Bash1sudo dpkg -r 软件包名
完全卸载软件(包括配置文件):
Bash1sudo dpkg --purge 软件包名
安装软件:
Bash1sudo apt-get install 软件包名
卸载软件:
Bash1sudo apt-get remove 软件包名
更新软件包列表:
Bash1sudo apt-get update
升级已安装的软件包:
Bash1sudo apt-get upgrade
列出可用的软件仓库:
Bash1cat /etc/apt/sources.list
默认下载包的存放路径: /var/cache/apt/archives/
sudo yum update
sudo yum update package-name
sudo yum install package-name
sudo yum remove package-name
sudo yum search keyword
sudo yum list available
sudo yum list installed
sudo yum clean all
sudo yum check-update
sudo yum info package-name
vi /etc/yum.repos.d/CentOS-Base.repo
在这里可以添加或修改仓库的URL,以指向不同的软件包镜像站点。sudo yum install yum-plugin-*
Shell,字面意思是“壳”,在Linux中扮演着关键的桥梁角色。它作为用户与操作系统之间的交互界面,负责解释用户输入的命令,并将其转化为操作系统可以理解的形式,再将执行结果呈现给用户。形象地说,Shell就像一道墙,保护着系统的核心部分不受用户误操作的影响,同时提供友好的命令行界面供用户使用。
当用户在命令行输入指令时,Shell接收并解析该命令,将其转换为操作系统(内核)能够识别的指令,传递给硬件执行。硬件的响应结果再次通过Shell转换,最终以用户可理解的形式展示出来。
Bourne Shell(sh)
开发者:S.R. Bourne
特点:Unix的第一个Shell,行业标准,但作业控制功能较弱,不支持别名和历史记录,常作为应急Shell使用。
C Shell(csh)
开发机构:加州大学伯克利分校
特点:改进Bourne Shell的不足,编程风格类似C语言,受C程序员欢迎,但健壮性不及Bourne Shell。
Korn Shell(ksh)
开发者:David Korn
特点:解决Bourne Shell的用户交互问题,避免C Shell的脚本编程缺陷,需许可证,应用范围受限。
Bourne Again Shell(bash)
开发机构:AT&T贝尔实验室
特点:Bourne Shell的增强版,融合了Bourne Shell、Korn Shell的功能,并引入C Shell的部分特性,具备环境变量配置、历史记录、内置算术运算、通配符支持等功能,是最流行的Shell之一。
.bash_history
:位于用户主目录下的隐藏文件,存储用户的历史命令记录,默认最多保存2000条。
.bashrc
:包含环境变量和函数定义的脚本,其中包括HISTSIZE
(默认显示历史记录数量)和HISTFILESIZE
(.bash_history
文件的最大记录数量)的设置。
history
:显示历史命令,默认显示数量由HISTSIZE
决定。
history n
:显示最近的n
条历史记录。修改历史记录设置:
HISTSIZE=500
:临时改变显示历史记录的数量。.bashrc
文件中的HISTSIZE
和HISTFILESIZE
值,然后退出并重新登录终端,实现永久更改。echo $HISTSIZE
:显示当前HISTSIZE
的值。alias
:查看已定义的命令别名。alias 新名='原命令'
:为命令创建别名。unalias 新名
:移除命令的别名。*
:匹配任意数量的任意字符。?
:匹配单个任意字符。[...]
:匹配括号内任何一个字符。[-]
:匹配括号内指定范围内的字符。[^]
:匹配除括号内字符以外的任何字符。|
command1 | command2
。>
:覆盖模式输出到文件。>>
:追加模式输出到文件。2>
:仅重定向错误输出到文件。&>
:重定向所有输出(包括错误)到文件。<
:从文件读取输入。command1 $(command2)
或 command1 \
command2``command2
的输出结果替换到command1
中。echo
命令-n
:输出时不自动换行。"
保持原样输出。date
命令date
:显示当前日期和时间。sudo date -s 'YYYY-MM-DD'
:设置日期。sudo date -s 'HH:MM:SS'
:设置时间。man
命令man man
:查看man
命令的帮助文档。su
命令sudo su root
:切换到root用户。sudo su 用户名
:切换到指定的普通用户。exit
命令退出当前用户回到原用户。sudo
命令df
命令df -Th
:以人类易读的格式显示磁盘使用情况,包括文件系统类型。mount
命令sudo mount -t 设备类型 设备名称 挂载点
:挂载设备。sudo umount 挂载点
:卸载设备。sudo adduser 用户名
:创建新用户。sudo deluser --remove-home 用户名
:删除用户及其家目录。ps
命令ps aux
:显示系统中所有进程的详细信息。ps ef
:显示系统中所有进程的信息,包括父进程ID(PPID)。进程状态代码:
top
命令renice
:改变正在运行的进程的优先级。
sudo renice NI PID
:调整指定进程的优先级。nice
:以指定优先级运行新进程。
sudo nice -n NI值 进程
:以指定的优先级运行进程。grep
grep "查找的字符串" 文件名
:在文件中搜索字符串。grep "\<要查找的字符串\>" 文件名
:精确匹配整个单词。grep -r "查找的字符串" 路径/目录
:递归搜索目录下的文件。find 路径 -name "文件名"
:查找路径下符合条件的文件。kill
命令kill -l
:列出系统定义的所有信号。kill -num PID
:向PID指定的进程发送信号。
ifconfig
:在Linux系统中用于查看网络接口的IP地址和配置信息。ipconfig
:在Windows系统中用于查看网络配置信息,包括IP地址。ping 域名/IP地址
:测试与远程主机的网络连通性。ping -n 包数 域名/IP地址
:发送指定数量的数据包进行测试。vmnet0
网络适配器。打开虚拟机软件,进入“虚拟网络编辑器”。
vmnet8
网络适配器。NAT
模式。进入虚拟机设置。
NAT
。
目录 | 含义 |
---|---|
/bin | 最常用命令的二进制文件 |
/sbin | 系统管理和目录查询的二进制文件 |
/boot | 内核和系统启动文件 |
/opt | 非系统相关应用的安装目录 |
/etc | 系统配置文件 |
/dev | 设备文件 |
/lib | 共享库文件 |
/mnt | 文件系统的挂载点 |
/proc | 进程和系统信息 |
/usr | 用户相关的文件和目录 |
cat 文件
:显示文件内容。head -n 文件名
:显示前n行。tail -n 文件名
:显示后n行。命令:
ln 源文件 链接文件名
:创建硬链接。ln -s 源文件 链接文件名
:创建软链接。选项:
-x
: 解压。-c
: 压缩。-v
: 显示过程信息。-f
: 强制。-j
: 生成.bz2压缩文件。-z
: 生成.gz压缩文件。组合命令:
tar -cjf
: bz2格式压缩。tar -czf
: gz格式压缩。tar -xvf
: 解压压缩包。extern
register
static
.data
区,未初始化的存于.bss
区。auto
char
, int
, float
等。struct
, union
, enum
和数组。void
:用于定义无类型指针和无返回值的函数。.h
)typedef
、结构体、联合体、枚举和函数声明。.c
)main
函数和子函数的定义。head.h
,用于声明函数。add.c
,定义函数。main.c
,引入头文件并调用函数。.c
文件编译链接成可执行文件。特别注意:记住需要同时编译两个文件!!!
GCC(GNU Compiler Collection)是广泛使用的开源编译器集合,用于C、C++等多种语言的编译工作。GCC的编译过程分为四个主要阶段:
预处理 (gcc -E
):
#include
指令,合并头文件内容。.i
。编译 (gcc -S
):
.s
。汇编 (gcc -c
):
.o
。链接 (gcc
):
a.out
,可以通过-o
指定其他名称。GDB(GNU Debugger)是功能强大的调试工具,用于动态调试GCC编译的程序。
启动调试:
gcc -g
编译源代码,生成包含调试信息的可执行文件。gdb a.out
启动GDB调试器,加载可执行文件。常用命令:
r
: 运行程序直到遇到断点或正常结束。l
: 查看源代码。b 行号或函数名
: 设置断点。info b
: 显示所有断点信息。d 断点编号
: 删除指定断点。p 变量名
: 打印变量的当前值。s
: 单步进入函数内部执行。n
: 单步执行,但不会进入函数调用。help
: 显示帮助信息。q
: 退出GDB。注意: 当遇到printf
等函数时,使用s
命令可能被嵌入到系统库的内部实现中,此时使用n
命令可以避免进入库函数内部。
make
是一个自动化构建工具,用于管理项目中多个文件的编译与链接。通过解析 Makefile
文件,make
能够追踪文件的修改时间,仅对更新的源文件进行重新编译,从而节省时间和资源。
基本结构遵循以下模式:
Make
- 1目标 : 依赖
- 2 命令
示例:
Make
- 1main: main.o fun.o
- 2 gcc main.o fun.o -o main
- 3
- 4main.o: main.c
- 5 gcc -c main.c -o main.o
- 6
- 7fun.o: fun.c
- 8 gcc -c fun.c -o fun.o
- 9
- 10.PHONY: clean
- 11clean:
- 12 rm -rf *.o main
clean
是一个伪目标,它不会产生任何文件,仅用于执行清理操作。$()
来引用它们。
=
:递归展开变量。:=
:直接赋值。+=
:追加新值。?=
:如果未定义,则赋值。示例:
Make
- 1VAR = hello
- 2SUM := $(VAR) world
- 3
- 4all:
- 5 echo $(VAR)
- 6 echo $(SUM)
- 7
- 8SUM += 456
- 9SUM ?= 789
在 Makefile
中,条件编译基于宏的定义与否:
Make
- 1ifdef MACRO_NAME
- 2 # 如果宏已定义,则执行此段代码
- 3else
- 4 # 否则,执行此段代码
- 5endif
此外,条件编译也用于防止头文件的重复包含:
Cpp
- 1#ifndef __HEAD_H__
- 2#define __HEAD_H__
- 3
- 4// 头文件内容
- 5
- 6#endif // __HEAD_H__
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。