[TOC]
## 前言
习惯了linux的指令操作,在使用windows总是不舒服,于是我们可以在windows上安装cygwin来运行linux上的shell脚本。<br/>
Cygwin是一个在windows平台上运行的unix模拟环境,是cygnus solutions公司开发的自由软件。
Cygwin就是一个windows软件,该软件就是在windows上仿真linux操作系统 ,简言之,cygwin是一个在windows平台上运行的 linux模拟环境,使用一个Dll(动态链接库)来实现 这样,我们可以开发出Cygwin下的UNIX工具,使用这个DLL运行在Windows下。
## 下载安装cygwin
Cygwin下载的是一个安装器,可到其[官网](http://www.cygwin.com/)下载。
1、双击安装包
![](https://img.kancloud.cn/be/e9/bee930c87b35db1cc4e304da0788e9cf_781x168.png)
![](https://img.kancloud.cn/c7/93/c7935731ea4a3ebef80c89d714f959f7_719x477.png)
2、三种安装模式
①Install from Internet,这种模式直接从Internet安装,适合网速较快的情况;
②Download Without Installing,这种模式只从网上下载Cygwin的组件包,但不安装;
③Install from Local Directory,这种模式与上面第二种模式对应,当你的Cygwin组件包已经下载到本地,则可以使用此模式从本地安装Cygwin<br/>
***说明:当你安装过,在执行该安装程序可以选择本地安装,然后添加需要扩展的命令。***
第一次安装使用第一种方式进行安装
![](https://img.kancloud.cn/07/18/07189d9bf14222a637f1310371a1e343_715x480.png)
3、选择安装路径
![](https://img.kancloud.cn/3d/f8/3df8ec1ece62d46b1c69353f617c39a5_725x486.png)
4、在下载的同时,Cygwin组件也保存到了本地,以便以后能够再次安装,这一步选择安装过程中从网上下载的Cygwin组件包的保存位置
![](https://img.kancloud.cn/b5/f5/b5f59122be4c6bcf89b810ed62abcc55_726x480.png)
5、这一步选择连接的方式,选择你的连接方式,然后点击下一步,会出现选择下载站点的对话框,如下图所示
![](https://img.kancloud.cn/20/c0/20c0be1da89c7573d5288100aaa4bdb5_720x481.png)
①Use System Proxy Settings 使用系统的代理设置
②Direct Connection 一般多数用户都是这种直接连接的网络,所以都是直接使用默认设置即可
③Use HTTP/FTP Proxy 使用HTTP或FTP类型的代理。如果有需要,自己选择此项后,设置对应的代理地址和端口,即可
6、选择下载站点
不同的镜像存放了不同的包,为了获得最快的下载速度,我们可以添加网易开源镜像`http://mirrors.163.com/cygwin/ `或者 阿里云镜像`http://mirrors.aliyun.com/cygwin/`
![](https://img.kancloud.cn/6b/16/6b16ff70a7365b4b317fa7bfe4fbe51c_726x480.png)
7、开始加载
![](https://img.kancloud.cn/11/b0/11b05eccc816f79c4b1351c0073d125f_644x494.png)
8、选择需要下载安装的组件包
此处,对于安装Cygwin来说,就是安装各种各样的模块而已。最核心的,记住一定要安装Devel这个部分的模块,其中包含了各种开发所用到的工具或模块
展开devel
![](https://img.kancloud.cn/16/c3/16c3cd8ac4c47b377928d1d54f99da92_630x492.png)
***下面推荐推几个组件***
* fish:一个shell,具有良好的交互提示
* lynx:命令安装组件的必须工具,强烈推荐安装此项
组件可以在search框输入后搜索,然后选中组件,在new列双击,当看到版本号后,安装就会将此组件安装上。
9、确认改变,进行安装
![](https://img.kancloud.cn/af/01/af01807d48f97dc1011c193694d6c3fe_612x470.png)
![](https://img.kancloud.cn/d5/8f/d58fb045e58eb55dbe52260ffb7f44d7_630x484.png)
10.添加环境变量
将`cygwin安装目录/bin`添加到系统环境变量,方便之后在其他终端调用相关命令。
## 配置cygwin的默认shell
当我们没配置fish shell,使用默认的shell时我们打开`cygwin`的终端是这样的
![](https://img.kancloud.cn/5e/62/5e62239240556e91af506969d01f0176_1162x802.png)
![](https://img.kancloud.cn/33/c3/33c323ec8f3d946646e4a1077f4b5232_1155x344.png)
<br/>
前面我们安装了fish shell,现在我们要把fish shell设置为我们默认的shell,我们在打开的`cygwin`中连续输入以下几个命令即可:
```bash
1. cd /etc
2. echo "fish" >> profile
```
然后我们重启`cygwin`应用即可。<br/>
配置好fish后我们是这样的
![](https://img.kancloud.cn/a2/3e/a23e1719c746fa7337998c5db940f239_1162x790.png)
提示符会显示一些类容,包括当前路径
当你输入命令式,会根据你输入命令的历史提示你完整的命令,你可以使用键盘的`->`(右方向键)将提示的命令补充完整
![](https://img.kancloud.cn/37/2b/372b5d5432cec4ef61ebaff34559137b_1154x791.png)
## 配置apt-cyg 工具实现命令安装新的软件和常见的命令
cygwin作为windows下模拟Linux环境的的工具,使得我们能在windows下非常方便的使用Linux的命令和工具,下面讲讲怎样在cygwin添加不支持的命令。<br/>
1.安装cygwin工具的安装工具`apt-cyg`,此工具类似于Ubuntu下的`apt-get`工具,所有的工具都是通过他安装,用过Ubuntu的人应该都知道。
由于刚开始安装cygwin,有很多命令没有安装,这里采用手动配置该工具<br/>
step1、下载apt-cyg的源码
浏览器打开[apt-cyg源码](https://gitee.com/yuan_hp/apt-cyg)
![](https://img.kancloud.cn/75/7c/757c44aae2e3b0b26ce6d7f3c66ec9a3_1411x830.png)
![](https://img.kancloud.cn/c6/14/c614e176c7da486c673b1d6058ccfd14_1338x771.png)
<br/>
step2、解压后将apt-cyg文件拷贝到`cygwin安装目录/usr/local/bin`目录下
你可以使用命令,也可以直接使用图形化的操作进行拷贝。
使用命令拷贝的方法如下:
```bash
cd 你刚刚下载文件的保存路径
cp apt-cyg /usr/local/bin/
```
然后你就可以看看`apt-cyg`命令是否可以了,在`cygwin`的终端输入`apt-cyg --help`,如果出现下面这样的结果就表示可以了。
![](https://img.kancloud.cn/4b/09/4b0998fe13094b85279c22a0c3c70247_1156x793.png)
然后你就可以使用`apt-cyg`来安装一些组件,比如安装`python3`组件,使用`apt-cyg install python3`即可完成。
依据个人习惯,可以安装一些组件,比如你可以使用命令安装vim,wget,tree,openssh:
```bash
apt-cyg install vim wget tree openssh
```
## 一些配置文件
* vim的配置文件路径`$HOME/.vimrc`
* fish配置文件是在`$HOME/.config/fish/`这个文件夹下面
当第一次安装的时候,上述文件可能不存在,需要我们自己创建。
为了款速配置,我放出自己的配置文件。
### vimrc配置文件的类容
```vim
"设置 backspace的工作方式
set nocompatible
set backspace=indent,eol,start
"显示行号
set nu
"忽略大小写
set ignorecase
"开启文件类型检测
filetype plugin indent on
"不忽略大小写
"set noignorecase
"开启高亮
syntax on
"显示光标当前位置
set ruler
"启用鼠标
set mouse=a
"显示状态栏
set laststatus=2
"============
"设置缩进"
"============
"set smartindent " 开启新行时使用智能自动缩进
"set cindent " 按照C语言语法自动缩进
set shiftwidth=4 " 配置缩进空格数为4
set tabstop=4 " 配置TAB键移动距离为4个空格
set autoindent "自动对齐
"========
"括号匹配"
"========
"set showmatch " 插入括号时,短暂地跳转到匹配的对应括号
"set matchtime=2 " 短暂跳转到匹配括号的时间
"本文件配置vim新建文件时自动生成的内容"
"===========
"配置新建文件的模板(自动化完成)
"===========
"==================================make file============================================"
"cpp文件自动生成模板"
autocmd BufNewFile *.cpp exec ":call SetTitle()"
func SetTitle()
call setline(1,"/**")
call append(line("."), " * Copyright (C) ".strftime("%Y")." All rights reserved.")
call append(line(".")+1, " *")
call append(line(".")+2, " * FileName :".expand("%:t"))
call append(line(".")+3, " * Author :hpy")
call append(line(".")+4, " * Email :yuan_hp@qq.com")
call append(line(".")+5, " * Date :".strftime("%Y年%m月%d日"))
call append(line(".")+6, " * Description :")
call append(line(".")+7, " */")
call append(line(".")+8, "")
endfunc
"自动将光标定位到末尾"
"autocmd BufNewFile * normal G"
"=============================================================================="
"配置shell脚本新建时的模板"
autocmd BufNewFile *.sh exec ":call SetShTitle()"
func SetShTitle()
call setline(1,"#!/usr/bin/env bash")
call append(line("."), "#-------------------------------------------------------")
call append(line(".")+1, "# FileName : ".expand("%:t"))
call append(line(".")+2, "# Author :hpy")
call append(line(".")+3, "# Date :".strftime("%Y年%m月%d日"))
call append(line(".")+4, "# Description :")
call append(line(".")+5, "#-------------------------------------------------------")
call append(line(".")+6, "")
endfunc
"=============================================================================="
"配置verilog脚本新建时的模板"
autocmd BufNewFile *.v exec ":call SetVTitle()"
func SetVTitle()
call setline(1,"`timescale 1ns / 1ps")
call append(line("."), "// ********************************************************************")
call append(line(".")+1, "// FileName : ".expand("%:t"))
call append(line(".")+2, "// Author :hpy")
call append(line(".")+3, "// Email :yuan_hp@qq.com")
call append(line(".")+4, "// Date :".strftime("%Y年%m月%d日"))
call append(line(".")+5, "// Description :")
call append(line(".")+6, "// --------------------------------------------------------------------")
call append(line(".")+7, "module " .expand("%:r") ."(")
call append(line(".")+8, " input clk, ")
call append(line(".")+9, " input rst_n")
call append(line(".")+10, ");")
call append(line(".")+11, " ")
call append(line(".")+12, "always@(posedge clk or negedge rst_n)")
call append(line(".")+13, "begin")
call append(line(".")+14, " if(!rst_n)begin")
call append(line(".")+15, " ")
call append(line(".")+16, " end ")
call append(line(".")+17, " else begin ")
call append(line(".")+18, " ")
call append(line(".")+19, " end ")
call append(line(".")+20, "end")
call append(line(".")+21, " ")
call append(line(".")+22, "endmodule")
endfunc
"=============================================================================="
"配置tcl脚本新建时的模板"
autocmd BufNewFile *.tcl exec ":call SetTclTitle()"
func SetTclTitle()
call setline(1,"#!/usr/bin/env tclsh")
call append(line("."), "#-------------------------------------------------------")
call append(line(".")+1, "# FileName : ".expand("%:t"))
call append(line(".")+2, "# Author :hpy")
call append(line(".")+3, "# Email :yuan_hp@qq.com")
call append(line(".")+4, "# Date :".strftime("%Y年%m月%d日"))
call append(line(".")+5, "# Description :")
call append(line(".")+6, "#-------------------------------------------------------")
call append(line(".")+7, "")
endfunc
"=============================================================================="
"配置python3脚本新建时的模板"
autocmd BufNewFile *.py exec ":call SetPyTitle()"
func SetPyTitle()
call setline(1,"#!/usr/bin/env python3")
call append(line("."), "# -- coding:utf-8 --")
call append(line(".")+1, "#-------------------------------------------------------")
call append(line(".")+2, "# FileName : ".expand("%:t"))
call append(line(".")+3, "# Author :hpy")
call append(line(".")+4, "# Email :yuan_hp@qq.com")
call append(line(".")+5, "# Date :".strftime("%Y年%m月%d日"))
call append(line(".")+6, "# Description :")
call append(line(".")+7, "#-------------------------------------------------------")
call append(line(".")+8, "")
endfunc
"自动将光标定位到末尾"
autocmd BufNewFile * normal G
"============================key======================================="
"==========="
"配置markdown编辑时的快捷键"
"==========="
autocmd Filetype markdown inoremap // <Esc>/<++><CR>:nohlsearch<CR>c4l
"加粗"
autocmd Filetype markdown inoremap /b **** <++><Esc>F*hi
"删除线"
autocmd Filetype markdown inoremap /d ~~~~ <++><Esc>F~hi
"分割线"
autocmd Filetype markdown inoremap /- <Enter>---<Enter>
"添加代码块"
autocmd Filetype markdown inoremap /[ ```<Enter><++><Enter>```<Enter><Enter>
"添加行内代码"
autocmd Filetype markdown inoremap /e ``<++><Esc>F`i
"文字下划线"
autocmd Filetype markdown inoremap /u <u></u><++><Esc>F<F<i
"换行实现
autocmd Filetype markdown inoremap /<Enter> <Space><Space><Space><br/><Space><Space><Enter><Enter>
"自动填充3个空格
autocmd Filetype markdown inoremap /<Space> <Space><Space><Space>
"上标
autocmd Filetype markdown inoremap /6 <sup></sup><++><Esc>F<F<i
"下标
autocmd Filetype markdown inoremap /7 <sub></sub><++><Esc>F<F<i
"链接
autocmd Filetype markdown inoremap /h [](<++>)<Esc>F]i
"/ 生成"
autocmd Filetype markdown inoremap /z /
"双引号"
autocmd Filetype markdown inoremap " ""<LEFT>
"花括号"
autocmd Filetype markdown inoremap { {}<LEFT>
"小括号"
autocmd Filetype markdown inoremap ( ()<LEFT>
func! Mdgoto()
if expand('%:t') != 'SUMMARY.md'
return
endif
let currentLine = getline(".")
let len = strlen(currentLine)
"echo currentLine
let a1= stridx(currentLine, '(') + 1
let a2= stridx(currentLine, ')') - 1
let a3 = a2-a1+1
if a3 > 0
let sub=strpart(currentLine,a1,a3)
endif
exec "vsp " .sub
vertical res +200
endfunction
autocmd Filetype markdown map <C-]> :call Mdgoto()<CR>"
autocmd Filetype markdown map <C-q> :wq<CR>"
"调出自定义输入快捷键帮助
autocmd Filetype markdown inoremap /,, <Esc>:!/home/yhp/.vim/mconf/keyhelp markdown<CR><Esc>i
"==================================================================="
"==========="
"配置shell编辑时的快捷键"
"==========="
autocmd Filetype sh inoremap // <Esc>/<++><CR>:nohlsearch<CR>c4l
"加粗"
autocmd Filetype sh inoremap /e echo "<++>"<++><Esc>/<++><CR>:nohlsearch<CR>c4l
"引用"
autocmd Filetype sh inoremap /y $() <++><Esc>F)i
"算数运算"
autocmd Filetype sh inoremap /a $[]<++><Esc>F]i
"if流程"
autocmd Filetype sh inoremap /i if [ ];then<++><Esc>F]i
"case流程"
autocmd Filetype sh inoremap /c <Esc>:r !echo -e 'case <++> in\n <++>)<++>;;\nesac'<Esc>/<++><CR>:nohlsearch<CR>c4l
"/ 生成"
autocmd Filetype sh inoremap /z /
"单引号"
autocmd Filetype sh inoremap ' ''<LEFT>
"双引号"
autocmd Filetype sh inoremap " ""<LEFT>
"花括号"
autocmd Filetype sh inoremap { {}<LEFT>
"小括号"
autocmd Filetype sh inoremap ( ()<LEFT>
"中括号"
autocmd Filetype sh inoremap [ []<LEFT>
"字符串替换"
autocmd Filetype sh inoremap /t ${/<++>/<++>}<++><Esc>F/F/i
"调出自定义输入快捷键帮助
autocmd Filetype sh inoremap /,, <Esc>:!/home/yhp/.vim/mconf/keyhelp shell<CR><Esc>i
"==================================================================="
"==========="
"配置verilog编辑时的快捷键"
"==========="
autocmd Filetype verilog inoremap // <Esc>/<++><CR>:nohlsearch<CR>c4l
"always语句"
"autocmd Filetype verilog inoremap /a always@(<++>)<Enter>begin <Enter><Tab><++> end <Esc>/<++><CR>:nohlsearch<CR>c4l
autocmd Filetype verilog inoremap /a <Esc>:r !echo -e 'always@(<++>)\nbegin\n <++>\nend'<CR><Esc>/<++><CR>:nohlsearch<CR>c4l
"if 语句"
autocmd Filetype verilog inoremap /i if()begin<++>end<Esc>F)i
"else 语句"
autocmd Filetype verilog inoremap /e else beginend<Esc>Fei
"initial 语句"
"autocmd Filetype verilog inoremap initial initial beginend<Esc>Fei
"assign 语句"
autocmd Filetype verilog inoremap /= assign = <++><Esc>F=i
"module例化 设置"
autocmd Filetype verilog inoremap /. .(<++>)<++><Esc>F(i
"monitor 语句"
autocmd Filetype verilog inoremap /m $monitor("",<++>)<++><Esc>F"i
"display 语句"
autocmd Filetype verilog inoremap /dd $display()<++><Esc>F)i
"行注释 语句"
autocmd Filetype verilog inoremap /z /
"parameter 语句"
autocmd Filetype verilog inoremap /p parameter <++> = <++>;<Esc>/<++><CR>:nohlsearch<CR>c4l
"localparam 语句"
autocmd Filetype verilog inoremap /l localparam <++> = <++>;<Esc>/<++><CR>:nohlsearch<CR>c4l
"reg 语句"
autocmd Filetype verilog inoremap /r reg[ : 0 ] <++><Esc>F:i
"wire 语句"
autocmd Filetype verilog inoremap /w wire[ : 0 ] <++><Esc>F:i
"常量 语句"
autocmd Filetype verilog inoremap /d <++>'d<++><Esc>/<++><CR>:nohlsearch<CR>c4l
"case 语句"
autocmd Filetype verilog inoremap /c case()<++>endcase<Esc>F)i
"begin 语句"
autocmd Filetype verilog inoremap /b beginend<Esc>Fei
"? : 语句"
autocmd Filetype verilog inoremap /s ? <++> : <++><Esc>F?i
"function 语句"
autocmd Filetype verilog inoremap /f <Esc>:r !echo -e 'function [ <++> : 0 ]<++>;\n <++>\nendfunction'<CR><Esc>/<++><CR>:nohlsearch<CR>c4l
"中括号"
autocmd Filetype verilog inoremap [ []<LEFT>
"大括号"
autocmd Filetype verilog inoremap { {}<LEFT>
"小括号"
autocmd Filetype verilog inoremap ( ()<LEFT>
"调出自定义输入快捷键帮助
autocmd Filetype verilog inoremap /,, <Esc>:!~/.vim/mconf/keyhelp verilog<CR><Esc>i
"==================================================================="
"==========="
"配置 python 编辑时的快捷键"
"==========="
autocmd Filetype python inoremap // <Esc>/<++><CR>:nohlsearch<CR>c4l
"print 语句"
autocmd Filetype python inoremap /p print()<++><Esc>F)i
"多行注释"
autocmd Filetype python inoremap /n '''<++>'''<++><Esc>/<++><CR>:nohlsearch<CR>c4l
"if语句"
autocmd Filetype python inoremap if if :<++><Esc>F:i
"else语句"
autocmd Filetype python inoremap else else:
"elif语句"
autocmd Filetype python inoremap elif elif :<++><Esc>F:i
"while 语句"
autocmd Filetype python inoremap while while :<++><Esc>F:i
"for 语句"
autocmd Filetype python inoremap for for <++> in <++> :<++><Esc>/<++><CR>:nohlsearch<CR>c4l
"def 函数语句"
autocmd Filetype python inoremap def def () :<++><Esc>F(i
"input 语句"
autocmd Filetype python inoremap input input()<++><Esc>F)i
"中括号"
autocmd Filetype python inoremap [ []<LEFT>
"大括号"
autocmd Filetype python inoremap { {}<LEFT>
"小括号"
autocmd Filetype python inoremap ( ()<LEFT>
"单引号"
autocmd Filetype python inoremap ' ''<LEFT>
"双引号"
autocmd Filetype python inoremap " ""<LEFT>
```
使用时只需把上面的类容拷贝到`$HOME/.vimrc`文件即可配置vim编辑器。
### fish shell配置
上面提过fish shell的配置路径在`$HOME/.config/fish/`文件夹下,以下我将简要介绍一些一些配置文件。
当不存在上述路径时,我们使用命令`mkdir -p $HOME/.config/fish`进行创建,然后我们使用`cd $HOME/.config/fish`切换到该路径下。
![](https://img.kancloud.cn/8b/d7/8bd7eec4d690dc91ab7a4951588d19ba_1152x790.png)
<br/>
然后我们新建配置文件`config.fish`,这个文件将会是配置fish shell的文件。使用命令`vim config.fish`,
文件内容可根据自己的需要进行配置,我的文件内容如下所示:
![](https://img.kancloud.cn/e7/8c/e78cf99c315f98645755ff274d3f64e7_1148x788.png)
上面的函数还可以单独写成一个文件,在当前路径下建立`functions`文件夹,里面放置我们的函数,里面的函数将会自动发的成为一条fish支持的命令。但是有一定的格式要求,就是文件名要求`命令名.fish`,文件中的函数名称要是`命令名`。比如我实现一个`web`命令,还命令可以快速打开一些指定网页,那么这个文件名就要是`web.fish`,我自己的web.fish的文件内容如下所示:
```bash
#!/usr/bin/env fish
#UFUNCTION=命令直接打开指定web页面
#-------路径存储的函数-----------
function cat_web_list
printf "\
#-h 显示帮助
#blbl 打开哔哩哔哩 https://www.bilibili.com/
#github 打开个人github页面 https://github.com/yuan-hp
#gitee 打开gitee个人主页 https://gitee.com/
#kancloud 打开看云文档 https://www.kancloud.cn/dashboard
#pon 打开ProcessOn在线作图页面 https://www.processon.com/diagrams
#idata 打开iData文献搜索页面 https://www.cn-ki.net/
#zh 打开知乎 https://www.zhihu.com/
"
end
function web
set cmd_name "web" #设计的指令名称
set real_cmd "open" #真正执行的指令
set data_src "cat_web_list" #数据来源
set cnt (count $argv)
if test $cnt -gt 0
set CMD_IN $argv
else
echo "使用 $cmd_name -h 查看帮助!"
return
end
switch $CMD_IN
case "-h"
echo "Usage: $cmd_name [option] 快速打开一些网页"
echo
cat_web_list | awk '{gsub(/#/, "");print $1,$2}' | column -s \ -t
echo
return
case "*"
set find_id "$data_src | awk '/#$argv/{print \$3}' "
#echo $find_id
set find_id (eval $find_id)
if test -n "$find_id"
eval "$real_cmd $find_id"
return
end
echo "使用 $cmd_name -h 查看帮助!"
return
end
end
```
然后我们重新打开cygwin的终端输入`web -h`可以查看该命令是否成功!
![](https://img.kancloud.cn/d0/50/d0500daa191b49135ab2d0a5cff320ab_1162x431.png)
那么我现在打开bilibil就可以在cygwin的终端输入`web blbl`就可直接打开bilibili的网页
![](https://img.kancloud.cn/8c/58/8c581f6f75008bdfaac1a066b854d222_2257x1008.png)
这样我们就能实现自定义的一些命令。
关于fish shell的使用,就简单介绍到这里,详细了解可以到fish shell的官网进行学习,
[fish shell官网](http://fishshell.com/)
## 写一个shell脚本执行试试
如下所示:
![](https://img.kancloud.cn/ec/c0/ecc0044af1008ade3da37e790daa33d4_1166x794.png)
## 结束语
通过配置cygwin,我们可以获得使用linux的一种体验,上面的介绍对其使用做了简单的介绍,很多的功能需要自己慢慢琢磨。
- 第1章 电脑操作篇
- 1.1 电脑高清壁纸下载地址
- 1.2 音乐外链在线获取
- 1.3 markdown,js等表格生成神器
- 1.4 在线使用文档,表格,演示文档
- 1.5 开发在线工具
- 1.5.1 toolbox
- 1.5.2 菜鸟工具
- 1.6 vs code远程调试
- 1.7 windows批处理命令
- 1.8 windows安装cygwin运行linux指令
- 1.9 windows下某些程序运行慢
- 1.10 win下为鼠标右键添加新项目
- 1.11 win上自己常用的开发软件
- 1.12 win下vscode配置
- 第2章 Electron 用前端技术开发跨平台桌面应用
- 2.1 介绍
- 2.2 入门链接地址
- 2.3 cnpm使用
- 第3章 Git使用
- 3.1 介绍
- 3.2 同步GitHub的基本使用方法
- 3.3 同步Gitee的基本使用方法
- 3.4 获取当前git分支
- 3.5 LF和CRLF换行的转换
- 第4章 HTML,CSS,JS
- 4.1 HTML速查列表
- 第5章 python使用
- 5.1 文件操作
- 5.2 一句话建立服务器
- 第6章 我的女友叫Linux
- 6.1 使用shell写俄罗斯方块
- 6.2 那些有趣的shell
- 6.2.1 40个有趣的LInux命令行
- 6.2.2 命令行下的网易云搜索播放器
- 6.2.3 从网上获取一条语句并显示
- 6.3 在linux上写汇编
- 6.4 在linux终端连接另一台linux
- 6.5 makefile文件的编写
- 6.6 deepin挂载远程文件夹到本地文件夹
- 6.7 本地lnux和远程linux进行文件拷贝
- 6.8 超好用的linux下的ssh管理工具(electerm)
- 6.9 那些不重要的技巧
- 6.10 linux文件加密
- 6.11 论文画图软件gnuplot
- 6.12 自定义mrun命令用于执行当前路径下的run文件
- 6.13 fish shell后台运行程序
- 第7章 在线工具收集
- 7.1 各种编程语言的在线编辑运行
- 7.2 html js 在线尝试
- 第8章 搭建自己的私有云盘
- 第9章 linux下的一些软件
- 9.1 remarkable--markdown文件轻量编辑器
- 9.2 gnuplot画图软件
- 9.3 Graphviz绘图(流程图,状态图)
- 第10章 TCL脚本编程
- 10.1 基础教程
- 10.2 在tcl脚本文件其他tcl脚本文件运行
- 10.3 在tcl脚本文件中调用bash/fish
- 10.4 TCL培训教程
- 10.5 tcl脚本参数传递
- 第11章 看云的使用
- 11.1 markdown添加公式
- 11.2 看云在linux本地编辑脚本
- 第12章 Go语言在linux下的使用
- 12.1 简介
- 12.2 调用自己的包
- 12.3 Go语言学习的资料
- 12.4 golang使用flag完成命令行解析
- 12.5 Golang文件操作大全
- 12.5.1 创建空文件
- 12.5.2 Truncate文件
- 12.5.3 得到文件信息
- 12.5.4 重命名和移动
- 12.5.5 删除文件
- 12.5.6 打开和关闭文件
- 12.5.7 检查文件是否存在
- 12.5.8 检查读写权限
- 12.5.9 改变权限、拥有者、时间戳
- 12.5.10 硬链接和软链接
- 12.5.11 复制文件
- 12.5.12 跳转到文件指定位置(Seek)
- 12.5.13 写文件
- 12.5.14 快写文件
- 12.5.15 使用缓存写
- 12.5.16 读取最多N个字节
- 12.5.17 文件追加内容
- 12.6 操作CSV文件
- 第13章 搜集资源的一些方法
- 13.1 电子书_电子课本
- 第14章 EndNote的使用
- 14.1 安装
- 14.2 文件检索