常用命令记录
文章目录
- base64
- awk、sed 命令
- tar 命令
- yum 安装rpm 命令
- 参数详解
- git 命令
- sbt 命令
base64
python 的base64.decodestring方法做base64解码时报错。
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
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) % 4if missing_padding:data += b'='* missing_paddingreturn base64.decodestring(data)
awk、sed 命令
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 命令
yum -y install ruby rubygems ruby-devel rpm-build.x86_64
安装ruby模块
yum -y install ruby rubygems ruby-devel
查看当前使用的rubygems仓库
gem sources list
添加淘宝的Rubygems仓库,外国的源慢,移除原生的Ruby仓库
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,够用。
gem install json -v 1.8.3gem install fpm -v 1.3.3
上面的2步安装仅适合CentOS6系统,CentOS7系统一步搞定,即gem install fpm
创建工作目录:
mkdir /tmp/1/opt/elasticsearch/ -p
拷贝文件
cp -r /opt/elasticsearch/* /tmp/1/opt/elasticsearch/
编写删除脚本,命名为/tmp/remove_after.sh,内容为:
#!/bin/bash
rm -rf /opt/elasticsearch
创建rpm包:
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 的解决办法
#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 <file> 把文件增加到暂存区
git add . 全部git rm --cached <file> 删除暂存区的文件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 <file> 撤销还没有add到暂存区的操作git merge 分支 合并分支第一步,想合并到哪个分支里,就要先切换到哪个分支;第二步,执行“git merge 分支名称”git tag 查看版本标签
git tag 版本标签 新建版本标签(如V1.0)
git tag -d 版本标签 删除版本标签
git checkout 版本标签 切换版本标签git diff 查看差异(当前目录里文件与暂存区文件的差异)
git diff <$id1> <$id2> 比较两次提交之间的差异
git diff <branch1>..<branch2> 比较两个分支之间的差异
-------------------------------------------------------------------------------------------------------远程命令
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:tms/demo.git
将本地仓库代码同步到远程仓库
同步代码分支到远程仓库:git push -u origin --all
同步代码Tag到远程仓库:git push -u origin --tags
四、分支管理
-
从当前分支中克隆一个新的分支:git branch -c <分支名称> ##从当前分支新建一个分支,并切换到新分支:git checkout -b <分支名称>
-
将新建分支同步到远程仓库:git push origin <分支名称> ##不加分支名称,则把所有分支同步到远程仓库
-
删除分支:git branch -d <分支名称>
-
删除远程仓库分支:git push origin --delete <分支名称>
-
查看当前项目的分支:git branch ##查看所有仓库分支,使用:git branch -a
-
切换分支:git checkout <分支名称>
-
将远程仓库已经存在的分支同步到本地仓库:git checkout <分支名称>
五、Tag管理
-
查看当前存在的tag:git tag ##查看单个tag详情,可用命令:git show <tag名称>
-
新建Tag:git tag <tag名称> ##带说明信息的tag,可用命令:git tag -a <tag名称> -m ‘<注释信息>’
-
将新建的Tag同步到远程仓库:git push origin <tag名称> ##如果要把所有tag都同步到远程仓库,可用命令:git push origin --tags
-
删除Tag:git tag -d <tag名称>
-
删除远程仓库Tag:git push origin :refs/tags/<tag名称>
-
将远程仓库Tag同步到本地:git fetch origin tag <tag名称>
六、代码管理
-
从远程仓库拉取最新代码:git pull ##如果要拉取所有分支代码,可使用命令:git pull --all
-
新建文件添加到版本库:git add <文件名> ##如果要添加多个文件,可使用命令:git add -A
-
将当前项目中的改动同步到本地仓库中:git commit -m “日志”
-
将本地仓库中的代码同步到远程仓库:git push
-
将develop分支的改动同步到master分支:1)git checkout <master> 2) git merge <develop>
-
修改已commit,但还未push的提交日志(vi操作命令):git commit --amend
七、日志查看
-
查看全部提交日志:git log
-
查看某个人的提交日志:git log --author=<str>
-
依次查看详细的提交内容:git log -p ##如果要查看指定的一次提交记录, 后面加上 commitID即可
八、配置Git仓库
- 配置用户名和邮箱
git config --global user.name “Your Name”
git config --global user.email “you@example.com”
- 秘钥
2.1 生成秘钥
ssh-keygen -t rsa -C “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
-
添加sshkey至github
-
测试连通性
ssh -T git@github.com
本地项目和github项目建立连接
git remote add origin git@git.xxx.cn:tms/demo.git
初始化项目,进入项目根目录
git init
7.解决master push失败(两边代码不同步的问题)
git pull --rebase origin master
git push -u origin master
sbt 命令
1.下载
http://www.scala-sbt.org/download.html
解压:
sbt-0.13.12.zip
2.添加环境变量
SBT_HOME=D:\JavaDev\sbt
path=……;%SBT_HOME%\bin;
3.配置本地仓库
编辑:conf/sbtconfig.txt
# 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
[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命令的执行都是在该目录下。分为两个步骤:
- 手工建立build.sbt,用sbt compile 命令建立sbt项目;执行之后,会在demo1目录下生成project和target两个目录。
- 在新生成的project目录下手工建立 plugins.sbt,用sbt eclipse命令建立eclipse项目,之后可以用eclipseIDE导入文件类项目
具体文件如下:
(1) build.sbt
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
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.5.0")
资源来源网络进行整理而来!
