让文本飞

vim 中显示行号

1
2
3
vim /etc/vim/vimrc 
set number
set nonumber

提示符

1
2
3
4
5
6
7
59 if [ "$color_prompt" = yes ]; then
60 PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
61 else
62 PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '


force_color_prompt=yes

反转字符串

1
2
# reverse
echo "Hello World" | rev

字符串比较相等

1
2
# 等号两边的空格一定不能省略
[ $var1 = $var2 ]

1 压缩(删除)多余的空行

  • 使用 tr 转换
1
2
# tr -s for --squeeze-repeats
cat text.txt | tr -s '\n'
  • 使用 sed 转换
1
2
3
# sed 默认一次只处理一行(涉及sed的处理方式,hold space),是以 \n 作为行分隔符的,但是提供的一个 option -z, 以 NUL 字符作为行分隔符来解析

sed -zr 's/\n{2,}/\n/g' text.txt
  • sed 的另一种用法
1
sed '/^$/d' text.txt

2 计算连续数字的加法

  • 使用 tr
1
seq 1 10 | echo $[ $(tr '\n' '+') 0 ]

3 进入指定目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 函数 return 为函数的返回,exit 为 shell 的结束
function to()
{
if [ $# -ne 1 ];
then
echo "Useage is: $0 argument"
echo "avaliable arguments can be znrt, zgrt, szrt"
return -1
fi
target=`echo -e $1 | tr '[a-z]' '[A-Z]'`
basePath=/opt

case $target in
"ZNRT") cd "$basePath/$target" && pwd;;
"ZGRT") cd "$basePath/$target" && pwd;;
"SZRT") cd "$basePath/$target" && pwd;;
*) echo "invalid argument";;
esac
}

查找出最近一个小时目录内有修改过的文件

modified.sh

1
2
find "/mnt/d/Markdown 文档" -type f -mmin -60 |
awk 'BEGIN { "date"| getline; print $0 } { print "modified:"$0 } END { print "\n" }'

备份:

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
# copy source to target
baseDir="/mnt/e/SoftConfigBackup"
awk -F"=" '!/^\s*#/ \
{ cmd0=bd"/modified.sh "$1" >> modified.log"; \
system(cmd0); \
targetDir=bd"/"$2; \
cmd1="mkdir -p "targetDir; \
cmd2="cp -r " $1 " " targetDir; \
system(cmd1); \
system(cmd2) }' \
bd=$baseDir "$baseDir/backup.properties"

备份配置文件:

1
2
3
# software-config-dir=target-dit-name
/mnt/c/Users/guo/AppData/Roaming/Typora/themes=Typora
/mnt/c/Users/guo/Desktop=Desktop

WSL 服务开机自启

startup 设置 vbs 脚本

1
2
Set ws = CreateObject("Wscript.Shell")
ws.run "C:\Users\guo\AppData\Local\Microsoft\WindowsApps\ubuntu1804.exe run sudo /etc/init.wsl", vbhide

/etc/init.wsl

1
2
3
4
#! /bin/sh
/etc/init.d/ssh restart
/etc/init.d/mysql restart
/etc/init.d/cron restart

/etc/sudoers

1
%sudo ALL=NOPASSWD: /etc/init.wsl