Linux学习之Perl-One-Liners-Explained系列
perl 单行命令 解释
https://catonmat.net/perl-book
Perl One-Liners Explained, Part I: File Spacing
Hi all! I am starting yet another article series here. Remember my two articles on Awk One-Liners Explained and Sed One-Liners Explained? They have received more than 150,000 views total now and they attract several thousand new visitors every week. Inspired by their success, I am going to create my own perl1line.txt file and explain every single oneliner in it. I hope it becomes as popular as awk1line.tx ...
Linux学习之Sed-One-Liners-Explained系列
sed 一行命令 解释
Sed One-Liners Explained, https://catonmat.net/sed-one-liners-explained-part-one
在开始解释之前,我想分享一下改变我对 sed 的看法的关键思想。它是 sed 的四个内存空间——输入流、输出流、模式空间、保持缓冲区。input stream, output stream, pattern space, hold buffer
Sed 对输入流进行操作并产生一个输出流。输入流中的行被放入模式空间(可以修改它们),然后模式空间被发送到输出流。保持缓冲区可用于临时存储。这四个空格完全改变了我对 sed 的看法。通过本文中的示例,您将了解所有有关它们的信息。
Part 1: File Spacing, Numbering and Text Conversion and Substitution1. File spacing.1.Double-space a file.
1sed G
这个G命令会给每行后面都添加一个新的换行。
This sed one-liner uses the G co ...
Linux学习之Awk-One-Liners-Explained系列
https://catonmat.net/awk-one-liners-explained-part-one
Part 1: File Spacing, Numbering and Calculations##1.Line Spacing
1.每行后面都加上一个空行
1awk '1; { print "" }' #
awk 程序包含一系列的 parttern-action(模式-动作)的语句。类似这样‘pattern{action}’的结构。这个例子中包含了2个语句,一个是 “1”,另一个是“{print “” }”,模式和动作都可以省略的其中一个的。如果模式省略了,默认是对所有的输入内容按行来出来的。如果是动作省略的默认是“{print }”。
注意awk程序是面向行的。
上面的等同于下面这个程序
1awk '1 { print } { print "" }' #
动作只有在模式匹配的情况下才执行。这里例子中的模式是“1” ...
Linux学习之Bash-One-Liners-Explained系列
bash cookbook 技巧来自http://www.catonmat.net/blog
Part I: Working With Files 第一部分 文件处理1.清空文件内容 Empty a file (truncate to 0 size)
1$ > file
这一行命令用到了输出重定向操作符>。输出重定向发生时,文件会被打开准备写入。如果此时文件不存在则先创建,存在则将其大小截取为0(truncate to 0)。这里我们并没有重定向写任何内容到文件中,所以文件依然保持为空。
如果你想替换文件的内容,或者创建一个包含指定内容的文件,可以运行下面的命令:
1$ echo "some string" > file
如果你想往文件里面写入多行内容可以运行下面的命令:
123456cat << EOF > filesome string 1 linestome string .....EOF
2.追加内容到文件
12$ echo "foo bar baz" >> file ...
Android下的配置管理之道之自动abandon很久之前的处于open的patch
自动abandon很久之前的处于open的patch
123456789101112131415GERRIT_SERVER=for i in $(ssh $GERRIT_SERVER gerrit query status:open --current-patch-set age:2month | grep revision: | awk '{print $2}')do LAST_REVISION=$i ABANDON_PROJECT=$(ssh $GERRIT_SERVER gerrit query status:open $LAST_REVISION | grep -E "^\s+project:" | awk '{ print $2 }' | head -1) echo "===================" echo "Gerrit Server: $GERRIT_SERVER" echo "P ...
Android下的配置管理之道之Android编译环境搭建
编译环境搭建系统安装启动服务器电源,首先配置好raid,一般推荐:系统分区使用raid1,编译分区使用raid0,数据安全高一点的使用raid1,raid50
专用的编译服务器使用的是dell R430、R630 等。
另外一种是 专用编译+员工编译使用的是dell R730。
两种的区别就是R730配置的硬盘容量比较多,比较大。
dell的一般是ctrl + R 进入raid设置
dell的一般是按F11进入u盘启动
使用ubuntu 14.04.4 版本的 server版本的,没有图形界面的。
添加sudo命令不用输入密码编辑 sudo cat /etc/sudoers文件 在27行加入这一行 buildfarm ALL=(ALL)NOPASSWD:ALL
1buildfarm ALL=(ALL)NOPASSWD:ALL
配置静态IP系统安装完成后就设置静态IP
ubuntu 14.0412345678910111213141516171819$ cat /etc/network/interfaces -n 1 # ...
Docker源码学习之docker-version命令
docker源码学习之 docker version 子命令说明: 使用的代码是 https://github.com/golang108/docker-cli.git (tag: v24.0.6)
1. 添加容器相关的几个子命令其中就有我们这里说到 version 子命令。
容器相关的 子命令 在这里 被加入到 corba 中去
cli/command/commands/commands.go 文件
123456789func AddCommands(cmd *cobra.Command, dockerCli command.Cli) { cmd.AddCommand( system.NewVersionCommand(dockerCli), ...... ...... ...... )}
2. NewVersionCommand() 函数1234func NewVersionCommand(dockerCli command.Cli) *cobra.Command {}
基本上可以发现docker ...
Docker源码学习之docker-run命令
docker源码学习之 docker run 子命令说明: 使用的代码是 https://github.com/golang108/docker-cli.git (tag: v24.0.6)
1. 添加容器相关的几个子命令其中就有我们这里说到 run 子命令。
容器相关的 子命令 在这里 被加入到 corba 中去
cli/command/commands/commands.go 文件
1234567891011func AddCommands(cmd *cobra.Command, dockerCli command.Cli) { cmd.AddCommand( container.NewRunCommand(dockerCli), 这里加入 container 相关的 几个子命令,例如 docker run、docker exec, docker ps 这3个子命令。 container.NewExecCommand(dockerCli), container.NewPsCommand(dockerCli), ...... .. ...
Docker源码学习之如何源码编译docker
How to Compile Docker from Source?Docker的开源部分被改名成了Moby,同时Docker公司还开源了一个LinuxKit的项目,大家可以先去看一下readme。
参考链接
https://github.com/collabnix/dockerlabs/blob/master/beginners/compiling-docker-from-source.md
先确定 操作系统版本,安装的docker的版本Ubuntu 18.04.6 LTSlsb_release -a12345No LSB modules are available.Distributor ID: UbuntuDescription: Ubuntu 18.04.6 LTSRelease: 18.04Codename: bionic
dpkg –listfiles docker-ce containerd.io1234567891011121314151617181920212223242526272829303132333435363738394041 ...
Docker源码学习之docker-names-generator
docker源码学习之容器的随机名称的生成首先是 发送 的 post 请求,被这个函数先处理
postContainersCreate() 函数12345func (s *containerRouter) postContainersCreate(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error { name := r.Form.Get("name")
在这个函数里面 会从请求参数中获取到 name 的值,这里是我们传入 的 my, 也对应上 命令行参数 –name my
s.backend.ContainerCreate() 函数123456789ccr, err := s.backend.ContainerCreate(ctx, types.ContainerCreateConfig{ Name: name, Config: config, HostConfig: ...
Docker源码学习之docker命令行参数解析流程
docker命令行参数解析流程通过 docker -v 查看版本,可以得到 对应 仓库的 revision。然后克隆这个仓库,检出对应的源代码。
12$ docker -v Docker version 24.0.2, build cb74dfc
克隆这个仓库,检出对应的源代码
12345git clone https://github.com/golang108/docker-cli.gitgit checkout cb74dfc # 这个就对应 Docker version 24.0.2, build cb74dfc
1. 入口 main 函数来自文件 cmd/docker/docker.go
123456789101112func main() { // 1. 主要就是 实例化 一个 dockerCli 这个东西, // dockerCli 其实是 type DockerCli struct 这样的一个结构体 dockerCli, err := command.NewDockerCli() // 2. 然后就是 调用 ...
JavaWeb学习总结之Servlet
0.总结java Servlet 是和平台无关的服务器端组件,它运行在servlet容器中(一般是tomcat,当然也有其他的容器),servlet容器负责servelt和客户端的通信以及调用servlet的方法,servlet和客户的通信采用“请求/响应”的模式。
servlet容器创建和销毁servlet,掌控servlet的生命周期。servlet其实就是一个类,一个class而已。有一个比较重要的接口,Servlet
#1.创建一个Servlet接口的实现类实现接口中的所有的方法。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384public class HelloServlet implements Servlet { public HelloServlet() { ...