Linux常用命令总结

linux 基础篇

  • 查看linux 支持的shell cat /etc/shells
  • 历史记忆功能
!number  执行历史命令
!find  执行上一个以find 开头的命令
!$  上一条命令的最后一个参数     
!+ctrl 上一个命令的第一个参数
!!  执行上一个命令
ctrl +r 检索历史命令
  • 快捷键
ctrl+【
R 检索历命令 
D  相当于exit  
A 光标移动到行首 
E 光标移动到行尾 
L 清空屏幕 
U 撤销输入 
K 撤销当前光标到行尾内容 
W 擦除光标前的单词  
Y 粘贴擦除的文本  
S  暂停该终端
Q 恢复该终端
P 查看上一个命令
N 查看下一个命令
C 中断前台任务 
Z 挂起前台任务 fg/bg 恢复前台后台任务】
前后台作业控制
&、nohup、^C、^Z、bg %1、fg %1、kill %3、screen

输入输出重定向
0,1,2 > 
>> 
2> 
2>> 
2>&1 & 
cat < /etc/hosts 
cat >file1 <<EOF
管道|tee  输出到多个文件
ip addr |grep 'inet ' |tee test |grep eth0 覆盖

ip addr |grep 'inet ' |tee -a test |grep eth0 -a 追加

命令排序 ;隔开 && 前一条命令执行成功才执行下一个 || 前一条命令执行失败执行
shell 通配符

  • 匹配任意多个字符ls in* rm -rf * rm -rf .pdf find / -iname "-eth0"

? 匹配任意一个字符touch love loove live l7ve; ll l?ve

[] 匹配括号中任意一个字符[abc] [a-z] [0-9] [a-zA-Z0-9] [^a-zA-Z0-9] ll l[io]ve ll l[^a-z]ve ll

/dev/sd[a-z]

() 在子shell 中执行(cd /boot;ls) (umask 077; touch file1000)

{} 集合touch file{1…9}

mkdir /home/{111,222} mkdir -pv /home/{333/{aaa,bbb},444}

\ 转义符 回归本意
echo
echo -e “OK! \n” 显示转义 开启换行
echo ‘’ 原样输出
echo “” 输出可包含变量
echo -n 取消行末尾默认的换行符
echo -e “\e[1;31mThis is a red text.\e[0m” 输出带颜色
printf 可以控制输出格式。–
shell 变量

  1. 自定义变量

定义变量:变量名=变量值变量名必须以字母或下划线开头,区分大小写

ip1=192.168.2.115

引用变量: 变量名或 变量名或 变量名或{变量名}

查看变量:echo $变量名set(所有变量:包括自定义变量和环境变量)

取消变量:unset 变量名

作用范围:仅在当前shell 中有效

  1. 环境变量

定义环境变量:方法一export back_dir2=/home/backup

方法二export back_dir1 将自定义变量转换成环境变量

引用环境变量: 变量名或 变量名或 变量名或{变量名}

查看环境变量:echo $变量名env 例如env |grep back_dir2

取消环境变量:unset 变量名

变量作用范围:在当前shell 和子shell 有效

  1. 位置变量

$1 $2 $3 $4 $5 $6 $7 $8 $9 ${10}

  1. 预定义变量

$0 脚本名

$* 所有的参数 --字符串

$@ 所有的参数 --列表

$# 参数的个数

$$ 当前进程的PID

$! 上一个后台进程的PID

$? 上一个命令的返回值0 表示成功

  1. read 从键盘读入变量值

read 变量名

read -p "提示信息: " 变量名

read -t 5 -p "提示信息: " 变量名 -t 指定时间 秒

read -n 2 变量名 -n 指定接收的字符数量

" " 弱引用

’ ’ 强引用 不解析变量

命令替换等价于$() 反引号中的shell 命令会被先执行

数学运算
$(()) echo $((5-3*2))

let let sum=2+3; echo $sum
let i++; echo $i

变量"内容"的删除和替换(扩展)

url=www.sina.com.cn

echo ${#url} 获取变量值的长度

echo ${url#*.} 从前往后,最短匹配 sina.com.cn

echo ${url##*.} 从前往后,最长匹配贪婪匹配
cn

echo ${url%.*} 从后往前,最短匹配 www.sina.com

echo ${url%%.*} 从后往前,最长匹配贪婪匹配 www

索引及切片
echo ${url:0:5}

echo ${url:5:5}

echo ${url:5}
变量替换
echo ${url/sina/baidu} 仅替换第一个
echo ${url//sina/baidu} 贪婪匹配 替换全部
变量嵌套

eval 需要执行的脚本 内部包含变量 变量套变量 eval hive -e ( e c h o ′ (echo ' (echo'${i})

i++ 先赋值,再运算

++i 先运算,再赋值


条件测试及流程控制
Shell 条件测试

格式1:test 条件表达式

格式2:[ 条件表达式] -a 与 -o 或 !非

格式3:[[ 条件表达式]] 支持模式匹配 更强大 =~

[ -e dir|file ]

[ -d dir ] 文件为目录

[ -f file ] 是否存在,而且是文件

[ -r file ] 当前用户对该文件是否有读权限

[ -x file ]

[ -w file ]

[ -L file ] 如果该文件存在,且该文件是符号链接文件
[-z ] 空字符串
[-n ] 非空字符串
[- s ] 文件大小非0 时为真

数值比较
[ 1 -gt 10 ] 大于

[ 1 -lt 10 ] 小于

[ 1 -eq 10 ] 等于

[ 1 -ne 10 ] 不等于

[ 1 -ge 10 ] 大于等于

[ 1 -le 10 ] 小于等于

字符串比较 " "
[ “$USER” = “root” ];echo $?
判断变量是不是数字:

[[ " n u m 10 " =   [ 0 − 9 ] + num10" =~ ^[0-9]+ num10"= [09]+ ]];echo $?

流程控制 if
单分支结构

if 条件测试

then 命令序列

fi

双分支结构

if 条件测试

then 命令序列

else 命令序列

fi

多分支结构

if 条件测试1

then 命令序列

[elif 条件测试2

then 命令序列

elif 条件测试3

then 命令序列]…

else 命令序列

fi

循环及并发控制
一、case 语法结构

case 变量in

模式1)

命令序列1

;;

模式2)

命令序列2

;;

模式3)

命令序列3

;;

*)

无匹配后命令序列

esac

一、for 语法结构

Shell:

for 变量名[ in 取值列表]

do

循环体

done

一、while 语句结构

while 条件测试

do

循环体

done

==当条件测试成立(条件测试为真),执行循环体

shell 并发控制
ls /proc/$$/fd

[root@tianyun ~]# touch /file1

[root@tianyun ~]# exec 6<> /file1 //打开文件

[root@tianyun ~]# ll /proc/$$/fd

[root@tianyun ~]# echo “tianyun” > /proc/$$/fd/6

[root@tianyun ~]# cat /proc/$$/fd/6

tianyun

[root@tianyun ~]# cat /file1

tianyun

[root@tianyun ~]# rm -rf /file1

[root@tianyun ~]# ll /proc/$$/fd

lrwx------ 1 root root 64 Sep 6 13:32 6 -> /file1 (deleted)

[root@tianyun ~]# cp -rf /proc/$$/fd/6 /file1 恢复

[root@tianyun ~]# exec 6<&- 关闭 文件描述符

[root@tianyun ~]# ll /proc/$$/fd

案例1:多文件处理

#!/bin/bash

exec 7<> /etc/hosts

exec 8<> /etc/sysconfig/network

while read -u 7 line
do
echo $line
read -u 8 line2
echo $line2
done
exec 7<&-
exec 8<&-
#! /bin/bash
#author by guangzhi
thread=5
tmp_fifofile=/tmp/$$.fifo
mkfifo $tmp_fifofile
exec 8<> $tmp_fifofile
rm $tmp_fifofile
for i in `seq ${thread}`
do
    echo >&8
done
for i in {1..200}
do
read -u 8 
    {    
    	需要并发的代码
     	echo >&8
    }&
done
wait
echo "all finish...."

非交互式expect函数
F:\技能提升\linux\5-非交互expect函数.pdf
数组的应用
普通数组:只能使用整数作为数组索引

关联数组:可以使用字符串作为数组索引

一、普通数组

定义数组:

方法一:一次赋一个值

数组名[下标]=变量值

array1[0]=pear

array1[1]=apple

#array1[2]=orange

#array1[3]=peach

方法二:一次赋多个值

array2=(tom jack alice)

array3=(cat /etc/passwd) 希望是将该文件中的每一个行作为一个元数赋

值给数组array3

array4=(ls /var/ftp/Shell/for*)

array5=(tom jack alice “bash shell”)

colors=($red $blue $green $recolor)

array5=(1 2 3 4 5 6 7 “linux shell” [20]=puppet)

查看数组:

declare -a

declare -a array1=‘([0]=“pear” [1]=“apple” [2]=“orange” [3]=“peach”)’

declare -a array2='([0]=“tom” [1]=“jack” [2]=“alice”)

访问数组元数:

echo ${array1[0]} 访问数组中的第一个元数

echo ${array1[@]} 访问数组中所有元数等同于echo ${array1[*]}

echo ${#array1[@]} 统计数组元数的个数

echo ${!array2[@]} 获取数组元数的索引

echo ${array1[@]:1} 从数组下标1 开始

echo ${array1[@]:1:2} 从数组下标1 开始,访问两个元素

遍历数组:

方法一:通过数组元数的个数进行遍历
for(( i=0;i<${#array[@]};i++))
do
  echo ${array[i]}
done
for i in ${array[@]}
do
  echo $i
done
方法二:通过数组元素的索引进行遍历

二、关联数组

定义关联数组:

申明关联数组变量

declare -A ass_array1

declare -A ass_array2

方法一:一次赋一个值

数组名[索引]=变量值

ass_array1[index1]=pear

ass_array1[index2]=apple

ass_array1[index3]=orange

ass_array1[index4]=peach

方法二:一次赋多个值

ass_array2=([index1]=tom [index2]=jack [index3]=alice

[index4]=‘bash shell’)

查看数组:

declare -A

declare -A ass_array1='([index4]=“peach” [index1]=“pear”

[index2]=“apple” [index3]=“orange” )’

declare -A ass_array2='([index4]=“bash shell” [index1]=“tom”

[index2]=“jack” [index3]=“alice” )’

访问数组元数:

echo ${ass_array2[index2]} 访问数组中的第二个元数

echo ${ass_array2[@]} 访问数组中所有元数等同于echo ${array1[*]}

echo ${#ass_array2[@]} 获得数组元数的个数

echo ${!ass_array2[@]} 获得数组元数的索引


函数传参及返回值
一、定义函数

方法一:

函数名() {

函数要实现的功能代码

}

方法二:

function 函数名{

函数要实现的功能代码

}

二、调用函数

函数名

函数名参数1 参数2


AWK
时间同步:systemctl start chronyd
getenforce 查看selinux 状态

关闭防火墙 :systemctl stop firewalld.service
systemctl disable firewalld.service #禁止firewall开机启动

FTP 登陆:
lftp ip地址 -p 端口号 -u 用户名,‘密码’ -e’命令’

查看最大打开文件描述符数量: ulimit -Sn ulimit -Hn

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值