Linux 常用命令
- 简单指令
- ssh
- scp
- git
- log
- alias
github ssh key
https://segmentfault.com/a/1190000002645623
1、设置Git的user name和email,只是一个提交的标记作用,并不用它登录git的
git config --global user.name "humingx"
git config --global user.email "humingx@yeah.net"
2、生成密钥
ssh-keygen -t rsa -C "humingx@yeah.net"
3、添加密钥到ssh-agent
ssh-add ~/.ssh/id_rsa
4、登录github,把id_rsa.pub内容复制到ssh keys内
5、测试
ssh -T git@github.com
ssh key
公钥和私钥 -->非对称加密
公钥:加密/验章
私钥:解密/签章
客户端把公钥放到服务器,服务器用你的公钥加密内容,用它的私钥签章;
客户端收到后用服务端的公钥验章(保证是它发的)
用你的私钥解密(内容必须加密)
数字证书
在上述过程中,黑客有两个方法获取信息:1、把你保存的服务器公钥替换为它的
2、拿到服务器的私钥;为了保证开始的发送公钥不是其他人发的
数字证书包含:
证书的发布机构
证书的有效期
公钥
证书所有者(Subject)
签名所使用的算法
指纹以及指纹算法
通信过程
“客户”->“服务器”:你好
“服务器”->“客户”:你好,我是服务器,这里是我的数字证书 //这里用证书代替了公钥
“客户”->“服务器”:向我证明你就是服务器
“服务器”->“客户”:你好,我是服务器 {你好,我是服务器}[私钥|RSA]
SSH 服务器端:
OpenSSH 软件包包含了以下程序:
sshd -- SSH服务端程序
sftp-server -- SFTP服务端程序(类似FTP,但提供数据加密的一种协议)
scp -- 非交互式sftp-server的客户端,用来向服务器上传/下载文件,安全复制
sftp -- 交互式sftp-server客户端,用法和ftp命令一样。
slogin -- ssh的别名
ssh -- SSH协议的客户端程序,用来登入远程系统或远程执行命令
ssh-add -- SSH代理相关程序,用来向SSH代理添加dsa key
ssh-agent -- ssh代理程序
ssh-keygen -- ssh public key 生成器
SSH 客户端工具:
ssh 客户端工具比较常用的有:
Windows(SecureCRT / Xshell / Putty)
Linux (ssh)
文件传输
http://blog.51cto.com/skypegnu1/1538371
利用SSH管理远程Linux服务器时,经常需要与本地交互文件。当然,我们可以利用FTP方式,比如通过Filezilla客户端软件。不过直接使用SSH软件(SecureCRT、Xshell)自带的上传和下载功能无疑使最方便快捷的。通常SSH软件支持的文件传输协议主要有ASCII、Xmodem、Zmodem等
rz,sz是便是Linux/Unix同Windows进行ZModem文件传输的命令行工具
rz receive 接收
sz send 发送
scp
scp local_file remote_username@remote_ip:remote_folder
local_file 可选
whoami username
ifconfig ip
pwd remote_folder
最终有:
scp ubuntu@host:/home/ubuntu/tmp/nrt_app.csv
sudo scp root@host:system.conf /Users/t/Downloads/
ubuntu 传输文件到其他地方
tar
c create
v visualize
z gizp 压缩工具
j bzip2 压缩工具
f file
x 解压
tar -cvzf akpi_name.tar.gz akpi
chmod
tar -xvf akpi_name.tar.gz
tar -cvjf xx.tar.bz2 file 0.238压缩率
zip xx.zip file 0.220压缩率
cvzf 比zip稍好一点点
解压:
tar -xvf xxx.tar.gz -C 路径
tar -xvf xxx.tar.bz2 -C 路径
unzip xxx.zip -d 路经
chmod u+w g-x o+r demo.txt
rwx 421
chmod 632 demo.txt
alias
设置命令别名
$ alias vi='vim'
$ alias rm='rm -i'
查看所有别名:
$ alias
取消别名:
$ unalias rm
别名永久生效
$ vim ~/.bashrc
在文件最后面加入别名设置,如:alias rm=’rm -i’,保存后重新载入:
$ source ~/.bashrc
因为修改的是当前用户目录下的.bashrc文件,所以这样的方式只对当前用户有用。如果要对所有用户都有效,修改/etc目录下的bashrc文件就可以了。在ubuntu 12.04下,这个文件是/etc/bash.bashrc。此外在ubuntu 12.04下,细看~/.bashrc文件,会发有这样一段代码:
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
参考:http://www.01happy.com/linux-command-alias-unalias/
git
git使用公约
1、新功能从master创建新分支A
2、在新分支A上自行开发测试
3、在新分支A上开发结束后merge新分支A到develop,在测试环境pull最新的develop进行测试
4、如测试有问题,回到2继续
5、如测试通过后,把新分支A再merge到master 特别注意:千万不能把develop分支merge到master
日常操作:
- git status
- git add xxxx,fjsafa
- git commit -m 'sfafja'
- git commit -am 'fasfs'
- git push origin local:far
- git checkout develop
- git pull (if forget do it ,can do git pull origin develop:develop after wrong)
- git merge local_branch
- git push origin develop
- git checkout local_branch
- (server)~$ git pull
更新代码:
当前status 为 clean -->git checkout master --> (master)git pull -->git checkout lizd -->(lizd) git merge master (保持最新的代码,最后完成也需要这样的操作)
-
(develop) 不能和master有任何的merge操作,
-
当出现merge冲突可以试试如下:
-
git reset --hard
-
git checkout master
-
git branch -D develop
-
git checkout develop
-
git pull
-
git merge lizd
-
git push origin develop:develop
git 设置局部参数
git 修改当前的project的用户名的命令为:git config user.name 你的目标用户名;
git 修改当前的project提交邮箱的命令为:git config user.email 你的目标邮箱名;
如果你要修改当前全局的用户名和邮箱时,需要在上面的两条命令中添加一个参数,--global,代表的是全局。
命令分别为:git config --global user.name 你的目标用户名;
git config --global user.email 你的目标邮箱名
建一个分支:
git branch dev_name
git checkout dev
git checkout -b dev (new build and checkout to it) -
git merge dev (git merge --no--ff -m 'xx' dev)
-
git branch (-r 查看远程分支) git branch -vv 查看跟踪关系
-
git log --oneline --graph
git fetch 抓取远程到现在
git push -u [远程仓库名remote-name 默认origin] [本地推送的分支名]
git clone 默认创建了本地master分支关联远程master分支
删除分支:
git branch -d brach_name
git branch -r -d origin/branch_name
or
git push origin :branch_name
log
- 实时监控数据
tail -200f xxx.log
tail -f xxx.log
tail -f xxx.log |grep yyy
tail -f xxx.log |grep yyy |grep zzz - 查看历史数据
grep xxxuid xxx.log 查看关键日志信息
grep -n xxxuid xxx.log 显示行号
cat -n test.log |grep "debug" 得到关键日志的行号 效果同上
cat -n test.log |tail -n +121292|head -n 20 选择关键字所在的中间一行. 然后查看这个关键字(121292行)之后20行的日志 - 更加常用的获得行号后,显示详细信息的操作
grep -5 'parttern' inputfile //打印匹配行的前后5行
grep -C 5 'parttern' inputfile //打印匹配行的前后5行
grep -A 5 'parttern' inputfile //打印匹配行的后5行
grep -B 5 'parttern' inputfile //打印匹配行的前5行
sed -n '5,10p' filename 这样你就可以只查看文件的第5行到第10行
简单指令
- 在线安装软件
sudo apt-get update
sudo apt-get install xxxx
sudo apt-get remove xxxx - ls
ls *.txt
ls .
ls -a 显示所有文件信息
ls -la = ll
ls -lah
ls -lh - tree
sudo apt-get install tree
tree -L 2 几层 - 重定向 >
ls -l >> xxx.txt 存在追加,不存在新建
cat text.txt > Desktop/xxx.txt - 软连接 ln (windows的快捷方式,只有一份源文件,删除源文件则失效)
ln -s 源文件 软连接文件名 - 硬链接 ln (防止误删文件,只是起了两个名字,文件仍是一份,一改都该,只有名字都删才会删除文件)
ln 源文件 硬链接文件名 - mkdir 创建目录
- touch 创建文件
- 删除 rm -r (recursive)文件夹 , rm -f (force)强制删除没有提示, rm -i (interactive)有提示 rm * -rf 后果很严重
- 复制 cp 1.txt xxx.txt 文件夹 -r
- 移动/重命名(同级目录) mv
- find ./ -name 'xxx.txt' , find /bin -size +100k -size -200k (大于100,小于200)
- grep '^name' xxx.txt 以name开头的, grep 'name$' xxx.txt (以name为结尾的), -n 显示行号,
-i 忽略大小写 -v:取反