[TOC]
# 实用篇
## 1.shell判断字符串或者read的是否为数字
```
read -p "Please select the operation number you need to perform:" input
#判断输入是否为数字
expr $input "+" 10 &> /dev/null
if [ $? -eq 0 ];then
echo "$1 is number"
else
echo "$1 not number"
fi
```
## 2.shell脚本只列出目录下的所有文件
```
files=$(ls -l ./ |awk '/^-/ {print $NF}')
echo
index=1
for sfile in $files #加载功能
do
echo ${index}.${sfile}
index=$[$index+1]
done
```
## 3.列出当前目录下所有文件夹
```
#获取当前路径下所有文件夹名称
dir=$(ls -l ./ |awk '/^d/ {print $NF}')
cnt=1
for i in $dir
do
linux_list[cnt]=$i #存储菜单到数组linux_list
echo ${cnt}.${linux_list[cnt]}
cnt=$[$cnt+1]
done
```
## 4.读取文件第n行内容
```
content=`awk 'NR==2' ${sfile}` #读取文件第2行内容
```
## 5.删除、替换字符串中指定的字符
```
text="#1234455#rr"
# 只替换字符串中第一个#为-
text=${text/#/-}
# 替换字符串中所有#为-
text=${text//#/-}
```
注意:使用替换当然可以实现删除指定字符的目的。
## 6.目录路径截取
```
FILE=/home/yhp/prj
appname=${FILE##\*/} #扫描字符,截取最有一个/符号后面的字符出来
```
## 7.获取时间日期并打印
```bash
starttime=$(date +%Y-%m-%d\\ %H:%M:%S)
echo $starttime
ttime=`date +"%Y-%m-%d %H:%M:%S"`
echo $ttime
```
## 8.将变量写入文件和从文件读取变量的一中方法
```
#!/bin/bash
#[shell]
#将shell中使用的变量存入文件中,以及从文件调取变量
################################################
#文件中的格式为 VAR= 变量
#注意上面的等于号后面一定要有个空格才行
#假设var.dat文件中有一行为 VAR= yuan-hp
#那么脚本读取就是 var=`awk ’/VAR=/{print $2}‘ var.dat`
#其实就是读取该行第二例,所以按空格分列,你的变量不能含有空格
#当然可以通过-F参数自定义分隔符号来实现空格额问题
################################################
clear
echo "LOG | 开始执行 var_to_file.sh脚本"
VAR=./tmp/var.dat #文件路径
#新建文件用于测试
if [ ! -f $VAR ];then #没有文件则创建文件
echo "LOG | 生成变量存储文件:$VAR"
echo "VAR_PATH= $VAR">$VAR
echo "A=123">>$VAR
echo "B=324">>$VAR
echo "STR=sfgrtt">>$VAR
fi
#从文件读取变量
A=`awk '/A=/{print $2}' $VAR`
B=`awk '/B=/{print $2}' $VAR`
STR=`awk '/STR=/{print $2}' $VAR`
VAR_PATH=`awk '/VAR_PATH=/{print $2}' $VAR`
echo "A=$A"
echo "B=$B"
echo "STR=$STR"
echo "VAR_PATH=$VAR_PATH"
```
自定义分隔符:
```
clear
echo "LOG | 开始执行 var_to_file.sh脚本"
VAR=./tmp/var.dat #文件路径
#新建文件用于测试
if [ ! -f $VAR ];then #没有文件则创建文件
echo "LOG | 生成变量存储文件:$VAR"
echo "VAR_PATH=$VAR">$VAR
fi
#从文件读取变量
A=`awk -F'=' '/A=/{print $2}' $VAR`
B=`awk -F'=' '/B=/{print $2}' $VAR`
STR=`awk -F'=' '/STR=/{print $2}' $VAR`
VAR_PATH=`awk -F'=' '/VAR_PATH=/{print $2}' $VAR`
if [ -z $A ];then
echo A为空
fi
echo "A=$A"
echo "B=$B"
echo "STR=$STR"
echo "VAR_PATH=$VAR_PATH"
```
![](https://img.kancloud.cn/6c/9f/6c9f323d49d726a883a2a3d2d6ba78a2_538x189.png)
![](https://img.kancloud.cn/d4/cd/d4cd0ed1429c73e573980e65ff4ea711_307x196.png)
## 9.linux中bash变量自加方法
[**Linux**](http://www.51testing.com/?uid-225738-action-viewspace-itemid-220988) [**Shell**](http://www.51testing.com/?uid-225738-action-viewspace-itemid-220988)中写循环时,常常要用到变量的自增,现在总结一下整型变量自增的方法。
1. i=`expr $i + 1`;
2. let i+=1;
3. ((i++));
4. i=$[$i+1];
5. i=$(( $i + 1 ))
## 10.获取文件大小
` `可使用`do -b filename`获取,如下:
![](https://img.kancloud.cn/ce/2a/ce2a8bcf68ec6d27acd3a56d13bdf953_620x226.png)
得到文件大小为4bytes
## 11.使用dd实现文件分割
```
dd的作用是转换和拷贝文件,我们可以利用它来分割文件,相关的选项如下:
if=filename:输入的文件名
of=finename:输出的文件名
bs=bytes:一次读写的字节数,默认是512bytes
skip=blocks:拷贝前,跳过的输入文件的前blocks块,块的大小有bs决定
count=blocks:只拷贝输入文件的前blocks块
例如,现在有一个文件file,大小为116616字节:
[root]# du -b file
116616 file
将其分割为两文件file1和file2,那我们就设置每块为1024字节,将file的前60块放入file1,余下的放入file2:
[root]# dd if=file bs=1024 count=60 skip=0 of=file1
[root]# dd if=file bs=1024 count=60 skip=60 of=file2
可以用md5sum验证一下file和file.bak:
[root]# md5sum file
3ff53f7c30421ace632eefff36148a70 file
[root]# md5sum file.bak
3ff53f7c30421ace632eefff36148a70 file.bak
可以证明两个文件时完全相同的。
```
## 12.查看二进制文件
```
#使用xxd查看二进制文件内容
xxd hexfile.hex
hexdump hexfile.hex
```
![](https://img.kancloud.cn/7d/47/7d479f900d7db13a35baa31752d20bae_665x400.png)
## 13.获取字符串的长度
```
len=`echo 'string' |wc -L` #获取字符串长度
```
## 14获取当前终端的宽度
```
col=`stty size|awk '{print $2}'`
```
# 网络篇
## 1.shel中是一个jq解析json串
语法:jq '.key'
```shell
#!/bin/bash
#联网随机获取一句语句并显示
while true
do
clear
js=`curl -s https://v1.hitokoto.cn/`
text=` echo $js | jq '.hitokoto'`
text=${text//\"/} #去除引号
echo $text
sleep 5s
done
```
## 2.bash将字符转换为urlencode
```
key=`echo '黄昏' | tr -d '\\n' | xxd -plain | sed 's/\\(..\\)/%\\1/g'`
```
- 0 工具
- 0.1 图片无损放大
- 1 deepin系统
- 1.1 deepin系统安装
- 1.2 deepin创建desktop文件
- 1.3 浏览器运行虚拟机
- 1.4 linux的百度网盘突然打不
- 1.5 deepin安装后个人配置
- 1.5.1 安装公式编辑器AxMath
- 1.5.2 Deepin标题栏太高的解决办法(自定义高度)
- 1.5.3 linux下配置VS Code的标题栏风格
- 1.5.4 安装脚本解释器fish
- 1.6 关于软件安装
- 1.6.1 rpm和deb包想换转换的方法
- 1.7 deepin开机自启的设置方法
- 2 tiny core系统
- 2.1 安装系统到硬盘
- 2.2 系统软件安装介绍
- 2.3 安装控制台计算器bc
- 2.4 关机保存的方法
- 2.5 linux文件结构说明
- 2.6 为tinycore配置ssh
- 3 使用Linux中的一些技巧
- 3.1 软连接的使用
- 3.2 LInux下解压
- 3.3 删除操作
- 3.4 Zenity-在命令行和Shell脚本中创建图形(GTK +)对话框
- 3.4.1 列表框
- 3.4.2 口令对话框
- 3.4.3 消息对话框
- 3.4.3.1 信息对话框
- 3.4.3.2 错误框
- 3.4.3.3 问题对话框
- 3.4.3.4 警告对话框
- 3.4.4 范围对话框(滑条)
- 3.4.5 文件选择对话框
- 3.4.6 表单对话框
- 3.4.7 文本信息框
- 3.4.8 进度框
- 3.4.9 文本输入框
- 3.4.10 通知区域图标
- 3.4.11 日历对话框
- 3.4.12 颜色对话框
- 3.4.13 上述对话框测试文件
- 3.4.14 使用C++调用zenity
- 3.5 Linux whereis、find和locate命令
- 3.6 字体下载
- 3.7 使用Electron 创建跨平台的应用程序
- 3.8 shell的使用
- 3.8.1 $$,$?等表示什么
- 3.8.2 shell随机产生某一个范围内的整数
- 3.8.3 写shel脚本的一些使用操作
- 3.8.4 linux shell操作二进制文件
- 3.8.5 shell中的一些实用技巧
- 3.8.5.1 列出当前路径下的所有文件夹
- 3.8.5.2 列出当前路径下所有文件
- 3.8.5.3 获取当前虚拟终端的大小
- 3.8.5.4 判断输入字符串是否为数字
- 3.8.5.5 bash中的数学运算
- 3.8.5.6 按照文件创建时间顺序列出文件
- 3.8.5.7 echo输出含空格不换行的设置方法
- 3.8.5.8 find 递归/不递归 查找子目录的方法
- 3.8.5.9 echo显示颜色设置
- 3.8.5.10 bash中使用${}字符操作方法
- 3.8.5.11 ls查找目录,文件,软连接等的方法
- 3.8.5.12 检测某个程序是否在运行
- 3.8.5.13 bash/shell 解析命令行参数工具:getopts/getopt
- 3.8.5.14 获取脚本的绝对路径
- 3.8.6 使用bash写的脚本管理脚本
- 3.9 Linux创建自定义命令
- 3.10 deepin挂载远程文件夹到本地
- 3.11 linux root用户添加用户
- 3.12 实用脚本或者命令
- 3.12.1 命令行 将ppt转换为 pdf
- 3.12.2 deepin上实现自定义命令
- 4 slitaz系统
- 4.1 系统安装
- 4.2 安装软件命令tazpkg
- 4.3 使用说明
- 4.4 用 tazlito 构建 livecd自制linux系统
- 4.5 英文显示支持设置方法
- 4.6 配置ssh
- 5 busybox的编译使用
- 5.1 busybox介绍
- 5.2 busybox编译使用
- 6 配置自己的linux
- 6.1 在deepin上编译linux内核
- 7 每天一个linux命令
- 7.1 文件管理类
- 7.1.1 cat--接文件并打印到标准输出设备上
- 7.1.2 chattr--改变文件属性
- 7.1.3 chgrp--变更文件或目录的所属群组
- 7.1.4 chmod --控制文件如何被他人所调
- 7.1.5 chown命令--指定文件的拥有者改为指定的用户或组
- 7.1.6 grep命令--用于查找文件里符合条件的字符串
- 7.1.7 其他
- 7.2 文档编辑类
- 7.2.1 col--过滤控制字符
- 7.2.2 colrm--滤掉指定的行
- 7.2.3 comm --比较两个已排过序的文件
- 7.2.4 awk--一种处理文本文件的语言,是一个强大的文本分析工具
- 7.2.5 sed命令
- 7.3 文件传输类
- 7.3.1 prm--将一个工作由打印机贮列中移除
- 7.4 磁盘管理类
- 7.4.1 cd--切换当前工作目录至 dirName(目录参数)。
- 7.4.2 df--显示目前在Linux系统上的文件系统的磁盘使用情况统计
- 7.4.3 dirs--显示目录记录
- 7.4.5 du--显示目录或文件的大小
- 8 其他系统
- 8.1 Alpine Liunx
- 8.1.2 简介
- 8.1.2 本地安装
- 8.1.3 apk软件包管理
- 8.1.4 配置ssh