前言:
linux基本原则
用户接口
命令形式
ls 部分说明
文件系统
查看服务器基本信息
文件查看和处理命令
目录基本操作命令
vim操作
Linux的基本原则:
- 由目的单一的小程序组成;组合小程序完成复杂任务
- 一切皆文件
- 尽量避免捕获用户接口(尽量不和用户进行交互,就是一个程序一但开始运行,就不需要用户进行任何操作,如ls命令,ifconfig命令)
- 配置文件保存为纯文本格式
用户接口:
是一种独特的应用程序,能够为用户提供启动其他应用程序的机制
-
CLI:命令提示符
shell:sh,csh,ksh,bash,zsh,tcsh -
GUI: 图形界面
GNOME:C语言
KDE:C++
XFCE:轻量级 -
终端类型:tty命令可以查看
虚拟终端(tty1-6) /dev/tty# #号为数字号码
伪终端(ssh、Telnet连接称为伪终端或者在图形界面下打开的终端) eg:/dev/pts/#
物理终端(console) /dev/console
串行终端(使用特定速率向外打印字符,通过串行接口连接)eg:/dev/ttyS#
图形终端:可以使用startx命令启动startx -- :2
可以启动第二个图形终端
命令形式
命令格式:命令 选项 参数
命令 分为内部命令和外部命令
内部命令:是系统shell自带的命令
外部命令:是安装其他的程序产生的命令
可以通过帮助的方式,查看命令的类型eg:
# type cd
ls 部分说明
ls -l:长格式
长格式查看结果;如下
# ls -l aa.txt
-rw-r--r-- 1 root root 0 1月 30 09:16 aa.txt
下面解释长格式输出结果的含义
<文件类型><文件权限><硬链接次数><属主><属组><文件大小><月><日><时:分><文件名>
-
文件类型
-:普通文件
d: 目录文件
b: 块设备文件 (block)就是存储数据以供系统存取的接口设备,简单而言就是硬盘
c: 字符设备文件 (character)即串行端口的接口设备,例如键盘、鼠标等等
l: 符号链接文件(symbolic link file)
p: 命令管道文件(pipe)是一种特殊的文件类型,它主要的目的是,解决多个程序同时存取一个文件所造成的错误
s: 套接字文件(socket)这类文件通常用在网络数据连接 -
文件权限
9位,每3位一组,rwx(读,写,执行) (4 2 1)
文件系统
- FHS: filesystem hierarchy standard 文件系统层级标准
- rootfs(): 根文件系统 /
- /boot: 系统启动相关的静态文件,如内核、initrd或者initramfs,以及grub(bootloader)
- /dev: 所有设备的设备文件,设备文件也称为特殊文件(仅有元数据,没有数据,是设备的入口)
设备文件:
块设备:随机访问,数据块
字符设备:线性访问,按字符为单位
设备号:主设备号(major)和次设备号(minor) 主设备号相同的设备是同类设备(使用同一个驱动程序)
通过 cat /proc/devices 命令查看当前已经加载的设备驱动程序的主设备号
例如:ls -l /dev/sr0
brw-rw---- 1 root cdrom 11, 0 4月 1 08:59 /dev/sr0 11为主设备号,0为次设备号
- /etc:配置文件
- /home:普通用户的家目录,每一个用户的家目录通常默认为/home/USERNAME
- /root:管理员的家目录
- /lib:基本的共享库和内核模块
库文件 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行
静态库, .a 静态库的代码在编译过程中已经被载入可执行程序,因此体积较大
动态库, .dll, .so (shared object) 共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小
- /lib/modules:内核模块文件
- /media:为了移动设备的挂载点目录,例如光盘、U盘
- /mnt:挂载点目录,额外的临时文件系统
- /opt:可选目录,第三方程序的安装目录
- /proc:内核及进程信息的虚拟文件系统,伪文件系统,内核映射文件,只存在内存中,它以文件系统的方式为访问系统内核数据的操作提供接口
- /sys:伪文件系统,硬件设备信息虚拟文件系统接口,跟硬件设备相关的属性映射文件,该目录下是全局设备结构体系,包含所有被发现的注册在各种总线上的各种物理设备
- /tmp:临时文件, /var/tmp
- /var:可变化的文件(内容发生变化)/var/log 日志信息
- /var/log 日志信息
- /bin: 基础的用户命令二进制程序, 为所有用户使用
- /sbin:系统二进制程序,一般为管理命令
- /bin和/sbin 系统自身启动和运行时可能会用到的核心二进制命令
- /usr:shared, read-only (Unix System Resource,即Unix系统资源的缩写),不适合放在/bin或/etc目录下的额外的工具
- /usr/bin 大多数用户使用到的命令
- /usr/sbin 非核心的系统命令
- /usr/bin和/usr/sbin 系统运行时,用户为完成某种操作可能用到的命令
- /usr/lib
- /usr/local:主要存放那些手动安装的软件
/usr/local/bin
/usr/local/sbin
/usr/local/lib
- /usr/share/man /usr/share/doc 帮助文件应用程序的组成部分
二进制文件、库文件、配置文件、帮助文件
- 路径:
绝对路径:凡是以“/”开头的输入路径的方式都是绝对路径
相对路径:凡是以“.”或者“…”开头的都是相对路径
每个绝对路径都可以切割成2部分:
基名: basename /tmp/111/222/three 输出结果为three
目录名: dirname /path/111/222/three 输出结果为/tmp/111/222
# mkdir -p /tmp/111/222
# touch /tmp/111/222/three
# basename /tmp/111/222/three
three
# dirname /tmp/111/222/three
/tmp/111/222
查看服务器基本信息:
常用命令
命令 | 解释 |
---|---|
cat /proc/cpuinfo | 查看cpu信息 |
cat /proc/meminfo | 查看内存信息 |
free | 查看内存使用情况 |
uptime | 监控CPU情况 |
cat /etc/redhat- release | 查看发行版信息 |
hostname | 查看主机名 |
ip addr | 查看ip信息 |
ifconfig | 查看ip信息 |
netstat | 查看网络连接信息、路由表等,常用来查看端口打开情况 |
fdisk -l | 查看硬盘信息 |
df | 查看设备挂载信息 |
其它常用命令
文件查看和处理命令:
-
touch 创建文件
-
echo 将用户输入的内容,显示在屏幕上。
通常结合着“>”重定向符号, 用来在文本文件中,添加数据,“>>” 表示追加。 -
cat 用来显示文件的内容
-
tac 倒序查看文件内容
-
more 显示文件内容,每次显示一屏
按Space键:显示文本的下一屏内容
按Enter键:只显示文本的下一行内容
按h键:显示帮助
按b键:显示上一屏内容
按q键:退出命令
- less 分屏上下翻页浏览文件内容
用PageUp键向上翻页
用PageDown键向下翻页
head 显示文件开头,默认开始10行
tail 显示文件结尾,默认结尾10行
-f 监控某个文件变化
- wc 统计文件的行数\单词数\字符数
-l 行数
-w 单词数
-c 字符数
- du 统计文件和目录的大小
-s 汇总显示大小
-h 易读形式显示
目录基本操作命令:
- tree 树状图列出目录的内容
-C 在文件和目录清单加上色彩,便于区分各种类型
- ls 查看目录内容
- cd 切换目录
- pwd 查看当前目录位置
- mkdir 创建目录
-p 创建多级目录
- rmdir 删除空目录
- rm 删除文件或目录
可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件 及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。
-f 强制删除
-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理
- mv 用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中
- cp 用来将一个或多个源文件或者目录复制到指定的目的文件或目录
-a:此参数的效果和同时指定"-dpR"参数相同
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向 与源文件或目录连接的原始文件或目录
-f:强行复制文件或目录,不论目标文件或目录是否已存在
-i:覆盖既有文件之前先询问用户
-p:保留源文件或目录的属性
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理
- 移动一个文件,并且重命名;两个命令的区别是:是否要保留源文件
vim:
三种模式:命令模式、插入模式、末行模式
- 插入模式
输入 | 说明 |
---|---|
i: | 在光标当前位置插入 |
I: | 在光标所在行首插入 |
a: | 在光标所在位置后插入 |
A: | 在光标所在行尾插入 |
o: | 光标所在行下方另起一行插入 |
O: | 光标所在行上方另起一行插入 |
- 末行模式
输入 | 说明 |
---|---|
w | 保存 |
q | 退出 |
wq | 保存并且退出 |
! | 强制 |
- 命令行模式
输入 | 说明 |
---|---|
dd | 删除[剪切] |
yy | 复制 |
nyy | 多行复制 |
p | 粘贴 |
-
使vim显示行号
在属主目录下边创建一个.vimrc
的文件,添加set nu -
vim windows linux文件格式转换
操作 | 说明 |
---|---|
:set ff | #显示当前文件格式 |
:set ff=unix | #设置成unix格式 |
:set ff=dos | #设置成dos格式 |
- 命令模式下的操作
操作 | 说明 |
---|---|
Page Down或Ctrl+F | 向下翻动一整页内容 |
Page Up或Ctrl+B | 向上翻动一整页内容 |
Home键或“^”、数字“0” | 跳转至行首 |
End键或“$”键 | 跳转到行尾 |
1G或者gg | 跳转到文件的首行 |
G | 跳转到文件的末尾行 |
nG | 跳转到文件中的第n行 |
x或Del | 删除光标处的单个字符 |
dd | 删除当前光标所在行 |
ndd | 删除从光标处开始的n行内容 |
d^ | 删除当前光标之前到行首的所有字符 |
d$ | 删除当前光标处到行尾的所有字符 |
yy | 复制当前行整行的内容到剪贴板 |
nyy | 复制从光标处开始的n行内容 |
p (小写) | 将缓冲区中的内容粘贴到光标位置处之后 |
P (大写) | 粘贴到光标位置处之前 |
/word | 从上而下在文件中查找字符串“word” |
?word | 从下而上在文件中查找字符串“word”(n,下一个;N,上一个) |
u | 按一次取消最近的一次操作 |
U | 用于取消对当前行所做的所有编辑 |
ZZ | 保存当前的文件内容并退出vi编辑器 |
- 末行模式的操作
操作 | 说明 |
---|---|
:w | 保存修改的内容 |
:w /tmp/newfile | 另存为其它文件 |
:q | 未修改退出 |
:q! | 强制放弃对文件内容的修改,并退出 |
:wq | 保存修改的内容并退出 |
:e ~/newfile | 打开新的文件进行编辑 |
:r /tmp/file | 在当前文件中读入其他文件内容 |
😒 /old/new | 将当前行中查找到的第一个字符“old” 串替换为“new” |
😒 /old/new/g | 将当前行中查找到的所有字符串“old” 替换为“new” |
:x,y s/old/new/g | 在行号“x,y”范围内替换所有的字符串 |
:% s/old/new/g | 在整个文件范围内替换所有的字符串“old” |
😒 /old/new/c | 在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认 |
:set nu | 在编辑器中显示行号 |
:set nonu | 取消编辑器中的行号显示 |