20191209 Linux就该这么学(1-3)

1. 部署虚拟环境安装 Linux 系统

RPM 是为了简化安装的复杂度,而 Yum软件仓库是为了解决软件包之间的依赖关系。

2. 新手必须掌握的Linux命令

通常来讲,计算机硬件是由运算器、控制器、存储器、输入/输出设备等共同组成的,而让各种硬件设备各司其职且又能协同运行的东西就是系统内核。 Linux 系统的内核负责完成对硬件资源的分配、调度等管理任务。

Shell(也称为终端或壳)充当的是人与内核(硬件)之间的翻译官,用户把一些命令“告诉”终端,它就会调用相应的程序服务去完成某些工作。现在包括红帽系统在内的许多主流 Linux 系统默认使用的终端是 Bash( Bourne-Again SHell)解释器。

常见执行 Linux 命令的格式是这样的:

命令名称 [命令参数] [命令对象]

命令名称、命令参数、命令对象之间请用空格键分隔。

命令对象一般是指要处理的文件、目录、用户等资源,而命令参数可以用长格式(完整的选项名称),也可以用短格式(单个字母的缩写),两者分别用---作为前缀。

image

image

2.3 常用系统工作命令

1. echo

[hwj@localhost ~]$ echo abc
abc
[hwj@localhost ~]$ echo $shell

[hwj@localhost ~]$ echo $SHELL
/bin/bash

2. date

image

## 查看当前日期时间
[hwj@localhost ~]$ date
Thu Nov 28 00:57:50 PST 2019
## 格式化日期时间
[hwj@localhost ~]$ date "+%Y-%m-%d %H:%M:%S"
2019-11-28 00:58:49
## 设置系统时间,需要root权限
[hwj@localhost ~]$ date -s "20170901 8:30:00"
date: cannot set date: Operation not permitted
Fri Sep  1 08:30:00 PDT 2017
## 查看今天是当年的第几天
[hwj@localhost ~]$ date "+%j"
332

3. reboot

用于重启系统

4. poweroff

用于关闭系统

5. wget

用于在终端中下载网络文件

image

## 下载指定文件
[hwj@localhost ~]$ wget http://www.linuxprobe.com/docs/LinuxProbe.pdf
## 递归下载网站的所有数据及文件
[hwj@localhost ~]$ wget -r -p http://www.linuxprobe.com

6. ps

用于查看系统中的进程状态

image

[hwj@localhost ~]$ ps -aux

image

在Linux 系统中,有 5种常见的进程状态,分别为运行、中断、不可中断、僵死与停止,其各自含义如下所示。

  • R(运行):进程正在运行或在运行队列中等待。
  • S(终端):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该状态。
  • D(不可中断):进程不响应系统异步信号,即便用 kill 命令也不能将其中断。
  • Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用 wait4()系统函数后将进程释放。
  • T(停止):进程收到停止信号后停止运行。

在Linux系统中的命令参数有长短格式之分,长格式和长格式之间不能合并,长格式和短格式之间也不能合并,但短格式和短格式之间是可以合并的,合并后仅保留一个 - 即可。另外ps命令允许参数不加 - ,因此可直接写成 ps aux 的样子。

7. top

用于动态地监视进程活动与系统负载等信息,完全将它看作 Linux 中的“强化版的Windows 任务管理器”。

8. pidof

用于查询某个指定服务进程的 PID

9. kill

kill 命令用于终止某个指定 PID 的服务进程,格式为“kill [参数] [进程 PID]”。

[hwj@localhost ~]$ kill 3415

10. killall

killall 命令用于终止某个指定名称的服务所对应的全部进程,格式为:“killall [参数] [服务名称]”。

[hwj@localhost ~]$ killall bash

如果想在执行一个命令后立即停止它,可以使用Ctrl+C组合键。有些命令在执行时不断的在屏幕上输出信息,影响后续命令的输入,可以在执行命令时在末尾添加&,这样命令将进入系统后台执行。

2.4 系统状态检测命令

1. ifconfig

ifconfig 命令用于获取网卡配置与网络状态等信息,格式为“ifconfig [网络设备] [参数]”。

[hwj@localhost ~]$ ifconfig

2. uname

uname 命令用于查看系统内核与系统版本等信息,格式为“uname [-a]”。

[hwj@localhost ~]$ uname -a

3. uptime

uptime 用于查看系统的负载信息,格式为 uptime。

[hwj@localhost ~]$ uptime

4. free

free 用于显示当前系统中内存的使用量信息,格式为“free [-h]”。

[hwj@localhost ~]$ free -h

5. who

who 用于查看当前登入主机的用户终端信息,格式为“who [参数]”。

6. last

last 命令用于查看所有系统的登录记录,格式为“last [参数]”。

7. history

history 命令用于显示历史执行过的命令,格式为“history [-c]”。

可以使用“!编码数字”的方式来重复执行某一次的命令

8. sosreport

sosreport 命令用于收集系统配置及架构信息并输出诊断文档,格式为 sosreport。

2.5 工作目录切换命令

1. pwd

pwd 命令用于显示用户当前所处的工作目录,格式为“pwd [选项]”。

2. cd

cd 命令用于切换工作路径,格式为“cd [目录名称]”。

使用cd -命令返回到上一次所处的目录,使用cd..命令进入上级目录, 以及使用cd ~命令切换到当前用户的家目录,亦或使用cd ~username切换到其他用户的家目录。

3. ls

ls 命令用于显示目录中的文件信息,格式为“ls [选项] [文件] ”。

2.6 文本文件编辑命令

1. cat

cat 命令用于查看纯文本文件(内容较少的),格式为“cat [选项] [文件]”。Linux 系统中有多个用于查看文本内容的命令,每个命令都有自己的特点,比如这个 cat 命令就是用于查看内容较少的纯文本文件的。

2. more

more 命令用于查看纯文本文件(内容较多的),格式为“more [选项]文件”。

3. head

head 命令用于查看纯文本文档的前 N 行,格式为“head [选项] [文件]”。

查看文件前20行内容

[hwj@localhost etc]$ head -n 20 yum.conf

4. tail

tail 命令用于查看纯文本文档的后 N 行或持续刷新内容,格式为“tail [选项] [文件]”。

## 查看文本内容的后20行
[hwj@localhost etc]$ tail -n 20 yum.conf 
## 实时查看最新日志
[hwj@localhost etc]$ tail -f yum.conf

5. tr

tr 命令用于替换文本文件中的字符,格式为“tr [原始字符] [目标字符]”。

## 把文本中的英文全部替换为大写
[hwj@localhost etc]$ cat yum.conf | tr [a-z] [A-Z]

6. wc

wc 命令用于统计指定文本的行数、单词数、字节数,格式为“wc [参数] 文本”。

image

7. stat

stat 命令用于查看文件的具体存储信息和时间等信息,格式为“stat 文件名称”。

8. cut

cut 命令用于按“列”提取文本字符,格式为“cut [参数] 文本”。

## 提取出 passwd 文件中的用户名信息,即提取以冒号(:)为间隔符号的第一列内容
[hwj@localhost etc]$ cut -d: -f1 /etc/passwd

9. diff

diff 命令用于比较多个文本文件的差异,格式为“diff [参数] 文件”。

2.7 文件目录管理命令

1. touch

touch 命令用于创建空白文件或设置文件的时间,格式为“touch [选项] [文件]”。

2. mkdir

mkdir 命令用于创建空白的目录,格式为“mkdir [选项] 目录”。

## 创建单个文件夹
[hwj@localhost ~]$ mkdir a
## 创建嵌套文件夹
[hwj@localhost ~]$ mkdir -p a/b/c/d/e

3. cp

cp 命令用于复制文件或目录,格式为“cp [选项] 源文件 目标文件”。

在 Linux 系统中,复制操作具体分为 3 种情况:

  • 如果目标文件是目录,则会把源文件复制到该目录中;
  • 如果目标文件也是普通文件,则会询问是否要覆盖它;
  • 如果目标文件不存在,则执行正常的复制操作。

image

5. mv

mv 命令用于剪切文件或将文件重命名,格式为“mv [选项] 源文件 [目标路径|目标文件名]”。

剪切操作不同于复制操作,因为它会默认把源文件删除掉,只保留剪切后的文件。如果在同一个目录中对一个文件进行剪切操作,其实也就是对其进行重命名。

5. rm

rm 命令用于删除文件或目录,格式为“rm [选项] 文件”。

在 Linux 系统中删除文件时,系统会默认向您询问是否要执行删除操作,如果不想总是看到这种反复的确认信息,可在 rm 命令后跟上-f 参数来强制删除。另外,想要删除一个目录,需要在 rm 命令后面一个-r 参数才可以,否则删除不掉。

6. dd

dd 命令用于按照指定大小和个数的数据块来复制文件或转换文件,格式为“dd [参数]”。

Linux系统中有一个名为/dev/zero 的设备文件,每次在课堂上解释它时都充满哲学理论的色彩。因为这个文件不会占用系统存储空间,但却可以提供无穷无尽的数据,因此可以使用它作为 dd命令的输入文件,来生成一个指定大小的文件。

image

[hwj@localhost ~]$ dd if=/dev/zero of=560_file count=1 bs=560M

7. file

file 命令用于查看文件的类型,格式为“file 文件名”。

[hwj@localhost ~]$ file /etc/yum.conf

2.8 打包压缩和搜索命令

1. tar

tar 命令用于对文件进行打包压缩或解压,格式为“tar [选项] [文件]”。

image

## 压缩
[hwj@localhost ~]$ tar -czvf a.tar.gz www.linuxprobe.com/ 
## 解压
[hwj@localhost ~]$ tar -xzvf a.tar.gz -C b

2. grep

grep 命令用于在文本中执行关键词搜索,并显示匹配的结果,格式为“grep [选项] [文件]”。

image

## 在文件中查找null 
[hwj@localhost ~]$ grep null /etc/passwd

3. find

find 命令用于按照指定条件来查找文件,格式为“find [查找路径] 寻找条件 操作”。

image

## 查询当前目录(及其子目录)下,名称中包含probe的文件和目录
[hwj@localhost ~]$ find . -name "*probe*"

3. 管道符、重定向与环境变量

3.1 输入输出重定向

输入重定向是指把文件导入到命令中,而输出重定向则是指把原本要输出到屏幕的数据信息写入到指定文件中。

相较于输入重定向,我们使用输出重定向的频率更高,所以又将输出重定向分为了标准输出重定向和错误输出重定向两种不同的技术,以及清空写入与追加写入两种模式。

  • 标准输入重定向( STDIN,文件描述符为 0):默认从键盘输入,也可从其他文件或命令中输入。
  • 标准输出重定向( STDOUT,文件描述符为 1):默认输出到屏幕。
  • 错误输出重定向( STDERR,文件描述符为 2):默认输出到屏幕。

image

image

## 标准输出重定向
[hwj@localhost ~]$ man bash > bb
## 错误输出重定向
[hwj@localhost ~]$ ls -l aaa 2> xxx
## 标准输入重定向
[hwj@localhost ~]$ wc -l < bb

3.2 管道命令符

同时按下键盘上的 Shift+\键即可输入管道符,其执行格式为“命令 A | 命令 B”。 管道命令符的作用也可以用一句话来概括“把前一个命令原本要输出到屏幕的标准正常数据当作是后一个命令的标准输入”。

3.3 命令行的通配符

通配符就是通用的匹配信息的符号,比如星号(*)代表匹配零个或多个字符,问号(?)代表匹配单个字符,中括号内加上数字[0-9]代表匹配 0~9 之间的单个数字的字符,而中括号内加上字母[abc]则是代表匹配 a、 b、 c 三个字符中的任意一个字符。

3.4 常用的转义字符

4 个最常用的转义字符如下所示。

  • 反斜杠( \):使反斜杠后面的一个变量变为单纯的字符串。
  • 单引号( ''):转义其中所有的变量为单纯的字符串。
  • 双引号( ""):保留其中的变量属性,不进行转义处理。
  • 反引号( ``):把其中的命令执行后返回结果。
## 定义一个名为PRICE的变量
[hwj@localhost ~]$ PRICE = 5
## 打印变量值
[hwj@localhost ~]$ echo "Price is $PRICE"
Price is 5
## 错误示例,$$显示当前程序的进程ID
[hwj@localhost ~]$ echo "Price is $$PRICE"
Price is 2609PRICE
## \对符号进行转义
[hwj@localhost ~]$ echo "Price is \$PRICE"
Price is $PRICE
[hwj@localhost ~]$ echo "Price is \$$PRICE"
Price is $5
## 反引号中的命令会执行
[hwj@localhost ~]$ echo `uname -a`
Linux localhost.localdomain 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

3.5 重要的环境变量

变量是计算机系统用于保存可变值的数据类型。在 Linux 系统中,变量名称一般都是大写的,这是一种约定俗成的规范。

命令在 Linux 中的执行分为 4 个步骤:
第一步:判断用户是否以绝对路径或相对路径的方式输入命令(如/bin/ls),如果是的话则直接执行。
第二步:Linux 系统检查用户输入的命令是否为“别名命令”,即用一个自定义的命令名称来替换原本的命令名称。
第三步:Bash 解释器判断用户输入的是内部命令还是外部命令。内部命令是解释器内部的指令,会被直接执行;而用户在绝大部分时间输入的是外部命令,这些命令交由步骤 4 继续处理。
第四步:系统在多个路径中查找用户输入的命令文件,而定义这些路径的变量叫作 PATH, 可以简单地把它理解成是“解释器的小助手”,作用是告诉 Bash 解释器待执行的命令可能存放的位置,然后 Bash 解释器就会乖乖地在这些位置中逐个查找。 PATH 是由多个路径值组成的变量,每个路径值之间用冒号间隔,对这些路径的增加和删除操作将影响到 Bash 解释器对Linux 命令的查找。

变量PATH:

[hwj@localhost ~]$ echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/hwj/.local/bin:/home/hwj/bin
[hwj@localhost ~]$ PATH=$PATH:/root/bin
[hwj@localhost ~]$ echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/hwj/.local/bin:/home/hwj/bin:/root/bin

image

变量是由固定的变量名与用户或系统设置的变量值两部分组成的,我们完全可以自行创建变量,来满足工作需求。

[hwj@localhost ~]$ WORKDIR=/home/hwj/workdir/
[hwj@localhost ~]$ echo $WORKDIR 
/home/hwj/workdir/
[hwj@localhost ~]$ cd $WORKDIR
[hwj@localhost workdir]$ pwd
/home/hwj/workdir

这样的变量不具有全局性,作用范围也有限,默认情况下不能被其他用户使用。如果工作需要,可以使用 export 命令将其提升为全局变量,这样其他用户也就可以使用它了

[root@linuxprobe ~]# export WORKDIR

alias 命令:

可以用 alias 命令来创建一个属于自己的命令别名,格式为“alias 别名=命令”。若要取消一个命令别名,则是用 unalias 命令,格式为“unalias 别名”。

## 查看别名
[hwj@localhost ~]$ alias ll
alias ll='ls -l --color=auto'

## 定义和使用别名
[hwj@localhost ~]$ lv
bash: lv: command not found...
[hwj@localhost ~]$ alias lv=ll
[hwj@localhost ~]$ lv
total 292
[hwj@localhost ~]$ alias lv
alias lv='ll'

## 解除别名
[hwj@localhost ~]$ unalias lv
[hwj@localhost ~]$ lv
bash: lv: command not found...
[hwj@localhost ~]$

type命令:

可以使用“type 命令名称”来判断用户输入的命令是内部命令还是外部命令。

[hwj@localhost ~]$ type rm
rm is /usr/bin/rm
[hwj@localhost ~]$ type ll
ll is aliased to `ls -l --color=auto'
[hwj@localhost ~]$ type ls
ls is aliased to `ls --color=auto'
[hwj@localhost ~]$ type cd
cd is a shell builtin

env命令:

使用 env 命令来查看到 Linux 系统中所有的环境变量

CentOS7 修改root密码

posted @ 2019-12-09 19:17  流星<。)#)))≦  阅读(262)  评论(0编辑  收藏  举报