备份文件
This commit is contained in:
parent
d4e7b563bc
commit
b675aceb33
47
define/ls.go
Normal file
47
define/ls.go
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
// Package define ...
|
||||||
|
//
|
||||||
|
// Description : define ...
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 2022-05-20 23:09
|
||||||
|
package define
|
||||||
|
|
||||||
|
// LsFileInfo ls查询出来的文件详细信息
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 23:10 2022/5/20
|
||||||
|
type LsFileInfo struct {
|
||||||
|
IsDir bool `json:"is_dir"` // 是否是目录
|
||||||
|
IsLink bool `json:"is_link"` // 是否链接文件
|
||||||
|
SourcePath string `json:"source_path"` // 是链接文件时, 链接的源文件路径
|
||||||
|
IsHidden bool `json:"is_hidden"` // 是否是隐藏文件
|
||||||
|
FullPath string `json:"full_path"` // 文件全路径
|
||||||
|
RelativePath string `json:"relative_path"` // 相对路径
|
||||||
|
Type string `json:"type"` // 文件类型, 如果为目录, 至为 - , 如果非 .xxx 结尾, 可执行为 bin , 不可执行为 unknown
|
||||||
|
Total int64 `json:"total"` // 文件总数
|
||||||
|
Permission *FullPermission `json:"permission"` // 文件权限
|
||||||
|
}
|
||||||
|
|
||||||
|
// FullPermission 文件权限
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 23:45 2022/5/20
|
||||||
|
type FullPermission struct {
|
||||||
|
User FilePermission `json:"user"`
|
||||||
|
Group FilePermission `json:"group"`
|
||||||
|
Other FilePermission `json:"other"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// FilePermission 文件操作权限
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 23:31 2022/5/20
|
||||||
|
type FilePermission struct {
|
||||||
|
Read bool `json:"read"`
|
||||||
|
Write bool `json:"write"`
|
||||||
|
Exec bool `json:"exec"`
|
||||||
|
}
|
@ -15,7 +15,7 @@ package define
|
|||||||
type Result struct {
|
type Result struct {
|
||||||
WorkDir string // 执行的目录
|
WorkDir string // 执行的目录
|
||||||
CmdPath string // 命令的路径
|
CmdPath string // 命令的路径
|
||||||
Err error // 异常信息
|
Error error // 异常信息
|
||||||
Output []byte // 输出的内容
|
Output []byte // 输出的内容
|
||||||
StartTime int64 // 开始时间
|
StartTime int64 // 开始时间
|
||||||
FinishTime int64 // 完成时间
|
FinishTime int64 // 完成时间
|
||||||
|
11
execute.go
11
execute.go
@ -1,4 +1,4 @@
|
|||||||
// Package linux ...
|
// Package command ...
|
||||||
//
|
//
|
||||||
// Description : command ...
|
// Description : command ...
|
||||||
//
|
//
|
||||||
@ -8,10 +8,11 @@
|
|||||||
package command
|
package command
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"command/define"
|
|
||||||
"errors"
|
"errors"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"git.zhangdeman.cn/zhangdeman/command/define"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Execute 执行系统命令
|
// Execute 执行系统命令
|
||||||
@ -23,7 +24,7 @@ func Execute(workDir string, command string, param []string) define.Result {
|
|||||||
//执行命令
|
//执行命令
|
||||||
result := define.Result{
|
result := define.Result{
|
||||||
WorkDir: workDir,
|
WorkDir: workDir,
|
||||||
Err: nil,
|
Error: nil,
|
||||||
Output: nil,
|
Output: nil,
|
||||||
StartTime: time.Now().UnixNano(),
|
StartTime: time.Now().UnixNano(),
|
||||||
FinishTime: 0,
|
FinishTime: 0,
|
||||||
@ -31,12 +32,12 @@ func Execute(workDir string, command string, param []string) define.Result {
|
|||||||
defer func() {
|
defer func() {
|
||||||
result.FinishTime = time.Now().UnixNano()
|
result.FinishTime = time.Now().UnixNano()
|
||||||
}()
|
}()
|
||||||
if result.CmdPath, result.Err = Check(command); nil != result.Err {
|
if result.CmdPath, result.Error = Check(command); nil != result.Error {
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
cmdInstance := exec.Command(command, param...)
|
cmdInstance := exec.Command(command, param...)
|
||||||
cmdInstance.Dir = workDir
|
cmdInstance.Dir = workDir
|
||||||
result.Output, result.Err = cmdInstance.CombinedOutput()
|
result.Output, result.Error = cmdInstance.CombinedOutput()
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
2
go.mod
2
go.mod
@ -1,3 +1,3 @@
|
|||||||
module command
|
module git.zhangdeman.cn/zhangdeman/command
|
||||||
|
|
||||||
go 1.17
|
go 1.17
|
||||||
|
74
ls.go
Normal file
74
ls.go
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
// Package command ...
|
||||||
|
//
|
||||||
|
// Description : command ...
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 2022-05-20 22:34
|
||||||
|
package command
|
||||||
|
|
||||||
|
import (
|
||||||
|
"command/define"
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
// NewLs ls命令
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 22:36 2022/5/20
|
||||||
|
func NewLs(workDir string) *ls {
|
||||||
|
return &ls{
|
||||||
|
workDir: workDir,
|
||||||
|
paramList: []string{"-l"},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type ls struct {
|
||||||
|
workDir string
|
||||||
|
paramList []string
|
||||||
|
isRecursive bool // 是否递归查询
|
||||||
|
}
|
||||||
|
|
||||||
|
// ShowHideFile 显示隐藏文件
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 22:38 2022/5/20
|
||||||
|
func (l *ls) ShowHideFile() *ls {
|
||||||
|
l.paramList = append(l.paramList, "-a")
|
||||||
|
return l
|
||||||
|
}
|
||||||
|
|
||||||
|
// Recursive 递归查看所有目录下的文件
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 22:38 2022/5/20
|
||||||
|
func (l *ls) Recursive() *ls {
|
||||||
|
l.paramList = append(l.paramList, "-R")
|
||||||
|
return l
|
||||||
|
}
|
||||||
|
|
||||||
|
// Run 执行命令
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 22:59 2022/5/20
|
||||||
|
func (l *ls) Run() (define.Result, []define.LsFileInfo) {
|
||||||
|
result := Execute(l.workDir, "ls", l.paramList)
|
||||||
|
if nil != result.Error {
|
||||||
|
return result, make([]define.LsFileInfo, 0)
|
||||||
|
}
|
||||||
|
resultStr := string(result.Output)
|
||||||
|
fileList := strings.Split(resultStr, "\t")
|
||||||
|
for _, item := range fileList {
|
||||||
|
if item == "." || item == ".." {
|
||||||
|
// 忽略 . 和 ..
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
fmt.Println(item)
|
||||||
|
}
|
||||||
|
return result, nil
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user