Linux 常用命令

蓝色的 mandelbrot

  • 简单指令
  • 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
日常操作:

  1. git status
  2. git add xxxx,fjsafa
  3. git commit -m 'sfafja'
  4. git commit -am 'fasfs'
  5. git push origin local:far
  6. git checkout develop
  7. git pull (if forget do it ,can do git pull origin develop:develop after wrong)
  8. git merge local_branch
  9. git push origin develop
  10. git checkout local_branch
  11. (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:取反
posted @ 2019-02-19 10:18  bruspawn  阅读(246)  评论(0编辑  收藏  举报