Linux¶
从零开始搭建开发环境¶
创建带有sudo权限的用户¶
useradd <user_name> -m -G sudo
Note
-m 表示同时创建用户目录
-G 指明该用户所在的用户组,而 sudo 是系统默认拥有sudo权限的用户组
更多命令参数可以通过 useradd -h 来查看
也可以给一个已存在用户赋予sudo权限:
usermod <user_name> -a -G sudo
安装oh-my-zsh¶
zsh是一个非常好用的交互式终端,因为其具备众多好用的插件而被广泛使用。
oh-my-zsh则承担了zsh各类插件的管理工作。
首先需要在Linux系统上安装zsh
sudo apt update
sudo apt install zsh
修改登录时启用的终端类型
usermod <user_name> -s /bin/zsh
从github下载安装 oh-my-zsh,详见 README.md。
一些好用的zsh插件¶
更改linux网络设置¶
apt源¶
apt源的配置文件位于 /etc/apt/sources.list。
以更换为阿里云的apt源为例,可以用以下命令来修改:
sed -i 's|archive.ubuntu.com|mirrors.aliyun.com|g' /etc/apt/sources.list
sed -i 's|security.ubuntu.com|mirrors.aliyun.com|g' /etc/apt/sources.list
上面的 sed 命令可以完成文件中所有匹配字符串的替换。
pip源¶
用户的pip源配置文件位于 ~/.pip/pip.conf,如果没有可以新建一个。
以更换为阿里云的pip源为例,pip.conf 内容如下:
[global]
index-url= http://mirrors.aliyun.com/pypi/simple/
extra-index-url= https://pypi.python.org/simple
trusted-host=mirrors.aliyun.com
系统默认的pip源配置文件位于 /etc/pip.conf,修改方法同上,该文件可以影响到所有用户。
设置代理¶
通常用 export 指令来实现,如果需要长期保存可以加到 .bashrc 中去。
export http_proxy="http://localhost:port"
export https_proxy="http://localhost:port"
DNS¶
DNS配置文件位于 /etc/resolv.conf 文件中,更改 nameserver 即可。
Warning
这样只能临时修改DNS,重启后失效。
Warning
方法来自百度,没有验证过。
环境变量之系统路径¶
PATH
可执行文件的路径。
LIBRARY_PATH
程序编译期间查找动态链接库时指定的其他共享库的路径。
LD_LIBRARY_PATH
程序加载运行期间查找动态链接库时指定其他路径。
C_INCLUDE_PATH
C程序编译期间查找头文件时指定的其他路径。
CPLUS_INCLUDE_PATH
C++程序编译期间查找头文件时指定的其他路径。
CPATH
C和C++程序在编译期间查找头文件时指定的其他路径。
配置cuda¶
通常来说,使用第三方硬件需要安装SDK后配置以上几个环境变量,令其可以在编译时成功 include,在运行时找到库文件。
以cuda为例编写自动化配置脚本:
#!/bin/bash -e
function on_error() {
echo $1
exit -1
}
for i in $(readlink -f $(dirname $0))/*; do
[ -d $i ] || continue
i=$(readlink -f $i)
if [[ $(basename $i) =~ cuda-[10.]*$ ]]; then
if [ -z "$cuda" ]; then
cuda=$i
else
on_error "multiple cuda found"
fi
fi
[ -d $i/include ] || on_error "$i/include not existing"
INCL=$INCL:$i/include
lib=$i/lib
[ -d $lib ] || lib=$i/lib64
[ -d $lib ] || on_error "$lib not existing"
LIB=$LIB:$lib
done
LIB=${LIB#:}
INCL=${INCL#:}
[ -z "$cuda" ] && on_error "cuda not found"
NEW_CPATH=$CPATH:$INCL
NEW_CPATH=${NEW_CPATH#:}
NEW_LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$LIB
NEW_LD_LIBRARY_PATH=${NEW_LD_LIBRARY_PATH#:}
NEW_LIBRARY_PATH=$LIBRARY_PATH:$LIB
NEW_LIBRARY_PATH=${NEW_LIBRARY_PATH#:}
echo "CPATH=$NEW_CPATH"
echo "LD_LIBRARY_PATH=$NEW_LD_LIBRARY_PATH"
echo "LIBRARY_PATH=$NEW_LIBRARY_PATH"
echo "PATH=$PATH:$cuda/bin:$cuda/NsightCompute-2019.1"
echo "CUDA_HOME=$cuda"
编写shell脚本¶
有关于shell脚本的内容,可以参考 菜鸟教程。
特殊符号¶
符号 |
描述 |
|---|---|
$ |
变量替换 |
${} |
变量替换 |
${:}, ${::} |
提取字符串 |
${/}, ${//} |
字符串模式匹配(替换) |
${#}, ${##} |
字符串模式匹配向左截断 |
${%}, ${%%} |
字符串模式匹配向右截断 |
命令替换 |
|
$() |
命令替换 |
var = "/dir1/dir2/my.file.txt"
$var # /dir1/dir2/my.file.txt
${var} # 同上
${var:1:3} # di
${var:1} # dir/dir/my.file.txt
${var:-2} # xt
${var/dir/path} # /path1/dir2/my.file.txt, 替换第一个
${var//dir/path} # /path1/path2/my.file.txt,替换全部
${var#*/} # dir0/dir2/dir3/my.file.txt, 删掉左数第一个'/'及其左边的字符串
${var##*/} # my.file.txt, 删掉左数最后一个'/'及其左边的字符串
${var%/*} # /dir1/dir2/dir3, 删掉右数第一个'/'及其右边的字符串
${var%%/*} # (空值),拿掉右数最后一个'/'及其右边的字符串
HOME = $(cd `dirname $0`; pwd) # 本执行文件所在的目录路径保存为HOME
更多内容查看非官方的 shell特殊字符大全。
vscode¶
修改vscode配置¶
setting 界面修改¶
打开 setting 按钮即可。
通过配置文件 setting.json 修改¶
在两个地方存在 setting.json 文件。一是本地vscode的安装目录下,作用于所有项目或窗口;另一个是项目根目录下的 .vscode/setting.json,作用于当前项目。
json 文件以字典的形式存在,比如 修改vscode字体。
一些好用的vscode插件¶
Remote-SSH 远程开发
Vim 使用vim类型快捷键
GitLens 每行代码的上一次提交记录
Bracket Pair Colorizer 括号匹配
Material Icon Theme 文件图标
CMake 文本高亮
reStructuredText rst文件预览
Markdown Preview Enhanced md文件预览
Clang-Format 格式化c++文件
远程开发环境¶
这个不必多说了,非常好用,只需要在本地vscode安装 Remote-SSH 插件,就可以连接远程Linux服务器,体验与本地开发相同。
如果服务器访问外网有限制,可能会出现一些奇怪的bug,此时需要配置好代理。
设置等宽字体¶
通常来说,大部分字体都是中文和英文分别等宽,但是中英文混合就不等宽了。 中英文不等宽会导致制作 rst 表格时感觉非常别扭,因为边界不是正经的直线。
更纱黑体¶
这是一个字体集合,英文名为Sarasa Gothic,其中的 Sarasa Mono SC 可以支持中英文混合等宽。
项目地址为 Sarasa-Gothic,直接从Releases界面下载名字含有ttf的压缩包,解压后双击其中的 sarasa-mono-sc-regular.ttf 文件安装。
安装成功后,操作系统就可以为各类软件提供该字体。
Warning
安装完毕需要重启才能生效