0

0

分享一些linux运维的基础知识

零下一度

零下一度

发布时间:2017-06-27 10:10:32

|

2569人浏览过

|

来源于php中文网

原创

1、回顾基础命令
2、脚本
3、变量
4、别名
5、条件判断
6、test判断
 
一、回顾基础命令
shutdown --关机/重启
exit --退出当前shell
rmdir --删除空目录
du --查看目录占用的存储空间
df --查看已 经挂载的文件系统的空间使用情况
ln --创建链接
cat --显示文件的所有内容
head --显示文件的头部
tail --显示文件的尾部
less --分屏/分页 显示文件内容
dirname --取出目录
basename --取出文件名
history --历史命令
1、ln
# ln -s [目标] [源 -- 创建软链接 (symbolic link)
# ln [目标] [源] -- 创建硬链接
2、cat
concatinate,把文件的内容按顺序连接起来,输出到标準输出。目前,只需要简单理解成显示文件的内容即可
# cat f1 -- 显示文件 f1 的内容到屏幕上
# cat -n f1 -- 显示文件的内容,并且加上行号
# cat -A f1 -- 打印出一些不可见的字符和位置标记
3、head
读取文件的头部
# head -n 3 /etc/passwd --读取文件前面三行
# head -n -3 /etc/passwd --读取文件时,丢掉文件的后三行;
# head -c 3 /etc/passwd --读取文件的前面三个字节
# head -c 10m /dev/zero > f1 --创建一个10M的文件
4、tail
读取文件的尾部
# tail -n 3 /etc/passwd -- 读取文件的后面三行
# tail -c 3 /etc/passwd -- 读取文件的后面三个字节
# tail -n +28 /etc/passwd -- 读取文件中从第28行开始直到结尾的所有行
# tail -f /etc/passwd -- 跟踪文件尾部内容的变化,常用观察日志文件的变化
5、history
# set -o history --启用命令历史功能 ,默认记录在文件 ~/.bash_history 中
# set +o history --关闭命令历史功能
# history --显示最近n条历史命令
注:以下三个变量用于控制命令历史的数量,以及是否记录时间戳
# vim /etc/bashrc --一般配置在该文件当中,用户级可配置在 ~/.bashrc
HISTSIZE=1000000 --最多存储多少条记录
HISTFILESIZE=2000000 --命令历史文件的最大尺寸
HISTTIMEFORMAT='[%Y-%m-%d %H:%M:%S] ' --命令历史的时间戳格式
export HISTSIZE HISTFILESIZE HISTTIMEFORMAT --把他们定义成环境变量
 
二、脚本
1、如何执行脚本
   # vim test.sh
    #!/bin/bash
  echo 'hello world'
# bash test.sh
# bash -x test.sh --显示脚本执行过程的信息
# sh test.sh
# source test.sh
# . test.sh
--上述兼为非标准执行脚本,脚本文件可以没有可执行权限;下列为标准执行:
# head -n 1 test.sh
#!/bin/bash
# chmod a+x test.sh
# ./test.sh
可直接将脚本放到 PATH 路径下,直接当命令运行
注意:shell 必须以 #! 开头,读作sha-bang,这两个字符用来标识文件类型,#! 用来告诉系统,这个文件里的内容将要用指定的解释器来解释,#! 之后的字符串将会被解释成一个程序,该程序用来解释当前文件。如果没有提供sha-bang这一行,当前 shell 将会自主猜测一个,但结果并不保证和预期一致;所以最好明确指定。./test.sh 的运行流程:
1、内核读取该脚本,检查文件类型标记,获取解释气得路径;
2、内核运行解释器;
3、解释器运行起来后,就打开脚本文件,解释其执行
linux 自带的诸多解释器:#!/bin/bash;#!/bin/sh;#!/usr/bin/perl;#!/bin/sed;#!/bin/awk
2、四则运算符
+ - * /
$(()) $[] expr let
# echo $((38%5)) --取余
# echo $[38/5] --求商
# echo $((10**2)) --10的平方
2.1、expr
# expr 14 % 9 --取余
# expr 34 / 9 --求商
# expr 30 \* 3 --使用乘号时,必须用反斜线屏蔽其特定含义
# expr index "sarasara" a --抓取第一个字符数字串出现的位置
# expr substr "this is a test" 3 5 --抓取字串
# expr length "this is a test" --计算字串长度
2.2、let
let计算工具用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量。如果表达式中包含了空格或其他特殊字符,则必须引起来
# no=20
# let no++ --自增
# let no-- --自减
# let no+=10 --自增10
# let no=no+10 --同上
# let no-=15 --自减15
# let a=5+4 --变了a无须加 $ 符号
# echo $a
3、shell配置文件
/etc/profile --全局配置文件,
/etc/bashrc --全局配置文件,一般用来定义环境变了
~/.bash_profile --用户配置文件
~/.bashrc --用户配置文件
~/.bash_logout --用户配置文件,login shell 退出时会读取该文件
4、shell种类
根据shell 的启动方式不同,可以大致地把shell分为以下几种:
login shell --在文本界面登录,如su -;读取shell配置文件顺序如下:
/etc/profile——~/.bash_profile——~/.bashrc——/etc/bashrc
interactive shell --gnome-terminal 中默认的shell;读取shell配置文件顺序如下:
~/.bashrc —— /etc/bashrc
non-interactive shell --用来运行脚本的shell
 
4.1、在~/.bashrc 中设置一个变量 v,要求该变量只出现在交互shell中
# vim ~/.bash_profile --标识shell 是否登录shell
LOGINSHELL=1
# vim ~/.bashrc --不是登录shell 时,才设置变量
if [ "$LOGINSHELL" != 1 ];then
v="interactive shell only"
fi
5、命令优先级
别名 > 函数 > 内部命令 > 外部命令
6、shell特殊字符
对于shell来说,有些字符除了它本身的意义之外,还有特殊的意义,如果要在字符串中包含特殊字符,就必须通过引用(quoting)的方法来去除特殊字符的特殊意义。以下列出的是部分特殊字符:
~ --不被引用的话将会被shell 替换成家目录
& --把程序放到后台执行
$ --dollar 符,可用于参数展开
${} --变量处理,可对变量的内容做替换,删除,抽取等操作
* --星号,通配符,匹配所有字符
? --问号,通配符,匹配任意一个字符
() --命令组
{} --命令组
"" --双引号,引用符号;可以去除大多数特殊字符的特殊意义,除 $;`;!;\ 外
'' --单引号,引用符号;可以去除所有特殊字符的特殊意义,除自己本身
. --相当于source命令;可用于设置隐藏文件;用于目录名时,代表当前目录
/ --斜杠,路径分隔符,根目录
\ --反斜杠,可用来去除单个字符的特殊意义,也就是所谓的“转义“,也可用于表示特殊字符,如换行符 (\n)
`` --反撇号,命令优先执行,和$()含义是一样的;如果有嵌套那么不能用``号
$(())和 $[] --运算符
: --空命令
; --命令分割;不去考虑上一条命令所执行的结果
;; --case 选项的结束符
# --注释
&& --逻辑与;可对命令进行分割;但是需要考虑上一条命令所执行的结果
|| --逻辑或;可对命令进行分割;不需要考虑上一条命令执行结果
----------------------------------------------------------------
# echo 'hello world;' "hello world;" hello\ world; --用三种引用符合去除空格的特殊意义
 
三、变量
1、本地变量
当前用户自定义的变量;当前进程有效,其他进程或者当前进程的子进程无效
# a=123
# echo $a
# unset a --取消变了定义
2、环境变量
当前进程有效,并且能被子进程调用;
# env --查看当前系统所有环境变量
# set --查看当前系统所有环境变量和临时变量
# echo $PATH -- 显示PATH变量的内容
# export hi=hello --定义环境变量;工作当中一般喜欢把即用的环境变了写在 ~/.bash_profile
几个常见环境变量:
PATH --影响命令的搜索
PS1 --命令提示符
TMOUT --超时时间,单位为S,时间一到,自动退出 interactive shell ;所以最好将其设为只读变量 # declare -r TMOUT=60
HISTSIZE, HISTFILESIZE, HISTTIMEFORMAT --命令历史
 
3、系统变量
又叫bash中内置的变量;shell本身已经固定好的一些变量
$# --脚本后面接参数个数
$* --脚本后面所有的参数(被双引号包含则被当成一个字符串输出)
$@ --脚本后面所有的参数(被双引号包含还是保留各参数的边界)
$? --上一条命令执行后返回的状态
$$ --当前进程的进程号
$! --后台运行的最后一个进程号
!$ --最后一条命令或参数
!! --最后一条命令的历史记录
$0 --当前程序的程序名或进程
$1~$n --位置参数变量
#!/bin/bash
echo "\$0 = $0"
echo "\$# = $#"
echo "\$* = $*"
echo "\$1 = $2"
echo "\$7 = $7"
echo "\$11 = ${11}"
# chmod a+x test.sh
# ./test.sh a b c
4、变量定义
a、默认下,变量类型没啥要求。可以给变量赋任何值,但是等号两边不能有任何的空格
b、变量名区分大小写
c、变量名不能以数字或者特殊符号开头
d、将命令所执行的结果保存到变量
5、调用变量
# a=$(hostname)
# A=123456789
# echo $A
# echo ${A:2:3}
6、数组
数组的定义:用小括号扩起来定义数组,括号里的元素用空格隔开
# array[0]=var1
# array[1]=var2
# array[2]=var3
# array=(var1 var2 var3) --等同于上述三行,定义数组
# echo ${array[0]} --取数组第一个值
# echo ${array[*]} --取数组所有值
# echo ${array[@]} --同上
7、declare 定义有类型的变量
-i --将变量看成整数
-r --定义只读变量
-x --将变量导出到环境变量
-a --将变量看成数组
8、read 交互式定义变量
-p --提示信息
-n --字符数
-t --超时
-s --不显示
 
四、別名
命令的別名,顾名思义,就是可以通过別的名字来执行命令。通常用于简化命令的输入,或者为命令增加一些参数,或者是单纯地为命令添加多个访问名称。
# alias cp mv rm --查看cp, mv, rm这三个命令是不是別名
# unalias rm -- 删除别名 rm
# alias cdyum='cd /data/yum' -- 简化输入
# alias rm='rm -i' -- 为命令增加参数
-- 通常別名是在配置文件~/.bashrc 中设置的
1、验证别名、函数、内部命令、外部命令的优先级别
# alias pwd='echo it is an alias' --创建一个 pwd 别名
# function pwd() { echo "this is a function"; } --创建一个 pwd 函数
# pwd --运行pwd,发现输出是别名
# unalias pwd --删除别名,再运行 pwd,发现输出是函数内容
# unset pwd --删除函数,再运行 pwd,才是输出当前所在路径
所以:别名 > 函数 > 内部命令 > 外部命令
 
五、条件判断
# vim test
----------------------
if [ 条件 ];then
command...
fi
----------------------
if [ 条件 ];then
command...
else
command...
fi
----------------------
if [ 条件1 ];then
command1...
elif [ 条件2 ];then
command2...
else
command3...
fi
----------------------
if [ 条件1 ];then
command1...
if [ 条件2 ];then
command2...
fi
else
if [ 条件3 ];then
command3...
elif [ 条件4 ];then
command4...
else
command5...
fi
fi
 
六、test判断
test == [ judge ]
1、文件存在与否的判断
# vim test.sh
#!/bin/bash
if test -e $1;then --是否存在;还有 -p;-c;-b;-L
if [ -f $1 ];then --使用 [ judge ] 替换
if test -f $1;then --是否存在并且为普通文件
if test -d $1;then --是否存在并且为目录
if test -S $1;then --是否存在并且套接字文件
echo 'YES'
fi
# chmod a+x test.sh
# ./test.sh [path]
2、文件权限相关判断
-r;-w;-x --是否有读,写,执行权限
-u --是否有suid
-g --是否有sgid
-k --是否有t位
-s --是否为空白文件,-s表示非空;! -s 空文件
3、字符串判断
= --等于则为真,等于号两边必须有空格;也可以是:==
!= --不相等则为真
-z 字符串 --字符串的长度为零则为真
-n 字符串 --字符串的长度不为零则为真
if test $num1 = $num2;then
if [ $num1 = $num2 ];then
if [ -n $num1 ];then
4、数值判断
-eq --等于则为真
-ne --不等于则为真
-gt --大于则为真
-ge --大于等于则为真
-lt --小于则为真
-le --小于等于则为真
if test $[num1] -eq $[num2];then
if [ $[num1] -eq $[num2] ];then
5、逻辑判断
-a 和 && --逻辑与
-o 和 || --逻辑或
! --非
优先级:与>或>非
if test -e $1 -o -e $2;then --判断是否有一个文件存在
if [ -e $1 -o -e $2 ];then --同上
if test ! -e $1 -o ! -e $2;then --判断两个文件没有同时存在
if [ ! -e $1 -o ! -e $2 ];then --同上
 

相关专题

更多
云朵浏览器入口合集
云朵浏览器入口合集

本专题整合了云朵浏览器入口合集,阅读专题下面的文章了解更多详细地址。

20

2026.01.20

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

28

2026.01.20

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

149

2026.01.19

java用途介绍
java用途介绍

本专题整合了java用途功能相关介绍,阅读专题下面的文章了解更多详细内容。

120

2026.01.19

java输出数组相关教程
java输出数组相关教程

本专题整合了java输出数组相关教程,阅读专题下面的文章了解更多详细内容。

41

2026.01.19

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

10

2026.01.19

xml格式相关教程
xml格式相关教程

本专题整合了xml格式相关教程汇总,阅读专题下面的文章了解更多详细内容。

14

2026.01.19

PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

23

2026.01.19

微信聊天记录删除恢复导出教程汇总
微信聊天记录删除恢复导出教程汇总

本专题整合了微信聊天记录相关教程大全,阅读专题下面的文章了解更多详细内容。

168

2026.01.18

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
VBScript教程
VBScript教程

共10课时 | 6.1万人学习

Razor  教程
Razor 教程

共42课时 | 16.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号