linux 系统管理基础
调试shell
sh -x test.sh
sh -v test.sh
在父shell中执行
source
./test.sh
显示shell 层次
登录shell执行文件
/etc/profile
$home/user/.bash_profile
$home/user/.bash_login
$home/user/.profile
按照文件顺序依次执行
新建一个子shell
读取
/etc/bash.bashrc
$home/user/bash.bashrc
sh文件调用顺序
执行login shell
查看/etc/passwd
/bin/sh
读取
/etc/.profile执行
读取
$home/user/.profile 执行
执行交互shell
/bin/sh
产生一个子shell
bash检查ENV,如果有变量 执行变量定义的配置文件
执行shell script
在执行文件存在 #! /bin/sh
bash不会启动任何配置文件
cd
pwd
source
alias cp='cp -i'
unalias cp
umask
history
histfilesize
histsize
fc -l
列出登录shell后执行过度所有命令
type 测试命令
set 设定bash shell 属性
set -o 列出所有的属性
set -o 打开某个属性
set +o 关闭属性
read -a arr << (echo 12 43 33)
echo ${arr[2]}
exec
eval
who
cat
head
tail
wc
ln
mkdir
rmdir
rm
find
find 路径 样式 操作
ex
find / -name '*.txt'
find / -name '*.txt' print
tar cvzf etc.tgz /etc
tar zxvf etc.tgz
解压到指定的目录
tar -zxvf etc.tgz -C test
tar cvf test2 | gzip -9 > save.tgz
gzip -9dc save.tgz | tar xvf -
basename
dirname
sort dataf4 升序排列 按照ascII排序 做大小比较
sort -r dataf4
sort -n dataf4 升序排列,以字符串的数值大小做为比较
sort -k 2 databaf5 字符串方式比较
sort -n +2 跳过第2第3个字段 以字符串的数值大小做为排序依据
unid
uniq dataf3
注意事项:若重复列为连续摆在一起,则不会有任何作用
sort dataf3 | uniq
删除dataf3 文件中的重复行
sort dataf3 | uniq -d
挑选出重复行
sort dataf3 | uniq -c 统计重复行的行数
cut 对文件的每一个行抽出某一部分
cut -c2 dataf1
截取 dataf1 文件中的每一个行的第2个字符
cut -c2-4 文件中的每一个行的第2到个字符
cut -c9- dataf1 文件中的每一个行的第9到最后个字符
cut -c2-3,22- dataf1
cut -d: -f1 /etc/passwd -d选项表示指定分割符
paste 对文件以行和行方式合并
paste dataf1 dataf2
paste -d'#' dataf1 dataf2 合并用#分开
paste -s dataf4 自己合并自己
默认用TAB分开
tr转换或者是删除字符
tr k K < dataf1 把文件中的小K 换成大K
tr ',' '\n'< 把,换成换行
tr -d k 删除晚间中的额K字符
cut -d: f1-6 /etc/passwd | tr:'+'
tr -s '''' <datef1
删除多余的空白只剩下一个
grep A*
grep -i A* 不区分大小写
grep -v La data3 不包含La显示出来
grep -l La* 显示包含La的文件,不显示符合的行
grep -n La*同上,但是现实行号
grep -q keyword filename 含有keyword 则返回0 否则返回非0
tee
tee -a
开启子shell 执行多个命令
(comand1;comand2)
在当前shell执行
{comand1,comand2}
shell ctrl + y 粘贴
ctrl + r 查找历史
Ctrl + n
Ctrl + p
shell
变量只有声明之后才能使用
shopt -s o nounset
declare 声明变量
unset -v 变量名 删除变量值
unset -f 函数名 删除函数
变量和引号
在双引号中可以做如下的操作
替换变量
提花命令执行结果
替换算数运算结果
\$var
在双引号中转义变量
export var 声明环境变量 子shell可以继承共享变量
export -p:列出所有的环境变量
声明环境变量
declare -x var
shell 内置变量
BASH_ENV 在非交互的时候使用.在shell script 执行的时候,首先会检查
$BASH_ENV 是否有指定启动文件,如果有就执行
$BASH_VERSION
$CDPATH
减少输入
ENV 显示环境变量
EUID
FCEDITOR
FIGNORE
FUNCTIONAME
GROUPS
HISTCMD历史命令序号
IPS for i in $var 循环分隔符号定义
ex
#! /bin/bash
PL="root:x:0:0:root:/root:/bin/bash"
IFS=':'
for i in $PL
do
echo $i
done
设置命令行执行多少次crtl+D 之后注销系统
IGNOREEOF=2
INPUTRC
设定命令行函数库readline的启动配置文件,可以覆盖~/.inputrc的设定
PS1 [\h\u@\w]
PS2 >
PS3
PS4
RANDOM
随机数种子
RANDOM=$$ 使用SHELL的进程号作为种子
head -1 /dev/urandom | od -N 2 | head -1 | awk '{print $2 * 1}'
SECONDS shell开启的时间 单位秒
SHELL 文件路径
SHELLOPTS 相当于SET -0 开启的功能
SHLVL 子SHELL层数
TMOUT SHELL超时退出
UID
$0
$1~$n
$@代表所有的参数组成的字符串
$#位置参数的个数
$?上一个命令结束后的传回值
$$$目前bash shell的进程号
$!上一个后台程序的进程编号
$_的用途
(1)script 执行的时候 bash的绝对路径
(2)上一个命令执行时,最后一个位置的参数
(3)检查邮件时候$_的值为邮件名称
变量只读
readonly var
readonly -f function_name
readonly -a array_name
declare -r var_name
declare 用法说明
-P 显示变量的属性
-a 变量是一个数组
-f 搜索命令 只是搜索函数 只是搜索函数列表 不搜索别名或者是外部命令
-i 声明变量为整数类型
-F 显示所有的函数式名称以及属性
-r 设定变量为只读
-t 设立变量具有trace属性
-x 设置变量为环境变量
建立别名
alias
自定义环境
/etc/skel 创建帐号的时候会把此目录中的所有的文件复制一份到用户的家目录中
数组的用法
A[0]=1
A[1]=2
A[3]="chehci"
echo ${A[1]}
echo ${A[1+1]}
B=(1 2 3 "333")
C=([2]=1,[4]=9)
E=(123 [9]=0 345)
取出所有的数组
echo ${B[*]}一个数组元素组成的字符串
echo ${B[@]}空白隔开
计算数组个数
${#数组[@]} 或者是 ${#数组[*]}
for t in ; do
$t
done
测试数组长度
${#B[index]}
取消数组定义
unset B
取消数组元素取值
unset B[index]
#! /bin/bash
from='from: me@126.com'
To='To: you@126.com'
Subject='subject'
Msg='happy new year'
Em='test.txt'
cat > $Em<<EOF
$from
$To
$Subject
$Msg
EOF
HERE DOCUMENT 变量赋值
WOW="WOE,GREAN"
ml=$(cat<<EOF
Line 1 is good.
They are jack
$WOW
EOF)
cat <<-'HERE'
去掉TAB
HERE
HERE DOCUMENT 多行注释
:<<DO-NOTTHING
DO-NOTTHING
文档批注
:<<BASH-CODE
BASE-CODE
SHELL添加C代码
cat<<'EOF'>hello.c
#include
int main(){
printf("hellow\n");
return 0;
}
EOF
shell 变量测试
R=${myvar:-'chechi'}
测试变量是否存在并且判断变量是否为空
开启调试测试
[ -n ${DEBUG:-} ] && set -v
设置变量默认值
unset count
r=${count:=100}
${var:-替换字符串} 回传的结果一定要有非空值
测试变量不存在或者为空
${var:+替换字符串} 判断某事是否为真 测试存在且非空 符合条件 传回默认值
不符合条件传回空值
截取变量字符串长度
方法一
${var:起始位置}
${var:开始位置:结束位置}
${@:起点}
expr length ""
length=${expr length ""}
expr "":'.*'
${变量#样式} 由前面开始对比 删除最短的
${变量##样式}由前面开始对比 删除最长的
${变量%样式} 由后面开始对比 删除最短的
${变量%%样式}由后面开始对比 删除最长的
取代删除部分变量内容
替换第一个
${变量/:/,}
example
act=mail:x:8:8/var
r=${act/:/,}
echo $r
mail,x:8:8/var
全部替换
act=mail:x:8:8/var
r=${act//:/,}
echo $r
mail,x,8,8/var
${变量/#正则表达式/} 变量开头开始
${变量/%正则表达式/} 变量结尾开始
删除字符串
只删除一个
${变量/正则表达式/}
删除匹配
${变量//正则表达式/}
${变量//#正则表达式/} 变量开头开始
${变量//%正则表达式/} 变量结尾开始
获取数组索引
ar=(a b c)
r=${!ar[@]} 获取数组索引
转义命令
DIRS=$(ls)
for f in $DIRS do
echo $f
done
file="/etc/passwd"
IFS=' '
fc=$(cat $file) 另外一种写法 fc(<$fiel)
echo $fc
PDIR=$(cd..;pwd)
最后一个命令的执行结果赋给变量
数学运算
I=$((8+10))
echo $I
r='expr 8+9'
echo $r
r=$[4+6]
declare -i $var=4+9
let r=8+9
echo $((${j:-8}+3))
echo $((k+3))
r=$((++i))
i=10
((i++))
i=11
三元运算
((n=i<100?10:80))
分享到:
相关推荐
在本学习资料包中,包含了三本关于Linux Shell的重要书籍:《Linux Shell编程艺术》、《Linux Shell脚本攻略》以及《Linux Shell从入门到精通》,这些资源将帮助你全面深入地理解和掌握Linux Shell。 《Linux Shell...
Linux Shell 编程基础教程 本资源为 Linux Shell 编程基础教程,涵盖了 Linux Shell 编程的基础知识,包括语法基本介绍、变量、环境变量、Shell 命令和流程控制等。 一、语法基本介绍 在 Linux Shell 编程中,...
Linux Shell是Linux操作系统中不可或缺的一部分,它是一种命令行接口,允许用户通过文本命令与系统进行交互。Shell脚本则是编写的一系列命令,可以自动化执行一系列任务,极大地提高了工作效率。在这个"Linux Shell...
Linux Shell编程入门实例讲解详解 Linux Shell编程是Linux系统中一种非常灵活的工具,通过shell编程可以自动化大量的任务,especially适合那些易用性、可维护性和便携性比效率更重要的任务。下面是Linux Shell编程...
Linux Shell Scripting Cookbook(3rd) 英文mobi 第3版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书
Proper usage of shell commands can easily solve many complex tasks with a few lines of code, but most linux users don't have the right know-how to use the Linux shell to its full potential. ...
Linux Shell脚本手册 - 第三版,. This book will take you through useful real-world recipes designed to make your daily life easier when working with the shell.
在IT行业中,Linux Shell编程是系统管理员和开发者必备的技能之一。它允许用户通过命令行接口与操作系统进行交互,执行自动化任务,大大提高工作效率。本文将深入探讨Linux Shell编写的基础知识,包括基本概念、常用...
《Linux Shell Scripting Cookbook 第二版》是一本系统讲解Linux Shell脚本编写方法的书籍,涵盖了超过110个实用的配方,用于解决真实世界中的Shell脚本问题。通过这些配方,读者可以学习到如何利用Shell脚本自动化...
根据提供的信息,我们可以推断这本书主要讨论的是Linux Shell的相关内容。由于给定的部分内容只包含了一个网站链接(www.linuxidc.com),我们无法从中直接提取到具体的知识点。因此,接下来将基于“Linux Shell”这...
Proper usage of shell commands can easily solve many complex tasks with a few lines of code, but most linux users don't have the right know-how to use the Linux shell to its full potential. ...
Linux Shell编程是Linux系统管理与自动化任务处理的重要组成部分。Shell是一种命令行解释器,它提供了与操作系统交互的接口,允许用户执行系统命令、编写脚本并进行文件操作。本教程将深入探讨Linux Shell编程的经典...
Linux Shell 自动化运维课后习题答案 本文档提供了 Linux Shell 自动化运维课后习题答案,涵盖了 Linux Shell 编程、自动化运维等方面的知识点。 一、Shell 编程基础 1. Shell 变量:在 Shell 中,可以使用变量来...
Linux Shell是Linux操作系统中的一种命令解释器,它允许用户与操作系统内核进行交互,执行各种命令和脚本。shell不仅是一个程序,同时也是一种强大的程序设计语言。在Linux中,有多种类型的shell,如ash、bash、ksh...
Linux Shell 编程基础 Linux Shell 编程基础是 Linux 操作系统中一个非常重要的组件,它提供了一个交互式命令行界面,允许用户输入命令来执行各种操作。在 Linux 系统中,Shell 是一个命令解释器,它可以解释用户...
本书由浅入深、循序渐进地详细讲解了LinuxShell编程的基本知识。这些基本知识包括Shell编程的基本知识、文本处理的工具和方法、正则表达式、Linux系统知识等。 本书旨在通过理清Linux Shell编程的脉络,从基本概念...
Linux Shell编程是Linux系统管理与自动化任务处理的重要组成部分。Shell脚本可以理解为Linux环境下的批处理程序,它允许用户通过编写简单的命令序列来执行复杂的任务。这份"Linux Shell编程教材配套PPT"将帮助你深入...
Linux Shell编程是Linux系统中非常重要的一个环节,它是一种命令解释器,同时也是脚本编程语言。Shell编程使得用户可以通过编写脚本来自动化重复性任务,提高工作效率。这份"Linux Shell编程手册"将引领初学者深入...