`
xiaolaogong
  • 浏览: 66833 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

linux shell

 
阅读更多

 

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...

    LinuxShell编程基础教程.pdf

    Linux Shell 编程基础教程 本资源为 Linux Shell 编程基础教程,涵盖了 Linux Shell 编程的基础知识,包括语法基本介绍、变量、环境变量、Shell 命令和流程控制等。 一、语法基本介绍 在 Linux Shell 编程中,...

    linux shell 视频教学

    Linux Shell是Linux操作系统中不可或缺的一部分,它是一种命令行接口,允许用户通过文本命令与系统进行交互。Shell脚本则是编写的一系列命令,可以自动化执行一系列任务,极大地提高了工作效率。在这个"Linux Shell...

    linux Shell编程入门 实例讲解详解

    Linux Shell编程入门实例讲解详解 Linux Shell编程是Linux系统中一种非常灵活的工具,通过shell编程可以自动化大量的任务,especially适合那些易用性、可维护性和便携性比效率更重要的任务。下面是Linux Shell编程...

    Linux Shell Scripting Cookbook(3rd) mobi

    Linux Shell Scripting Cookbook(3rd) 英文mobi 第3版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书

    Linux Shell Scripting Cookbook.epub

    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 Scripting Cookbook Third Edition

    Linux Shell脚本手册 - 第三版,. This book will take you through useful real-world recipes designed to make your daily life easier when working with the shell.

    Linuxshell编写demo

    在IT行业中,Linux Shell编程是系统管理员和开发者必备的技能之一。它允许用户通过命令行接口与操作系统进行交互,执行自动化任务,大大提高工作效率。本文将深入探讨Linux Shell编写的基础知识,包括基本概念、常用...

    Linux Shell Scripting Cookbook Second Edition

    《Linux Shell Scripting Cookbook 第二版》是一本系统讲解Linux Shell脚本编写方法的书籍,涵盖了超过110个实用的配方,用于解决真实世界中的Shell脚本问题。通过这些配方,读者可以学习到如何利用Shell脚本自动化...

    linuxshell

    根据提供的信息,我们可以推断这本书主要讨论的是Linux Shell的相关内容。由于给定的部分内容只包含了一个网站链接(www.linuxidc.com),我们无法从中直接提取到具体的知识点。因此,接下来将基于“Linux Shell”这...

    Linux Shell Scripting Cookbook.mobi

    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编程的经典...

    LinuxShell自动化运维-课后习题答案.docx

    Linux Shell 自动化运维课后习题答案 本文档提供了 Linux Shell 自动化运维课后习题答案,涵盖了 Linux Shell 编程、自动化运维等方面的知识点。 一、Shell 编程基础 1. Shell 变量:在 Shell 中,可以使用变量来...

    linuxshell专题讲座.docx

    Linux Shell是Linux操作系统中的一种命令解释器,它允许用户与操作系统内核进行交互,执行各种命令和脚本。shell不仅是一个程序,同时也是一种强大的程序设计语言。在Linux中,有多种类型的shell,如ash、bash、ksh...

    LinuxShell编程基础.pdf

    Linux Shell 编程基础 Linux Shell 编程基础是 Linux 操作系统中一个非常重要的组件,它提供了一个交互式命令行界面,允许用户输入命令来执行各种操作。在 Linux 系统中,Shell 是一个命令解释器,它可以解释用户...

    Linux Shell编程从入门到精通

    本书由浅入深、循序渐进地详细讲解了LinuxShell编程的基本知识。这些基本知识包括Shell编程的基本知识、文本处理的工具和方法、正则表达式、Linux系统知识等。  本书旨在通过理清Linux Shell编程的脉络,从基本概念...

    linux shell 编程教材配套PPT

    Linux Shell编程是Linux系统管理与自动化任务处理的重要组成部分。Shell脚本可以理解为Linux环境下的批处理程序,它允许用户通过编写简单的命令序列来执行复杂的任务。这份"Linux Shell编程教材配套PPT"将帮助你深入...

    linux shell编程手册

    Linux Shell编程是Linux系统中非常重要的一个环节,它是一种命令解释器,同时也是脚本编程语言。Shell编程使得用户可以通过编写脚本来自动化重复性任务,提高工作效率。这份"Linux Shell编程手册"将引领初学者深入...

Global site tag (gtag.js) - Google Analytics