四时宝库

程序员的知识宝库

Shell:截取字符串方法(shell截取字符串方法)

方法1

"${varible##*string}"

从左向右截取最后一个string后的字符串

e.g.

exampleString="abc//888//abcdd//1234//444//1234//5" subString="${exampleString##*//}" echo $subString

Linux学习笔记(三)——Shell(linux中的shell命令)

Bash的变量

1.什么是变量?

?变量是计算机内存的单元,其中存放的值可以改变。当Shell脚本需要保存一些信息时,如一个文件名或是一个数字,就把它存放在一个变量中。每个变量有一个名字,所以很容易引用它。使用变量可以保存有用信息,使系统获知用户相关设置,变量也可以用于保存暂时信息。

linux shell编程-逐行处理文本文件

前言

在Linux shell编程中,我们经常需要以行为处理单位进行数据处理。


使用while read处理

read命令接收标准输入,或其他文件描述符的输入,得到输入后,read命令将数据放入一个标准变量中。read每次读取一行的数据然后就传递给变量进行处理。

Linux Shell 大师进化论-实战演练之文件分割

这一期我们实战练习下Shell脚本如何将一个文件分割成几个小文件,具体实现请看下面的内容:

目标:大文件分割

有的时候我们需要将一个大文件分割成几个小文件来上传或拷贝,通过Linux split命令即可完成这个目标。

预备知识:

shell编程中如何打印文件的第n行?



有几种方法可以实现这个目标:

  1. 使用sed命令可以打印第n行:

Hadoop学习(五):HDFS的shell操作(hdfs常用shell命令)


1. HDFS的Shell命令简介

HDFS是存取数据的分布式文件系统,那么对HDFS的操作,就是文件系统的基本操作,比如文件的创建、修改、删除、修改权限等,文件夹的创建、删除、重命名等。对HDFS的操作命令类似于Linux的shell对文件的操作,如ls、mkdir、rm等。

关于shell编程中的文件测试简单的操作实例

谈一谈关于shell编程中的文件测试

Shell编程有时处理一个对象时,需要我们对对象进行测试。

只有符合要求的才采取下一步操作,这样做的好处可以避免程序出错。

这个测试的对象可以是文件、字符串、数字等等。

下面我们来简单的看一下对于文件的测试。

1、 文件测试

shell脚本 文件压缩和解压缩(shell脚本解压tar包)

文件压缩和解压缩:Shell脚本可以使用压缩工具(如gzip和tar)来进行文件或目录的压缩和解压缩

#!/bin/bash

# 压缩文件
gzip file.txt
# 压缩目录
tar -czf archive.tar.gz directory/

# 解压缩文件
gzip -d file.txt.gz
# 解压缩目录
tar -xzf archive.tar.gz

golang 文件shell 命令操作(golang shellcode)

// @Title 文件工具方法
// @Description 文件操作相关工具方法
// @Author xutao
// @Update 2020/04/01
package util
import (
    "fmt"
    "os/exec"
    "regexp"
    "strconv"
    "strings"
)
// 以下合并操作适用于linux平台
const (
// MergeFileCMD : 通过shell合并分块文件
MergeFileCMD = `
#!/bin/bash
# 需要进行合并的分片所在的目录
chunkDir=$1
# 合并后的文件的完成路径(目录+文件名)
mergePath=$2

echo "分块合并,输入目录: " $chunkDir

if [ ! -f $mergePath ]; then
echo "$mergePath not exist"
else
rm -f $mergePath
fi

for chunk in $(ls $chunkDir | sort -n)
do
cat $chunkDir/${chunk} >> ${mergePath}
done

echo "合并完成,输出:" mergePath
`
// FileSha1CMD : 计算文件sha1值
FileSha1CMD = `
#!/bin/bash
sha1sum $1 | awk '{print $1}'
`
// FileSizeCMD : 计算文件大小
FileSizeCMD = `
#!/bin/bash
ls -l $1 | awk '{print $5}'
`
// FileChunksDelCMD : 删除文件分块
FileChunksDelCMD = `
#!/bin/bash
chunkDir="/data/chunks/"
targetDir=$1
# 增加条件判断,避免误删 (指定的路径包含且不等于chunkDir)
if [[ $targetDir =~ $chunkDir ]] && [[ $targetDir != $chunkDir ]]; then
rm -rf $targetDir
fi
`
)
// RemovePathByShell : 通过调用shell来删除制定目录
// @return bool: 合并成功将返回true, 否则返回false
func RemovePathByShell(destPath string) bool {
    cmdStr := strings.Replace(FileChunksDelCMD, "$1", destPath, 1)
    delCmd := exec.Command("bash", "-c", cmdStr)
    if _, err := delCmd.Output(); err != nil {
        fmt.Println(err)
        return false
    }
    return true
}
// ComputeFileSizeByShell : 通过调用shell来计算文件大小
// @return (string, error): (文件hash, 错误信息)
func ComputeFileSizeByShell(destPath string) (int, error) {
    cmdStr := strings.Replace(FileSizeCMD, "$1", destPath, 1)
    fSizeCmd := exec.Command("bash", "-c", cmdStr)
    if fSizeStr, err := fSizeCmd.Output(); err != nil {
    fmt.Println(err)
    return -1, err
    } else {
    reg := regexp.MustCompile("\\s+")
    fSize, err := strconv.Atoi(reg.ReplaceAllString(string(fSizeStr), ""))
    if err != nil {
    fmt.Println(err)
    return -1, err
    }
    return fSize, nil
    }
}
// ComputeSha1ByShell : 通过调用shell来计算文件sha1
// @return (string, error): (文件hash, 错误信息)
func ComputeSha1ByShell(destPath string) (string, error) {
    cmdStr := strings.Replace(FileSha1CMD, "$1", destPath, 1)
    hashCmd := exec.Command("bash", "-c", cmdStr)
    if filehash, err := hashCmd.Output(); err != nil {
    fmt.Println(err)
    return "", err
    } else {
    reg := regexp.MustCompile("\\s+")
    return reg.ReplaceAllString(string(filehash), ""), nil
    }
}
// MergeChuncksByShell : 通过调用shell来合并文件分块,分块文件名须有序 (如分块名分别为: 1, 2, 3, ...)
// @return bool: 合并成功将返回true, 否则返回false
func MergeChuncksByShell(chunkDir string, destPath string, fileSha1 string) bool {
    // 合并分块
    cmdStr := strings.Replace(MergeFileCMD, "$1", chunkDir, 1)
    cmdStr = strings.Replace(cmdStr, "$2", destPath, 1)
    mergeCmd := exec.Command("bash", "-c", cmdStr)
    if _, err := mergeCmd.Output(); err != nil {
        fmt.Println(err)
        return false
		}
    // 计算合并后的文件hash
    if filehash, err := ComputeSha1ByShell(destPath); err != nil {
        fmt.Println(err)
        return false
    } else if string(filehash) != fileSha1 { // 判断文件hash是否符合给定值
        fmt.Println(filehash + " " + fileSha1)
        return false
    } else {
        fmt.Println("check sha1: " + destPath + " " + filehash + " " + fileSha1)
    }
    return true
}

Shell命令 文件压缩解压缩之gzip、zip详解

1.gzip:gzip压缩工具

gzip命令的功能说明:

gzip 命令用于压缩文件。gzip 是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出 .gz 的扩展名。

gzip命令的语法格式:

<< < 1 2 3 4 5 > >>
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接