Linux系统基础知识和命令
1. linux系统基础知识
1.1 Linux的优点
- 一切都是一个文件。
- 系统中拥有小型,单一用途的程序。
- 当遇到复杂任务,通过不同功能用途的程序组合起来完成。
- 避免令人困惑的用户界面就是没有复杂的图形界面。
- 不在乎后缀名,不是通过后缀名来定义文件的类型。
1.2 什么是shell
shell是Linux系统中后台运行的一种特殊程序也可以理解成一种特殊的软件,提供了用户与内核进行交互操作的一种接口。是一种翻译软件,将人类语言翻译成二进制。
bash是linux里面默认的shell程序位于/bin/bash。
/sbin/nologin是特殊的shell,使用的用户不能登录系统。
1.3 内部命令和外部命令
shell分为内部命令和外部命令。内部命令和外部命令对比如下:
内部命令 | 外部命令 |
---|---|
集成于Shell解释器程序内部的一些特殊指令,也称为内建(Built-in)指令 | Linux系统中能够完成特定功能的脚本文件或二进制程序 |
属于Shell的一部分 | 属于Shell解释器程序之外的命令 |
没有单独对应的系统文件 | 每个外部命令对应了系统中的一个文件 |
自动载入内存,可以直接使用 | 必须知道其对应的文件位置,由Shell加载后才能执行 |
命令的执行过程:
首先判断是内部命令还是外部命令,如果是内部命令指的是shell内部的命令,会被直接执行;如果是外部命令会先查看hash缓存表中是否执行过,hash缓存表中有会被直接执行,没有则会报错;需要找到外部命令文件所在位置再用shell执行。
命令执行优先级:
绝对路径的命令 > 别名命令 > 内部命令 > hash缓存命令 > 外部命令
1.4 内部命令和外部命令的区分
可以使用 type 命令来区分内外部命令
注:开启和关闭内部命令
enable 开启内部命令
enable -n 关闭内部命令
执行过的外部命令会被记录在hash(缓存,但是会占用内存,临时性的)加快读取速度
清除hash缓存表
将缓存的外部命令移到其他默认的目录中,无法再次使用,需要清掉hash值之后 ,才可以继续使用。
hash -d加缓存里的命令 清除缓存中的单个命令
hash -r 清除缓存中的所有命令
1.5 命令行的格式
在Linux操作系统中,凡是在字符操作界面中输入能够完成特定操作和任务的字符串都可以称为命令。命令通常只代表实现某一类功能的程序的名称。
注意:空格一定要打,参数不写默认在当前文件夹操作。
编辑Linux命令行的快捷键
快捷键 | 功能 | 快捷键 | 功能 |
---|---|---|---|
Tab 键 | 自动补齐(两次可以显示所有选项) | 反斜杠“ \ ” | 强制换行或转义 |
Ctrl + e 或 end 键 | 光标移到最后 | Ctrl + U | 清空至行首不包括当前光标处的字符 |
Ctrl + K | 清空至行尾包括当前光标处的字符 | Ctrl + a | 光标移到最前 |
Ctrl + w | 从当前光标删除到开头 | ALT + d | 从当前光标删除末尾 |
Ctrl + l | 清屏 | Ctrl + c | 取消本次命令编辑 |
Ctrl + s / Ctrl + q | 锁屏/解锁 | 向上下箭头 | 回看执行过的命令 |
1.6命令帮助
help 查看内部命令使用
直接输入help命令可以查看内部命令
内部命令查看帮助格式:help 内部命令
可以查看命令的格式,选项,参数
--help查看外部命令使用
man用户使用手册
man分为9个章节:其中man5较为常用
- man1:用户指令
- man2:系统调用
- man3:程序库调用
- man4:设备
- man5:文件格式
- man6:游戏
- man7:杂项
- man8:系统指令
- man9:内核内部指令
- mann:Tcl或Tk指令
info查看相关的帮助信息
如帮助无法解决,百度是快速解决办法
Linux基础操作
命令 | 作用 | 命令 | 作用 |
---|---|---|---|
halt | 立刻关机 | lscpu | 查看cpu |
poweroff | 立刻关机 | date | 查看时间 |
shutdown -h now | 立刻关机(root用户使用) | free -h | 当前系统内存 |
shutdown -h 10 | 10分钟后自动关机 | cat /etc/redhat-release | 查看系统版本 |
reboot | 重启 | echo $LANG | 修改语言 |
inte6 | 重启 | vim /root/.bashrc | 修改颜色 |
2. Linux基本命令
在 Linux 操作系统中,凡是在字符操作界面中输入能够完成特定操作和任务的字符串都可以称为命令,代表实现某一类功能的程序的名称。
2.1 pwd
显示当前路径;打印当前工作目录的名字。(print work directory)
命令格式:pwd 【选项】
选项 | 作用 |
---|---|
pwd | 显示当前路径 |
pwd -P | 显示真实路径 |
2.2 cd
更改目录;切换到不同文件夹或目录(change directory)
命令格式:cd 【选项】【目标位置】
选项 | 作用 |
---|---|
cd或cd ~ | 若不指定目标位置,切换到当前用户的宿主目录(家目录) |
cd - | 到前一次目录 |
.(当前目录) | 表示以当前的工作目录作为起点 |
.. | 表示以当前目录的上一级目录(父目录)作为起点 |
~ 用户名 | 表示以指定用户的宿主目录(家目录)作为起点 |
"."开头文件 | 表示隐藏文件 |
2.3 ls
列表;显示当前文件下所有(list)
命令格式:ls 【选项】 【文件或目录】
选项 | 作用 |
---|---|
-l | 以长格式显示文件和目录列表 ll=ls -l |
-a | 显示全部包括隐藏文件 |
-A | 显示全部文件或隐藏文件,但不包括 . 和.. |
-d | 仅列出目录本身,而不是列出目录内的文件数据 |
-h | 友好显示文件大小(human,人性化) |
-R | 递归显示该目录及该目录的子目录下的所有内容 |
-t | 以时间顺序显示 |
-r | 倒序显示 |
--color | 显示颜色 |
-S | 以文件容量大小排序 |
当ls命令不使用任何选项时,默认只会显示非隐藏文件的名称,并以文件名进行排序,同时会根据文件的具体类型给文件名配色。
vim /etc/DIR_COLORS 颜色配置文件
Linux中的文件类型
表示字符 | 文件类型 | 文件配色 |
---|---|---|
- | 普通文件,包括纯文本文件、二进制文件、各种压缩文件等。 | 黑色 |
b | 块设备文件block,保存大块数据的设备,比如最常见的硬盘/dev。 | 黄色 |
c | 字符设备文件character,/dev/zero | 黄色 |
d | 目录文件directory,类似 Windows 系统中的文件夹。 | 蓝色 |
l | 符号链接文件link,类似 Windows 系统中的快捷方式。 | 青色 |
s | 套接字文件socket,通常用在网络数据连接,可以启动一个程序开监听用户的要求,用户可以通过套接字进行数据通信。 | 紫色 |
p | 管道文件pipe,其主要作用是解决多个程序同时存取一个文件所造成的错误。 | 黄色 |
注意:ls命令时需注意,文件量过大会直接死机!!套接字可以双向通信;管道为单向,A传给B是一条管道,B要向A传输需再建立一条管道。
2.4 通配符
使用通配符匹配文件名或文件夹
符号 | 作用 |
---|---|
? | 匹配一个字符 f?.txt |
* | 匹配所有非隐藏的字符无论多长多短,但不匹配 "." 开头的文件,即隐藏文件 |
{1..10} | 1到10 |
{a..z} | a b c ...z |
{A..Z} | A B C .....Z |
[123]([此处括号里只代表一个字符]) | 取其中之一有就显示没有也无所谓 |
[a-z]单个小写字母 | 范围需要注意 |
[0-9]单个数字 | 匹配数字范围(0123456789) |
\ | 转义符,表示原来的意思 |
[[:lower:]] | 小写字母表示 a-z |
[[:upper:]] | 大写字母表示 A-Z |
[^liyi] | 匹配列表中的所有字符以外的字符 |
[[:digit:]] | 任意数字,相当于0-9 |
[[:alpha:]] | 任意字母 |
2.5 alias
设置或显示别名。
命令格式:alias 自定义命令名='原始命令'
选项 | 作用 |
---|---|
alias | 显示当前系统中的别名命令 |
unalias 别名命令 | 删除别名 |
\别名命令 | 显示原始命令 |
注意:要先查看别名设置,设置别名时,不要和系统中已有命令名一致, 永久修改别名,在/etc/.profile会影响全部用户,在/root/.bashrc只影响当前用户。
2.6 du
查看当前所在文件夹占用了磁盘的多少单元块,包括隐藏文件也会统计在内,默认1单元块为4K,不满4K时按4k计算。(disk usage)
命令格式:du [选项] [文件或目录… ]
选项 | 作用 |
---|---|
-a | 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录 |
-h | 以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果 |
-s(--summarize) | 只统计所占用空间总的(Summary)大小,而不是统计每个子目录、文件的大小 |
-d1(--max-depth=n) | 最大显示到第n层 |
--exclude | 不计入统计 |
df显示磁盘可用空间大小(disk free) |
2.7 mkdir
创建目录或文件夹(make directories)
命令格式:mkdir [选项] 目录位置及名称
选项 | 作用 |
---|---|
mkdir | 创建多个文件夹,名字用空格隔开 |
mkdir -p | 递归创建多个文件夹,用/隔开,加v显示创建过程 |
2.8 touch
刷新文件时间,创建空文件,没有新建,已存在刷新文件最后使用时间,不会破坏源文件;可一起创建多个文件,使用空格隔开。 touch
2.9 ln
链接(link),分为软链接和硬链接,硬链接不支持文件夹,创建一个链接就多条访问路径;软链接类似于快捷方式,创建时都需要使用绝对路径。
命令格式:ln [-s] 源文件或目录… 链接文件或目标位置
对比项 | 硬链接 ln | 软链接 ln -s |
---|---|---|
本质 | 本质是同一个文件 | 本质不是同一个文件 |
inode(身份证号) | 相同 | 不同 |
连接数 | 创建新的硬链接,链接数会增加,删除硬链接,链接数减少 | 删除,新建都不会改变 |
文件夹 | 不支持 | 支持 |
删除源文件 | 只是链接数减一,但链接文件的访问不受影响 | 无法访问连接文件 |
文件类型 | 和源文件相同 | 链接文件,和源文件无关 |
文件大小 | 和源文件相同(指向硬盘上的同一个文件) | 源文件的路径的长度 |
2.10 cp
备份,复制(copy)
命令格式:cp [选项]…源文件... 文件夹
选项 | 作用 |
---|---|
-f | 覆盖目标同名文件或目录时不进行提醒,直接强制复制 |
-i | 覆盖目标同名文件或目录时提醒用户确认 |
-p | 复制时保持源文件的权限、属主及时间标记等属性不变 |
-r | 复制目录时必须使用此选项,表示递归复制所有文件及子目录 |
-a | 完整保留所有的信息 |
-v | 可视化 |
-u | 相当于增备,差异备份,复制之前没有的文件(只对文件夹起作用) |
注意:复制多个时,目标位置需要是已存在的文件夹。
2.11 mv
移动文件
命令格式:mv [选项] … 源文件或目录…
选项 | 作用 |
---|---|
-f | 强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖 |
-i | 交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项) |
-n | 如果目标文件已经存在,则不会覆盖移动,而且不询问用户 |
-v | 显示文件或目录的移动过程 |
rename 批量改名
命令格式:rename 【旧字符】 【新字符】 目标文件
2.12 rm和sherd
rm 删除文件
命令格式:rm [选项] 要删除的文件或目录
选项 | 作用 |
---|---|
-f | 强制 |
-i | 交互 |
-r | 递归(删除目录需要) |
sherd覆盖文件
rm虽然删除了文件,但是被删除的文件仍然可能被恢复,在安全要求较高的场景下,可以使用shred安全删除文件
命令格式:shred [选项]...文件名...
选项 | 作用 |
---|---|
z | 最后一次覆盖添加0,以隐藏覆盖操作 |
v | 能够显示操作进度 |
u | 覆盖后截断并删除文件 |
n #(次数) | 指定覆盖文件内容的次数(默认值是3次) |
2.13 locate和find
查找文件
locate
- 查询系统上预建的文件索引库/var/lib/mlocate/mlocate.db
- 索引的构建是在系统较为空闲时自动进行(周期性任务),执行updatedb可以更新数据库
- 索引构建过程需要遍历整个根文件系统,很消耗资源
- locate和updatedb命令来自于mlocate包
选项 | 作用 |
---|---|
i | 不区分大小写的搜索 |
n # | 只列举前#个匹配项目 |
find
- 在硬盘上精确查找,实时查找,支持多个查找条件
命令格式:find [查找路径] [选项]... [查找条件] [处理动作]
- 查找路径:指定具体目标路径;不指定为默认为当前目录
- 查找条件:可以对文件名、大小、类型、权限等标准进行查找;默认为找出指定路径下的所有文件
- 处理动作:对符合条件的文件做操作,默认输出至屏幕(print)
xargs参数替换 由于很多命令不支持管道符|来传递参数,xargs用于产生某个命令的参数,xargs可以读入stdin的数据,并且以空格符或回车符将stdin的数据分隔成为参数。另外,许多命令不能接受过多参数,命令执行可能会失败,xargs 可以解决
注意:文件名或者是其他意义的名词内含有空格符的情况
单独使用xargs是将键盘上的输入输出在屏幕上 |xargs -n1 处理一个参数换行一次
重定向 redirect
改变方向,标准输入 重定向
2.14 which
which 命令|程序名
3. 硬件信息及其他系统信息
命令 | 命令 | 作用 |
---|---|---|
lscpu | cat /proc/cpuinfo | 查看cpu信息 |
free | cat /proc/meminfo | 查看内存大小 |
lsblk | cat /proc/partitions | 查看硬盘和分区情况 |
uname -r | cat /etc/redhat-release | 查看内核版本 |
arch | 查看机器架构 |