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

Jun 27, 2017 am 10:10 AM
basic shell

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 --同上
 

Atas ialah kandungan terperinci 分享一些linux运维的基础知识. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk memasang Classic Shell pada Windows 11? Bagaimana untuk memasang Classic Shell pada Windows 11? Apr 21, 2023 pm 09:13 PM

<p>Menyesuaikan sistem pengendalian anda ialah cara terbaik untuk menjadikan kehidupan harian anda lebih menyeronokkan. Anda boleh menukar antara muka pengguna, menggunakan tema tersuai, menambah widget dan banyak lagi. Jadi hari ini kami akan menunjukkan kepada anda cara memasang ClassicShell pada Windows 11. </p><p>Program ini telah wujud sejak sekian lama dan membolehkan anda mengubah suai sistem pengendalian. Sukarelawan kini telah mula menjalankan organisasi itu, yang dibubarkan pada 2017. Projek baharu ini dipanggil OpenShell dan kini tersedia di Github untuk mereka yang berminat. </p>&a

Arahan PowerShell gagal dengan isu HRESULT 0x80073D02 dibetulkan Arahan PowerShell gagal dengan isu HRESULT 0x80073D02 dibetulkan May 10, 2023 am 11:02 AM

Adakah anda melihat mesej ralat ini "Add-AppxPackage: Deployment failed with HRESULT: 0x80073D02, Pakej tidak boleh dipasang kerana sumber yang diubah suai sedang digunakan. Ralat 0x80073D02..." dalam PowerShell apabila anda menjalankan skrip? Seperti yang dinyatakan oleh mesej ralat, ini berlaku apabila pengguna cuba mendaftar semula satu atau semua aplikasi WindowsShellExperienceHost semasa proses sebelumnya sedang berjalan. Kami mempunyai beberapa penyelesaian mudah untuk menyelesaikan masalah ini dengan cepat. Betulkan 1 – Tamatkan proses hos pengalaman yang anda mesti tamatkan sebelum melaksanakan perintah powershell

Explorer.exe tidak bermula pada permulaan sistem [Betulkan] Explorer.exe tidak bermula pada permulaan sistem [Betulkan] Jun 03, 2023 am 08:31 AM

Pada masa kini, ramai pengguna Windows mula menghadapi masalah sistem Windows yang serius. Masalahnya ialah Explorer.exe tidak boleh bermula selepas sistem dimuatkan dan pengguna tidak boleh membuka fail atau folder. Walaupun, pengguna Windows boleh membuka Windows Explorer secara manual menggunakan Command Prompt dalam beberapa kes dan ini mesti dilakukan setiap kali sistem dimulakan semula atau selepas permulaan sistem. Ini boleh menjadi masalah dan disebabkan oleh faktor-faktor berikut yang dinyatakan di bawah. Fail sistem rosak. Dayakan tetapan permulaan pantas. Pemacu paparan lapuk atau bermasalah. Perubahan telah dibuat pada beberapa perkhidmatan dalam sistem. Fail pendaftaran yang diubah suai. Dengan mengingati semua faktor di atas, kami telah menghasilkan beberapa yang pasti akan membantu pengguna

Bagaimana untuk memadamkan baris dengan cepat pada penghujung fail dalam Linux Bagaimana untuk memadamkan baris dengan cepat pada penghujung fail dalam Linux Mar 01, 2024 pm 09:36 PM

Apabila memproses fail di bawah sistem Linux, kadangkala perlu memadamkan baris pada penghujung fail. Operasi ini sangat biasa dalam aplikasi praktikal dan boleh dicapai melalui beberapa arahan mudah. Artikel ini akan memperkenalkan langkah-langkah untuk memadamkan baris dengan cepat pada penghujung fail dalam sistem Linux dan memberikan contoh kod khusus. Langkah 1: Semak baris terakhir fail Sebelum melakukan operasi pemadaman, anda perlu mengesahkan baris mana yang merupakan baris terakhir fail. Anda boleh menggunakan arahan tail untuk melihat baris terakhir fail Arahan khusus adalah seperti berikut: tail-n1filena

Berikut ialah pembetulan untuk Open Shell Windows 11 isu tidak berfungsi Berikut ialah pembetulan untuk Open Shell Windows 11 isu tidak berfungsi Apr 14, 2023 pm 02:07 PM

Cangkang terbuka tidak berjalan pada Windows 11 bukanlah masalah baharu dan telah membelenggu pengguna sejak kemunculan sistem pengendalian baharu ini. Punca isu Open-Shell Windows 11 tidak berfungsi adalah tidak khusus. Ia boleh disebabkan oleh ralat yang tidak dijangka dalam program, kehadiran virus atau perisian hasad, atau fail sistem yang rosak. Bagi mereka yang tidak tahu, Open-Shell ialah pengganti Classic Shell, yang telah dihentikan pada tahun 2017. Anda boleh menyemak tutorial kami tentang cara memasang Classic Shell pada Windows 11. Bagaimana untuk menggantikan menu Mula Windows 11

Cara yang berbeza untuk menjalankan fail skrip shell pada Windows Cara yang berbeza untuk menjalankan fail skrip shell pada Windows Apr 13, 2023 am 11:58 AM

Windows Subsystem untuk Linux Pilihan pertama ialah menggunakan Windows Subsystem untuk Linux atau WSL, yang merupakan lapisan keserasian untuk menjalankan boleh laku binari Linux secara asli pada sistem Windows. Ia berfungsi untuk kebanyakan senario dan membolehkan anda menjalankan skrip shell dalam Windows 11/10. WSL tidak tersedia secara automatik, jadi anda mesti mendayakannya melalui tetapan pembangun peranti Windows anda. Anda boleh melakukan ini dengan pergi ke Tetapan > Kemas Kini & Keselamatan > Untuk Pembangun. Tukar ke mod pembangun dan sahkan gesaan dengan memilih Ya. Seterusnya, cari W

Super tegar! 11 contoh skrip Python dan Shell yang sangat praktikal! Super tegar! 11 contoh skrip Python dan Shell yang sangat praktikal! Apr 12, 2023 pm 01:52 PM

Beberapa contoh skrip Python: penggera WeChat perusahaan, pelanggan FTP, pelanggan SSH, pelanggan Saltstack, pelanggan vCenter, mendapatkan masa tamat sijil SSL nama domain, menghantar ramalan cuaca hari ini dan carta arah aliran cuaca masa hadapan: Sandaran penuh SVN; Zabbix memantau tamat tempoh kata laluan pengguna, membina YUM tempatan, dan keperluan pembaca disebut dalam artikel sebelumnya (apabila beban tinggi, cari skrip proses yang menduduki penghunian yang agak tinggi dan simpan atau pemberitahuan tolak, jadi harap bersabar Di akhir artikel, terdapat telur Paskah selepas semua. Skrip Python sebahagian daripada penggera WeChat perusahaan Skrip ini menggunakan aplikasi WeChat perusahaan untuk melaksanakan penggera WeChat dan boleh digunakan

Cara memasang Open Shell untuk memulihkan menu Mula klasik pada Windows 11 Cara memasang Open Shell untuk memulihkan menu Mula klasik pada Windows 11 Apr 18, 2023 pm 10:10 PM

OpenShell ialah utiliti perisian percuma yang boleh digunakan untuk menyesuaikan menu Mula Windows 11 agar menyerupai menu gaya klasik atau menu gaya Windows 7. Menu Mula pada versi Windows terdahulu menyediakan pengguna dengan cara mudah untuk menyemak imbas kandungan sistem mereka. Pada asasnya, OpenShell ialah pengganti ClassicShell yang menyediakan elemen antara muka pengguna berbeza yang membantu mendapatkan kefungsian versi terakhir daripada versi Windows sebelumnya. Sebaik sahaja pembangunan ClassicShell dihentikan pada 2017, ia dikekalkan dan dibangunkan oleh sukarelawan GitHub di bawah nama OpenShell. Ia berkaitan dengan Win

See all articles