【跟小嘉学 Linux 系统架构与开发】二、Linux发型版介绍与基础常用命令介绍

系列文章目录

【跟小嘉学 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,这也是一种解决方案的参考。

最近更新

  1. TCP协议是安全的吗?

    2024-04-01 19:52:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-01 19:52:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-01 19:52:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-01 19:52:01       20 阅读

热门阅读

  1. 如何利用ChatGPT提升学术研究的效率

    2024-04-01 19:52:01       16 阅读
  2. UML统一建模语言

    2024-04-01 19:52:01       16 阅读
  3. 拉普拉斯变换

    2024-04-01 19:52:01       10 阅读
  4. JQuery入门基础

    2024-04-01 19:52:01       21 阅读
  5. 组件 v-model

    2024-04-01 19:52:01       18 阅读
  6. HashMap 的扩容因子为什么是 0.75?

    2024-04-01 19:52:01       15 阅读
  7. Spring整合JDBC

    2024-04-01 19:52:01       16 阅读