基础知识介绍

shell

shell俗称壳,它包裹在内核的外面,是用户命令的翻译官。
作用:接收用户的命令,翻译后(处理一下)交给Linux内核处理。
命令 -> shell -> 内核 -> CPU
目前,CentOS默认的shell叫bash。还有其他的shell,如zsh,fish,csh。
不同的shell的命令会有所差别,这就是Ubuntu和CentOS等不同操作系统命令不一样的原因。

bash        #进入一层shell
bash #再进入一层shell
exit #退出当前shell
命令的基本格式
  • 一般的命令组成:
                【命令名称+命令参数+命令对象】

比如【 cp -a 123.txt 456.txt 】中:

cp为命令名称
-a为命令参数
123.txt和456.txt为命令对象,即操作对象
  • 命令参数
-a	-只能跟单个字母
--help --可以跟一个单词

如果参数为一个字母,使用-
如果参数是一个单词,使用–

  • 逻辑运算符
命令1  &&  命令2	#短路与(命令1执行失败后不再执行命令2)
命令1 || 命令2 #短路或(命令1执行成功后不再执行命令2)
  • 命令结束符
命令1  ;  命令2	#执行完命令1后执行命令2(就像是&,而不是短路与)
  • 后台执行命令
命令1  &		#后台运行命令1

比如:
ping -c 20 www.baidu.com &
  • 多行输入命令
命令1  参数1 参数2 \
参数3 \
参数4 #相当于【命令1 参数1 参数2 参数3 参数4】 比如:
ping \
-c 20 \
www.baidu.com 相当于ping -c 20 www.baidu.com
使用帮助

有的时候,我们会忘记命令的意思。查看帮助可以让我们快速找到关于命令的详细解释。

  • help帮助
ls --help       #查看ls有关的帮助
  • man手册
man ls          #查看ls有关的帮助
#使用技巧:
# 按q退出
# 输入/hello表示搜索字符串"hello",按n查找下一个匹配项,按N查找上一个匹配项。
隐藏文件

在Linux中,以.开头的文件为隐藏文件,使用ls和ll无法查看到。
我们使用ls -a显示所有文件(包括隐藏文件)

补充:文件命名时,除了/,其他字符都合法。


基础命令

echo命令

echo命令用于输出某个字符串或者变量值。

  • 输出字符串
echo "hello world! "	#输出“hello world!”
  • 输出变量值
echo "$name"		#输出变量name的值
  • 强引用和弱引用

双引号为弱引用:“$name”会转化为name的值
单引号为强引用:【echo‘$name’】会输出$name,而不是name的值

[root@localhost ~]# name="郭飞"         #定义变量name
[root@localhost ~]# echo "$name" #输出name的值
郭飞
[root@localhost ~]# echo '$name' #输出$name
$name
[root@localhost ~]#
查看文件
  • cat命令
cat 123.txt     #查看文件123.txt的内容
-n #输出行号
  • more和less命令

背景:

用cat会显示文件全部内容,出现的问题:如果文件很大,就会全部输出,覆盖掉我们之前的输出。

more /var/log/boot.log      #查看启动日志
#先显示前面的部分,并且告知显示的进度。
#按Enter显示下一行
#按空格显示下一页
#按q退出
参数:
-3 #从前3行开始显示
less 123.txt	#用于查看较长文档(与more不同的是,less可上下翻页)
-3 #从第3行开始显示
  • head和tail命令
head -4 123.txt  	#显示前4行内容
tail -4 123.txt #显示后4行内容
tail +4 123.txt #显示第4行开始到最后一行的内容
tail -f /var/log/messages #跟踪显示末尾内容(常用作跟踪日志文件)
  • ls命令
ls dir1	#查看dir1目录下文件
ls -l dir2 #查看dir2目录下文件,并显示详细信息(相当于ll命令) 参数:
-l #显示详细信息
-h #智能显示文件大小(单位转换)
-a #显示所有文件(包括隐藏文件)
find命令

用于文件搜索
相当于Windows中资源管理器右上角的文件搜索

#使用方法:
find <查找路径> <选项> <参数> #举例:
find /etc -name “pass*” #查找/etc目录下名称以pass开头的文件
find / ‐user jay ‐exec cp ‐a {} /root/ \; #查找用户为jay的文件复制到/root/目录下 #参数:
-user #指定文件属主
-exec #指定查找完后的shell操作
-name #按名称查找(区分大小写)
-iname #按名称查找(不区分大小写)
-regex #用正则表达式匹配
-iregex #忽略大小写用正则表达式匹配
-size +3G #查找大于3G的文件
-empty #查找空文件 #find可以使用组合表达式:
(EXPR) 改变操作符优先次序
!EXPR 取反
EXPR1 EXPR2 短路与
EXPR1 -a EXPR2 短路与
EXPR1 -o EXPR2 短路或
cut命令

cut命令可以对文件的内容进行分段。

比如/etc/passwd文件:

#这个文件是以:分隔
squid:x:23:23::/var/spool/squid:/sbin/nologin
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
temp:x:1002:1002::/home/temp:/bin/bash
user1:x:1003:1003::/home/user1:/bin/bash
#如果我想取第3个字段:
cut -f 3 -d ":" /etc/passwd
-f 3 #输出第3个字段
-d ":" #以:分隔
alias

有些命令比较常用,我们就可以对这条命令定义别名。
比如ll命令就是ls -l命令的别名(/etc/profile.d/colorls.sh)

#alias命令使用
alias #输出所有alias定义
unalias ip #取消ip这个别名 #临时定义命令别名(重新登录之后就没有了)
alias cat_123='cat 123.txt' #将cat_123定义为cat 123.txt的别名 #永久定义命令别名
vim ~/.bashrc #将alias命令写入此文件(当前用户有效)
vim /etc/bashrc #将alias命令写入此文件(所有用户有效)

文件上传和下载

lrzsz

专门用于服务器和终端之间的文件传输。
注意:在物理机上使用此命令无效(非远程连接)。

  • 安装lrzsz
yum -y install lrzsz		#安装lrzsz
  • 上传与下载
rz		#上传文件
sz test.txt #下载此文件
xftp软件

用于在服务器与远程终端之间的文件上传与下载

  • 优点:

比lrzsz速度快;
能传输大于4G的文件。

  • 下载地址:

https://www.netsarang.com/zh/free-for-home-school/

wget

用于从互联网下载文件

  • 安装
yum -y install wget	    #安装wget
  • 下载
wget https://xx.com/xx.txt	#下载文件
-c #中断后继续下载(continue)
-b #后台下载(background)
-q #静默下载,无输出(quiet)
curl

常常用于访问网页,也可用于下载文件

curl www.baidu.com	#访问baidu
curl https://xx.qq.com/qq.exe -o qq.exe #下载文件并保存为qq.exe #参数
-o #输出至文件(即对下载文件命名)
-s #静默模式(不输出,常在脚本中使用)
-k #忽略不信任证书

文件打包和压缩

zip和unzip
  • zip

用于将压缩文件为zip格式
压缩后不会删除原文件

#zip <压缩文件名> <压缩文件1> [压缩文件2] [压缩文件3] …
zip file.zip file1 file2 #将file1和file2压缩为file.zip
zip -r file.zip dir/ #递归压缩fir目录下所有文件
  • unzip
yum -y install unzip
unzip file.zip #解压file.zip到当前目录
gzip和bzip2
  • gzip

对单个文件进行压缩
压缩后原文件会自动删除
压缩后文件为*.gz格式

gzip [<参数>] <需压缩文件>
-d #解压
-v #显示执行过程
-l #列出压缩文件信息
-r #递归处理此文件夹所有文件
-5 #压缩率为5,范围为1~9,压缩率越高压缩文件越小
--fast #相当于-1,即压缩率为1
--best #相当于-9,即压缩率为9
  • bzip2

对单个文件进行压缩
压缩后原文件会自动删除
比gzip压缩比更高
压缩后文件为*.bz2格式
命令与gzip类似

小贴士:

gzip和bzip2用的很少,因为只能对单个文件进行操作。
但是压缩算法很好,所以一般都使用tar间接的调用它们。

tar命令

用于对多个文件进行打包,但不改变文件大小
技巧:bzip2比gzip都只能对单个文件压缩,所以先tar打包再进行压缩

  • 打包
tar -cvf file.tar filename  #打包文件(文件大小不变)
  • 调用gzip和bzip2(先打包后压缩)
-zcvf	#调用gzip压缩和打包文件(*.tar.gz)
-jcvf #调用bzip2压缩和打包文件(*.tar.bz2
  • 解压和解包

不管是打包文件还是压缩文件,只要接参数-x就行了。(tar会自动检测文件的格式)

tar -xvf test.tar	#释放文件到当前目录
tar -xvf test.tar -C /root #释放文件到/root目录

系统管理

时间设置
  • 输出时间
date "+%Y-%m-%d %H:%M:%S"   #输出 2020-03-01 11:19:34
%Y #4位数年份
%y #2位数年份
%m #月
%d #日
%H #时
%M #分
%S #秒
  • 手动设置时间

不建议手动设置时间,一般使用时间服务器同步。

date -s "2020-01-01 00:00:00"	#设置当前时间
  • 自动同步时间
yum -y install ntpdate
ntpdate cn.pool.ntp.org #同步当前时间
主机名设置

主机名设置分为永久修改与临时修改
临时修改后,重启会恢复原来的主机名。
不建议临时修改或者经常修改主机名

  • 临时修改
hostname flight		#修改主机名为flight(重新登录有效)
  • 永久修改
#方法1
hostnamectl set-hostname flight #重新登录有效 #方法2
vim /etc/hostname #重启有效(所以不建议使用)
mylinux
内存管理

用于查看内存信息
内存分为物理内存和交换分区
交换分区Swap类似于Windows的虚拟内存,用于解决内存不足的问题

[root@localhost ~]# free -h		#输出当前内存信息
total used free shared buff/cache available
Mem: 1.8G 325M 86M 96M 1.4G 1.2G
Swap: 0B 0B 0B

参数解释:

参数-h	#智能转换单位
total #总量
used #使用量
free #真正空闲量
shared #共享的物理内存大小
buff/cache #缓冲内存大小
available #可被使用的内存大小(缓冲内存也可被使用)
uptime

查看系统启动时间和负载

[root@localhost ~]# uptime
14:58:09 up 30 days, 16:11, 2 users, load average: 0.14, 0.05, 0.06

字段解释:

14:58:09            #当前时间
up 30 days, 16:11 #启动30天16小时11分钟
2 users #当前两个用户登陆
load average #系统平均负载(分别是最后1,5和15分钟平均负载)
进程管理

在Linux系统中,有5种常见的进程状态,分别为运行、中断(S)、不可中断(D)、僵死(Z)与停止(T)

  • pidof
pidof  sshd		#查询服务sshd的PID
  • 杀死进程
kill -9 2654	#强制杀死进程
pkill <关键字> #根据关键字杀死进程(尽量完整防止被误杀)
killall sshd #杀死sshd全部进程(安装psmisc)
  • ps命令

用于查看系统中的进程状态
相当于Windows的任务管理器(静态的,只会得到当前时刻的状态)

ps -aux
-a:显示所有进程
-u:用户以及其他详细信息
-x:显示没有控制终端的进程
  • top命令

top命令用于动态地监视进程活动与系统负载等信息(会不停的去获取系统状态)
可以看作是Windows的任务管理器。
top包含3个命令,uptime、free和ps,会动态显示这仨个命令的输出。

[root@localhost ~]# top	#按q退出

字段解释:

top - 14:58:09 up 30 days, 16:11,  2 users,  load average: 0.14, 0.05, 0.06
#相当于uptime
Tasks:  81 total,   1 running,  80 sleeping,   0 stopped,   0 zombie
81 total #总共81个进程
1 running #1个进程正在运行
80 sleeping #80个进程正在休眠
0 stopped #0个进程停止
0 zombie #0个僵尸进程
%Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
us #进程在用户地址空间中消耗CPU时间的百分比
sy #进程在内核地址空间中消耗 CPU 时间的百分比
ni #nice缩写,可通过nice值调整进程用户态的优先级,这里指调整过nice值的进程消耗掉的CPU时间百分比
id #CPU 处于 idle 状态的百分比
wa #CPU 等待磁盘 IO 操作的时间
hi & si #硬中断与软中断消耗时间
st #虚机等待CPU资源时间(只有Linux作为虚机时才有效)
PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
PID #进程号
USER #运行用户
PR #优先级(内核视角)
NI #优先级(用户视角)
VIRT #虚拟内存使用量
RES #表示进程使用的物理内存大小
SHR #表示进程使用的共享内存的大小
S #表示当前进程状态(S为sleeping睡眠状态)
%CPU #CPU占用百分比
%MEM #内存占用百分比
TIME+ #启动时间
COMMAND #启动命令

环境变量

一般是指在操作系统中用来指定操作系统运行环境的一些参数。

  • Linux重要的环境变量
$?	#上一次命令执行结果的状态
0 #执行成功
1 #通用错误
126 #没有执行权限
127 #命令没有找到
$SHELL #当前使用Shell(如/bin/bash)
$PATH #搜索路径
$HOME #用户家目录
$RANDOM #随机生成一个整数

举例:

[root@mycentos2 ~]# echo $SHELL     #输出默认的shell
/bin/bash
[root@mycentos2 ~]#
[root@mycentos2 ~]# echo $HOME #输出当前用户的家目录
/root
[root@mycentos2 ~]#
[root@mycentos2 ~]# echo $RANDOM #输出一个随机整数
3449
[root@mycentos2 ~]#
[root@mycentos2 ~]# echo $? #输出上一条命令的执行状态
0
[root@mycentos2 ~]#
  • 用户自定义环境变量

下面这个例子只对当前终端生效。若需要永久生效,可以写入bashrc文件中。

[root@mycentos2 ~]# name=郭飞
[root@mycentos2 ~]# echo $name
郭飞
[root@mycentos2 ~]#

通配符

通配符和正则表达式类似,都可以做匹配。
正则表达式更多用于文件中字符串匹配,或者代码中的字符串匹配。
通配符专门用于Linux命令中。

*	#匹配所有字符
? #匹配任一字符
[] #产生一个范围
^ #在[]中表示非的意思
{} #产生一个序列
\ #转义字符

举例:

ll a*	#查看所有a开头的文件
ll a? #查看a开头+任一字符的文件(如ab,ac,a1)
ll [0-9]* #查看所有数字开头的文件
ll [^0-9]* #查看所有非数字开头的文件
touch a{a,b,1} #创建aa,ab和a1文件
ll a\*.txt #查看a*.txt文件

重定向

重定向是指将命令的输出保存到文件中。

>	#将输出覆盖到文件中
>> #将输出追加到文件中
2> #错误覆盖,若运行错误则将结果覆盖到文件中
2>> #错误追加,若运行错误则将结果追加到文件中
&> #都覆盖到文件中
&>> #都追加都文件中

举例:

echo 123 > 456.txt		#将123覆盖输出到456.txt
echo 123 >> 456.txt #将123追加到456.txt中

管道符

管道符的作用是:将命令A的输出作为命令B的输入。用|表示。
如:命令A | 命令B

ll | grep "key"	#将ll的输出结果送给grep命令进行过滤

反引号

反引号在键盘上Tab的上方。
反引号用于命令的替换,先执行``里的命令,再将输出结果替换掉原来的反引号。

[root@ngsoc129 ~]# echo `date`	#相当于echo "Mon Jul 15 15:57:47 CST 2019"
Mon Jul 15 15:57:47 CST 2019

小贴士:

反引号大多用在脚本中
反引号可以嵌套使用,但是在内部中的反引号必须转义处理

Linux文件类型

Linux目录结构

Linux文件类型

Linux的哲学思想:一切皆文件。
ll命令第一个字段的第一个字母即为文件类型

-	#普通文件
d #目录
l #符号文件l
c #字符设备
b #块设备
s #套接字socket,多用于不同计算机之间通信
p #命名管道PIPE,用于不同进程之间通信
/dev目录

dev是device的缩写,是设备目录,里面都是设备文件

/dev/sd[a-z]	#SCSI设备(其中sda1表示sda硬盘的第1个分区)
/dev/vd[a-z] #虚拟SCSI设备(当前机器为KVM或qemu虚拟机)
/dev/null #空设备(无限接收数据,相当于黑洞)
/dev/zero #零设备(无限零资源,通常作为输入设备)
/dev/tty[0-63] #物理机终端
/dev/pts/[0-n] #远程终端

空设备是一个黑洞,发往它的数据都将不复存在,常用于屏蔽标准输出或错误输出

02-CentOS7基础的更多相关文章

  1. php从入门到放弃系列-02.php基础语法

    php从入门到放弃系列-02.php基础语法 一.学习语法,从hello world开始 PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器&qu ...

  2. Centos7 基础命令与软件的安装

    本人小白一枚正在老男孩培训,所以从现在开始把我学到的知识都分享给大家,该随笔会一直更新 centos7基础命令与软件 ps:命令与参数之间必须加上空格,安装成功时最后一行会有  Complete!   ...

  3. 数据分析02 /pandas基础

    数据分析02 /pandas基础 目录 数据分析02 /pandas基础 1. pandas简介 2. Series 3. DataFrame 4. 总结: 1. pandas简介 numpy能够帮助 ...

  4. 26.centos7基础学习与积累-012-文件和目录的属性

    从头开始积累centos7系统运用 大牛博客:https://blog.51cto.com/yangrong/p5 1.文件的属性(文件的信息描述): [root@python01 ~]# ls -l ...

  5. 24.centos7基础学习与积累-010-上机考核命令练习

    从头开始积累centos7系统运用 大牛博客:https://blog.51cto.com/yangrong/p5 1.创建目录/data/oldboy,并且在该目录下创建文件oldboy.txt,然 ...

  6. 20.centos7基础学习与积累-006-软实力-画图

    从头开始积累centos7系统运用 亿图是用指南 安装亿图软件 修改基础配置 路径:文件==>选项==>常规 需要修改的参数: 撤销次数:256 自动保存间隔:2分钟 路径:文件==> ...

  7. 18.centos7基础学习与积累-004-分区理论

    1.从头开始积累centos7系统运用 大牛博客:https://blog.51cto.com/yangrong/p5 1.常规分区:数据不是特别重要的业务(集群的某个节点) /boot  引导分区 ...

  8. 17.centos7基础学习与积累-003-命令练习01

    1.从头开始积累centos7系统运用 大牛博客:https://blog.51cto.com/yangrong/p5 linux命令的学习: 创建目录:mkdir mkdir /data mkdir ...

  9. 15.centos7基础学习与积累-001

    1.从头开始积累centos7系统运用 大牛博客:https://blog.51cto.com/yangrong/p5 做到精通这个操作系统, 互联网常用服务器品牌: dell:       4u   ...

  10. Centos7基础优化操作项

    1.基础优化操作项:更新yum源信息第一个:就近使用yum源地址,安装软件更快.curl -s -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors. ...

随机推荐

  1. python 简明笔记

    python 简明笔记 基础内置类型 数值类型 字面量 3.14e-10 3.14E-10 3.14e+10 #八进制 0o123 #十六进制 0xabf #二进制 0b10101 #进制转换函数 # ...

  2. Kafka源码分析(四) - Server端-请求处理框架

    系列文章目录 https://zhuanlan.zhihu.com/p/367683572 一. 总体结构 先给一张概览图: 服务端请求处理过程涉及到两个模块:kafka.network和kafka. ...

  3. PPO近端策略优化玩cartpole游戏

    这个难度有些大,有两个policy,一个负责更新策略,另一个负责提供数据,实际这两个policy是一个东西,用policy1跑出一组数据给新的policy2训练,然后policy2跑数据给新的poli ...

  4. java学习之旅(day.10)

    重写 前提:需要有继承关系,是子类重写父类的方法,不是属性 重写特点: 方法名必须相同, 参数列表必须相同,否则就变成重载了 修饰符:范围可以扩大,不能缩小(即父类的private的,可以扩大为pub ...

  5. java学习之旅(day.04)

    运算符 算术运算符:+ ,- ,* ,/,%(取余或模运算), ++(自增),-- (自减) 赋值运算符:= 关系运算符:>, <,>=, <=, ==, !=(不等于),in ...

  6. 可以把erp当做一个分支-找自己的方向

    之前一直在寻思自己应该做哪些方面,对所有编程的问题都在研究,又看到自己研究不透.现在,某一时刻看到,可以把erp当做一个分支. 就像游戏里的天赋点一样,进入这个分支... 这是一个专一的方面,和编程普 ...

  7. 平衡树 Treap & Splay [学习笔记]

    平衡树 \(\tt{Treap}\) & \(\tt{Splay}\) 壹.单旋 \(\tt{Treap}\) 首先了解 \(\tt{BST}\) 非常好用的东西,但是数据可以把它卡成一条链 ...

  8. iis worker process w3wp 进程 占用率100%

    今天电脑特别的卡,我没当回事,但是实在是卡得不行了,我打开任务管理器,发现 iis worker process 进程已经快100%了,我之前在iis上发布了一个webservice,我就把这个网站给 ...

  9. 运算符优先级 JAVA11

    **运算符优先级 ** 规律:算术运算符优先级较高,关系和逻辑运算符优先级较低.多数运算符具有左结合性,单目运算符.三目运算符.赋值运算符具有右结合性. 运算符的优先级 举例 使用优先级为 1 的小括 ...

  10. Hangfire 使用笔记 任务可以分离到别的项目中,无需重复部署Hangfire,通过API方式通信。

    "巨人们"的地址 Hangfire Mysql: https://github.com/arnoldasgudas/Hangfire.MySqlStorage 在获取set表数据的 ...