git常用命令
-
git pull --rebase origin master
git pull = git fetch + git merge FETCH_HEAD # git fetch 会产生一个节点FETCH_HEAD git pull --rebase = git fetch + git rebase FETCH_HEAD merge 和rebase的区别如下: 现在有两个分支t和master,当前位于master,分支结构如下: D---E test / A---B---C---F--- master 两种操作的结构如下: 如果merge,则会产生新节点: D--------E / \ A---B---C---F----G--- test, master 如果rabase,则显示如下: A---B---D---E---C‘---F‘--- test, master merge操作会生成一个新的节点,之前的提交分开显示。 而rebase操作不会生成新的节点,是将两个分支融合成一个线性的提交。
-
关联本地分支和远程分支
git branch --set-upstream-to=origin/t t1 # 本地分支t1和远程分之t关联 git push --set-upstream origin t1 # 在远程创建分支t1,并与本地t1关联
-
删除分支
git branch -d t # 删除本地分支t
-
查看分支
git branch # 查看本地分支 git branch -r # 查看远程分支
-
拉取远程分支 t
git pull origin t
-
切换分支
git checkout t #切换到分支t,并将远程分支t拉取到本地分支t
-
创建并切换分支
git checkout -b t # 创建并切换到分支t 相当于下面两条命令 git branch t git checkout t
-
创建并切换分支且将远程分支t1拉取到本地分支t2
git checkout -b t2 origin/t1
Linux常用命令
-
监控内存使用
sar -r 3 10 # 每3秒采样一次,采样10次
https://deepinout.com/linux-cmd/linux-performance-monitor-related-cmd/linux-cmd-sar.html -
进程kill了,释放显存
fuser -v /dev/nvidia*
-
设置gpu
export CUDA_VISIBLE_DEVICES="1"
-
杀死进程和所有子进程
pstree pid -p| awk -F"[()]" '{print $2}'| xargs kill -9 # awk -F表示分隔符,[()]表示多个分隔符(和);xargs传递参数
-
统计每行的出现次数
# 按照词频从高到低统计query cat querys|uniq -c | sort -nr
-
Local time zone must be set–see zic manual page 2018的解决办法
或者系统时间慢了8小时的解决办法export TZ='Asia/Shanghai'
-
用户名变成bash-xx了
切换到root下 然后cp -a /etc/skel/. /home/用户名/
-
压缩chao下的文件但是又不包括chao目录
tar zcvf chao.tar.gz -C chao .
-
free -g各个参数怎么看
第一行是物理内存,所以是157G,使用了108G,空闲48G,使用的108G里面其中用于缓存的70G(这部分如果程序需要是可以随时被释放的)。
第二行used列是108-70=37G,表示真正被程序用的内存;free是48+70=119G,是程序还可以用的内存(缓存的70G需要是情况下可以释放被程序使用) -
psutil的各种使用
https://blog.csdn.net/gymaisyl/article/details/101274862
-
打开/关闭coredump
ulimit -c unlimited #打开 ulimit -c 0 # 关闭 ulimit -c # 查询
-
对目录生成md5文件
生成: find ./ -type f -print0 | xargs -0 md5sum > ../my.md5 mv ../my.md5 . 校验: md5sum -c my.md5 echo $? # 1是错误,0是成功
-
进程killed的原因排查
排查方法:vi /var/log/messages 参考:https://blog.csdn.net/ktigerhero3/article/details/80004315
-
sz, rz传输文件
报错:zmodem transfer canceled by remote side 加上-e参数,忽视文件中的控制符
-
查看进程内存占用
cat /proc/2913/status
-
sh -n run.sh 会检查脚本是否存在语法错误(不会执行脚本)
-
杀死僵尸进程(defunct)
ps -ef | grep defunct | more得到如下 UID PID PPID ... --------------------------------------------------------------- kenno 8328 6757 0 Mar22 ? 00:00:00 [mono] <defunct> kenno 8522 6757 0 Mar22 ? 00:00:01 [mono] <defunct> kenno 13132 6757 0 Mar23 ? 00:00:00 [mono] <defunct> kenno 25822 25808 0 Mar27 ? 00:00:00 [ruby] <defunct> kenno 28383 28366 0 Mar27 ? 00:00:00 [ruby] <defunct> kenno 18803 18320 0 Apr02 ? 00:00:00 [ruby] <defunct> UID:用户ID PID:进程ID PPID:父进程ID 直接杀死8328可能无效,杀死6757即可
-
修改文件所属用户和组名
chown -R user1 path1 chgrp -R group1 path1
-
&&和||
cmd1 && cmd2 # 如果cmd1运行成功,则会运行cmd2,如果cmd1运行失败,cmd2不运行。使用场景可以是cmd1判断是否存在某目录,如果存在,使用cmd2进行相应的操作,如删除 cmd1 || cmd2 # 如果cmd1运行成功,则不会运行cmd2,如果cmd1运行失败,cmd2运行。使用场景可以是cmd1进行想要的操作,如果运行失败,则使用cmd2输出报错信息, 如echo "error $LINENO" 注意:对是否运行成功的判断是命令的返回值,即 $? == 0则为成功, $? == 1为失败。
-
LINENO # shell内置变量,可以使用echo $LINENO来打印当前脚本的行号
-
tail -F file # 动态的显示file文件的末尾数据
-
查看端口
netstat -nlp | grep 8080 # 查看占用8080端口的进程 netstat -nap | grep 9999 # 查看进程号为9999占用的端口
-
top
top -u zhangsan # 查看zhangsan的进程
top -p 1234 # 查看进程号为1234的进程
按c可以查看进程路径 -
declare -r basedir=
pwd
# 申明basedir为当前目录,且只读 -
jobs -l # 查看后台进程,(nohup)
-
cut
cut -f2 file | sort | uniq |wc -l # 查看某列去重后有多少数量
-
查看linux发行版
cat /etc/issue lsb_release -a
-
screen
screen -S yourname -> 新建一个叫yourname的session screen -ls -> 列出当前所有的session screen -r yourname -> 回到yourname这个session screen -d yourname -> 远程detach某个session
-
解决screen出现Cannot open your terminal ‘/dev/pts/0’问题
script /dev/null
-
解决在screen下vim退出不清屏的问题
创建~/.screenrc文件并写入以下内容即可# set coding defutf8 on defencoding utf8 encoding UTF-8 UTF-8 # 设置vim退出清屏 altscreen on
-
特殊变量
变量 | 含义 |
---|---|
$0 | 当前脚本的文件名 |
$n | 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。 |
$# | 传递给脚本或函数的参数个数。 |
$* | 传递给脚本或函数的所有参数。 |
$@ | 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。 |
$? | 上个命令的退出状态,或函数的返回值。 |
$$ | 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。 |
$! | Shell最后运行的后台Process的PID |
-
awk
awk -F '\t' '{print $0"\t"$1}' filename # 输出filename文件下每行原始内容以及每行用TAB打断后的第一个字段,并且使用'\t'将两部分合并起来。 awk -F"\t" '{if($2<0.5) print}' show | wc -l awk -F '\t' '{print $2"\t"$1}' log.txt > 1 # 将log.txt的两列交换位置
-
set命令
set -x :把下面的命令打印到屏幕 set -e :若指令返回值不等于0,则立即退出 set -u: 当执行时使用到未定义过的变量,则显示错误信息。 set -o pipefail
-
tmux分屏
tmux所有自带命令都默认需要先按Ctrl + b,然后再键入对应的命令 Ctrl+b " - split pane horizontally Ctrl+b % - 将当前窗格垂直划分 Ctrl+b 方向键 - 在各窗格间切换 Ctrl+b,并且不要松开Ctrl,方向键 - 调整窗格大小 Ctrl+b c - (c)reate 生成一个新的窗口 Ctrl+b n - (n)ext 移动到下一个窗口 Ctrl+b p - (p)revious 移动到前一个窗口. Ctrl+b 空格键 - 采用下一个内置布局 Ctrl+b q - 显示分隔窗口的编号 Ctrl+b o - 跳到下一个分隔窗口 Ctrl+b & - 确认后退出 tmux tmux的配置文件是~/.tmux.conf,这个文件可能不存在,你可以自己新建。 配置完以后,重启tmux起效,或者先按C+b,然后输入:,进入命令行模式,在命令行模式下输入: source-file ~/.tmux.conf 在配置文件中配置鼠标可以选中窗格 set-option -g mouse-select-pane on 那么可以用 C-b z 来最大化一个pane,想恢复的时候再次按 C-b z 就是了
-
tmux鼠标操作
set-option -g mouse-resize-pane on set-option -g mouse-select-pane on set-option -g mouse-select-window on set-option -g mode-mouse on 这几行的作用分别是: 开启用鼠标拖动调节pane的大小(拖动位置是pane之间的分隔线) 开启用鼠标点击pane来激活该pane 开启用鼠标点击来切换活动window(点击位置是状态栏的窗口名称) 开启window/pane里面的鼠标支持(也即可以用鼠标滚轮回滚显示窗口内容,此时还可以用鼠标选取文本)
-
查找某种类型的文件匹配的字符串
find -name '*.sh'|xargs grep -n "\"~/zhuguangya"
-
比较两个目录的不同
diff -r dir1 dir2
-
显示进程以及子进程
pstree -p pid
-
按照关键词搜索进程
ps aux | grep -irn '关键词'
-
[[和[
[是命令,等同于test; [[是关键词 [ 1 < 2 ]中<会被解释成重定向符号,可以使用-lt [[ 1 < 2 ]] 中就是正常的小于号 [[ 1< 2 && 2 < 3 ]] 为true,「或」是|| 如果使用[则要写成[ 1 -lt 2 -a 2 -lt 3],「或」是-o
-
权限
rwxrwxrwx 前三位表示文件所有者的权限,字母表示:u 中三位表示文件所有者所在组的权限,字母表示:g 后三位表示非文件所有者所在组的权限,字母表示:o rwx看做3个二进制数:111也就是7 因此chmod -R 777 ./test # 对test目录以及子目录递归赋予rwxrwxrwx权限 chmod o+w test.txt #表示对非文件所有者所在组的用户赋予写权限
-
转换文件编码
# 将文件file_src的编码从utf8改成gbk,并保存成file_dst iconv -f utf8 -t gbk file_src > file_dst
-
item2常用命令
⌘ + d: 垂直分屏, ⌘ + shift + d: 水平分屏。 ⌘ + w: 删除当前分屏, command + t:新建tab ⌘ + ]和⌘ + [在最近使用的分屏直接切换. ⌘ + opt + 方向键切换到指定位置的分屏。 ⌘ + 数字: 切换标签页。 ⌘ + 方向键 按方向切换标签页。 shift + ⌘ + s: 保存当前窗口快照。 ⌘ + opt + b: 快照回放。 command+enter进入与返回全屏模式 https://blog.csdn.net/ws1352864983/article/details/51512904
-
wget
wget -c -r -np -nH ftp:://my/data # 下载目录到本地
Vim常用命令
-
vimdiff跳到下一个不同的地方
先按]再按c;上一个不同的地方是先按[再按c
-
打开中文乱码,但是cat出来可以正常显示
:e ++enc=utf-8
-
tab和空格转换
set expandtab # tab->空格 set noexpandtab # 空格->tab https://www.cnblogs.com/buptlss/p/3958200.html
-
打开多个标签页
:tabe file 打开文件名 :tabn 移动到下一个标签页 :tabp 移动到上一个标签页 :tabnew 新建标签页 :tabs 显示已打开标签页的列表 :tabc 关闭当前标签页 :tabfirst 移动到第一个标签页 :tablast 移动到最后一个标签页
-
改变多屏的大小
vertical res 20 # 当前屏幕设置成20个字符的宽度 res 20 # 当前屏幕设置成20个字符的高度
-
vim使用鼠标
set mouse=a
鼠标模式下复制:- 在文本的第一个字符上按鼠标左键,移动鼠标到文本的最后一个字母,然后释放左
键。这会启动可视模式并高亮选择区域。 - 按 “y” 抽出可视文本到无名寄存器里。
- 在要粘贴的位置按p
- 在文本的第一个字符上按鼠标左键,移动鼠标到文本的最后一个字母,然后释放左
-
vim窗口切换
下面的三条命令sp,Taglist,NERTree都适用 ctrl+w # 前缀 +w #在不同的水平窗口左右切换 +h # 相邻的左面的窗口 +l # 相邻的右面的窗口 +j # 相邻的下面的窗口 +k # 相邻的上面的窗口
-
在当前打开文件下再打开新的文件
:sp #水平分布,打开新文件 :vsp #竖直分布,打开新文件
-
NERDTree
F7 或者 NERDTree# 打开并跳转到目录树
-
Taglist
:TlistOpen #打开member显示 :TlistClose # 关闭member显示 :F9 或者TlistToggle # 在关闭打开之间切换
-
删除
- 删除单行:命令模式下,连续按两次d即可
- 删除多行
- 首先在命令模式下,输入“:set nu”显示行号; -
- 通过行号确定你要删除的行;
- 命令输入“:32,65d”,回车键,32-65行就被删除了
- 如果无意中删除错了,可以使用‘u’键恢复(命令模式下)
-
跳转到末尾行
:$
-
跳转到首行
:1
-
跳转到行首行尾
shift + 4 : 行首 shift + 6 : 行尾
-
搜索
在命令模式下,输入/你要查找的字符,按下回车,可以看到vim把光标移动到该字符处 再按n(小写)查看下一个匹配 按N(大写)查看上一个匹配
-
粘贴缩进问题
命令模式下输入:set paste即可取消自动缩进,然后在插入模式下粘贴就不用自动缩进了 取消paste模式:set nopaste 参考:https://www.cnblogs.com/ayanmw/p/3645183.html
-
显示所有字符
:set invlist即可以将不可见的字符显示出来,例如,会以^I表示一个tab符,$表示一个回车符等 :set nolist可以回到正常的模式。
-
复制粘贴
1)单行复制 在命令模式下,将光标移动到将要复制的行处,按“yy”进行复制; 2)多行复制 在命令模式下,将光标移动到将要复制的首行处,按“nyy”复制n行;其中n为1、2、3…… 在命令模式下,将光标移动到将要粘贴的行处,按“p”进行粘贴
-
重新载入
1. 重新载入当前文件: :e :e! #放弃当前修改,强制重新载入 2. 重新载入所有打开的文件: :bufdo e 或者 :bufdo :e! :bufdo命令表示把后面的命令应用到所有buffer中的文件。
-
-
杀掉crontab启动的命令
ps aux|grep 'run_test.sh' 找到进程号 然后kill -9 进程号
-
vim的替换命令
:[range]s/pattern/string/[c,e,g,i]
参数 含义 range 指的是範圍,1,7 指從第一行至第七行,1,$ 指從第一行至最後一行,也就是整篇文章,也可以 % 代表。還記得嗎? % 是目前編輯的文章,# 是前一次編輯的文章。 pattern 就是要被替換掉的字串,可以用 regexp 來表示。 string 將 pattern 由 string 所取代。 c confirm,每次替換前會詢問。 e 不顯示 error。 g globe,不詢問,整行替換。 i ignore 不分大小寫。 -
判断文件操作
用法示例: [ -s file ]标识符 含义 -s 表示文件是否存在且不为空 -e 表示文件或者目录是否存在 -f 表示是否是一个完整的文件,而不是目录或者设备文件 -d 文件是个目录 -
左移右移一个tab
:m,n> # m到n行右移一个tab :m,n< # 左
-
文件编码
set fileencoding=utf8 # 修改编码为utf8
set fileencoding # 查看编码
Mac常用命令
-
mac book 音量与亮度调节按钮不见了
打开 Terminal,运行”killall ControlStrip“,就可以了。
-
向后删除
fn + del
-
程序坞总是跑到副屏去
将鼠标放到想要显示的那个屏幕的下方几秒钟 桌面cmd+option+d快速显示和隐藏
-
mac在不同任务之间切换
cmd+tab
-
显示隐藏目录
shift+cmmand+.
-
聚焦搜索快捷键
command + space