目录
crudini
column
按规律排序
mount | column –t:
cat /etc/passwd | column -t -s:
dd
dd if=/dev/zero of=/opt/aa bs=1M count=1000
df
df -hT report file system disk space usage 查看分区使用大小
du -sh /root estimate file space usage 显示数据所占用的磁盘空间(4KB/块) 查看文件使用大小
find
find -name "aa*" -maxdepth 1 -exec rm -rf {} \
find -name "aa*" | xargs ls -l
find /etc/ -iname PASSWD -iname选项:根据名称查找,忽略大小写
find / -uid 500 -uid选项:根据uid查找,属于这个用户的文件
-gid 选项:根据gid查找,属于这个组的文件
-user 选项:根据用户名查找,查找属于这个用户的
-group 选项:根据组名查找,查找属于这个组的
-nouser 选项:查找这个文件不属于任何用户的
-nogroup 选项:查找这个文件不属于任何组的
find /etc/ -maxdepth 1 -name passwd -maxdepth 选项:限制目录查找深度,当有多个条件时maxdepth这个选项要放到最前面
-a 多个条件同时满足
-o 多个条件满足一条即可
-mtime 文件内容修改
n n为数字,意义在n天之前的“一天之内”被更改过的文件
+n 列出在n天之前(不含n天本身)被更改过的文件名
-n 列出在n天之内(含n天本身)被更改过的文件名
+4代表大于等于5天前的文件名 find /var -mtime +4
-4代表小于等于4天内的文件名 find /var -mtime -4
4则是代表4~5那一天的文件名 find /var -mtime 4
-mtime +1 48小时之前的
-mtime -1 24小时之内的
-mtime 1 24小时到48小时之内的
-exec
eg: find /boot -size +2048k -exec ls -l {} \;
[root@localhost data]# find /boot/ -size +1M -exec cp -r {} /opt \;
{} find找到的内容
-exec 到\; 代表find额外命令开始到结束
git
创建版本库
初始化仓库
git init
ls -a
.git git目录用来跟踪版本库
文件添加到仓库
git add a.txt
文件提交到仓库
git commit -m “v1” 备注v1
文件上传到远程库
git push -u orgion master
查看仓库状态
git status
查看历史版本
git log 查看当前状态历史记录,--pretty=oneline 简单输出
git reflog 查看所有历史记录
f026a6c (HEAD -> master) HEAD@{0}: commit: v3
dc1e2ca HEAD@{1}: commit: v2
abdea28 HEAD@{2}: commit (initial): v1
查看工作区和版本库里最新版本的区别
git diff HEAD -- a.txt
管理修改
从版本库回退
git reset --hard HEAD^ HEAD@{0}表示当前版本,回退到HEAD版本
git reset --hard HEAD^^ 回退到HEAD@{2}版本
或者
git reset --hard HEAD~1
git reset --hard HEAD~2
或者
git reset --hard commit_id 回退到指定版本
撤销工作区的修改
git checkout -- a.txt
一种是a.txt修改后还没有被放到暂存区,撤销修改就回到和版本库一模一样的状态;
一种是a.txt已经添加到暂存区后,又作了修改,撤销修改就回到添加到暂存区后的状态。
撤销暂存区的修改
git reset HEAD a.txt 删除暂存区的文件
删除文件
git rm a.txt 如果一个文件已经被提交到版本库,那么永远不用担心误删
git commit -m "remove a.txt"
分支管理
创建分支
git branch dev 创建分支dev
git checkout dev 切换到分支dev
或者
git checkout -b dev git checkout命令加上-b参数表示创建并切换,相当于以上两条命令
查看分支
git branch
* dev
master
切换回master
git checkout master
master合并分支后再删除分支
git merge dev
Updating 78d2980..745616c
Fast-forward 并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快
b.txt | 1 +
1 file changed, 1 insertion(+)
create mode 100644 b.txt
git branch -d dev
远程仓库
创建新的仓库(推荐直接克隆远程库)
echo "# test2.0" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin git@github.com:testder/test2.0.git
git push -u origin master
加上了,-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来
在以后的推送或者拉取时就可以简化命令 git push
关联已存在的远程仓库并上传
git remote add origin git@github.com:testder/test2.0.git 关联两个远程库,名字需不同
git remote add origin02 git@github.com:testder/test2.0.git
git push -u origin master
克隆远程从库
git clone git@github.com:testder/tools2.0.git 克隆的已经建立好orgion,无需再次关联
git remote -v 查看远程库信息
git remote rm orgion 删除远程库
history
# vim /etc/bashrc
HISTSIZE=100 显示的历史命令条数
export HISTTIMEFORMAT="%Y-%m-%d %H:%M "(%F %T) 加export为全局变量
# source /etc/bashrc 重新加载bashrc文件
history 10 | sed 's/^[ ]*[0-9]\+[ ]*//'
history | cut -c 8-
autojump
抓住一份autojump:
git clone git://github.com/wting/autojump.git
运行安装脚本,并按照屏幕上的指示。
j
cd autojump
./install.py or ./uninstall.py
# git clone https://github.com/joelthelion/autojump.git
# cd autojump
# ./install.py
# vim .zshrc
[[ -s ~/.autojump/etc/profile.d/autojump.zsh ]] && . ~/.autojump/etc/profile.d/autojump.zsh
# autoload -U compinit && compinit -u
# source .zshrc
ln
软连接/硬连接
1、查找文件方式
目标文件-->i节点-->文档数据
2、软连接
链接文件-->目标文件-->i节点-->文档数据
3、硬连接
链接文件-->i节点-->数据内容
4、对比优缺点
软连接:若目标文件被删除,链接文件将失效,可以跨分区、目标可以是目录
ln -s a.sh b.sh ls -i 两个文件的inode不一样
硬连接:若目标文件被删除,链接文件仍可用,不能跨分区、目标不能是目录
ln a.sh b.sh ls -i两个文件的inode一样
locate
# updatedb 立即更新数据库
# locate a.sh
# locale 查看字符编码
LANG=en_US.UTF-8
[root@node01 ~]# echo $LANG
en_US.UTF-8
[root@node01 ~]# cat /etc/locale.conf
LANG="en_US.UTF-8"
lsof
# lsof -ni:4505
mtr
Mtr的使用详解!
-h显示帮助信息!
-v显示mtr的版本信息!
-r:以报告模式显示!
-s:指定ping数据包的大小!
-n:不对IP地址做域名解析!
-i:设置ICMP返回时间,默认是1s!
-4:只检测ipv4,-6是ipv6!
-c:指定每秒发送送数据包的数量,默认未10!
-a:指定发送数据的IP地址!针对一个主机多IP使用!
第一列:HOST:ubuntu指的是IP地址或主机域名!
第二列:Loss%丢包率
第三列:Sut每秒发送数据包的数量!
第四列:Last最近的返回时延!
第五列:Avg发送包时!Ping包的平均延时!
第六列:Best最短延时时间!
第七列:Wrst最长延时时间!
第八列:StDev标准偏差!
运营商的骨干网地址起始
电信以202.97开始的地址
联通以219.158开始的地址
移动以221.176开始的地址
pssh
但这要保证多台主机的密码相同,同时还要注意如果known_hosts没有信任远程主机,那么命令执行会失败,
#可以加上-O StrictHostKeyChecking=no参数解决,ssh能用的选项pssh也能用
pssh是一个可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的。使用是必须在各个服务器上配置好密钥认证访问。
pssh 包安装 5 个实用程序:
pssh 在多个主机上并行地运行命令。
pscp 把文件并行地复制到多个主机上。
prsync 通过 rsync 协议把文件高效地并行复制到多个主机上。
pslurp 把文件并行地从多个远程主机复制到中心主机上。
pnuke 并行地在多个远程主机上杀死进程。
pssh -h RemoteHosts.ip -P -I < ~/LocalScript.sh
https://linux.die.net/man/1/pssh
renice
renice -n -20 76182 调节已存在的进程优先级 -20到19 越低优先级越高
renice -n -20 cat /dev/zero > /dev/null &
rz
# yum -y install lrzsz 安装rpm包
# rz windows传到linux
# sz 文件名 linux传到windows
seq
seq -s "+" 10
echo {1..10} | tr "" "+"
%后面指定数字的位数 默认是%g,%3g那么数字位数不足部分是空格。
seq -f"172.28.39.2:%g" 52000 52119
shutdown
shutdown -h now、poweroff、init 0 关机
shutdown -r now、reboot、init 6 重启
shutdown -h +分钟数 "提示信息" 延迟关机或重启(Ctrl+c键取消,或其他终端执行shutdown -c):
shutdown -r +分钟数 "提示信息"
shutdown -h +15 'Host will be rebooted !!'
shutdown -r +15 'Host will be rebooted !!'
sort
awk '{print $1}' access.log| uniq -c|sort -rn -k1
# tcpdump -nr test.cap | awk '{print $3}'| sort | uniq -c (先sort排序,再uniq -c去除重复行,因为uniq只能对相邻行去重)
stat
# stat -c %s /root/anaconda-ks.cfg
tr
# cat ifcfg-mystyle | tr 'a-z' 'A-Z' 小写转换为大写
# tr 'a-z' 'A-Z' < hosts > a.txt host文件小写全部改为大写,导出到a.txt
trap
trap “exit” SIGINT
vim
设置每次写脚本文件.sh时默认加上#!/bin/bash
sed -i "29i autocmd BufNewFile *.sh 0r /usr/share/vim/vimfiles/template.sh " /etc/vimrc
cat > /usr/share/vim/vimfiles/template.sh <<aa
#!/bin/bash
#Date:
#Author: Testder
#Mail: 10000@testder.cn
#Version: 1.0
aa
基本操作
:1,10 co 30 1,10行复制到第30行
:8,$d 从第8行删除到末尾
: g/^$/d 去除空格
撤销最近一次操作(小写u)
撤销当前行所有修改(大写U)
恢复前一次撤销(Ctrl + r,即重做)
另存为(:w /路径/文件) 【Write】
读入其他文件(:r /路径/文件) 【Read】
替换当前行第一个old ( :s/old/new )
替换当前行所有old ( :s/old/new/g )
替换第4~9行所有old ( :4,9 s/old/new/g )
替换文件内所有old (:% s/old/new/g )
每次都询问是否替换 :% s/old/new/gc
.,$-1s/old/new/g .当前行 $最后一行
1,$s/old/new/g === %s/old/new/g 全文修改
%s#/rhce/#RHCE#g === %s/\/rhce\//RHCE/g
%s/old//g 全文删除old
** 使用 :set all 可查看所有可配置的参数
显示/不显示行号(:set nu、:set nonu)
启用/关闭语法高亮(:syntax on、:syntax off)
开启/关闭查询结果高亮显示(:set hlsearch、set nohlsearch)
** hlsearch 可缩写为 hls
启用/关闭自动缩进(:set ai、:set noai)
** autoindent 可缩写为 ai
~/.vimrc,保存用户的vim编辑器设置
~/.viminfo,记录用户的历史操作
.filename.swp,编辑过程中的缓存文件
在末行模式下使用“!”,可以执行命令行命令
:! hostname
在末行模式下使用“r!”,可以读入命令行命令执行结果到当前的文本
:r! hostname
Ctrl + v 取连续的多列,添加注释删除注释
针对选取文本的操作
选择首列-->输入大写“I”-->输入“#”-->按“Esc”退出(多行注释#)
wc
wc -L
xargs
# ls *.jpg | xargs -n1 -I cp {} /data/images
zsh
# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# yum -y install zsh git
# curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh 自动安装
( git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh 手动安装
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
chsh -s /bin/zsh )
# vim .zshrc
ZSH_THEME="af-magic"
>
xxxxxx > a.txt 2>&1 把错误的当成正确
xxxxxx > a.txt 1>&2 把正确的当成错误
xxxxxx &> a.txt 把正确和错误的都输出
xxxxxx >> a.txt 2>> b.txt 正确的输出到a.txt,错误的输出到b.txt