Contents

Ubuntu常用命令

将文件A的内容写入到文件B中

  • cat A > B (追加的话, > 改成 >>)

  • sed -n ‘w B’ A

  • 效率对比

1
2
3
start=$(date +%s%N) && cat /tmp/784-35445384-1692024995-complete.json >> test.log && end=$(date +%s%N) && echo $((($end - $start) / 1000000))

start=$(date +%s%N) && sed -n 'w test.log' /tmp/784-35445384-1692024995-complete.json && end=$(date +%s%N) && echo $((($end - $start) / 1000000))
https://static.duan1v.top/images/20230816115547.png

查找内容

pattern和regex

Pattern
  • pattern指基本正则表达式(Basic Regular Expression,BRE)
  • pattern 是一种简化的正则表达式语法,通常用于基本的模式匹配。
  • pattern 可以包含普通字符、通配符和一些特殊字符,如 .、*、? 等。
  • pattern 不支持高级的正则表达式特性,如分组 ( )、选择符 |、定位符 ^ 和 $ 等。
Regex
  • regex 指扩展正则表达式(Extended Regular Expression,ERE)
  • regex 是正则表达式的完整语法,支持更广泛的模式匹配和高级特性。
  • regex 可以使用普通字符、元字符、量词、字符类、分组、引用等来定义复杂的模式。
  • regex 支持在模式中使用特殊字符和元字符进行更精确的匹配和操作。

vim test

1
2
3
4
5
6
7
8
John Doe 25 8900
Jane Smith 30 6200
David Johnson 23 3500
Mia Nguyen 56 4200
Mohammed Ali 45 5800
Olivia Kim 40 2300
Olivia Ali 34 550
David Kim 36 6000

grep

  • 示例
1
2
grep -i -n "d" test
grep -i -n -E "6$" test
https://static.duan1v.top/images/20230821093233.png
Tips
  • 使用 -E 选项可以启用regex,否则只支持pattern;
  • 使用 -n 选项可以在输出结果中显示匹配行的行号;
  • 使用 -i 选项可以忽略搜索时的大小写区分;
  • 使用 -r 选项可以递归搜索指定目录及其子目录中的文件。

awk

  • 示例
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
awk '{print}' test
awk '{print $2}' test
awk '{sum += $3} END {print sum}' test
awk '$3 > 40 {print}' test
awk '$3 > 40 { if (counter < 1) { print; counter++ } }' test # 只取满足条件的第一行
awk -F'o' '{print $1"-"$2}' test
awk '{if ($3 > 30) print "Large"; else print "Small"}' test
awk '{sum = 0; for (i = 3; i <= NF; i++) sum += $i; print sum}' test
awk '/^O/ {print}' test
awk '{gsub(/O|o/, "H"); print}' test # 将O或o,替换为H
https://static.duan1v.top/images/20230821100530.png
参考

新增SFTP用户

示例

  • 添加用户
1
2
3
4
sudo addgroup sftp_test_group
sudo useradd -g sftp_test_group -m sftp_test_user1
# 键入密码,生成密码:https://www.sexauth.com/
sudo passwd sftp_test_user1
https://static.duan1v.top/images/20230821111222.png
  • 可能用到的根据用户查询组内其他用户
1
2
3
groups sftp_test_user1
getent group sftp_test_group
awk -F":" '{print $1"|"$4}' /etc/passwd | grep -n -E "\|1003$"
https://static.duan1v.top/images/20230821111438.png
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
sudo vim /etc/ssh/sshd_config
# 追加以下选项
AllowUsers sftp_test_user1
Match User sftp_test_user1
ChrootDirectory /var/sftp/sftp_test_user1
ForceCommand internal-sftp

sudo mkdir /var/sftp/sftp_test_user1
sudo chown -R sftp_test_user1:sftp_test_group /var/sftp/sftp_test_user1

sudo service ssh restart
coffee