文章目录
-
- base64
- [awk、sed 命令](#awk、sed 命令)
- [tar 命令](#tar 命令)
- [yum 安装rpm 命令](#yum 安装rpm 命令)
-
- [git 命令](#git 命令)
- [sbt 命令](#sbt 命令)
base64
python 的base64.decodestring方法做base64解码时报错。
bash
复制代码
Traceback (most recent call last):
File "/export/www/outofmemory.cn/controllers/user.py", line 136, in decryptPassword
encryptPwd = base64.b64decode(encryptPwd)
File "/usr/lib/python2.7/base64.py", line 76, in b64decode
raise TypeError(msg)
TypeError: Incorrect padding
python
复制代码
def decode_base64(data):
"""Decode base64, padding being optional.
:param data: Base64 data as an ASCII byte string
:returns: The decoded byte string.
"""
missing_padding = 4 - len(data) % 4
if missing_padding:
data += b'='* missing_padding
return base64.decodestring(data)
awk、sed 命令
bash
复制代码
awk 'BEGIN{sum=0}{sum+=\$1}END{print sum}' test.txt
sed -F '\t' a.txt b.txt > test.txt
相同行合并并求和
awk 'BEGIN{FS=OFS="|"}{a[$2]+=$1;b[$2]=b[$2]$NF"/"}END{for(i in a)print a,i,b}' file
tar 命令
root@linux \~\]# tar \[-cxtzjvfpPN\] 文件与目录 ....
参数:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!
因为不可能同时压缩与解压缩。
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成
『 tar -zcvPf tfile sfile』才对喔!
-p :使用原文件的原来属性(属性不会依据使用者而变)
-P :可以使用绝对路径来压缩!
-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!
--exclude FILE:在压缩的过程中,不要将 FILE 打包!
### yum 安装rpm 命令
```bash
yum -y install ruby rubygems ruby-devel rpm-build.x86_64
```
安装ruby模块
```bash
yum -y install ruby rubygems ruby-devel
```
查看当前使用的rubygems仓库
```bash
gem sources list
```
添加淘宝的Rubygems仓库,外国的源慢,移除原生的Ruby仓库
```bash
gem sources --remove http://rubygems.org/
gem sources -a https://upyun.gems.ruby-china.org
```
安装fpm,gem从rubygem仓库安装软件类似yum从yum仓库安装软件。首先安装低版本的json,高版本的json需要ruby2.0以上,然后安装低版本的fpm,够用。
```bash
gem install json -v 1.8.3
gem install fpm -v 1.3.3
```
上面的2步安装仅适合CentOS6系统,CentOS7系统一步搞定,即gem install fpm
创建工作目录:
```bash
mkdir /tmp/1/opt/elasticsearch/ -p
```
拷贝文件
```bash
cp -r /opt/elasticsearch/* /tmp/1/opt/elasticsearch/
```
编写删除脚本,命名为/tmp/remove_after.sh,内容为:
```bash
#!/bin/bash
rm -rf /opt/elasticsearch
```
创建rpm包:
```bash
fpm -s dir -t rpm -n elasticsearch -v 5.2.0 --iteration 1.el6 -C /tmp/1 -p /root --post-uninstall /tmp/remove_after.sh -d 'gcc,gcc-c++'
```
之后在/root目录下生成包/root/elasticsearch-5.2.0-1.el6.x86_64.rpm
#### 参数详解
-s 指定源类型 dir: 将目录打包成所需要的类型,可以用于源码编译安装的软件包
-t 指定目标类型 rpm: 转换为rpm包
-n 指定包的名字 elasticsearch
-v 指定版本 5.2.0
--iteration 指定打包次数 1
-C 指定打包的绝对路径 /tmp/1
-d 指定依赖包 gcc
-p 输出的安装包的目录,不想放在当前目录下就需要指定 /root
--post-uninstall 软件包卸载完成之后所要运行的脚本;同--offer-remove
### git 命令
执行Git命令时出现各种 SSL certificate problem 的解决办法
```bash
#set GIT_SSL_NO_VERIFY=true git clone
git config --global http.sslVerify false
linux:
env GIT_SSL_NO_VERIFY=true git push
在本机git bash中执行如下命令,可生成秘钥:
ssh-keygen -t rsa -C "jixiaoguang@ict.ac.cn"
-------------------------------------------------------------------------------------------------------
本地命令
git 查看命令
git status 查看状态
git init 初始化仓库(在目录内部)
删除.git目录,则可以删除仓库
git add 把文件增加到暂存区
git add . 全部
git rm --cached 删除暂存区的文件
git commit -m '提交说明' 把暂存区的文件提交到仓库
git log 查看所有的commit记录
git branch 查看当前分支
git branch 分支名称 创建分支,在哪个分支里面创建分支,则创建的分支和那个分支的内容完全一样
git branch -d 分支 删除分支,如果正处于要删除的分支里,先切换到其他分支
git branch -D 分支 强制删除分支,如果要删除的分支还没合并到master分支,用"-d"删除
可能会失败,这时候则用"-D"强制删除
git checkout 分支名称 切换分支
git checkout -b 分支名称 创建分支并且切换到该分支
git checkout commit_id 切换到某次commit
git checkout 撤销还没有add到暂存区的操作
git merge 分支 合并分支
第一步,想合并到哪个分支里,就要先切换到哪个分支;
第二步,执行"git merge 分支名称"
git tag 查看版本标签
git tag 版本标签 新建版本标签(如V1.0)
git tag -d 版本标签 删除版本标签
git checkout 版本标签 切换版本标签
git diff 查看差异(当前目录里文件与暂存区文件的差异)
git diff <$id1> <$id2> 比较两次提交之间的差异
git diff .. 比较两个分支之间的差异
-------------------------------------------------------------------------------------------------------
远程命令
git remote -v 查看当前项目有哪些远程仓库
git remote add 远程仓库名称 远程仓库地址
把本地的当前仓库与远程的仓库关联
如:git remote add origin git@github.com:stormzhang/test.git
origin是给本地仓库里项目的远程仓库起的名字
git@github.com:stormzhang/test.git是远程仓库的地址
git push 远程仓库名称 远程仓库分支
把本地代码推到远程仓库的分支里,push之前肯定执行过pull
如:git push origin master 把本地代码推到远程master分支
git pull 远程仓库名称 远程仓库分支
把远程仓库里分支的代码拉到本地
如:git pull origin master 把远程master分支的代码拉到本地
git remote rm origin 删除远程仓库名
-------------------------------------------------------------------------------------------------------
远程与本地仓库对接步骤:
1.远程仓库新建分支,名称为非中文,如:1.01
2.本地仓库创建名为1.01的分支,执行:git branch 1.01
3.本地仓库切换到1.01分支,执行:git checkout 1.01
4.本地仓库更新代码后,把更新内容增加到暂存区,执行:git add .
5.本地仓库提交更新内容,执行:git commit,回车之后进入vim编辑环境,写一点提交概述
6.本地仓库push更新内容到远程仓库,执行:git push origin 1.01
```
三、将远程仓库项目与本地仓库代码做好映射
建立与远程仓库的关联
git remote add origin [git@git.xxx.cn](mailto:git@git.xxx.cn):tms/demo.git
将本地仓库代码同步到远程仓库
同步代码分支到远程仓库:git push -u origin --all
同步代码Tag到远程仓库:git push -u origin --tags
四、分支管理
1. 从当前分支中克隆一个新的分支:git branch -c \<分支名称\> ##从当前分支新建一个分支,并切换到新分支:git checkout -b \<分支名称\>
2. 将新建分支同步到远程仓库:git push origin \<分支名称\> ##不加分支名称,则把所有分支同步到远程仓库
3. 删除分支:git branch -d \<分支名称\>
4. 删除远程仓库分支:git push origin --delete \<分支名称\>
5. 查看当前项目的分支:git branch ##查看所有仓库分支,使用:git branch -a
6. 切换分支:git checkout \<分支名称\>
7. 将远程仓库已经存在的分支同步到本地仓库:git checkout \<分支名称\>
五、Tag管理
1. 查看当前存在的tag:git tag ##查看单个tag详情,可用命令:git show \
2. 新建Tag:git tag \ ##带说明信息的tag,可用命令:git tag -a \ -m '\<注释信息\>'
3. 将新建的Tag同步到远程仓库:git push origin \ ##如果要把所有tag都同步到远程仓库,可用命令:git push origin --tags
4. 删除Tag:git tag -d \
5. 删除远程仓库Tag:git push origin :refs/tags/\
6. 将远程仓库Tag同步到本地:git fetch origin tag \
六、代码管理
1. 从远程仓库拉取最新代码:git pull ##如果要拉取所有分支代码,可使用命令:git pull --all
2. 新建文件添加到版本库:git add \<文件名\> ##如果要添加多个文件,可使用命令:git add -A
3. 将当前项目中的改动同步到本地仓库中:git commit -m "日志"
4. 将本地仓库中的代码同步到远程仓库:git push
5. 将develop分支的改动同步到master分支:1)git checkout \ 2) git merge \
6. 修改已commit,但还未push的提交日志(vi操作命令):git commit --amend
七、日志查看
1. 查看全部提交日志:git log
2. 查看某个人的提交日志:git log --author=\
3. 依次查看详细的提交内容:git log -p ##如果要查看指定的一次提交记录, 后面加上 commitID即可
八、配置Git仓库
1. 配置用户名和邮箱
git config --global user.name "Your Name"
git config --global user.email "[you@example.com](mailto:you@example.com)"
1. 秘钥
2.1 生成秘钥
ssh-keygen -t rsa -C "[you@example.com](mailto:you@example.com)"
2.2 添加sshkey至ssh-agent
2.2.1. 执行eval "$(ssh-agent -s)"确认ssh-agent处于开启状态,打印pid... 表示启用中;
2.2.2. 执行指令ssh-add \~/.ssh/id_rsa 添加ssh key至ssh agent
1. 添加sshkey至github
2. 测试连通性
ssh -T [git@github.com](mailto:git@github.com)
本地项目和github项目建立连接
git remote add origin [git@git.xxx.cn](mailto:git@git.xxx.cn):tms/demo.git
初始化项目,进入项目根目录
git init
7.解决master push失败(两边代码不同步的问题)
git pull --rebase origin master
git push -u origin master
*** ** * ** ***
### sbt 命令
1.下载
解压:
sbt-0.13.12.zip
2.添加环境变量
SBT_HOME=D:\\JavaDev\\sbt
path=......;%SBT_HOME%\\bin;
3.配置本地仓库
编辑:conf/sbtconfig.txt
```bash
# Set the java args to high
-Xmx512M
-XX:MaxPermSize=256m
-XX:ReservedCodeCacheSize=128m
# Set the extra SBT options
-Dsbt.log.format=true
-Dsbt.boot.directory=D:/JavaDev/boot/
-Dsbt.global.base=D:/JavaDev/.sbt
-Dsbt.ivy.home=D:/JavaDev/.ivy2
-Dsbt.repository.config=D:/JavaDev/sbt/conf/repo.properties
```
增加文件 conf/repo.properties
```bash
[repositories]
local
Nexus osc : https://code.lds.org/nexus/content/groups/main-repo
Nexus osc thirdparty : https://code.lds.org/nexus/content/groups/plugin-repo/
typesafe: http://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
typesafe2: http://repo.typesafe.com/typesafe/releases/
sbt-plugin: http://repo.scala-sbt.org/scalasbt/sbt-plugin-releases/
sonatype: http://oss.sonatype.org/content/repositories/snapshots
uk_maven: http://uk.maven.org/maven2/
ibibli: http://mirrors.ibiblio.org/maven2/
repo2: http://repo2.maven.org/maven2/
```
4.测试
sbt -version
5.sbt 创建项目
用sbt创建eclipseIDE项目,新建一个文件夹,例如demo1,作为工程目录,sbt命令的执行都是在该目录下。分为两个步骤:
1. 手工建立build.sbt,用sbt compile 命令建立sbt项目;执行之后,会在demo1目录下生成project和target两个目录。
2. 在新生成的project目录下手工建立 plugins.sbt,用sbt eclipse命令建立eclipse项目,之后可以用eclipseIDE导入文件类项目
具体文件如下:
(1) build.sbt
```bash
name := "demo1"
scalaVersion := "2.11.1"
version := "1.0"
scalacOptions += "-deprecation"
libraryDependencies <+= (scalaVersion)("org.scala-lang" % "scala-compiler" % \_)
```
说明:name 为创建的工程的名字,scalaVersion为你安装的scalaVersion的版本。version为你创建的工程的版本。
(2) plugins.sbt
```bash
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.5.0")
```
> 资源来源网络进行整理而来!