目录
2.1 访问命令行
2.2 使用桌面访问命令行
2.3 常用简单命令
1.echo命令
2.date命令
3.timedatectl命令
4.reboot命令
5.poweroff命令
6.wget命令
2.4使用Bash执行命令
2.5 命令帮助
2.6 Linux系统的目录结构
2.7 目录操作命令
2.9 vi编辑器
Linux的操作界面常称为Shell Shell是操作系统提供给用户使用的界面(图形、字符),它提供了用户与内核进行交互操作的一种接口。当用户发出指令(命令或鼠标操作),先将这些指令发送给Shell,由Shell将用户的指令翻译后传送给内核,再由内核来控制硬件的工作。然后内核将硬件的工作情况发送给Shell,并由Shell返回硬件的工作信息和情况。
Shell的分类: 图形界面的Shell :KDE、GNOME
字符界面的Shell(命令行Shell)
查看shell的类型
方法1:cat /etc/shells
[root@rhcsa ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
方法2:chsh -l
[root@rhcsa ~]# chsh -l
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
查看当前默认的shell
[root@rhcsa ~]# echo $SHELL
/bin/bash
Shell提示符:#和$
对于普通用户,Base shell 默认的提示符是美元符号 $ ;对于超级用户(root 用户),Bash Shell 默认的提示符是井号 # 。
普通用户登录:[当前登录用户@主机名 当前工作目录 ] $
root用户登录:[root@主机名 当前工作目录 ] #
这种格式包含了以下三个方面的信息:
启动 Shell 的用户名,也即 root;
本地主机名称,也即 localhost;
当前目录,波浪号~是主目录的简写表示法。
Shell 通过PS1和PS2两个环境变量来控制提示符格式:
PS1 控制最外层命令行的提示符格式。
PS2 控制第二层命令行的提示符格式。
[root@rhcsa ~]# echo $PS1
[\u@\h \W]\$
[root@rhcsa ~]# 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 [email protected]
logout(注销):使用Ctrl+d或exit
方法1:在活动概览中,从仪表板选择终端(alt + F1)
方法2:Alt+F2,打开Enter a Command,输入gnome-terminal
常用系统工作命令
echo命令用于在终端设备上输出字符串或变量提取后的值,语法格式为:“echo [字符串] [$变量]”。
这是在Linux系统中最常用的几个命令之一,但操作却非常简单,执行“echo 字符串”或“echo $变量”就可以,其中$符号意思是提取变量的实际值,以便后续的输出操作。
例如,把指定字符串“kongd.com”输出到终端屏幕的命令为:
# echo kongd.com
该命令会在终端屏幕上显示如下信息:
kongd.com
下面,我们使用“$变量”的方式提取变量出SHELL的值,并将其输出到屏幕上:
[root@rhcsa ~]# echo $SHELL
/bin/bash
date命令用于显示或设置系统的时间与日期,语法格式为:“ date [+指定的格式]”。
用户只需在强大的date命令后输入以“+”号开头的参数,即可按照指定格式来输出系统的时间或日期,这样在日常工作时便可以把备份数据的命令与指定格式输出的时间信息结合到一起。例如,把打包后的文件自动按照“年-月-日”的格式打包成“backup-2020-9-1.tar.gz”,用户只需要看一眼文件名称就能大概了解到每个文件的备份时间了。date命令中常见的参数格式及作用如表2-4所示。
表2-4 date命令中的参数以及作用
按照默认格式查看当前系统时间的date命令如下所示:
[root@rhcsa ~]# date
Wed Oct 19 12:09:44 CST 2022
按照“年-月-日 小时:分钟:秒”的格式查看当前系统时间的date命令如下所示:
[root@rhcsa ~]# date "+%Y-%m-%d %H:%M:%S"
2022-10-19 12:10:35
将系统的当前时间设置为2020年11月1日8点30分的date命令如下所示:
[root@rhcsa ~]# date -s "20231019 13:00:00"
Thu Oct 19 13:00:00 CST 2023
再次使用date命令并按照默认的格式查看当前的系统时间,如下所示:
[root@rhcsa ~]# date
Thu Oct 19 13:00:45 CST 2023
date命令中的参数%j可用来查看今天是当年中的第几天。这个参数能够很好地区分备份时间的新旧,即数字越大,越靠近当前时间。该参数的使用方式以及显示结果如下所示:
[root@rhcsa ~]# date "+%j"
292
timedatectl命令用于设置系统的时间,英文全称为:“time date control”,语法格式为:“ timedatectl[参数]”。
发现电脑时间跟实际不符?如果只差几分钟的话,我们可以直接调整,但如果差几个小时,那么除了调整当前的时间,还有必要检查下时区了,timedatectl命令中常见的参数格式及作用如表2-5所示。
表2-5 timedatectl命令中的参数以及作用
查看系统时间与时区:
[root@rhcsa ~]# timedatectl status
Local time: Wed 2022-10-19 18:44:07 CST
Universal time: Wed 2022-10-19 10:44:07 UTC
RTC time: Wed 2022-10-19 10:43:45
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: no
NTP service: inactive
RTC in local TZ: no
如果您查到的时区不是上海(Asia/Shanghai),可以手动进行设置:
[root@rhcsa ~]# timedatectl set-timezone Asia/Shanghai
如果时间还是不正确,我们可以手动的修改系统日期(如果只设置日期,时间会默认被设置为:00:00:00):
[root@rhcsa ~]# timedatectl set-time 2023-10-19
[root@rhcsa ~]# date
Thu Oct 19 00:00:03 CST 2023
而如果想修改时间的话,也很简单:
[root@rhcsa ~]# timedatectl set-time 20:04:00
[root@rhcsa ~]# date
Wed Oct 19 20:04:10 CST 2022
reboot命令用于重启系统,输入后回车执行即可。
由于重启计算机这种操作会涉及硬件资源的管理权限,因此最好使用root管理员来重启,普通用户可能会被拒绝,其命令如下:
[root@rhcsa ~]# reboot
poweroff命令用于关闭系统,输入后回车执行即可。
与上面相同,该命令也会涉及到硬件资源的管理权限,因此最好还是用root管理员来关闭电脑,其命令
如下:
[root@rhcsa ~]# poweroff
wget命令用于在终端命令行里下载网络文件,英文全称为:“web get”,语法格式为:“wget [参数] 网址”。
无需打开浏览器,直接在命令界面就能下载文件,但如果您没有Linux系统的管理经验,当前只需了解一下wget命令的参数以及作用,然后看一眼下面的演示实验就够了,切记不要急于求成。后面章节将逐步讲解Linux系统的配置管理方法,可以等掌握了网卡的配置方法后再来进行这个实验操作。
表2-6 wget命令的参数以及参数的作用。
[root@rhcsa ~]# wget
http://rpmfind.net/linux/epel/8/Everything/x86_64/Packages/s/sl-5.02-
1.el8.x86_64.rpm
[root@rhcsa ~]# wget -r -p https://www.kongd.com
1、Shell命令一般格式
Shell命令的一般格式如下: 命令名 [选项] [参数]
其中命令名、选项、参数之间使用空格隔开,多余的空格将被忽略(相当于一个),而用方括号括起来的部分表明该项是可省略的,如直接在提示符后面输入命令date,显示当前的日期和时间。
(1)命令名——决定了该命令“做什么” 命令名由小写的英文字母构成,往往是表示相应功能的英文单词或单词的缩写
(2)选项——决定了该命令“怎么做” 不同的命令,其能够使用的的选项也会不同(数量和内容),以“-”(半角的减号符)引导,多个选项可用一个“-”连起来,如“-la”等同于“-l-a”。注意“-”一般不能省略,个别命令的选项中的减号可以省略,如tar命令。
(3)参数——决定了该命令“对谁做” 参数提供命令执行所需提供的一些相关信息或者是命令执行过程中所使用的文件名。有一些命令可以完全不用参数,而有一些则可能需要多个参数。
(4)Linux的命令、选项、参数均区分大小写,大多数情况下是小写。
(5)按【Ctrl+C】键可中断正在执行的命令。
2、命令、选项和参数的自动补全
[root@rhcsa ~]# rpm -q bash-completion
bash-completion-2.7-5.el8.noarch
两种补全:
补全命令:输入命令关键字的前几个字符后,按Tab键,可实现命令自动补全。 补全文件名和目录名(当前路径下的):
3、bash shell提示符
[root@rhcsa ~]# echo $PS1
[\u@\h \W]\$
[root@rhcsa ~]# -->root用户提示符
[rhcsa@rhcsa ~]$ -->普通用户提示符
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时,提示符为:# ,普通用户则为:$
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[-acdfhkktwW] [-m system] [-p string] [-C config_file] [-Mpath] [-P pager] [-S
section_list][section] name...
(2)示例:
# man ls
(3)参数
-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所示。
表2-2 man命令中常用按键以及作用
/ -l :搜索的是l
一般来讲,使用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命令选项含义
1.Linux目录结构的特点
分区 ”挂载“ 于目录结构:
使用树形目录结构来组织和管理文件。
整个系统只有一个位于根分区的一个根目录(树根)、一棵树
其他所有分区、目录、文件以及外部设备(如硬盘、光驱等)都是以根目录为起点,挂接在目录树的某个目录中的
通过访问挂载点目录,即可实现对这些分区的访问。
Linux的根目录用“/”表示
Windows的目录结构属于分区;
每个主分区或逻辑分区都有一个独立的根目录和相应的树形目录结构,各分区采用盘符(C:、D:、E:)进行区分和标识。
2.工作目录、用户家目录及路径
用“路径”来表示某个文件(或目录)在目录结构中所处的位置。顾名思义,路径是指从树型目录中的某个目录层次到达某一文件或子目录的一条线路,路径由以“/”为分隔符的多个目录名构成。 路径可分为:
绝对路径:是指以根目录“/”为起点来表示系统中某个文件(或目录)的位置的方式 相对路径:是以当前目录为起点,表示系统中某个文件或目录在目录结构中的位置的方式。
3.Linux的文件类型大致可分为:
普通文件:用于存放数据、程序等信息的文件。
目录文件:是由文件系统中一个目录所包含的目录项组成的文件。
链接文件:又称符号链接文件, 用于不同目录下文件的共享。实际上它指向另一个文件。
设备文件:用于与I/O设备提供连接的一种文件,分为
块设备文件:表示磁盘、光盘等
字符设备文件:联系着按照字符进行操作的终端、键盘等设备。
管道文件:主要用于在进程间传递数据。
套接字文件 :套接字(socket)文件通常用于网络数据连接。
说明:
Linux没有隐藏属性,文件或目录要实现隐藏,在命名时只要以“.”开头即可。 对于隐藏文件或目录,必须使用带“-a”参数的ls命令才能查看到。
查看文件系统类型:
方法1:使用ls -l
# ls -l /dev/tty1
crw--w---- 1 root tty 4, 1 12月 26 09:20 /dev/tty1
# ls -l /dev/sda
brw-rw---- 1 root disk 8, 0 12月 26 09:20 /dev/sda
# ls -l anaconda-ks.cfg
-rw-------. 1 root root 1486 11月 27 10:26 anaconda-ks.cfg
# ls -l /bin/sh
lrwxrwxrwx. 1 root root 4 11月 27 10:52 /bin/sh -> bash
# ls -ld /tmp/
drwxrwxrwt. 12 root root 4096 12月 26 12:21 /tmp/
# ls -l /run/dmeventd-client
prw------- 1 root root 0 12月 26 09:20 /run/dmeventd-client
# ls -l /dev/log
srw-rw-rw- 1 root root 0 12月 26 09:20 /dev/log
方法2: 使用file
# file anaconda-ks.cfg
anaconda-ks.cfg: ASCII text
# file /dev/sda
/dev/sda: block special
# file /dev/tty1
/dev/tty1: character special
# file /tmp
/tmp: sticky directory
# file /dev/log
/dev/log: socket
# file /bin/sh
/bin/sh: symbolic link to `bash'
# file /run/dmeventd-client
/run/dmeventd-client: fifo (named pipe)
路径(定位文件)
你要在哪儿创建文件?
你要将什么文件复制到什么地方?
你要删除什么地方的什么文件?
/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 是查看文件详细信息的命令,而且可以看到文件的这三个时间, 其基本信息如下。
功能描述:显示文件或文件系统的详细信息。
[root@rhcsa ~]# 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——交互式地删除目标文件与源文件之间的链接关系。
Vim文本编辑器
为什么学vi?
1)所有的Unix Like 系统都会内建 vi 文本编辑器,其他的文本编辑器则不一定会存在; 2)很多个别软件的编辑接口都会主动呼叫 vi (例如未来会谈到的 crontab, visudo, edquota 等指令); 3)vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法癿正确性,方便程序设计; 4)因为程序简单,编辑速度相当快速。
Vim的发布最早可以追溯到1991年,英文全称为:“Vi IMproved”,也就是对vi编辑器的提升版本,其中最大的改进当属对代码的着色功能,亦有些编程场景能够自动修正错误代码。
每当在讲课时遇到需要让学生记住的知识点时,为了能让他们打起精神来,我都会突然提高嗓门,因此有句话他们记得尤其深刻:“在**Linux系统中一切都是文件,而配置一个服务就是在修改其配置文件的参数”。而且在日常工作中大家也肯定免不了要编写文档,这些工作都是通过文本编辑器来完成的。本书的目的是让读者切实掌握Linux系统的运维方法,而不是仅仅停留在“会用某个操作系统”的层面上,所以我们这里选择使用Vim文本编辑器,它默认会安装在当前所有的Linux操作系统上,是一款超棒的文本编辑器。
Vim之所以能得到广大厂商与用户的认可,原因在于Vim编辑器中设置了三种模式—命令模式、末行模式和编辑模式,每种模式分别又支持多种不同的命令快捷键,这大大提高了工作效率,而且用户在习惯之后也会觉得相当顺手。要想高效率地操作文本,就必须先搞清这三种模式的操作区别以及模式之间的切换方法(见图4-1)。
命令模式:控制光标移动,可对文本进行复制、粘贴、删除和查找等工作。
输入模式:正常的文本录入。
末行模式:保存或退出文档,以及设置编辑环境。
图4-1 Vim编辑器模式的切换方法
在每次运行Vim编辑器时,默认进入命令模式,此时需要先切换到输入模式后再进行文档编写工作,而每次在编写完文档后需要先返回命令模式,然后再进入末行模式,执行文档的保存或退出操作。在Vim中,无法直接从输入模式切换到末行模式。Vim编辑器中内置的命令有成百上千种用法。
命令模式中的基本操作——撤销编辑及保存退出
末行模式中的基本操作——保存文件及退出vi编辑器
末行模式中的基本操作——打开新文件或读入其他文件内容
末行模式中的基本操作——文件内容替换
可视化模式
v: 按字符选取
该模式下通过光标移动选择文本,选取后按 y 可以把文本提取到缓冲区(即复制),c 可以剪切。之后
可以使用p在光标后粘贴,P粘贴在光标前
V:按矩形选取
V是行选取模式,以行为单位进行选取。Ctrl+v是块选取模式,可以选取一块矩形区域中的文本。
配置文件
/etc/vimrc
~/.vimrc
set hlsearch "高亮度反白
set backspace=2 "可随时用退格键删除
set autoindent "自动缩排
set tabstop=4 "缩进
set softtabstop=4 softtabstop是“逢4空格进1制表符”,前提是你tabstop=4
set shiftwidth=4 自动缩进空格长度
set mouse=a "使用鼠标
set selection=exclusive
set selectmode=mouse,key
set ruler "可显示最后一行的状态
set showmode "左下角那一行的状态
set nu "可以在每一行的最前面显示行号啦!
set bg=dark "显示不同的底色色调
syntax on "进行语法检验,颜色显示
:1,10 co 5 复制1-10行到第5行后面
:g/#/d 查找#号的行并删除
末行模式主要用于保存或退出文件,以及设置Vim编辑器的工作环境,还可以让用户执行外部的Linux命令或跳转到所编写文档的特定行数。要想切换到末行模式,在命令模式中输入一个冒号就可以了。
编辑器平日里一定要多用,靠的就是个熟练程度,一旦把Vim的各种命令练熟,再编辑配置文件的时候能比同事快不止一倍。