linux学习笔记

本文详细介绍了Linux的基础构成,包括内核、shell、文件系统、用户类型、运行级别、文件管理、进程状态、日志管理、基础命令、Vim编辑器的使用,以及系统管理、用户管理、设备管理、进程与网络管理等内容,最后涉及GCC编译的预处理、编译、汇编和链接阶段。
摘要由CSDN通过智能技术生成

Linux基础

Lnux组成

Linux主要由Linux内核,shell,文件系统,程序组成。

内核

内核(Kernel)是运行程序和管理硬件设备的内核程序,决定着系统的性能和稳定性,实现操作系统的基本功能。在硬件方面:控制硬件设备,管理内存,提供接口,处理基本I/O。在软件方面:管理文件系统,为程序分配内存和CPU时间等。

shell

Shell是系统的用户界面,提供用户与内核进行交互操作的一种接口。
Shell是命令解释器
Shell是编程语言

文件系统

文件系统是文件存放在磁盘等存储设备上组织方法。
按照目录层次的方式进行组织,可以设置目录和文件的权限、文件的共享程度。
每个目录可以包括多个子目录以及文件,系统以“/”为根目录,用户可以创建自己的子目录,保存自己的文件。
Linux能支持多种目前流行的文件系统,如ext2、ext3、fat、vfat、ISO9660、nfs等

程序

标准的Linux系统都有一套成为应用程序的程序集,包括文本编辑器、编程语言、X Window、办公套件、Internet工具、数据库等。

文件逻辑基础

Linux系统是一款文件操作系统,文件以树型结构访问。所有文件从根目录/:开始。允许不同类型文件共存。
系统将所有文件看作字符序列。系统将所有外部设备看作文件。

用户类型

根用户(系统管理用):又称为超级用户,用户账号为root,在系统中拥有最高权限,主要负责系统的管理工作。
普通用户:由根用户创建,命名时不能以数字和下划线作为第一个字符。普通用户是系统的使用者,只在自己的目录下工作,没有系统管理权限。

运行级别

在/etc/inittab文件中定义 标准的Linux运行级别为3或5
0-关机(千万不要把initdefault 设置为0)
1-单用户模式
2-多用户模式,但是没有NFS
3-完全多用户模式
4-没有用到
5-X11,会以图形界面方式运行。
6-重启(千万不要把initdefault设置为6)

文件系统概述

/bin:存放二进制可执行命令目录;
/home:用户主目录的基点目录,默认情况每个用户主目录都设在该目录下,如默认情况下用户user01的主目录是/home/user01;
/lib:存放标准程序设计库目录,又叫动态链接共享库目录,目录中文件类似windows里的.dll文件;
/etc:存放系统管理和配置文件目录;
/dev:存放设备特殊文件目录,如声卡文件、磁盘文件等
/usr:最庞大的目录,存放应用程序和文件目录;
/proc:虚拟目录,是系统内存的映射,可直接访问这个目录来获取系统信息;
/root:系统管理员的主目录;
/var:存放系统产生的经常变化文件目录,例如打印机、邮件、新闻等假脱机目录、日志文件、格式化后的手册页以及一些应用程序的数据文件等等;
/tmp:存放公用临时文件目录。

文件命名规则

(1)除了“/”外,所有的字符都可以使用;
(2)转义字符最好不用,这些字符在Linux系统下有特定的含义,如“?”(问号),“*”(星号),“ ”(空格),“$”(货币符),“&”等;
(3)避免使用“+”、“-”或“.”作为普通文件名的第一个字符(在Linux下以“.”开头的文件是隐藏文件);
(4)Linux系统的文件名大小写敏感,文件Memo和文件memo是两个不同的文件。

文件路径

绝对路径是从“/”(根目录)开始的,也称为完全路径,如/home/user01、/usr/bin。
相对路径是从用户工作目录或用户主目录开始的路径,如 ./test、…/user1、~/test。其中“.”表示用户工作目录,“…” 表示工作目录的上级目录,“~”表示用户主目录。

设备组成

Linux中设备也是由文件来表示的,每种设备都被抽象为设备文件的形式,提供给应用程序一个统一的文件界面,即文件系统。
字符设备:数据组织的单位为字节。
块设备:数据组织的单位为块
网络设备:通过通信网络传输数据的设备,一般指与通信网络连接的网络适配器(网卡)
所有设备文件集中放置在/dev目录下
设备文件的文件名一般由两部分构成
第一部分是主设备号,第二部分是次设备号。
其中,主设备号代表设备的类型,可以唯一地确定设备的驱动程序和界面,如hd表示IDE硬盘,sd表示SCSI硬盘,tty表示终端设备,lp表示打印机等。
次设备号代表同类设备中的序号,如hda表示IDE主硬盘,hdb表示IDE从硬盘,tty0表示编号为0的终端,lp0表示第一个打印机等。

进程状态

进程的基本状态三种:运行态、就绪态和阻塞态(等待态)
进程大致上来讲可分为两大类:系统进程与用户进程。

日志管理

连接时间日志—由多个程序执行,把纪录写入到/var/log/wtmp和/var/run/utmp中,login等程序更新wtmp和utmp文件,使系统管理员能够跟踪用户在何时登录到系统中。utmp、wtmp和lastlog日志文件是Linux日志系统的关键,它保存用户登录和退出的纪录。

进程统计日志
由系统内核执行。当一个进程终止时,为每个进程往进程统计文件(pacct或acct)中写一个纪录。进程统计的目的是为系统中的基本服务提供命令使用统计。

系统和服务日志
由syslogd(8)执行。各种系统守护进程、用户程序和内核通过syslog(3)向文件/var/log/messages报告值得注意的事件。

/var/log/dmesg
/var/log/dmesg文件保存内核启动的信息,在这个文件里,用户可以看到内核和各种驱动程序的加载,加载硬件驱动时系统也会显示出相应的信息。

/var/log/messages
/var/log/messages文件是Linux系统中最全面的log文件,它记录了内核和应用程序发生错误时的信息和系统运行的一般信息。

基本命令

在基础命令后添加 -和字母,是基础命令的补充,以扩展基础命令的功能。具体添加的字母可通过help命令查询。只需要了解基础命令及help的使用便可应对绝大多数情况。

基础命令

passwd 更改当前用户下的密码。

–help 显示当前命令信息 例: passwd --help
显示passwd命令的功能及扩展功能。

who 查看当前登录到系统的用户信息。

uname 显示正在使用的Linux系统信息。

date 显示或者设置系统的时间

cal 显示日历信息

echo 显示输入内容

clear 清除shell窗口中的内容

su 切换用户为超级管理员

exit 退回之前用户

文件命令

显示

cat 把多个文件连接后输出到标准输出(屏幕)或加“> 文件名”输出到另一个文件中。

more 显示文本文件的内容,一次显示一屏,满屏后停下来。

less 与more命令相似,分屏显示文件的内容。less命令允许用户向前(PageUp)或向后(PageDown)浏览文件。在less命令提示符下按q键退出。

head head 命令用于查看一个文本文件的开头部分,行数由参数值决定,默认值是10。

tail tail命令用于查看一文本文件的末尾若干行,行数由参数值决定,默认值是10。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。

搜索

grep 在文件中对文件内的文件名搜索。

sort sort命令对指定文件中所有的行排序,将结果显示在标准输出上。如不指定输入文件或使用。

uniq 检查及删除文本文件中相邻且重复出现的行。

比较

comm 比较排序后文件,按熟悉输出,仅在文件1存在的行;文件1,2都存在的行;仅在文件2存在的行。

diff 比较两个文件,显示其中不相同的行。

复制

cp 将源文件或目录复制到目标文件或目录。

删除

rm 删除目标文件或目录。

移动

mv 移动文件或目录,更改文件或者目录名称。

内容统计

wc 统计文件字节数,字数,行数。

查找

find 查找符合条件的文件和目录。

压缩

bzip2 将文件压缩,删除原文件。

gzip 将文件压缩,删除原文件。

tar 将文件备份到备份文件内。

目录(操作空间)命令

cd 切换目录

pwd 查看当前目录

ls 列出当前目录下的内容

ls-i 列出文件详细信息:
文件类型文件访问权限 文件连接数 文件所有者 文件大小 修改时间 文件名

mkdir 创建目录

rmdir 删除目录

chmod 改变目录或文件访问权限

chgrp 改变目录或文件所属用户组

chown 改变目录或文件所属用户组

ln 链接文件和目录

Vim编辑器

工作模式

vim编辑器具有三种基本的工作方式。
(1)命令模式
(2)插入模式
(3)末行模式

通过shell代码进入vim编辑器默认启动为命令模式,命令模式通过文本插入命令进入插入模式,通过:键进入末行模式。插入模式通过Esc键进入命令模式,末行模式自动返回命令模式。

基本使用

vim + filename 进入vim界面

命令模式下连续按下Z退出vim

末行模式下使用q 或者wq 退出vim

编辑命令

移动光标

H 光标向左
J 光标向下
K 光标向上
L 光标向右
0 将光标移动到当前行行首。
$ 将光标移到当前行行尾。
G 将光标移到文件最末行行首,若将光标移动到指定行,可使用。

文本插入

i命令:从光标所在位置前插入文本;

I命令:将光标移动到当前行首开始插入文本。

a命令:从光标所在位置后开始追加文本;

A命令:首先将光标移到所在行的行尾,从行尾开始插入文本。

o命令:在当前行的下面打开一行;

O命令:在当前行的上面打开一行。

文本删除

x 删除当前字符

dd 删除当前行

dG 删除文件末尾

在vim末行模式下可实现对文本指定行的删除:行x,行y d

文本的复制与粘贴

命令模式下的文本复制

yw:将光标所在位置到字尾的字符复制到缓冲区。

nyw:将从光标所在位置开始的n个字复制到缓冲区。

yy:将光标所在的行复制到缓冲区。

nyy:将光标所在的行开始连续n行复制到缓冲区。

p:将缓冲区的字符粘贴到光标所在位置。

末行模式下的文本复制

:行x,行y co 行z
即将文本x-y行的内容,复制到z行下。

文本的查找与替换

命令模式下的文本替换

取代命令r和R
r<字符>,表示用随后输入的字符代替当前光标出的字符

替换命令s和S
s,表示用随后输入的文本替换当前光标所在的字符。
S,表示用新输入的文本替换光标当前行(整行),输入S命令后当前行被删除,工作模式切换到插入模式,等待输入替换文本,若想回到命令模式,一定要按Esc键。

cw,表示将某个字的内容用其它字符串替换。
cc,表示将光标所在行整行字符用新输入文本替换,输入cc后,当前行被删除,工作模式被切换到插入模式,等待输入替换文本,若想回到命令模式,一定要按Esc键。

末行模式下的文本查找与替换
[g] [address] s/search-string/replacement-string[/option]
其中address表示查找的地址;s为替换命令;search-string表示查找的字符串;replacement-string表示用来替换匹配的search-string

取消命令

u命令

系统管理基础

系统基础命令

shutdown 系统关闭

halt 系统关闭

reboot 关机后重启

init 不同运行级别的切换

用户管理

**(1)/etc/passwd文件:**存放关于账户相关的信息
用户名:密码:用户ID:用户组ID:用户信息:用户主目录:用户登录shell

(2)/etc/shadow文件:/etc/passwd的影子文件,来存放用户的加密口令。

**用户名:**用户的账户名称,与/etc/passwd文件中的内容相互匹配。

**加密口令:**这是利用隐藏口令的技术,将加密口令串存放的区域。

上次更新时间:表示自1970年1月1日以来至最后一次更改口令的天数。

**允许更改时间:**表示现在到下次允许更改口令的天数,一般设置为0,以便用户可以随时更改口令。

**要求更改时间:**表示用户被迫要求更改口令之前距今的天数,一般设置为99999,代表不强制更改口令。

**取消口令之前的警告时间:**表示系统在取消用户口令之前,要提前通知用户的天数,一般设置为7,代表提前1周通知用户。

**账户终止时间:**表示自1970年1月1日以后的账户将被终止的天数,一般设置为-1或空白,代表不使用自动失效的方式来终止用户账户。

**特殊标志:**此区域预留为了将来使用,一般设置为空白。

**取消和停用之间的时间:**表示用户账户到期至系统自动取消用户口令的天数,一般设置为-1或空白,代表不使账户自动取消

**(3)/etc/group文件:**存放用户组相关的信息资料。

**用户组名(Group Name):**每一个用户组都有唯一的名称,如果创建用户时,创建的是私人组群,那么用户组名和用户名相同。

**组密码(Password):**用户组可设置密码。

**组ID(GID):**每个用户组都有一个GID,普通的用户从500开始编号,用户组也是如此。

**组内用户(user-list):**表示该组内都有哪些用户。

用户管理相关命令

使用userdel命令可以改变删除用户,语法格式:
userdel -r username

组相关命令
groupadd,groupmod,groupdel,groups

设备管理

fdisk 命令是磁盘及分区管理工具,在硬盘设备中创建、删除、更改分区等操作通过fdisk命令进行。

mksf 将硬盘分区后,使用mkfs(Make Filesystem,创建文件系统)命令可对其进行格式化。

fsck 当系统非正常关机,或其他原因破坏了文件系统时,需要对文件系统进行修复,否则文件系统将不能正常引导。

df 命令功能是检查文件系统的磁盘空间占用情况.

du 统计目录(或文件)所占磁盘空间的大小。

quota 显示磁盘已使用的空间与限制。

mount 实现对存储设备的挂载。

umount 把已经mount上的文件系统卸载,停止已经建立的挂载关系。

静态挂载

系统中的“/etc/fstab”文件可以看做mount命令的配置文件,其中存储了文件系统的静态挂载数据。

第一字段:设备名或设备卷标名。
第二字段:文件系统的挂载点目录的位置。
第三字段:文件系统类型,如:etx3、swap等。
第四字段:挂载参数,即mount命令“-o”选择后可使用的参数,如defaults、rw等。
第五字段:表示文件系统是否需要dump备份,一般设为1时表示需要,设为0时将被dump所忽略。
第六字段:该数字用户决定在系统启动时进行磁盘检查的顺序,0表示不进行检查,1表示优先检查,2表示其次检查。对于根分区应设为1,其他分区设为2。

进程管理

ps 进程查看命令

top 显示系统当前的进程和其他状况

renice renice命令允许用户修改一个正在运行进程的优先权。利用renice命令可以在命令执行时调整其优先权

wait wait命令将实现对一个进程的等待。

sleep 将进程的执行挂起一段时间。

at 实现指定时刻执行指定的命令序列。

cron Linux系统提供cron命令可以按一定时间自动完成任务调度。

crontab crontab命令用于安装、删除或者列出用于驱动cron后台进程的表格。

kill 当用户需要中断一个前台进程的时候,通常是使用<Ctrl+c>组合键;
对于一个后台进程须求助于kill命令

网络管理

ifconfig 查看和更改网络接口的地址和参数。

ping 使用ICMP协议来检测整个网络连通情况 。

netstat 用于查看网络状态。

GCC编译

使用GCC编译程序时,编译过程可以被细分为四个阶段:
(1)预处理(Pre-Processing)
(2)编译(Compiling)
(3)汇编(Assembling)
(4)链接(Linking)

预处理

在该阶段,编译器将上述代码中的stdio.h编译进来。GCC首先调用cpp进行预处理,根据以字符#开头的命令修改原始的C程序。
如hello.c中的指令#include <stdio.h>告诉预处理器读系统头文件stdio.h的内容,并把它直接插入到程序文本中去,结果就得到经过编译预处理的源代码hello.i。
$gcc -E hello.c -o hello.i

编译

GCC调用ccl检查代码的规范性,是否有语法错误等,以确定代码实际要做的工作,在检查无误后,把代码翻译成汇编语言,生成汇编处理后的汇编代码hello.s。这个阶段对应的GCC命令如下所示。
$gcc -S hello.i -o hello.s

汇编阶段

GCC调用as把编译阶段生成的hello.s文件转成编译后的目标文件hello.o,但hello.c中所引用的其他文件中函数(如printf)的内存位置尚未定义。这个阶段对应的GCC命令如下所示。
$gcc -c hello.s -o hello.o

链接阶段

GCC调用ld将程序的目标文件与所需的所有附加的目标文件连接起来,最终生成可执行文件。如GCC找到hello.c所调用的函数printf函数库所在位置/user/lib,把函数的实现链接进来,生成最终的可执行文件hello,可以利用下面的命令完成。
$gcc hello.o -o hello

  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值