💖Linux从入门到跑路❤️
文章目录
linux介绍
什么是Linux
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux发行版本
Linux发行版 (也被叫做 GNU/Linux 发行版) 通常包含了包括桌面环境、办公套件、媒体播放器、数据库等应用软件。
目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。
Linux发行版本又分为稳定版和开发版,两种版本是相互关联,相互循环:
- 稳定版:具有工业级强度,可以广泛地应用和部署。新的稳定版相对于较旧的只是修正一些bug或加入一些新的驱动程序。
- 开发版:由于要试验各种解决方案,所以变化很快。
Linux的内核是什么?
Linux系统的核心是内核,内核控制着计算机系统上的所有硬件和软件,在有必要时分配硬件,并根据需要时执行软件。
Linux开机启动过程?
- 主机加电自检,加载BIOS硬件信息。
- 读取MBR的引导文件
- 引导Linux内核。
- 运行第一个进程init (进程号永远为1)
- 进入相应的运行级别。
- 运行终端,输入用户名和密码。
Linux系统运行级别
-
关机
-
单用户模式
-
字符界面(不支持网络)
-
字符界面
-
未分配使用
-
图形化界面
-
重启
Linux的目录结构
常见目录说明:
- /:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。
- /bin: /usr/bin: 可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。
- /boot:放置linux系统启动时用到的一些文件,如Linux的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub。
- /dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱 mount /dev/cdrom /mnt。
- /etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有 /etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d。
- /home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,表示当前用户的家目录,edu 表示用户 edu 的家目录。
- /lib: /usr/lib: /usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助。
- /lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下。
- /mnt: /media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载。
- /opt:给主机额外安装软件所摆放的目录。
- /proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有 /proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等。
- /root:系统管理员root的家目录。
- /sbin: /usr/sbin: /usr/local/sbin:放置系统管理员使用的可执行命令,如fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root使用的命令,一般用户只能"查看"而不能设置和使用。
- /tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下。
- /srv:服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内。
- /usr:应用程序存放目录,/usr/bin 存放应用程序,/usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local: 存放软件升级包。/usr/share/doc: 系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录。
- /var:放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log,/var/log/message:所有的登录文件存放目录,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其PID存放在该目录下。
用户目录
位于/home/user,称之为用户的工作目录或家目录。表示方式:
/home/user
~
从 / 目录开始描述的路径为绝对路径,如:
cd /home
ls /usr
从当前位置开始描述的路径为相对路径,如:
cd ../../
ls abc/def
每个目录下都有**.和…**
. 表示当前目录
… 表示上一级目录,即父目录
根目录下的.和…都表示当前目录
文件的颜色 | 含义 |
---|---|
蓝色 | 目录 |
绿色 | 可执行文件 |
红色 | 压缩文件 |
浅蓝色 | 链接文件 |
灰色 | 其他文件 |
命令行操作
命令基本用法
Linux命令格式:
command [-options] [parameter1] …
command:命令名称
[-options]:选项,可以用来对命令进行控制,也可以省略,[]代表可选
parameter1 …:传给命令的参数:可以是零个一个或多个。
什么是shell
shell也被称为Linux命令的解释器
查看系统默认shell
echo $BASH
查看系统各个版本shell
[root@localhost ~]#cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
更改命令终端颜色
登录Linux后,默认的系统命令提示符没有个性,无法明显辨别生产和测试环境,而导致错误。
可以通过修改PS1变量实现个性提示符格式,避免命令输错终端错误。
默认的提示符
#Centos默认提示符
[root@localhost ~]#
#Ubuntn默认提示符
[yyc@localhost ~]$
@符合前root 代表时当前登录用户
localhost 代表显示系统名称前几位
~ 代表用户在家目录
# 代表是管理员账号 $代表是普通账户
Centos7以上版本设置
# 默认
[root@localhost ~]# echo $PS1
[\u@\h \W]\$
# 实例
[root@localhost ~]#PS1="\[\e[1;35m\][\u@\h \w]\\$\[\e[0m\]"
#永久保存
echo PS1="\[\e[1;35m\][\u@\hw \w]\\$\[\e[0m\]" > /etc/profile.d/test.sh
#提示 [\e[1;35m\] 35为紫色 可进行更改
[root@localhost ~]#echo $PS1
\[\e[1;35m\][\u@\h \w]\$\[\e[0m\]
# 命令行彩色并显示时间模板
[15:04:41 root@Centos8-2 ~]#PS1="\[\e[1;32m\][\t \[\e[1;33m\]\u\[\e[35m\]@\h\[\e[1;31m\] \w\[\e[1;32m\]]\[\e[0m\]\\$"
查看帮助文档
help
一般是linux命令自带的帮助信息
如:ls --help
man(manual)
man是linux提供的一个手册,包含了绝大部分的命令、函数使用说明
该手册分成很多章节(section),使用man时可以指定不同的章节来浏览。
例:man ls ; man 2 printf
man中各个section意义如下:
- Standard commands(标准命令)
- System calls(系统调用,如open,write)
- Library functions(库函数,如printf,fopen)
- Special devices(设备文件的说明,/dev下各种设备)
- File formats(文件格式,如passwd)
- Games and toys(游戏和娱乐)
- Miscellaneous(杂项、惯例与协定等,例如Linux档案系统、网络协定、ASCII 码;environ全局变量)
- Administrative Commands(管理员命令,如ifconfig)
man是按照手册的章节号的顺序进行搜索的。
man设置了如下的功能键:
功能键 | 功能 |
---|---|
空格键 | 显示手册页的下一屏 |
Enter键 | 一次滚动手册页的一行 |
b | 回滚一屏 |
f | 前滚一屏 |
q | 退出man命令 |
h | 列出所有功能键 |
/word | 搜索word字符串 |
注意:实际上,我们不用指定第几个章节也用查看,如,man ls
Linux命令小技巧
设置主机名
# 临时生效
hostname testname
# 永久生效
hostnamectl set-hostname testname
注意:修改主机名只可以使用 字母 数字 和横线。
有些软件对主机名有特殊要求
命令为什么要永久生效
临时生效是保存在运行内存,当系统断电或重启命令会失效,
永久保存相当于把这条命令写到了系统文件中重启完系统不会失效。
tab键自动补全
在敲出命令的前几个字母的同时,按下tab键,系统会自动帮我们补全命令。
history游览历史
当系统执行过一些命令后,可按上下键翻看以前的命令,history将执行过的命令列举出来
history保留了最近执行的命令记录,默认可以保留1000。
历史清单从0开始编号到最大值。
常见用法:
history N 显示最近N条命令
history -c 清除所有的历史记录
history -w xxx.txt 保存历史记录到文本xxx.txt
命令行中的ctrl组合键
-
Ctrl+c 结束正在运行的程序
-
Ctrl+d 结束输入或退出shell
-
Ctrl+s 暂停屏幕输出【锁住终端】
-
Ctrl+q 恢复屏幕输出【解锁终端】
-
Ctrl+l 清屏,【是字母L的小写】等同于Clear
-
当前光标到行首:ctrl+a
-
当前光标到行尾:ctrl+e
-
删除当前光标到行首:ctrl+u
-
删除当前光标到行尾:ctrl+k
-
Ctrl+y 在光标处粘贴剪切的内容
-
Ctrl+r 查找历史命令【输入关键字,就能调出以前执行过的命令】
-
Ctrl+t 调换光标所在处与其之前字符位置,并把光标移到下个字符
-
Ctrl+x+u 撤销操作
-
Ctrl+z 转入后台运行
Linux命令
执行命令
执行命令过程
输入命令后回车,shell程序找到输入命令对应可执行程序或代码,其由分析后提交给内核分配资源并其运行起来。
shell中可执行的两类命令
内部命令:由系统shell自带的,而且通过某命令形式来提供,用户登录后自动加载和常驻在内存中。
外部命令:在系统文件路径下有对应的可执行程序文件,当执行命令时才从磁盘加载到内存中,执行完毕并从内存中删除。
区别命令时内部和外部命令
type 命令
内部命令
[root@localhost ~]#type cd
cd 是 shell 内嵌
外部命令 后面出现路径就是外部命令
[root@localhost ~]#type ssh
ssh 是 /usr/bin/ssh
# 存放外部命令的路径
[root@localhost ~]#echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost ~]#type -a echo
echo 是 shell 内嵌
echo 是 /usr/bin/echo
# echo 是内部命令命令也是外部命令 内部命令执行优先级高
echo 有内部命令命令了,为什么还要有个外部命令?
echo命令比较重要,本终端有不代表别的终端有echo命令
hash缓存表
系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到改命令执行并记录到hash表中,当再次使用该命令时,shell解释器会先查看hash表,存在将执行,如果不存在将会从PATH路径下去寻找,利用hash缓存表可大大提升外部命令调用速率。
- hash 显示hash缓存
- hash -d name 清楚name缓存
- hash -r 清楚全部hash缓存
文件别名
对于经常执行较长的命令,可以将其定义较短或比较容易记住的单词,以方便执行。
# 显示当前shell进程所有可用的命令别称
alias
范例:
alias ho='hostname'
# ho是别名
# hostname是命令
# 扫描新加的磁盘
alias scandisk="echo '- - -' > /sys/class/scsi_host/host0/scan;echo '- - -' > /sys/class/scsi_host/host1/scan;echo '- - -' > /sys/class/scsi_host/host2/scan"
删除别名
ualias [别名]
注意:在命令行中定义别名,仅对当枪shell进程有效
如果想永久有效,要定义在配置文件中
- 仅对当前用户:~/.bashrc
- 对所有用户有效:/etc/bashrc
编辑配置给出的新配置不会立即生效,bash需要重新读取配置文件。
source /etc/bashrc
suorce .bashrc
别名与原始命令重复的话,别名优先级高,想使用的话 ‘原始命令’。
常见硬件信息命令
查看CPU
lscpu命令可以查看CPU信息
cat /proc/cpuinfo 也可以查看到
[20:20:49 root@yyc ~]#lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit,