20191209 Linux就该这么学(1-3)
1. 部署虚拟环境安装 Linux 系统
RPM
是为了简化安装的复杂度,而 Yum
软件仓库是为了解决软件包之间的依赖关系。
2. 新手必须掌握的Linux命令
通常来讲,计算机硬件是由运算器、控制器、存储器、输入/输出设备等共同组成的,而让各种硬件设备各司其职且又能协同运行的东西就是系统内核。 Linux 系统的内核负责完成对硬件资源的分配、调度等管理任务。
Shell(也称为终端或壳)充当的是人与内核(硬件)之间的翻译官,用户把一些命令“告诉”终端,它就会调用相应的程序服务去完成某些工作。现在包括红帽系统在内的许多主流 Linux 系统默认使用的终端是 Bash
( Bourne-Again SHell)解释器。
常见执行 Linux 命令的格式是这样的:
命令名称 [命令参数] [命令对象]
命令名称、命令参数、命令对象之间请用空格键分隔。
命令对象一般是指要处理的文件、目录、用户等资源,而命令参数可以用长格式(完整的选项名称),也可以用短格式(单个字母的缩写),两者分别用--
与-
作为前缀。
2.3 常用系统工作命令
1. echo
[hwj@localhost ~]$ echo abc
abc
[hwj@localhost ~]$ echo $shell
[hwj@localhost ~]$ echo $SHELL
/bin/bash
2. date
## 查看当前日期时间
[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
用于在终端中下载网络文件
## 下载指定文件
[hwj@localhost ~]$ wget http://www.linuxprobe.com/docs/LinuxProbe.pdf
## 递归下载网站的所有数据及文件
[hwj@localhost ~]$ wget -r -p http://www.linuxprobe.com
6. ps
用于查看系统中的进程状态
[hwj@localhost ~]$ ps -aux
在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 [参数] 文本”。
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 种情况:
- 如果目标文件是目录,则会把源文件复制到该目录中;
- 如果目标文件也是普通文件,则会询问是否要覆盖它;
- 如果目标文件不存在,则执行正常的复制操作。
5. mv
mv 命令用于剪切文件或将文件重命名,格式为“mv [选项] 源文件 [目标路径|目标文件名]”。
剪切操作不同于复制操作,因为它会默认把源文件删除掉,只保留剪切后的文件。如果在同一个目录中对一个文件进行剪切操作,其实也就是对其进行重命名。
5. rm
rm 命令用于删除文件或目录,格式为“rm [选项] 文件”。
在 Linux 系统中删除文件时,系统会默认向您询问是否要执行删除操作,如果不想总是看到这种反复的确认信息,可在 rm 命令后跟上-f
参数来强制删除。另外,想要删除一个目录,需要在 rm 命令后面一个-r
参数才可以,否则删除不掉。
6. dd
dd 命令用于按照指定大小和个数的数据块来复制文件或转换文件,格式为“dd [参数]”。
Linux系统中有一个名为/dev/zero
的设备文件,每次在课堂上解释它时都充满哲学理论的色彩。因为这个文件不会占用系统存储空间,但却可以提供无穷无尽的数据,因此可以使用它作为 dd命令的输入文件,来生成一个指定大小的文件。
[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 [选项] [文件]”。
## 压缩
[hwj@localhost ~]$ tar -czvf a.tar.gz www.linuxprobe.com/
## 解压
[hwj@localhost ~]$ tar -xzvf a.tar.gz -C b
2. grep
grep 命令用于在文本中执行关键词搜索,并显示匹配的结果,格式为“grep [选项] [文件]”。
## 在文件中查找null
[hwj@localhost ~]$ grep null /etc/passwd
3. find
find 命令用于按照指定条件来查找文件,格式为“find [查找路径] 寻找条件 操作”。
## 查询当前目录(及其子目录)下,名称中包含probe的文件和目录
[hwj@localhost ~]$ find . -name "*probe*"
3. 管道符、重定向与环境变量
3.1 输入输出重定向
输入重定向是指把文件导入到命令中,而输出重定向则是指把原本要输出到屏幕的数据信息写入到指定文件中。
相较于输入重定向,我们使用输出重定向的频率更高,所以又将输出重定向分为了标准输出重定向和错误输出重定向两种不同的技术,以及清空写入与追加写入两种模式。
- 标准输入重定向(
STDIN
,文件描述符为0
):默认从键盘输入,也可从其他文件或命令中输入。 - 标准输出重定向(
STDOUT
,文件描述符为1
):默认输出到屏幕。 - 错误输出重定向(
STDERR
,文件描述符为2
):默认输出到屏幕。
## 标准输出重定向
[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
变量是由固定的变量名与用户或系统设置的变量值两部分组成的,我们完全可以自行创建变量,来满足工作需求。
[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 系统中所有的环境变量
20191209 Linux就该这么学(1-3)的更多相关文章
- 20191209 Linux就该这么学(6)
6. 存储结构与磁盘划分 6.1 一切从"/"开始 Linux 系统中的一切文件都是从"根(/)"目录开始的,并按照文件系统层次化标准(FHS)采用树形结构来存 ...
- 20191209 Linux就该这么学(5)
5. 用户身份与文件权限 5.1 用户的身份和能力 Linux 系统的管理员之所以是 root,并不是因为它的名字叫 root,而是因为该用户的身份号码即 UID( User IDentificati ...
- 20191209 Linux就该这么学(4)
4. Vim编辑器与Shell命令脚本 Vim 编辑器中设置了三种模式-命令模式.末行模式和编辑模式. 命令模式:控制光标移动,可对文本进行复制.粘贴.删除和查找等工作. 输入模式:正常的文本录入. ...
- 20191209 【归档】Linux就该这么学
学习背景 因为打算学习Redis和Docker,但是发现对Linux的操作已经完全忘记了,所以选择再学一次,但是不会深入的学习,选择了<Linux就该这么学>这本书,学完了感觉还挺好,但是 ...
- 浅谈《Linux就该这么学》
就在去年十月份的时候,偶尔在Linux技术群了看到别人分享的<Linux就该这么学>,好奇的就点进去看看,当时看完首页,突然发现刘遄老师说到心坎里去了,于是就仔细看了看红帽认证的讲解以及后 ...
- 《Linux就该这么学》 - 必读的红帽系统与红帽linux认证自学手册
<Linux就该这么学> 本书作者刘遄从事于linux运维技术行业,较早时因兴趣的驱使接触到了Linux系统并开始学习. 已在2012年考下红帽工程师RHCE_6,今年又分别考下RHC ...
- 《Linux就该这么学》第十九天课程
今天对“Linux就该这么学”课程做个收尾 最后一张使用LNMP架构部署动态网站环境 第1步:下载及解压源码包文件.为了方便在网络中传输,源码包文件通常会在归档后使用gzip或bzip2等格式进行压缩 ...
- 《Linux就该这么学》
参加了第19期课程的培训,感谢刘老师的辛苦付出,课程讲的很好,真心推荐老刘的这本书真是<Linux就该这么学>!!! 本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的 ...
- 《linux就该这么学》开课,linux之路新开始
今天开课第一天,虽然不会有实实在在的干货知识,只要是了解一下linux和认证.所以我也简单说一下我的linux之路 linux我是无意接触到的,因为工作,我接触的服务器较多,但是都是linux系统,记 ...
随机推荐
- SEO搜索引擎优化是什么?
㈠什么是SEO? 搜索引擎优化,又称为SEO,即Search Engine Optimization,它是一种通过分析搜索引擎的排名规律,了解各种搜索引擎怎样进行搜索.怎样抓取互联网页面.怎样确定特定 ...
- python起步--windows系统下安装python解释器和PyCharm
参考教程: 1)https://www.runoob.com/w3cnote/pycharm-windows-install.html 2)https://blog.csdn.net/c_shell_ ...
- jquery getScript动态加载JS方法改进详解
有许多朋友需要使用getScript方法动态加载JS,本文将详细介绍此功能的实现方法 $.getScript(url,callback) 这个方法是jquery自身提供的一个用于动态加载js的方法.当 ...
- 一、让自己习惯C++
写在前面 第一遍看<Effective C++>时,在准备暑期实习生的招聘,没有时间好好地捋一下,将一些要点记录下来.现在实习回来,重读此书,并记录一些要点,为今后的复习亦或是学习铺垫. ...
- JavaWeb_(SSH论坛)_七、辅助模块
基于SSH框架的小型论坛项目 一.项目入门 传送门 二.框架整合 传送门 三.用户模块 传送门 四.页面显示 传送门 五.帖子模块 传送门 六.点赞模块 传送门 七.辅助模块 传送门 为避免代码冗余, ...
- HTML jQuery 文档操作 - html() 方法
jQuery 文档操作 - html() 方法 jQuery 文档操作参考手册 实例 设置所有 p 元素的内容: $(".btn1").click(function(){ $(&q ...
- 生成json文件写入本地
public class Json { public static void main(String[] args) { String fullPath = null; //例如:fullPath=& ...
- 微信小程序底部菜单栏的使用方法
1.找到项目根目录的配置文件 app.json,在配置文件中加入配置代码.例如: "tabBar": { <!--底部的导航配置属性--> "color&qu ...
- c++ STL -- set和multiset
set和multiset 1.结构 set和multiset会根据特定的排序原则将元素排序.两者不同之处在于,multisets允许元素重复,而set不允许重复. 只要是assignable.copy ...
- 自动化框架Quantum Automation Framework+cucumber+perfecto
名词解释 Quantum: 一款基于JAVA的自动化框架,支持手机和桌面WEB的自动化测试.与cucumber和perfecto实现了整合,用于BDD自动化. Refer: http://projec ...