Linux操作系统实战入门

Linux指令入门-文本处理

1. 创建资源

创建资源

  1. 单击屏幕右侧 创建资源 ,免费创建当前实验所需云产品资源。

Linux操作系统实战入门

2. 连接终端

  1. 资源创建完毕后,点击右侧 Web Terminal连接ECS服务器。

Linux操作系统实战入门

3. 文本编辑工具Vim

  1. 文本编辑工具Vim

文本编辑工具Vim
vim的三种操作模式
vim有三种操作模式,分别是命令模式(Command mode)、输入模式(Insert mode)和底线命令模式(Last line mode)。

三种模式切换快捷键:

  • 命令模式

在命令模式中控制光标移动和输入命令,可对文本进行复制、粘贴、删除和查找等工作。

使用命令vim filename后进入编辑器视图后,默认模式就是命令模式,此时敲击键盘字母会被识别为一个命令,例如在键盘上连续敲击两次d,就会删除光标所在行。

  • 输入模式

在命令模式下按i或a键就进入了输入模式,在输入模式下,您可以正常的使用键盘按键对文本进行插入和删除等操作。

  • 底线命令模式

在命令模式下按:键就进入了底线命令模式,在底线命令模式中可以输入单个或多个字符的命令。

4. 文本文件查看命令

文本文件查看命令
cat
命令描述:cat命令用于查看内容较少的纯文本文件。

命令格式:cat [选项] [文件]。

命令参数说明:

参数                               说明
-n或--number                       显示行号
-b或--number-nonblank            显示行号,但是不对空白行进行编号
-s或--squeeze-blank              当遇到有连续两行以上的空白行,只显示一行的空白行

命令使用示例:

  1. 将一个自增序列写入test.txt文件中。
for i in $(seq 1 10); do echo $i >> test.txt ; done
  1. 查看文件内容。
 cat test.txt
  1. 将文件内容清空。
cat /dev/null > test.txt
  1. 再次检查文件内容。
cat test.txt

more

命令描述:more命令从前向后分页显示文件内容。

如下图是常用操作命令:

Linux操作系统实战入门

命令使用示例:

从第20行开始分页查看系统日志文件/var/log/messages。

more +20 /var/log/messages

less
命令描述:less命令可以对文件或其它输出进行分页显示,与moe命令相似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动。

命令格式:less [参数] 文件 。

命令参数说明:

参数     说明
-e       当文件显示结束后,自动离开
-m       显示类似more命令的百分比
-N       显示每行的行号
-s       显示连续空行为一行

命令常用操作:
Linux操作系统实战入门

命令使用示例:

查看命令历史使用记录并通过less分页显示。

history | less

head
命令描述:head命令用于查看文件开头指定行数的内容。

命令格式:head [参数] [文件]。

命令参数说明:

参数            说明
-n [行数]    显示开头指定行的文件内容,默认为10
-c [字符数]    显示开头指定个数的字符数
-q    不显示文件名字信息,适用于多个文件,多文件时默认会显示文件名

实例:

head -5 /etc/passwd

tail
命令描述:tail命令用于查看文档的后N行或持续刷新内容。

命令格式:tail [参数] [文件]。

命令参数说明:

参数    说明
-f    显示文件最新追加的内容
-q    当有多个文件参数时,不输出各个文件名
-v    当有多个文件参数时,总是输出各个文件名
-c [字节数]    显示文件的尾部n个字节内容
-n [行数]    显示文件的尾部n行内容

命令使用示例:

查看/var/log/messages系统日志文件的最新10行,并保持实时刷新。

tail -f -n 10 /var/log/messages

按ctrl+c键退出文本实时查看界面。

stat

命令描述:用来显示文件的详细信息,包括inode、atime、mtime、ctime等。

命令使用示例:

查看/etc/passwd文件的详细信息。

stat /etc/passwd

wc

命令描述:wc命令用于统计指定文本的行数、字数、字节数。

命令格式:wc [参数] [文件]。

命令参数说明:

参数    说明
-l    只显示行数
-w    只显示单词数
-c    只显示字节数

命令使用示例:

统计/etc/passwd文件的行数。

wc -l /etc/passwd

file
命令描述: file命令用于辨识文件类型。

命令格式:file [参数] [文件]。

命令参数说明:

参数    说明
-b    列出辨识结果时,不显示文件名称
-c    详细显示指令执行过程,便于排错或分析程序执行的情形
-f [文件]    指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称
-L    直接显示符号连接所指向的文件类别

命令使用示例:

查看/var/log/messages文件的文件类型。

file /var/log/messages

5. 文本文件处理命令

文本文件处理命令

grep

命令描述:grep命令用于查找文件里符合条件的字符串。

grep全称是Global Regular Expression Print,表示全局正则表达式版本,它能使用正则表达式搜索文本,并把匹配的行打印出来。

在Shell脚本中,grep通过返回一个状态值来表示搜索的状态:

0:匹配成功。
1:匹配失败。
2:搜索的文件不存在。
命令格式:grep [参数] [正则表达式] [文件]。

命令常用参数说明:

参数    说明
-c或--count    计算符合样式的列数
-d recurse或-r    指定要查找的是目录而非文件
-e [范本样式]    指定字符串做为查找文件内容的样式
-E 或 --extended-regexp    将样式为延伸的正则表达式来使用
-F 或 --fixed-regexp    将样式视为固定字符串的列表
-G 或 --basic-regexp    将样式视为普通的表示法来使用
-i 或 --ignore-case    忽略字符大小写的差别
-n 或 --line-number    在显示符合样式的那一行之前,标示出该行的列数编号
-v 或 --revert-match    显示不包含匹配文本的所有行

sed

命令描述:sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用。

  1. 处理时,把当前处理的行存储在临时缓冲区中,称为模式空间(pattern space)。
  2. 接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。
  3. 接着处理下一行,这样不断重复,直到文件末尾。

注意:

sed命令不会修改原文件,例如删除命令只表示某些行不打印输出,而不是从原文件中删去。
如果要改变源文件,需要使用-i选项。
命令格式:sed [参数] [动作] [文件]。

参数说明:

参数    说明
-e [script]    执行多个script
-f [script文件]    执行指定script文件
-n    仅显示script处理后的结果
-i    输出到原文件,静默执行(修改原文件)

动作说明:

动作    说明
a    在行后面增加内容
c    替换行
d    删除行
i    在行前面插入
p    打印相关的行
s    替换内容

awk

命令描述:和 sed 命令类似,awk 命令也是逐行扫描文件(从第 1 行到最后一行),寻找含有目标文本的行,如果匹配成功,则会在该行上执行用户想要的操作;反之,则不对行做任何处理。

命令格式:awk [参数] [脚本] [文件]。

参数说明:

参数    说明
-F fs    指定以fs作为输入行的分隔符,awk 命令默认分隔符为空格或制表符
-f file    读取awk脚本
-v val=val    在执行处理过程之前,设置一个变量var,并给其设置初始值为val

内置变量:

变量    用途
FS    字段分隔符
$n    指定分隔的第n个字段,如$1、$3分别表示第1、第三列
$0    当前读入的整行文本内容
NF    记录当前处理行的字段个数(列数)
NR    记录当前已读入的行数
FNR    当前行在源文件中的行号

能需要在处理数据前运行一些脚本命令,这就需要使用BEGIN关键字,BEGIN会在awsk读取数据前强制执行该关键字后指定的脚本命令。

和BEGIN关键字相对应,END关键字允许我们指定一些脚本命令,awk会在读完数据后执行它们。

cut

命令描述:cut命令主要用来切割字符串,可以对输入的数据进行切割然后输出。

命令格式:cut [参数] [文件]。

参数说明:

参数    说明
-b    以字节为单位进行分割
-c    以字符为单位进行分割
-d    自定义分隔符,默认为制表符

tr

命令描述:tr命令用于对来自标准输入的字符进行替换、压缩和删除。

命令格式:tr [参数] [文本]。

参数说明:

参数    说明
-c    反选指定字符
-d    删除指定字符
-s    将重复的字符缩减成一个字符
-t [第一字符集] [第二字符集]    删除第一字符集较第二字符集多出的字符,使两个字符集长度相等

Linux指令入门-系统管理

1. 创建资源

开始实验之前,您需要先创建ECS实例资源。

在实验室页面,单击创建资源。
(可选)在实验室页面左侧导航栏中,单击云产品资源列表,可查看本次实验资源相关信息(例如IP地址、用户信息等)。
说明:资源创建过程需要1~3分钟。

Linux操作系统实战入门

2. 常用系统工作命令

  • 常用系统工作命令

echo

命令描述:echo命令用于在终端输出字符串或变量提取后的值。

命令格式:echo [字符串 | $变量]

命令用法示例:

  • 显示普通字符串
  • 显示变量

首先在shell环境中定义一个临时变量name。

export name="xxx"

使用echo命令将变量name的值显示到终端。

echo $name
  • 显示结果定向至文件

以下命令会将文本This is a test text.输出重定向到文件test.txt中,如果文件已存在,将会覆盖文件内容,如果不存在则创建。其中>符号表示输出重定向。

echo "This is a test text." > test.txt

如果您希望将文本追加到文件内容最后,而不是覆盖它,请使用>>输出追加重定向符号。

  • 显示命令执行结果

以下命令将会在终端显示当前的工作路径。

echo `pwd`

使用$(command)形式可以达到相同效果。

echo $(pwd)

date

命令描述:date命令用于显示和设置系统的时间和日期。

命令格式:date [选项] [+格式]

  • 按照指定格式查看当前系统时间
date "+%Y-%m-%d %H:%M:%S"
  • 查看今天是当年中的第几天
date "+%j"
  • 将系统的当前时间设置为2020年02月20日20点20分20秒
date -s "20200220 20:20:20"
  • 校正系统时间,与网络时间同步

a. 安装ntp校时工具

yum -y install ntp

b. 用ntpdate从时间服务器更新时间

ntpdate time.nist.gov

wget

命令描述:在终端中下载文件。

命令格式:wget [参数] 下载地址

ps

命令描述:ps命令用于查看系统中的进程状态。

命令格式:ps [参数]。

top

命令描述:top命令动态地监视进程活动与系统负载等信息。

pidof

命令描述:pidof命令用于查询指定服务进程的PID值。

命令格式:pidof [服务名称]。

示例:

查询出crond服务下的所有进程ID。

pidof crond

kill

命令描述:kill命令用于终止指定PID的服务进程。

kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。

命令格式:kill [参数] [进程PID]。

killall

命令描述:killall命令用于终止指定名称的服务对应的全部进程。

命令格式:killall [进程名称]。

命令使用示例:

  • 删除crond服务下的所有进程:
killall crond

3. 系统状态检测命令

ifconfig

命令描述:ifconfig命令用于获取网卡配置与网络状态等信息。

uname

命令描述:uname命令用于查看系统内核与系统版本等信息。

命令语法:uname -amnrsv[--version]

uptime

命令描述:uptime 用于查看系统的负载信息。

free

命令描述:free用于显示当前系统中内存的使用量信息。

命令语法:free -bkmotV

who

命令描述:who 命令显示关于当前在本地系统上的所有用户的信息。

last

命令描述: last 命令用于显示用户最近登录信息。

history

命令描述:history命令用于显示历史执行过的命令。

bash默认记录1000条执行过的历史命令,被记录在~/.bash_history文件中。

Linux指令入门-磁盘管理

1. 开通资源

  1. 在实验主页面,页面左侧,单击 云产品资源 下拉列表,查看本次实验所需资源。
  2. 单击屏幕右侧 创建资源 ,免费创建当前实验所需云产品资源。

说明:

资源创建过程需要1~3分钟。完成实验资源的创建后,您可以在 云产品资源 列表查看已创建的资源信息,例如:IP地址、子用户名称和子用户密码等。

Linux操作系统实战入门

2. 磁盘管理命令

  1. df命令

df命令描述:该命令检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

df命令语法:

df [参数] [目录或文件名]

du命令描述:查看磁盘使用空间。du与df命令不同点在于,du命令用于查看文件和目录磁盘的使用空间。

du命令语法:

du [参数] [文件或目录名称]

Linux操作系统实战入门

  1. fdisk命令

fdisk命令描述:该命令用于磁盘分区。

fdisk命令语法:

fdisk [-l] 装置名称

Linux 指令入门-文件与权限

1. 开通资源

单击屏幕右侧创建资源按钮,免费创建当前实验所需云产品资源。

说明:
资源创建过程需要 1~3 分钟。完成实验资源的创建后,您可以在 云产品资源 列表查看已创建的资源信息,例如:IP 地址、子用户名称和子用户密码等。

Linux操作系统实战入门

2. 连接 ECS 服务器

成功创建资源后默认会打开 Web Terminal 操作服务器终端操作界面,您也可以点击右侧按钮,切换到 Web Terminal 操作界面。

Linux操作系统实战入门

3. 文件目录管理命令

ls

命令描述: ls 命令用于显示指定工作目录下的内容。

命令格式:ls 参数。

参数说明:

参数说明

-a

显示所有文件及目录(包括隐藏文件)

-l

将文件的权限、拥有者、文件大小等详细信息列出(ll等同于ls -l)

-r

将文件反序列出(默认按英文字母正序)

-t

将文件按创建时间正序列出

-R

递归遍历目录下文件

命令使用示例:

查看当前目录下的所有文件(包括隐藏文件)。

ll -a

pwd

命令描述:获取当前工作目录的绝对路径。

cd

命令描述:cd 命令用于切换工作目录。

在路径表示中:

  • 一个半角句号(.)表示当前目录,例如路径./app/log 等同于 app/log。
  • 两个半角句号(..)表示上级目录,例如路径/usr/local/../src 等同于/usr/src,其中 local 和 src 目录同级。

cd 命令的默认参数为~,符号~表示当前用户的家目录,即在 root 用户登录时,命令 cd、cd ~和 cd /root 执行效果相同。

touch

命令描述:touch 命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。

命令格式:touch 参数。

参数说明:

参数说明

-c

如果指定文件不存在,不会建立新文件

-r

使用参考文件的时间记录

-t

设置文件的时间记录

命令使用示例:

  • 创建两个空文件。
touch demo1.txt demo2.txt

mkdir

命令描述:mkdir 命令用于新建子目录。-p 参数确保目录名称存在,不存在的就新建一个。

mkdir -p a/b/c/d

使用 tree 命令查看创建后的目录结构。

tree

Linux操作系统实战入门

rm
命令描述:rm 命令用于删除一个文件或者目录。

命令格式:rm 参数。

参数说明

-i

删除前逐一询问确认

-f

无需确认,直接删除

-r

删除目录下所有文件

命令使用示例:

  • 无需确认直接删除文件。
rm -rf demo*
  • 无需确认直接删除目录 a 及其目录下所有子目录和文件。
rm -rf a

cp

命令描述: cp 命令主要用于复制文件或目录。

命令格式:cp 参数 [目标文件]。

参数说明:

-d

复制时保留链接

-f

覆盖已经存在的目标文件而不给出提示

-i

覆盖前询问

-p

除复制文件的内容外,还把修改时间和访问权限也复制到新文件中

-r

复制目录及目录内的所有项目

命令使用示例:

  • 将目录 c/d 中的所有内容复制到目录 a/b 下。

Linux操作系统实战入门

mv

命令描述: mv 命令用来为文件或目录改名、或将文件或目录移入其它位置。

命令格式:mv 参数 [目标文件]

rename

命令描述:rename 命令用字符串替换的方式批量改变文件名。rename 命令有 C 语言和 Perl 语言两个版本,这里介绍 C 语言版本的 rename 命令,不支持正则表达式。

4. 文件权限

ls 命令可以查看 Linux 系统上的文件、目录和设备的权限。

Linux操作系统实战入门

上述 ls -l 命令中显示的第一列就是文件权限信息,共 11 位字符,分 5 部分。

  • 第 1 位表示存档类型,d 表示目录,-表示一般文件。
  • 第 2~4 位表示当前用户的权限(属主权限)。
  • 第 5~7 位表示同用户组的用户权限(属组权限)。
  • 第 8~10 位表示不同用户组的用户权限(其他用户权限)。
  • 第 11 位是一个半角句号.,表示 SELinux 安全标签。

用户权限每组三位,rwx 分别表示读、写、执行权限,对应八进制表示为 4、2、1。

chmod

chmod 命令用于修改文件权限 mode,-R 参数以递归方式对子目录和文件进行修改。

chown

chown命令修改文件的属主和属组;-R参数以递归方式对子目录和文件进行修改;ls -l命令显示的第三列和第四列就是文件的属主和属组信息。

chgrp

chgrp命令用于修改文件的属组。

Linux指令入门-文件管理

1. 创建资源

  1. 在实验主页面,页面左侧,单击 云产品资源 下拉列表,查看本次实验所需资源。
  2. 单击屏幕右侧 创建资源 ,免费创建当前实验所需云产品资源。

说明:

资源创建过程需要1~3分钟。完成实验资源的创建后,您可以在 云产品资源 列表查看已创建的资源信息,例如:IP地址、子用户名称和子用户密码等。

Linux操作系统实战入门

2. 磁盘管理命令

  1. cat命令。

cat命令描述:该命令用于连接文件并打印到标准输出设备上。

cat命令语法:

cat [参数] [文件名]

参数说明:

-n

由1开始对所有输出的行数进行编号。

-b

由1开始对所有输出的行数进行编号,对于空白行不编号。

-s

当遇到有连续两行以上的空白行,就替换为一行的空白行。

-E

在每行结束处显示$。

-T

将 TAB 字符显示为^I。
  1. cmp命令。

cmp命令描述:该命令用于比较两个文件是否有差异。当相互比较的两个文件完全一样时,该指令不会显示任何信息。否则会标示出第一个不同之处的字符和列数编号。当不指定任何文件名称,或文件名为"-",则cmp指令会从标准输入设备读取数据。

cmp命令语法:

cmp -clsv--help[第二个文件]

参数说明:

-c

除了标明差异处的十进制字码之外,一并显示该字符所对应字符。

-i <字符数目>

指定一个数目。

-l

标示出所有不一样的地方。

-s

不显示错误信息。

-v

显示版本信息。

--help

在线帮助。
  1. diff命令。

diff命令描述:该命令用于比较文件的差异。diff命令以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。

diff命令语法:

diff [参数] [文件或目录1] [文件或目录2]

参数说明:

-<行数>

指定要显示多少行的文本。此参数必须与-c或-u参数一并使用。

-c

显示全部内文,并标出不同之处。

-u

以合并的方式来显示文件内容的不同。

-a

diff预设只会逐行比较文本文件。

-b

不检查空格字符的不同。

-d

使用不同的演算法,以较小的单位来做比较。

-i

不检查大小写的不同。

-y

以并列的方式显示文件的异同之处。

-W<宽度>

在使用-y参数时,指定栏宽。

执行如下命令,比较test1.txt文件和test2.txt文件,以并排格式输出。

diff test1.txt test2.txt -y -W 50
  1. file命令。

file命令描述:该命令用于辨识文件类型。

file命令语法:

file [参数] [文件]

参数说明:

-b

列出辨识结果时,不显示文件名称。

-c

详细显示指令执行过程,便于排错或分析程序执行的情形。

-f<名称文件>

指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称。

-L

直接显示符号连接所指向的文件的类别。

-v

显示版本信息。

-z

解读压缩文件的内容。

file命令使用示例:

a. 执行如下命令,显示test1.txt文件类型。

file test1.txt

b. 执行如下命令,显示test2.txt文件类型并不显示文件名称。

file -b test2.txt
  1. find命令。

find命令描述:该命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

find命令语法:

find [参数] [文件]

参数说明:

-mount

只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件。

-amin n

在过去n分钟内被读取过文件。

-type c

文件类型是c的文件。

-cmin n

在过去n分钟内被修改过。

-name name

查找文件名称为name的文件。

find命令使用示例:

a. 执行如下命令,将当前目录及其子目录下所有文件后缀为.txt的文件列出来。

find . -name "*.txt"

b. 执行如下命令,查找系统中所有文件长度为0的普通文件,并列出它们的完整路径。

find / -type f -size 0 -exec ls -l {} \;
上一篇:单机网站架构云化


下一篇:从零到一上手玩转云服务器-搭建个人博客