常用命令汇总

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 #表示对非文件所有者所在组的用户赋予写权限
    
  • jq
    将字符串转换为json
    参考这里这里

  • 转换文件编码

      # 将文件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即可
    • 删除多行
    1. 首先在命令模式下,输入“:set nu”显示行号; -
    2. 通过行号确定你要删除的行;
    3. 命令输入“: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 所取代。
    cconfirm,每次替換前會詢問。
    e不顯示 error。
    gglobe,不詢問,整行替換。
    iignore 不分大小寫。
  • 判断文件操作
    用法示例: [ -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
    
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值