package main import ( "bufio" "fmt" "os" "strings" ) var history = make(map[string]int) var h Hfile var t Tmpfile func init() { h.name = ".bash_history" h.init() h.Open() t.name = h.name t.init() t.Open() } func main() { scanner := bufio.NewScanner(h.handle) var i = 0 for scanner.Scan() { line := strings.TrimSpace(scanner.Text()) history[line] = i i++ } delete(history, "") h.handle.Close() var ah = make([]string, i) for key, val := range history { ah[val] = key } i = 0 for _, key := range ah { if len(key) > 0 { t.handle.WriteString(key + "\n") i++ } } t.handle.Close() _, err := CopyFile(t.path, h.path) if err != nil { fmt.Println(err) } err = os.RemoveAll(t.dir) if err != nil { fmt.Print(err) } fmt.Printf("wrote %d lines to %s\n", i, h.path) }