目录
第二天
2.1 访问命令行
Linux的操作界面常称为Shell
Shell是操作系统提供给用户使用的界面(图形、字符),它提供了用户与内核进行交互操作的一种接 口。当用户发出指令(命令或鼠标操作),先将这些指令发送给Shell,由Shell将用户的指令翻译后传送给内 核,再由内核来控制硬件的工作。然后内核将硬件的工作情况发送给Shell,并由Shell返回硬件的工作信息和情况。
Shell的分类:
图形界面的Shell :KDE、GNOME
字符界面的Shell(命令行Shell)
查看shell的类型
方法1:cat /etc/shells
[root@localhost ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
方法2:chsh -l
[root@localhost ~]# chsh -l
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
查看当前默认的shell
[root@localhost ~]# echo $SHELL
/bin/bash
Shell提示符:#和$
对于普通用户,Base shell 默认的提示符是美元符号 $ ;对于超级用户(root 用户),Bash Shell 默认 的提示符是井号 #
普通用户登录:[当前登录用户@主机名 当前工作目录 ] $
root用户登录:[root@主机名 当前工作目录 ] #
这种格式包含了以下三个方面的信息:
启动 Shell 的用户名,也即 root;
本地主机名称,也即 localhost;
当前目录,波浪号~是主目录的简写表示法。
Shell 通过PS1和PS2两个环境变量来控制提示符格式:
PS1 控制最外层命令行的提示符格式。
PS2 控制第二层命令行的提示符格式。
[root@localhost ~]# echo $PS1
[\u@\h \W]\$
[root@localhost ~]# echo $PS2
第1个虚拟终端(tty1)是图形界面
第2~第6个虚拟终端(tty2~tty6)是字符界面 图形终端-->字符终端:ctrl+Alt+F2~F6
字符终端-->字符终端:Alt+F2~F6
字符终端-->图形终端: 方法1:Alt+F1
方法2:登录后输入startx
方法3:登录后输入init 5
通过网络登录:
ssh remoteuser@remotehost
ssh root@192.168.150.200
logout(注销):使用Ctrl+d或exit
2.2 使用桌面访问命令行
方法1:在活动概览中,从仪表板选择终端
方法2:Alt+F2,打开Enter a Command,输入gnome-terminal
2.3 常用简单命令
常用系统工作命令
1.echo命令
echo命令用于在终端设备上输出字符串或变量提取后的值,语法格式为:
“echo [字符串] [$变量]”。
这是在Linux系统中最常用的几个命令之一,但操作却非常简单,执行“echo 字符串”或“echo $变量”就可 以,其中$符号意思是提取变量的实际值,以便后续的输出操作。
例如,把指定字符串“kongd.com”输出到终端屏幕的命令为:
# echo kongd.com
该命令会在终端屏幕上显示此信息: kongd.com
下面,我们使用“$变量”的方式提取变量出SHELL的值,并将其输出到屏幕上:
[root@kongd ~]# echo $SHELL
/bin/bash
2.date命令
date命令用于显示或设置系统的时间与日期,语法格式为:“ date [+指定的格式]”。
用户只需在强大的date命令后输入以“+”号开头的参数,即可按照指定格式来输出系统的时间或日期,这 样在日常工作时便可以把备份数据的命令与指定格式输出的时间信息结合到一起。例如,把打包后的文 件自动按照“年-月-日”的格式打包成“backup-2020-9-1.tar.gz”,用户只需要看一眼文件名称就能大概了 解到每个文件的备份时间了。date命令中常见的参数格式及作用如表2-4所示。
表2-4 date命令中的参数以及作用
按照默认格式查看当前系统时间的date命令如下所示:
[root@kongd ~]# date
Sat Sep 5 09:13:45 CST 2020
按照“年-月-日 小时:分钟:秒”的格式查看当前系统时间的date命令如下所示:
[root@kongd ~]# date "+%Y-%m-%d %H:%M:%S"
2020-09-05 09:14:35
将系统的当前时间设置为2020年11月1日8点30分的date命令如下所示:
[root@kongd ~]# date -s "20201101 8:30:00"
Sun Nov 1 08:30:00 CST 2020
再次使用date命令并按照默认的格式查看当前的系统时间,如下所示:
[root@kongd ~]# date
Sun Nov 1 08:30:08 CST 2020
date命令中的参数%j可用来查看今天是当年中的第几天。这个参数能够很好地区分备份时间的新旧,即 数字越大,越靠近当前时间。该参数的使用方式以及显示结果如下所示:
[root@kongd ~]# date "+%j"
306
3.timedatectl命令
timedatectl命令用于设置系统的时间,英文全称为:“time date control”,语法格式为:“ timedatectl [参数]”。
发现电脑时间跟实际不符?如果只差几分钟的话,我们可直接调整,但如果差几个小时,那么除了调整当前的时间,还有必要检查下时区了,timedatectl命令中常见的参数格式及作用如2-5所示。
表2-5 timedatectl命令中的参数以及作用
查看系统时间与时区:
[root@kongd ~]# timedatectl status
Local time: Sun 2020-09-06 19:51:22 CST
Universal time: Sun 2020-09-06 11:51:22 UTC
RTC time: Sun 2020-09-06 19:51:21
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: no
NTP service: inactive
RTC in local TZ: no
如果您查到的时区不是上海(Asia/Shanghai),可以手动进行设置:
[root@kongd ~]# timedatectl set-timezone Asia/Shanghai
如果时间还是不正确,我们可以手动的修改系统日期:
[root@kongd ~]# timedatectl set-time 2021-05-18
而如果想修改时间的话,也很简单:
[root@kongd ~]# timedatectl set-time 9:30
[root@kongd ~]# date
Tue May 18 09:30:01 CST 2021
4.reboot命令
reboot命令用于重启系统,输入后回车执行即可。 由于重启计算机这种操作会涉及硬件资源的管理权限,因此最好使用root管理员来重启,普通用户可能 会被拒绝,其命令如下:
[root@kongd ~]# reboot
5.poweroff命令
poweroff命令用于关闭系统,输入后回车执行即可。 与上面相同,该命令也会涉及到硬件资源的管理权限,因此最好还是用root管理员来关闭电脑,其命令 如下:
[root@kongd ~]# poweroff
6.wget命令
wget命令用于在终端命令行里下载网络文件,英文全称为:“web get”
语法格式为:“wget [参数] 网址”。
无需打开浏览器,直接在命令界面就能下载文件,但如果您没有Linux系统的管理经验,当前只需了解一 下wget命令的参数以及作用,然后看一眼下面的演示实验就够了,切记不要急于求成。后面章节将逐步 讲解Linux系统的配置管理方法,可以等掌握了网卡的配置方法后再来进行这个实验操作。表2-6所示为wget命令的参数以及参数的作用。
2.4 使用 Bash 执行命令
1、Shell命令一般格式
Shell命令的一般格式: 命令名 [选项] [参数]
其中命令名、选项、参数之间使用空格隔开,多余的空格将被忽略,而用方括号括起来的部分表明该项是可 省略的,如直接在提示符后面输入命令date,显示当前的日期和时间。
(1)命令名——决定了该命令“做什么”
命令名由小写的英文字母构成,往往是表示相应功能的英文单词或单词的缩写
(2)选项——决定了该命令“怎么做”
不同的命令,其能够使用的的选项也会不同(数量和内容),以“-”(半角的减号符)引导,多个选项可用一个“-”连起来,如“-la”等同于“-l-a”。注意“-”一般不能省略,个别命令的选项中的减号可以省略。
例如:tar命令。
(3)参数——决定了该命令“对谁做”
参数提供命令执行所需提供的一些相关信息或者是命令执行过程中所使用的文件名。有一些命令可以完 全不用参数,而有一些则可能需要多个参数。
(4)Linux的命令、选项、参数均区分大小写,大多数情况下是小写。
(5)按【Ctrl+C】键可中断正在执行的命令。
2、命令、选项和参数的自动补全
[root@localhost ~]# rpm -q bash-completion
bash-completion-2.7-5.el8.noarch
两种补全:
补全命令:输入命令关键字的前几个字符后,按Tab键,可实现命令自动补全。
补全文件名和目录名(当前路径下的)
3、bash shell提示符
[root@localhost ~]# echo $PS1
[\u@\h \W]\$ [root@localhost ~]# -->root用户提示符
[test@localhostr ~]$ -->普通用户提示符
PS1常用的参数含义如下:
\d :#代表日期,格式为weekday month date,例如:"Mon Aug 1"
\H :#完整的主机名称
\h :#仅取主机的第一个名字
\t :#显示时间为24小时格式,如:HH:MM:SS
\T :#显示时间为12小时格式
\A :#显示时间为24小时格式:HH:MM
\u :#当前用户的账号名称
\v :#BASH的版本信息
\w :#完整的工作目录名称
\W :#利用basename取得工作目录名称,所以只会列出最后一个目录
\# :#下达的第几个命令
\$ :#提示字符,如果是root时,提示符为:# ,普通用户则为:$
2.5 命令帮助
1.查看命令的类型: type
Linux中对应的命令的类型分为内部命令和外部命令,外部命令对应的是path环境变量下可以找到的与 命令名称一致的文件的名称,其中每一个外部命令对应的是一个可执行的程序。内部命令是外部命令中 含有的命令的,比如bash中存在内部的命令cd ,内部命令的对应的信息展示固定。
#help可以列出系统所有内部命令
内部命令一般可以使用 help 命令,查看帮助
2.帮助命令
1)help内部命令帮助,查看bash内部命令帮助
用法:1.help内部命令:# help cd
用法2:命令 --help
即命令的“--help”选项,适用于大多数外部命令
# ls ——help
下面是对于命令的语法的一些符号的说明:
[] :表示的是可选
...: 表示的可以存在多个参数
|表示是可选的
<>:必填
{}:表示作为一个整体存在的
示例如下:ls [OPTION]... [FILE]... 表明ls后面可以加上多个可选的选项以及多个f可选的文件参数。
2)man用来提供在线帮助,使用权限是所有用户。在Linux系统中存储着一部联机使用的手册,以 供用户在终端上查找。使用man命令可以调阅其中的帮助信息,非常方便实用。
(1)用法:man命令:#man ls
man[-acdfhkktwW] [-m system] [-p string] [-C config_file] [-Mpath] [-P pager] [-S section_list][section] name...
(2)参数
-C config_file:指定设定文件man.conf,缺省值是/etc/man.conf。
# man 1 man
# man 7 man
man的帮助级
区段1:用户指令,查看命令的帮助
区段2:系统调用,查看可被内核调用的函数的帮助
区段3:程序库调用,查看函数和函数库的帮助
区段4:设备,查看特殊文件的帮助(主要是/dev目录下的文件)
区段5:文件格式,查看配置文件的帮助
区段6:游戏,查看游戏的帮助
区段7:杂项,查看其它杂项的帮助
区段8:系统指令,查看系统管理员可用的命令的帮助
区段9:内核内部指令,查看内核相关文件的帮助
区段n:Tcl或Tk指令
在man命令帮助信息的界面中,所包含的常用操作按键及其用途如表2-2所示。
一般来讲,使用man命令查看到的帮助内容信息都会很长很多,如果读者不了解帮助文档信息的目录结 构和操作方法,乍一看到这么多信息可能会感到相当困惑。man命令的帮助信息的结构如表2-3所示。
3)pinfo
使用pinfo命令可以查看info文件。
pinfo命令将搜索当前目录、/usr/share/info、/usr/info、/usr/local/share/info、/usr/local/info及/opt/info等目录。
info 命令的帮助信息是一套完整的资料,每个单独命令的帮助信息只是这套完整资料中的某一 个小章节。
命令语法:
pinfo[选项][info|manua]
pinfo命令选项含义
2.6 Linux系统的目录结构
1.Linux目录结构的特点
分区 ‘加载’ 于目录结构:
使用树形目录结构来组织和管理文件。
整个系统只有一个位于根分区的一个根目录(树根)、一棵树
其他所有分区、目录、文件以及外部设备(如硬盘、光驱等)都是以根目录为起点,挂接在目录树的 某个目录中的
通过访问挂载点目录,即可实现对这些分区的访问。
Linux的根目录用“/”表示
Windows的目录结构属于分区;
每个主分区或逻辑分区都有一个独立的根目录和相应的树形目录结构,各分区采用盘符进行区分和标 识。
2.工作目录、用户家目录及路径
用“路径”来表示某个文件(或目录)在目录结构中所处的位置。顾名思义,路径是指从树型目录中的某个目录 层次到达某一文件或子目录的一条线路,路径由以“/”为分隔符的多个目录名构成。
路径可分为:
绝对路径:是指以根目录“/”为起点来表示系统中某个文件(或目录)的位置的方式
相对路径:是以当前目录为起点,表示系统中某个文件或目录在目录结构中的位置的方式。
3. Linux的文件类型大致可分为:
普通文件:用于存放数据、程序等信息的文件。
目录文件:是由文件系统中一个目录所包含的目录项组成的文件。
链接文件:又称符号链接文件, 用于不同目录下文件的共享。实际上它指向另一个文件。
设备文件:用于与I/O设备提供连接的一种文件,分为
块设备文件:表示磁盘、光盘等
字符设备文件:联系着按照字符进行操作的终端、键盘等设备。
管道文件:主要用于在进程间传递数据。
套接字文件 :套接字(socket)文件通常用于网络数据连接。
说明:Linux没有隐藏属性,文件或目录要实现隐藏,在命名时只要以“.”开头即可。 对于隐藏文件或目录,必须使用带“-a”参数的ls命令才能查看到。
查看文件系统类型:
方法1:使用ls -l 方法2: 使用file
2.7 目录操作命令
路径 (定位文件)
你要在哪儿创建文件? 你要将什么文件复制到什么地方? 你要删除什么地方的什么文件
/home/alice/file1 和 /home/bob/file1 不是同一文件!!!
/abc/file5 和 abc/file5 有可能是不一样的!!!
命名规则:
1、长度不能超过255个字符;
2、不能使用/当文件名;
3、严格区分大小写;
绝对路径: 从/开始的路径 /home/alice/file1
相对路径: 相对于当前目录开始 a.txt ./a.txt ../bob/b.txt [假如:此时在目录/home/alice]
1.查看当前的工作目录(Print Working Directory)——pwd命令
2.改变工作目录(Change Directory)——cd命令
# cd /usr/local/lib //改变目录到/usr/local/lib目录下
# cd .. //进入当前目录的父目录
# cd ../etc //进入当前目录的父目录下的etc子目录
# cd ~ //进入root用户登录时的工作目录(家目录) # cd 桌面 //进入当前目录下的“桌面”子目录
# cd //进入当前用户的家目录
3.列表(list)显示目录内容——ls命令
命令格式:ls [选项] 文件名或目录名
常用选项:
4.创建目录(make directory)——mkdir命令
命令格式: mkdir [-p] [/路径/]目录名
-p——可快速创建出目录结构中指定的每个目录,对于已存在的目录不会被覆盖
5.统计目录及文件的空间占用情况——du命令 功能:查看某个目录中的各级子目录所占用的磁盘空间数。
命令格式: du [选项] [目录名]
如果不跟目录名,则缺省为当前目录。
选项:
2.8 文件操作命令
1.新建空文件或更新已有文件或目录的修改日期——touch命令
格式: touch [选项] 文件或目录名列表
功能: 若指定的文件或目录已存在,则将文件或目录的日期和时间修改为当前系统的日期和时间。 若指定的文件不存在,则以指定的文件名创建空文件
选项:
stat 命令
stat 是查看文件详细信息的命令,而且可以看到文件的这三个时间, 其基本信息如下。
命令名称: stat。
英文原意: display file or file system status。
所在路径: /usr/bin/stat。
执行权限:所有用户。 功能描述:显示文件或文件系统的详细信息。
[root@localhost ~]# stat anaconda-ks.cfg
文件: "anaconda-ks.cfg"
大小: 1453 块: 8 IO 块: 4096 普通文件 设备:803h/2051dInode:33574991 硬链接: 1
权限: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
环境: system_u:object_r:admin_home_t:s0
最近访问: 2018-11-06 23:22:23.409038121 +0800
最近更改: 2018-10-24 00:53:08.760018638 +0800 #数据修改时间
最近改动: 2018-10-24 00:53:08.760018638 +0800 #状态修改时间
创建时间: -
2.复制(copy)文件或目录--cp命令
功能:目录或文件的复制。 命令:cp [选项] 源文件 目标文件
选项:
3.移动(mv)文件或目录--mv命令
mv命令用于剪切或重命名文件,英文全称为:“move”,语法格式为:“mv [参数] 源文件名称目标文件 名称”。
剪切操作不同于复制操作,因为它会把源文件删除掉,只保留剪切后的文件。如果在同一个目录中将某 个文件剪切后还粘贴到当前目录下,其实本质就是对文件进行了重命名操作:
[root@kongd ~]# mv x.log linux.log
[root@kongd ~]# ls
install.log linux.log
4.删除(remove)文件或目录--rm命令
格式:rm [选项] 文件或目录名及路径
功能:删除文件或目录,可包含一个或多个文件名(各文件间用空格分隔)或用通配符表达,以实现删除多 个文件或目录。
选项:
5.为文件或目录建立链接(Link)——ln命令
命令格式: ln [选项] 被链接的源文件或目录 链接文件或目标目录
选项:
-s——建立符号链接(软链接),不加该选项时建立的链接为硬链接。
-f——删除已经存在目标文件与源文件之间的链接关系。
-i——交互式地删除目标文件与源文件之间的链接关系。
2.9 vi编辑器
Vim文本编辑器
Vim的发布最早可以追溯到1991年,英文全称为:“Vi IMproved”,也就是对vi编辑器的提升版本,其中 最大的改进当属对代码的着色功能,亦有些编程场景能够自动修正错误代码。
Vim编辑器模式的切换方法
在每次运行Vim编辑器时,默认进入命令模式,此时需要先切换到输入模式后再进行文档编写工作,而 每次在编写完文档后需要先返回命令模式,然后再进入末行模式,执行文档的保存或退出操作。在Vim中,无法直接从输入模式切换到末行模式。
基础命令: