文件、目录

显示文本文件

cat

  • cat:显示文本文件内容
  • zcat:查看压缩文件内容

more

  • more:单向分页显示文本文件
  • zmore:单向分页显式压缩文本文件

less

  • less:双向分页显示文本文件内容
  • zless:双向分页显式压缩文件内容

head:显示文件指定前若干行

tail

tail:实现文件指定后若干行

nl

nl:显示文件行号、内容

文件处理

sort

对文件中数据排序

uniq

删除文件中重复行

cut

从文件的每行中输出之一的字节、字符、字段

diff

逐行比较两个文本文件

diff3

逐行比较三个文件

cmp

按字节比较两个文件

tr

从标准输入中替换、缩减、删除字符

split

将输入文件分割成固定大小的块

tee

将标准输入复制到指定温婉

expand

将文件中tab转换为空格输出到标准输出

1
$ expand -n 4 file_name

nano

awk

一门模式匹配的编程语言

  • 主要功能是匹配文本并处理
  • 同时还有一些编程语言才有的语法:函数、分支循环语句、变量 等等
  • 使用awk可以
    • 将文本文件视为字段、记录组成的文本数据库
    • 操作文本数据库时能够使用变量
    • 能够使用数学运算和字符串操作
    • 能够使用常见地编程结构,如:条件、分支循环
    • 能够格式化输出
    • 能够自定以函数
    • 能够在awk脚本中执行linux命令
    • 能够处理linux命令的输出结果

命令行语法

1
2
$ awk [-F ERE] [-v assignment] ... program [argument...]
$ awk [-F ERE] -f progfile ... [-v assignment] ... [argument ...]

sed

sed:非交互式、面向字符流的编辑器

  • sed也是默认从stdin读取输入、输出至stdout,除非 参数filename被指定,会从指定文件获取输入,但是注意 sed是面向字符流的编辑器,所以输入、输出文件不能是同一个

  • sed按行处理文本数据,每次处理一行在行尾添加换行符

1
$ sed [-hnV] [-e<script>][-f<script-file>][infile]

参数

  • -e<script>/--expression=<script>:以指定script 处理infile(默认参数)

    • 默认不带参数即为-e
  • -f<script-file>/--file=<script-file>:以指定的script 文件处理输入文本文件

    • 文件内容为sed的动作
  • -i:直接修改原文件

  • -n/--quiet:仅显示script处理后结果

  • -h/--help:帮助

  • -V/--version:版本信息

动作

  • [n]a\string:行添加,在n行后添加新行string
  • [n]i\string:行插入
  • [n]c\string:行替换
  • [n,m]d:删除,删除n-m
  • [start[,end]]p:打印数据
  • [start[,end]]s/expr/ctt[/g]:正则替换

高级语法

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ sed '2anewline' ka.file
$ sed '2a newline' ka.file
$ sed 2anewline ka.file
$ sed 2a newline ka.file
# 在第2行添加新行`newline`

$ sed 2,$d ka.file
# 删除2至最后行

$ sed 2s/old/new ka.file
# 替换第2行的`old`为`new`

$ nl ka.file | sed 7,9p
# 打印7-9行

$ sed ":a;N;s/\n//g;ta" a.txt
# 替换换行符

查找字符串、文件

grep

查找符合条件的字符串

egrep

在每个文件或标准输入中查找模式

find

列出文件系统内符合条件的文件

whereis

插卡指定文件、命令、手册页位置

whatis

在whatis数据库中搜索特定命令

which

显示可执行命令路径

type

输出命令信息

  • 可以用于判断命令是否为内置命令

VSCode基础

Settings

  • VSCode配置文件分为两种(其中项目会重复)

    • User Settings:用户对所有项目的配置
    • Workspace Settings:针对当前项目的设置
  • 配置方式分为两种完全相同

    • UI:提示丰富
    • JSON:配置快捷,JSON字典格式

Command Palette

Python

  • 选择默认python环境

Terminal

  • 选择默认terminal,可能的terminal包括cmd、powershell、 WSL(若启用Linux子系统)

Original Setting

Terminal

1
2
3
4
5
6
7
8
{
"terminal.integrated.shell.windows""/path/to/shell",
// 默认shell
"terminal.integrated.shellArgs.windows": [ ],
"terminal.integrated.shellArgs.linux": [ ],
"terminal.integrated.shellArgs.osx": [ ],
// VSCode创建terminal启动参数(3系统分别配置)
}
  • VSCode terminal分为很integrated、external

  • VSCode应该是兼容所有terminal shell,如

    • C:/Windows/System32/cmd.exe
    • C:/Windows/System32/powershell.exe
    • C:/Windows/System32/wsl.exe:WSL启用
    • “/path/to/git/bin/bash.exe”:Git中bash等
  • VSCode terminal虽然兼容多种shell,但只能创建默认shell

    • 需要多种shell只能切换默认shell再创建
    • python shell等shell是特殊shell,无法默认创建,必须要 在命令面板中创建(虽然在普通shell中打开python环境, 但是VSCode不认可)

Python

1
2
3
4
5
6
7
8
9
10
11
{
"python.condaPath": "/path/to/conda/Scripts",
// conda安装目录Scripts文件夹
"python.venvPath": "/path/to/conda/envs",
// 虚拟环境目录,VSCode会在其中查找虚拟环境,作为
// Command Palette中的备选项
"python.pythonPath": "/path/to/python.exe",
// 默认python解释器路径
"python.terminal.activateEnvironment": true,
// 创建python shell时,尝试中激活虚拟环境
}
  • python.terminal.activateEnviroment激活的虚拟环境由 python.pythonPath决定

    • VSCode会尝试执行python.pythonPath同级中 Scripts/activate.bat激活虚拟环境

    • 因此虚拟环境需要安装conda,否则没有 Scripts/ativate.bat无法正常激活默认虚拟环境

CPPC

配置文件

  • .vscode/c_cpp_properties.json

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    {
    "configurations": [
    {
    "name": "WSL",
    "includePath": [
    "${workspaceFolder}/**"
    ],
    "defines": [
    "LOCAL",
    "_DEBUG",
    "UNICODE",
    "_UNICODE"
    ],
    "compilerPath": "/usr/bin/gcc",
    "cStandard": "c11",
    "cppStandard": "c++14",
    "intelliSenseMode": "gcc-x64"
    }
    ],
    "version": 4
    }
    • C/C++项目基本配置
  • .vscode/tasks.json:利用VSCode的Tasks功能调用WSL的 GCC/G++编译器

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    {
    // tasks.json
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format

    "version": "2.0.0",
    "tasks": [
    {
    "label": "Build",
    "command": "g++",
    "args": [
    "-g",
    "-Wall",
    "-std=c++14",
    "/mnt/c/Users/xyy15926/Code/cppc/${fileBasename}",
    "-o",
    "/mnt/c/Users/xyy15926/Code/cppc/a.out",
    "-D",
    "LOCAL"
    ],
    "problemMatcher": {
    "owner": "cpp",
    "fileLocation": [
    "relative",
    "${workspaceRoot}"
    ],
    "pattern": {
    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warining|error):\\s+(.*)$",
    "file": 1,
    "line": 2,
    "column": 3,
    "severity": 4,
    "message": 5
    }
    },
    "type": "shell",
    "group": {
    "kind": "build",
    "isDefault": true
    },
    "presentation": {
    "echo": true,
    "reveal": "silent",
    "focus": true,
    "panel": "shared"
    }
    },
    {
    "label": "Run",
    "command": "/mnt/c/Users/xyy15926/Code/cppc/a.out",
    "type": "shell",
    "dependsOn": "Build",
    "group": {
    "kind": "test",
    "isDefault": true
    },
    "presentation":{
    "echo": true,
    "reveal": "always",
    "focus": true,
    "panel": "shared",
    "showReuseMessage": true
    }
    }
    ]
    }
    • 这里为方便将运行程序任务同> Task: Run Test Task 任务关联,可以在命令面板执行此指令
  • .vscode/launch.json:gdb调试配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    {
    // launch.json
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
    {
    "name": "(gdb) Bash on Windows Launch",
    "type": "cppdbg",
    "request": "launch",
    "program": "/mnt/c/Users/xyy15926/Code/cppc/a.out",
    "args": ["-f", "Threading"],
    "stopAtEntry": false,
    "cwd": "/mnt/c/Users/xyy15926/Code/cppc/",
    "environment": [],
    "externalConsole": true,
    "MIMode": "gdb",
    "pipeTransport": {
    "debuggerPath": "/usr/bin/gdb",
    "pipeProgram": "C:\\windows\\system32\\bash.exe",
    "pipeArgs": ["-c"],
    "pipeCwd": ""
    },
    "setupCommands": [
    {
    "description": "Enable pretty-printing for gdb",
    "text": "-enable-pretty-printing",
    "ignoreFailures": false
    }
    ],
    "sourceFileMap": {
    "/mnt/c": "c:\\",
    "/mnt/d": "d:\\"
    },
    "preLaunchTask": "Build"
    },
    ]
    }

Git

1
2
3
4
{
"git.ignore.MissingGitWarning": true,
"git.path": "/path/to/xxxgit.exe"
}
  • “git.path”既可以是windows下Git,也可以是“伪装”Git,使用 工具wslgit,让VSCode 直接使用WSL内的Git

KeyMapper

  • <c-s-\>`:新建默认terminal绘画
  • <c-s-p>:command palette