系列文章目录
【跟小嘉学 Linux 系统架构与开发】一、学习环境的准备与Linux系统介绍
【跟小嘉学 Linux 系统架构与开发】二、Linux发型版介绍与基础常用命令介绍
前言
本系列文章,我们将讲述Linux操作系统和Linux集群架构、Shell脚本编程、Linux系统开发等相关知识点。我们需要注意《鸟哥的linux私房菜》中文版才到第三版用的CentOS5,繁体版使用的CentOS7。
参考资料
《鸟哥的Linux私房菜繁体版》
《鸟哥的Linux私房菜简体版》
一、 Linux 发行版(Linux distribution)介绍
Linux 发行版(Linux distribution)是指一个基于 Linux 内核的操作系统,由一组软件包组成,包括操作系统内核、系统工具、应用程序、图形界面等。发行版通过整合和配置这软件包,使得用户可以方便地安装、配置和使用Linux系统,
目前由许多不同的 Linux 发行版可供选择,每个发行版都有自己的特点和目标用户群,一些常见的Linux发行版包括:
- 1、Ubuntu:基于 Debian 发行版,注意易用性和用户友好性,适用于桌面和服务器环境;
- 2、Fedora:由 RedHat 公司支持的发行版,注意最新的软件和技术,使用于开发者和技术爱好者
- 3、CentOS:基于Red Hat Enterprise Linux(RHEL)源代码的发行版,注重稳定性和可靠性,适用于企业和服务器环境。
- 4、Debian:非商业性质的发行版,注重自由软件原则和稳定性,适用于各种用途。
- 5、Arch Linux:注重简洁和灵活性的发行版,适用于有技术基础的用户。
- 6、Kali Linux:Kali Linux是一种基于Debian的操作系统,专门用于渗透测试和网络安全应用。它提供了一系列的安全工具和脚本,用于评估和保护计算机系统的安全性。Kali Linux是一个开放源代码项目,由Offensive Security开发和维护。它包含了多个渗透测试工具,如Metasploit、Nmap、Wireshark等,以及用于无线网络攻击、密码破解、漏洞利用等的工具。Kali Linux也被广泛用于网络安全培训和认证。
二、Centos 虚拟机初始化 和基础命令介绍
2.1、初始化centos7
vagrant init centos/7
vagrant up
此时,我们可以看到 VisualBox 上面有一个正在运行的虚拟机。
此时虚拟机是无界面启动的,我们可以点击 显示按钮,打开虚拟机显示界面。
2.2、登录虚拟机
此时,我们打开了虚拟机显示界面,可以看到 Cenos 的登录界面。
- CentOS Linux 7 (Core):显示的 Linux 发行版的名称(Centos 7)
- Kernel 3.10.0-1127.e17.x86_64 on an x86_64:显示的 Linux 内核的版本为 3.10.0-1127.e17.x86_64, 且目前这部主机的硬件为 x86_64
- 10 login: 那个10 是你的主机名称,root 是登录账号的名称,一般不建议推荐使用;
- Password:这一行就是输入密码,输入密码的时候不会显示字样
- Last login: 这一行列出使用者上一次这个账号登录系统等时间与终端等名称。
- [root@10 ~]# : 这一行显示的用户名@主机名 ~表示当前所在的目录为用户主目录,也就是/root 或/home/用户名(普通用户),# 则是超级管理员 root账户的提示符,$ 则是普通账户的提示符(这部分我们会在用户管理详细讲解)。
2.3、推出登录
[root@10 ~]$ exit
2.4、Shell 命令的语法格式
[vagrant@10 ~]$ command [-options] paremeter1 parameter2 ...
- command: 命令或可执行程序或脚本(script)的名称,例如 cd、ls、exit等
-[] 表示可选项,通常选项带有 - 号(缩写) 或–符号(全称) ,例如:-h、–help; - parameter1,parameter2 为依附在选项后面的参数,或事 command的参数;
- z指令选项,可以有多个以空格区分,不论空格有多少个 都是认为是一个空格;
- 按下 enter 键,命令就会立即执行
- 如果指令太长,可以使用 反斜杠(\ )来转义Enter符号,链接到下一行。
- 在Linux 系统中,英文大小写字母是不同的,例如 CD和cd 是不同的命令。
这部分详细介绍,我们也会在 Bash 专题来讲解。
2.5、语系的支持
有时候,我们的终端会出现乱码,由于我们的系统有时候不支持中文编码输出。
2.5.1、显示支持的语言
[root@10 ~]# locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
使用 locale -a
可以列出本机目前可以使用的值,locale -av
还可以具体查看这些值更详细的信息。
这些内容都是环境与 Local 地区相关的环境变量。
- LC_CTYPE :语言符号及其分类
- LC_NUMERIC:数字
- LC_COLLATE:比较和排序习惯
- LC_TIME:时间显示格式
- LC_MONETARY:货币单位
- LC_MESSAGES:信息主要是提示信息,错误信息、状态信息、标题、标签、按钮和菜单等
- LC_PAPER:默认纸张尺寸大小
- LC_NAME:姓名书写方式
- LC_ADDRESS:地址书写方式
- LC_MEASUREMENT:度量衡表达方式
- LC_IDENTIFICATION:对 locale 自身包含的信息的概述
这些 local 定义文件放在 /usr/share/i18n/locales 目录下,例如 en_US、zh_CN 都是 locale 的定义文件。
[root@10 locales]# pwd
/usr/share/i18n/locales
[root@10 locales]# ls
aa_DJ en_IE is_IS sat_IN
aa_ER en_IE@euro iso14651_t1 sc_IT
aa_ER@saaho en_IN iso14651_t1_common sd_IN
aa_ET en_NG iso14651_t1_pinyin sd_IN@devanagari
af_ZA en_NZ it_CH se_NO
am_ET en_PH it_IT shs_CA
an_ES en_SG it_IT@euro sid_ET
ar_AE en_US iu_CA si_LK
Locale 是软件在运行时的语言环境,它包括了语言(Language)、地域(Territory)和字符集(Codeset),一个local的书写格式为: 语言[_地域[.字符集]],
例如:
zh_CN.UTF-8
zh_CN.GB18030
LC_ALL、LANG和LC_* 均不指定特定的值,系统将会采用 POSIX作为 locale,也就是C locale。
LC_ALL 也是 glibc 定义的一个宏.
2.5.2、修改语言支持
2.5.2.1、修改当前shell的值
显示的目前系统的语言支持为 en_US.UTF-8,LANG 只与输出信息有关,如果要更改其他不同的内容,需要同步LC_ALL 才行
export LC_ALL=en_US.utf8
2.5.2.2、修改当前用户的配置
~/.config/locale.conf
2.5.2.3、修改系统级的设置
[root@10 locales]# cat /etc/locale.conf
LANG="en_US.UTF-8"
2.5.2.4、通过 localectl 来修改
localectl set-locale LANG=en_US.utf8
localectl 命令可以查看和设置区域和键盘布局的命令
2.5.3、常见问题
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LC_CTYPE、LC_MESSAGES、LC_ALL 没有设置正确的值,一般跨操作系统的ssh 才有可能导致这个问题,例如从 Mac OS 上 ssh 登录到 LInux,由于 Mac OS 变量值的格式 和 linux 不同,ssh 时又会自动去设置,会有LC_CTYPE=UTF-8
的情况出现,而整个语法在linux中是错误的。只要输入export LC_CTYPE="en_US.utf8"
即可修复
2.6、基础命令介绍
2.6.1、日期与时间命令:date
2.6.1.1、命令简介
date
命令用于显示和设置系统的日期与时间,它可以显示当前的日期与时间,也可以根据指定的格式来输出日期和时间信息,在系统管理和脚本编写中经常被使用。
2.6.1.2、命令的基本语法
date [选项] [+格式]
- [选项] 是可选的命令,用于控制 date 命令的行为;
- [+格式]是可选的日期和时间的格式,用于指定输出的日期和时间的格式;
2.6.1.3、常用的 date 命令选项
-d
:指定要显示的日期和时间,可以是具体的日期和时间字符串,也可以是表示时间间隔的字符串。-u
:显示协调世界时(UTC)。-R
:以 RFC 2822 格式输出日期和时间。-I
:以 ISO 8601 格式输出日期和时间。-s
:设置系统的日期和时间。-r
:显示指定文件的最后修改时间。--help
:显示帮助信息,列出可用的选项和参数。
2.6.1.4、常用的命令格式
%Y
:四位数的年份。- %m:两位数的月份(01-12)
- %d:两位数的日期(01-31)。
- %H:两位数的小时(00-23)。
- %M:两位数的分钟(00-59)。
- %S:两位数的秒数(00-59)。
- %A:完整的星期几名称(例如:Sunday)。
- %a:缩写的星期几名称(例如:Sun)。
- %B:完整的月份名称(例如:January)。
- %b:缩写的月份名称(例如:Jan)。
2.6.1.5、用法示例
1、显示当前日期和时间
[vagrant@10 ~]$ date
Fri Mar 29 21:02:26 UTC 2024`
上面显示的星期五,三月29日 21:02:26,在2024年UTC 时区。
2、显示指定格式的日期和时间
[vagrant@10 ~]$ date +"%Y-%m-%d %H:%M:%S"
2024-03-29 21:15:59
3、设置系统的日期和时间
[vagrant@10 ~]$ sudo date -s "2024-03-31 17:39:08"
Sun Mar 31 17:39:08 UTC 2024
4、显示目录或文件的最后修改时间
date -r filename
例如
[vagrant@10 ~]$ date -r .bashrc +"%Y-%m-%d %H:%M:%S"
2020-04-01 02:17:30
5、date 命令还支持日期和时间的计算
date
命令支持对日期和时间进行计算和调整。可以使用-d
选项指定要计算的日期和时间,以及要添加或减去的时间间隔。
时间单位
- seconds/second
- minutes/minute
- hours/hour
- days/day
- weeks/week
- months/month
- years/year
例如
1、指定日期后一个月的日期
[vagrant@10 ~]$ date -d "2023-11-15 + 1 month" +"%Y-%m-%d %H:%M:%S"
2023-12-15 00:00:00
2、当前日期指定一个小时后的时间
[vagrant@10 ~]$ date -d "+1 hour" +"%Y-%m-%d %H:%M:%S"
2024-03-31 18:44:36
6、date 命令还支持相对日期的表示方式
X seconds ago
:表示 X 秒前的日期。X minutes ago
:表示 X 分钟前的日期。X hours ago
:表示 X 小时前的日期。X days ago
:表示 X 天前的日期。X weeks ago
:表示 X 周前的日期。X months ago
:表示 X 个月前的日期。X years ago
:表示 X 年前的日期。
X 是一个整数,用于指定偏移的数量
2.6.2、日历的命令:cal
2.6.2.1、cal 命令介绍(Calendar)
cal 使用显示当前日历或指定日期的日历 的命令。
2.6.2.2、cal 语法格式
cal [选项] [参数]
2.6.2.3、选项
-l
显示单月输出-3
:显示临近三个月的日历;-s
:将星期日作为月的第一天;-m
:将星期一作为月的第一天;-j
:显示“julian”日期;-y
:显示当前年的日历。-v
:显示版本信息-h
:显示帮助文档
2.6.3、简单好用的计算器:bc
2.6.3.1、bc 命令安装
精简版的系统中 默认是没有安装 bc 命令的,我们可以使用 yum 去安装。
yum install bc -y
2.6.3.2、bc 命令使用
[root@10 ~]# bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
1+2+3
6
此时,光标就会停留在你要输入的地方。
如果你要进行小数的计算,那么就必须设置计算精度 scale=number ,就是设置小数点的位数。
如果你要退出bc计算器 可以使用 quit 命令。
三、重要的快捷键
3.1、Tab 按键
在 类Unix系统中的 shell,Tab 提供的是文件名和命令补全的功能,如果我们输入 ca 按两次Tab 键,会输出 所有 ca开头的命令
[root@10 ~]# ca
cacertdir_rehash ca-legacy capsh case catchsegv
cal caller captoinfo cat catman
如果输入ls -al ~/.bash
按两次 tab
[root@10 ~]# ls -al ~/.bash
.bash_history .bash_logout .bash_profile .bashrc
在某些特殊的命令下,tab可以变成 参数或选项补齐
[root@10 ~]# date --
--date --help --reference= --rfc-3339= --universal
--date= --iso-8601 --rfc-2822 --set= --version
使用 tab 可以避免很多输入错误的机会。
3.2、CTRL+C按键
CTRL+C 组合按键可以中断当前的程序的运行。
3.3、CTRL+D按键
CTRL+D 组合按键代表啦 输入结束(End of File,EOF 或 End Of Input的意思,某些情况下代表了 exit。
3.4、[shift]+{[PageUP]|[Page Down]}按鍵
使用 [shift]+{[PageUP]|[Page Down]} 可以进行向前翻页和向后翻页。
四、错误信息的查看
[root@10 ~]# DATE
-bash: DATE: command not found
-bash 表示 shell 的名称,command not found 表示命令找不到,可能的原因是
- 命令不存在,因为软件没有安装,解决方案就是安装相关软件;
- 这个命令所在目录和用户没有将他加入命令搜索路径中(PATH);
- 打错单词了
非精简安装的可能会有 Similar command is: 'date'
的提示,表示相似的命令有 date
,这也是一种解决方案的参考。