IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 文件内容查看命令2 -> 正文阅读

[系统运维]文件内容查看命令2

文件内容查看命令2

1.在Linux的shell编程里面,整数的运算使用双元括号:(())

[root@mysql-proxy-1 ~]# c=$(($a+$b))   将变量a和b进行加法运算,然后将运算的结果赋值给c变量

2.命令替换:将一条命令的执行结果赋值给变量,有两种方式

2.1 方法一:使用括号:varname=$(命令执行的结果)
[root@mysql-proxy-1 lianxi]# num1=$(cat name.txt |wc -l)
[root@mysql-proxy-1 lianxi]# echo $num1
27
2.2 方法二:使用反引号:varname=命令执行的结果
[root@mysql-proxy-1 lianxi]# num2=`cat name.txt|wc -l`
[root@mysql-proxy-1 lianxi]# echo $num2
27
2.3 两者的区别:使用括号可以嵌套,使用反引号不可以,所以一般推荐使用第一种方法
[root@xiaoliu lianxi]# num1=$(cat $(ls name.txt)|wc -l)
[root@xiaoliu lianxi]# cat name.txt -n
     1	lhj
     2	zj
     3	wjl
     4	lcx
     5	lx
     6	zjj
     7	llq
     8	xxh
     9	fmy
    10	cjw
    11	wjx
    12	cxw
    13	wsh
    14	yby
    15	zyj
    16	chx
    17	smm
    18	ysy
    19	zyw
[root@xiaoliu lianxi]# echo $num1
19

3.解释 $0 $1 $2 $$ $? $* $@ $# 分别是什么意思;

3.1 $? 代表上一条命令的返回值

返回值为0 说明上一条命令执行成功
返回值为非0 说明上一条命令执行失败
1 参数或者选项出错
2 参数或者选项出错
127 --》命令不存在

[root@mysql-proxy-1 lianxi]# fjdkfjdfjkd
-bash: fjdkfjdfjkd: 未找到命令
[root@mysql-proxy-1 lianxi]# echo $?
127

[root@mysql-proxy-1 lianxi]# mkdir  /songyuxiao
[root@mysql-proxy-1 lianxi]# mkdir  /songyuxiao
mkdir: 无法创建目录"/songyuxiao": 文件已存在
[root@mysql-proxy-1 lianxi]# echo $?
1
3.2 $0 显示脚本名
3.3 $1、$2 属于位置变量,其作用就是往脚本里传递参数 --》传参
3.4 $$ 代表当前终端的pid号(进程号)
[root@mysql-proxy-1 lianxi]# echo $$
7014
3.5 $# 代表文件里面一共有多少位置变量
3.6 $@ 统计所有变量的名称
3.7 $* 统计所有变量的名称
3.8 代码解释
[root@xiaoliu lianxi]# cat post_var.sh 
#!/bin/bash
echo "第1个位置变量是$1"
echo "第2个位置变量是$2"
echo "第3个位置变量是$3"
echo "第4个位置变量是$4"
echo "第5个位置变量是$5"
echo "第6个位置变量是$6"
echo "脚本名是$0"
echo "一共有$#个位置变量"
echo "所有的位置变量是 $*"
echo "所有的位置变量是 $@"

[root@xiaoliu lianxi]# bash post_var.sh lhj lzx czm twj xsw qx 
第1个位置变量是lhj
第2个位置变量是lzx
第3个位置变量是czm
第4个位置变量是twj
第5个位置变量是xsw
第6个位置变量是qx
脚本名是post_var.sh
一共有6个位置变量
所有的位置变量是 lhj lzx czm twj xsw qx
所有的位置变量是 lhj lzx czm twj xsw qx

4. ; 命令连接符,不管前面的命令执行成功还是失败,都会执行后面的命令

		 命令1; 命令2;命令3 

5.if 判断

5.1.单分支–》一种情况
  1.  	if 命令     --》命令执行成功就是条件成立,就执行then后面的command命令  ,条件不成立就不执行command命令
         then
                command  
         fi
    
  2.      if 命令 ; then    --》命令执行成功就是条件成立,就执行then后面的命令
                command  
         fi
    
5.2.双分支–》2种情况
    if (( $i == 5 ))   --》命令执行成功就是条件成立,就执行then后面的命令,不成功就执行else后面的命令
    then
            continue
    else
            mkdir fengdeyong$i
    fi
5.3 判断文件是否存在且是否为文件:[ -f file ] --》file
[root@xiaoliu lianxi]# [ -f lucky.txt ]
[root@xiaoliu lianxi]# echo $?
0
[root@xiaoliu lianxi]# [ -f home ]
[root@xiaoliu lianxi]# echo $?
1
5.4 判断文件是否存在且是否为目录文件:[ -d file ] --》directory
[root@xiaoliu lianxi]# [ -d home ]
[root@xiaoliu lianxi]# echo $?
0
[root@xiaoliu lianxi]# [ -d lucky.txt ]
[root@xiaoliu lianxi]# echo $?
1

5.5 判断字符串的长度是否为0:[ -z feng]
[root@mysql-proxy-1 lianxi]# sg=
[root@mysql-proxy-1 lianxi]# [ -z $sg ]
[root@mysql-proxy-1 lianxi]# echo $?
0

[root@mysql-proxy-1 lianxi]# sg=wuyangming
[root@mysql-proxy-1 lianxi]# [ -z $sg ]
[root@mysql-proxy-1 lianxi]# echo $?
1

6.while 循环

6.1 控制循环次数:
i=1
while ((i<10))
do
	echo $i
	mkdir -p chenlu$i
	((i++))  #自增运算
done
6.2 死循环
k=1
while true
do
	((k++))
	if ((k==3));then
		continue
	fi
	echo $k
	sleep 1
	if  ((k==8));then
		break
	fi

done

7.文本处理3剑客:

7.1 grep 文本过滤的命令,根据字符串去匹配,默认会显示符号要求的行
  1. ^ 代表以什么开头
[root@mysql-proxy-1 lianxi]# cat name.txt |grep "^li"  
liuchenxi
liuxing
  1. $ 代表以什么结尾
[root@mysql-proxy-1 lianxi]# cat name.txt |grep "g$"  以g结尾的行
xiongyiyang
liuxing
lilanqing

3.精准匹配

[root@mysql-proxy-1 lianxi]# cat name.txt |grep "^lilan$"  # 一行里只有lilan,不能多也不能少,必须要完全匹配
lilan

4.结合判断命令,判断过滤的字符串长度是否为零:

[root@mysql-proxy-1 lianxi]# [[ -z $(cat name.txt |grep "^fengdeyong$") ]]
[root@mysql-proxy-1 lianxi]# echo $?
1
7.2 sed 文本替换和删除的命令,可以直接在文件里删除和替换文本

-i 直接在原文件里进行操作
/$name/ 查找变量name的内容
d 是sed里的命令,执行删除操作的 delete
sed 引用shell里定义的变量,必须使用双引号,不能使用单引号

1.根据匹配的字符串来删除

[root@xiaoliu lianxi]# name=smm
[root@xiaoliu lianxi]# cat name1.txt 
lhj
zj
smm
llq
zzj
zyw
[root@xiaoliu lianxi]# sed -i "/$name/d " name1.txt
[root@xiaoliu lianxi]# cat name1.txt 
lhj
zj
llq
zzj
zyw

2.根据行号来删除

[root@xiaoliu lianxi]# num=5
[root@xiaoliu lianxi]# cat name1.txt 
lhj
zj
llq
zzj
zyw
[root@xiaoliu lianxi]# sed -i "$num d " name1.txt
[root@xiaoliu lianxi]# cat name1.txt 
lhj
zj
llq
zzj

3.精准匹配

[root@mysql-proxy-1 lianxi]# cat name2.txt
liuxing
liuxing2
liuxing3
liuxing4
[root@mysql-proxy-1 lianxi]# name=liuxing
[root@mysql-proxy-1 lianxi]# sed -i "/^$name$/d" name2.txt

[root@mysql-proxy-1 lianxi]# cat name2.txt
liuxing2
liuxing3
liuxing4
7.3 awk 文本截取

8 vim编辑器:vim编辑器分为命令模式、插入模式和末行模式

8.1 命令模式下的快捷键

1.yy 复制当前行 copy
2.p 粘贴 paste
3.dd 删除当前行/剪切
4.u 撤销
5. ctrl + r 恢复

8.2 插入模式:按i进入插入模式
8.3 末行模式
  1. :wq 退出并保存
  2. :w 保存
  3. :wq!强制退出并且保存
  4. : q! 强制退出不保存
  5. : q 退出
  6. :set nu 给里面的内容每行进行编号
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-12-13 13:16:28  更:2021-12-13 13:17:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 5:28:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码