【Shell】常用命令

增加删除交换分区

一、Linux

基本


su #切换为超级用户
su - citaa # 切换回citaa用户
mkdir 1.txt #创建文件
rm 1.txt #删除
env |grep cuda #env是显示环境变量 |grep cuda是只显示包含cuda的

who #显示当前登陆的用户
w # 当前服务器负载 谁连接了 
# tty(终端设备的统称) pty(虚拟终端)  pts/ptmx(pts/ptmx结合使用,进而实现pty)

man who # 查看who的帮助
echo test # 打印test
tar
export 

sudo vi /etc/apt/sources.list #设置ubuntu软件源

tar -czvf test.tar.gz a.c	# 压缩	-v显示指令执行过程 -z gzip指令处理 -f备份文件名	-c创建新的文件 -t列出 -x解压
tar -tzvf test.tar.gz # 列出压缩文件内容
tar -xzvf test.tar.gz # 解压

sudo  apt-get  install  -f	# 安装软件时若出错 少依赖 可以执行该命令

vim /etc/motd 修改欢迎语
vi编辑器下 输入^[ 即颜色转义符 insert模式下ctrl+v后再按Esc

man 看手册可按!进入命令测试


/var/log/auth.log ubuntu下登录有关日志
/var/log/secure centos下登录有关日志

cat /etc/debian_version 
10.10
Debian 10 的代号是 buster

命令行常用


ctrl+r 向上搜索命令

ctrl+p/n 上/下一条命令
ctrl+b/f 左右移动光标
ctrl+a/e 行头/行尾

Ctrl+左右键 单词之间跳转
Ctrl+u删除当前光标前面的文字
ctrl+k-删除当前光标后面的文字
Ctrl+w和Alt+d 对于当前的单词进行删除操作,w删除光标前面的单词的字符,d则删除后面的字符
Alt+Backsapce-删除当前光标后面的单词,
如果删除错误,使用Ctrl+y进行恢复
Ctrl+L进行清屏操作

Vim相关

光标
h,j,k,l 上,下,左,右
ctrl-e 移动页面
ctrl-f 上翻一页
ctrl-b 下翻一页
ctrl-u 上翻半页
ctrl-d 下翻半页
w/e跳下一个 换大写长跳 b跳上一个
0 跳至行首,不管有无缩进,就是跳到第0个字符
^ 行首的第一个字符
$ 行尾
gg 跳至文首
G 调至文尾
5gg/5G 调至第5行
gd 跳至当前光标所在的变量的声明处
fx 在当前行中找x字符,找到了就跳转至
; 重复上一个f命令,而不用重复的输入fx
* 查找光标所在处的单词,向下查找
# 查找光标所在处的单词,向上查找

dd 删除光标所在行
dw 删除一个字(word)
d/D删除到行末x删除当前字符X删除前一个字符yy复制一行yw复制一个字y/Y 复制到行末
p 粘贴粘贴板的内容到当前行的下面
v 选择
yy 复制
P 粘贴粘贴板的内容到当前行的上面

i 插入模式
I 置光标于行首
a 光标之后插
A 置光标于行末
o 后面新加一行 并进入插入模式
O 前面加一行,并进入插入模式
Esc 退出插入模式

/ 后搜
? 前搜


:%s/2-12/2-13/g	全局(g)将2-12替换为2-13
:%s/2-12/2-13/gc 全局替换但需要依次确定

.!ps aux   将把命令输出的内容追加到编辑的文件中
!ps 不加点为直接执行命令



用户权限相关

'''用户 相关'''
cat /etc/passwd	#查看有哪些用户
cat /etc/group #查看有哪些用户组 及每个组含的用户

adduser --ingroup citaa intleo1	新建用户intleo1 加入citaa组
userdel ci 	删除ci用户

id citaa	# 查看citaa用户的id及组信息等
#输出uid=1000(citaa) gid=1000(citaa) 组=1000(citaa),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare),129(lxd),998(docker)
id intleo 
#输出uid=1001(intleo) gid=1001(intleo) 组=1001(intleo)
groups citaa	# 输出用户名:所属组列表
#输出 citaa : citaa adm cdrom sudo dip plugdev lpadmin sambashare lxd docker
groups intleo 
#输出 intleo : intleo
#usermod [-g] [GroupName] [UserName]
sudo usermod -g citaa intleo #将intleo用户改至citaa组
sudo usermod -a -G citaa intleo #将intleo用户添加至citaa组 附加组 -a为append操作

sudo pkill -u intleo1		#杀死intleo1的进程
sudo usermod -l intleo21 intleo1 # 改名 1改为21
sudo mv /home/intleo1 /home/intleo21	# 更改目录名
sudo usermod -d /home/intleo21 -m intleo21 # 更intleo21的用户home目录
vi  /etc/ssh/sshd_config	#将新建的用户加入允许访问
systemctl restart sshd		# 重启sshd服务
vi /etc/sudoers		 #更改某用户有sudo权 推荐下面
sudo usermod -G sudo intleo1	#将intleo用户添加到sudo组即可使用sudo

'''权限有关'''
#权限分为三种:读(r=4),写(w=2),执行(x=1)。综合起来还有可读可执行(rx=5=4+1)、可读可写(rw=6=4+2)、可读可写可执行(rwx=7=4+2+1)。
chmod 755 test.txt
#755设置用户的权限为:
#1.文件所有者可读可写可执行
#2.与文件所有者同属一个用户组的其他用户可读可执行
#3.其它用户组可读可执行
chmod 755 -R test
# -R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
chmod u+w test.txt 	#为test.txt文件所有者(u)添加写(w)权限 (u为文件所有者,g为用户组,o为其它用户)
chown -R intleo:citaa test	# 将test文件夹的所有者变为intleo,所属用户组为citaa

umask 查看掩码
umask 0002 # 设置掩码 777-002=775	即新建的文件为775权限
umask 0022 # 777-022=755	即新建的文件为755权限

lastb |less		//查看登陆出错的
lastlog |less	//查看登录情况
tac /var/log/secure |less	//查看最近登录情况
grep "Failed password for invalid user" /var/log/secure | awk '{print $13}' | sort | uniq -c | sort -nr | more	// 查看登录失败ip

登录相关

ssh intleo21@192.168.0.201
ssh -X intleo21@192.168.0.201 登录并允许x11转发
ssh -vv intleo21@192.168.0.201带调试
ssh -o ProxyCommand='nc --proxy-type socks5 --proxy XXX.site:7890 %h %p' intleo21@192.168.0.202 代理连接,XXX.site:7890是代理服务器(可通过frp实现),通过代理,在家中就可以访问实验室台式机

免登陆设置
ssh-keygen -t rsa -C "XX@mail.com" 生成秘钥 引号内的只是备注,可写任何东西
将会在~/.ssh下生成
id_rsa	私钥
id_rsa.pub	公钥
将公钥文件中的内容追加到远程主机用户的~/.ssh/authorized_keys即可
或者本机执行 ssh-copy-id XX@192.168.0.XX 	  @前是远程机用户名 后为远程机ip

vi ~/.ssh/config 可添加ssh别名, ssh i21 就相当于 ssh intleo21@202.197.74.88 -p 20022
# 例如设置
Host i21					# 别名
    HostName 202.197.74.88	# ip地址
    Port 20022				# 端口
    User intleo21			# 用户名
    
# 还可以设置跳板机,即ssh i31,相当于连接到与i21同局域网下的192.168.1.203主机
Host i31
        HostName 192.168.1.203	# 同局域网下的目标主机的ip
        Port 22			# 目标主机端口 
        User intleo31	# 目标主机用户名
        proxyJump i21	# 跳板机



关于known_hosts
ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免DNS Hijack

原因:一台主机上有多个Linux系统,会经常切换,那么这些系统使用同一ip,登录过一次后就会把ssh信息记录在本地的~/.ssh/known_hsots文件中,切换该系统后再用ssh访问这台主机就会出现冲突警告,需要手动删除修改known_hsots里面的内容。 

# 关于配置文件
/etc/profile  任何用户登录均读取
/ect/bashrc Ubuntu没有此文件,与之对应的是/ect/bash.bashrc,只要bash启动就执行
~/.profile bash以login方式登录才执行(即ssh登录开启终端)一般来说会在.profile中写语句执行.bashrc文件
~/.bashrc  当bash是以non-login形式执行时才执行(即在桌面打开终端时是执行)

文件、查找查询查看相关

复制到远程
scp -r /home/space/music/ root@www.runoob.com:/home/root/others/
远程复制到本地
scp -r www.runoob.com:/home/root/others/ /home/space/music/

ln -s A B # 将文件A软链接到B,A是已有的B路径是本身不存在的

'''vim编辑器'''
dd	#剪切当前行
p #粘贴
yy #复制
v 选择

'''查看文件'''
cat
less
less -N 显示行号
less +100 -N 从100行开始显示,并显示行号
g 最前面
G 文件末尾
100g 跳转到100行
b 向上翻一页
d 向后翻半页
/ 向下搜索
? 向上搜索
n 重复刚才的搜索
N 反向重复
ps aux | less 通过less查看
进入less后 F可实现tail -f效果


awk '{print $7}'  /var/log/frptables/frptables.info.2022-03-13 | less  打印第7列
awk '{print $7}'  /var/log/frptables/frptables.info.2022-03-13 | uniq | less 加uniq
awk '{print $7}'  /var/log/frptables/frptables.info.2022-03-13 | uniq | sort | less  再加sort排序
cat /var/log/frptables/frptables.info.2022-03-13  | sort -k 7| less 按第七列排序
cat file | cut -d ':' -f 1,3 按冒号分隔,打印第1 3列
tee双向重定向 
- 前面的输出代替本次的输入


'''统计'''
wc -l 统计行数
man wc
ls -la |grep ^- | wc -l 统计该目录中的文件项数目 改成^d就是目录项数目了

'''查看大小'''
du -sh 当前文件夹所占空间
du -sh * 显示当前文件夹下所有文件夹的占用空间列表

'''查询'''
which cat # 查询命令位置
whereis  # 查询时只会查询某些目录

locate passwd # 查询含passwd字段的文件的位置
locate 是查询数据库内记录了的文件,但一般可能数据库一天才更新一次,可使用upatedb 速度快 但很多找不到 

find /media/D_4TB/YL_4TB  -name '*Fewshot*'	查询名称含Fewshot字段的文件或文件夹
find /media/D_4TB/YL_4TB -mtime 0 -user intleo21 -group intleo21	#查询 今天内改的文件 并且文件所属用户为intleo21 所属组为intleo21 
+4 为四天以前
-4 为四天内
4 为前面的第四天




进程、服务相关

'''进程状态相关'''
ps -ef 	# 显示进程信息 包含命令行
ps -aux   #	最常用的方法 详细,包括进程占用CPU、内存 
ps -aux|grep vnc#  查看与vnc有关的进程
ps -aux |grep -E "USER|vnc" #查看含USER或vnc的行 USER是首行 这样是显示标题而已
ps -ef |grep -E "UID|vnc"

sudo pkill -u intleo1		#杀死intleo1的进程
iotop 显示io使用情况排名
sar -n DEV 1 999 查看网络接口io情况,表示取样间隔为1秒,取样999次

top -o %MEM 按内存使用量排序
top -Hp pid 显示pid进程对应的线程资源使用排列
top		进入后可按f选择其它列显示 并有提示每列意思
top -d 1 -b >top.log	1秒刷新一次 并写入top.log
ls /proc/pid/fd 查看打开的文件
lsof -p pid
cat /proc/pid/status	查看进程状态
dmesg(英文全称:display message)命令用于显示开机信息
journalctl -xb | grep kill 显示系统日志

/var/log/messages 系统级日志,如果没有则查看/etc/rsyslog.d/50-default.conf
解注释 *.info到 /var/log/messages
再systemctl  restart  rsyslog

fuser -v aaa.txt  查看使用了某文件的进程,这里的输出是标准错误



systemctl start apache.service	开始某服务
systemctl stop apache.service	停止某服务
systemctl restart apache.service  重启某服务
systemctl enable frp.service	开启开机自启动 实际上是建立了软连接
systemctl disable  frp.service
systemctl cat natClient.service
systemctl edit natClient.service


sysystemctl status bluetooth.service 查看某服务状态
systemctl list-units	列出所有Unit
systemctl list-units --type=service 列出所有service类型的



systemd -cgtop 按CPU、内存、输入和输出列出控制组

sudo journalctl _PID=1 查看某进程日志
sudo journalctl -u nginx.service	查看某服务的日志

ctrl+z 进程放到后台
jobs 显示后台进程
bg : 将作业放到后台运行,使前台可以执行其他任务
fg : 将后台作业(在后台运行的或者在后台挂起的作业)放到前台终端运行
kill %1 结束号为1的后台进程

挂载、硬盘相关


'''挂载磁盘'''
sudo fdisk -l	查看磁盘
sudo mount  /dev/sdb /media	# 将磁盘/dev/sdb挂载至/media
umount /dev/sdb
df -kh #查看挂载位置等情况
lsblk #查看挂载位置等情况 推荐
设置默认挂载位置:https://blog.csdn.net/qq_19734597/article/details/107790397

工具:gparted
sudo apt-get install gparted 然后在软件中找到其,图形化查看管理磁盘分区等

实验室服务器挂载
sudo mount  /dev/sdb /media	# 服务器1
mount /dev/sdb2 /media/D_4TB	#服务器2
mount /dev/sdb4 /media/E_4TB
mount /dev/sdb1 /media/D_8TB	#服务器3

mount # 可查看挂载情况和文件系统类型 例如返回如下
/dev/sdb2 on /media/D_4TB type ext4 (rw,relatime,stripe=64,data=ordered)	# ext4是文件类型

临时挂载 mount /dev/sdb2 /media/D_4TB
若设置开机自动挂载,如下
vi /etc/fstab
添加一行,中间空为tab键
/dev/sdb2	/media/D_4TB	ext4	defaults 0	0

gpu相关

nvidia-smi
watch -n 1 nvidia-smi 隔一秒刷新一次
sudo fuser -v /dev/nvidia*	 查看某些在nvidia-smi中看不到的占用gpu的进程
sudo fuser -v /dev/nvidia0 2>&1| grep python | grep intleo21 | awk '{print $(NF-2)}' | xargs kill
fuser -v /dev/nvidia3 2>&1| grep python | grep intleo21 | awk '{print $2}'| awk '{line[NR]=$0} END {for(i=2 ;i<=NR;i++) print line[i]}'| xargs kill 删除所有intleo21用户在3卡上跑的进程 但略过了一个,可以依次删除管道打印出来
ps aux |grep [进程号]	确定是不是
kill [进程号]
kill -9 [进程号]

包管理、安装

'''Centos、RedHat类'''
rpm 原始包管理
yum 升级版管理器
yum list 列出已安装rpm包


Debian、Ubuntu类
dpkg 原始
apt 升级版管理


dpkg -l 列出所有安装的包
aptitude show softearename  或 dpkg -l softwarename 查看某软件
less /etc/apt/sources.list 查看apt源
ls -a  /etc/apt/sources.list.d 另外该文件中还有各个对应软件的源,apt安装软件时是检索


sudo  apt-get update 更新源索引
sudo  apt-get upgrade 升级所有软件


环境变量相关

'''替换环境变量'''
aaa=/public/software/cuda10.0/lib64:
bbb=/public/software/anaconda3/bin:/public/software/anaconda3/condabin:/public/software/cuda10.0/bin:/usr/lib64/qt-3.3/bin:/public/software/Modules/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/ibutils/bin:/public/home/hpc204612128/.local/bin:/public/home/hpc204612128/bin

bbb=${bbb//cuda10.0/cuda10.2}	# 将cuda10.0替换为cuda10.2 前面双斜线是替换所有 
aaa=${aaa/cuda10.0/cuda10.2}	# 单斜线仅替换一个
echo $aaa	# 打印
echo $bbb

脚本dist_train.sh为
#!/usr/bin/env bash
CONFIG=$1
GPUS=$2
PORT=${PORT:-29500}
echo $CONFIG
echo $GPUS
echo ${@:3}
echo $3
echo $PORT
运行PORT=6000 ./dist_train.sh 4 5 6 7后显示,因此${@:3}为第三个和之后的,${PORT:-29500}为未指定PORT时默认为29500
4
5
6 7
6
6000

conda pip相关

网络、防火墙相关

wget 下载
curl 默认使用get
curl -X POST -d {"user":"foo","value":"1"}	使用post方式上传,并且携带消息
ssh端口转发
-f -N 后台无交互运行 ,其中-N为不开启终端,-f为后台运行,结合使用
本地转发
ssh -L [端口]:[目标IP]:[目标端口] [跳板机用户名]@[跳板机IP]
ssh -L 13306:10.0.20.7:3306 root@101.101.101.101
# 访问 127.0.0.1:13306 ->  10.0.20.7:3306(10.0.20.7是远端主机101.101.101.101局域网内的地址)
远端转发
ssh -R [端口]:[目标IP]:[目标端口] [跳板机用户名]@[跳板机IP]
ssh -R 8080:192.168.1.38:80 root@101.101.101.101
# 访问101.101.101.101:8080  -> 192.168.1.38:80(192.168.1.38是本地主机局域网内的地址)
# 但注意默认情况下其实101.101.101.101:8080无法访问,因为ssh端口转发默认绑定的是127.0.0.1,不是0.0.0.0
# 因此只能远端主机本机访问,如果想其它机子访问,还需要配置 /etc/ssh/sshd_config中设置GatewayPorts为yes
动态转发 代理
ssh -D [本地socke代理端口] [跳板机用户名]@[跳板机IP]
ssh -D 2000 root@101.101.101.101
# 在浏览器或系统设置中将socke代理改成本地  127.0.0.1:2000 
# 然后本地所有的上网出口全部通过101.101.101.101进行转发。百度ip会发现本机ip是101.101.101.101
探端口
telnet <hostname> <port>
nc命令
nc -l 7877 监听7877端口,有连接时将打印结果
nc -zv <hostname> <port>  -z 选项是用于扫描监听的守护进程,-v 是用于显示详细信息。如果端口是开放的,你会得到一个成功的响应。

nslookup www.baidu.com 查看其IP
cat /etc/resolv.conf	查看dns配置
cat /etc/hosts 
netstat -anp | grep 10001

ifconfig -a  # 查询本机IP信息chrome代理并启动

all_proxy="127.0.0.1:1080" google-chrome
设置alias,写在.bashrc中 输入myproxy相当于后面的
alias myproxy="all_proxy="192.168.1.38:7890""
alias myhttps="https_proxy="192.168.1.38:7890""
alias myhttp="http_proxy="192.168.1.38:7890""

ls /proc/sys/net/ipv4可以看到各种网络配置
ss 命令
sar -n DEV 1 查看

ss 列出所有连接,用于查看socket
ss -4 查看所有v4连接
iftop 流量查看
vnstat
iptraf
sudo apt install nethogs
sudo nethogs	查看网速占用,会显示进程
sudo nethogs eno2 指定网卡网速
tcpdump 抓包

traceroute www.baidu.com 查看每一跳

iptables -F  清空所有规则
警告:这只适合在没有配置防火墙的环境中,如果已经配置过默认规则为deny的环境,此步骤将使系统的所有网络访问中断)
如果想清空的话,先执行
/sbin/iptables -P INPUT ACCEPT
然后执行
/sbin/iptables -F


iptables -nL 查看表
-A 最后面追加
-I 插入 
iptables -I INPUT -s 10.8.11.16 -j DROP	 封锁10.8.11.16连接这台服务器的任意端口,默认插首行
iptables -I 3 INPUT -s 10.8.11.16 -j DROP 插到第三行,后面的后移

iptables -A INPUT -s 10.8.11.16 -d 0.0.0.0/0  -j DROP 与 
iptables -A INPUT -s 10.8.11.16 -j DROP 等价 封锁10.8.11.16连接这台服务器的任意端口
iptables -A INPUT -s 10.8.11.16 -p tcp --dport 22 -j DROP 封锁10.8.11.16通过tcp连接这台服务器的22端口

iptables -nvL  --line-numbe
# 显示行号
iptables -L INPUT --line-numbers	
-- 删除一条规则
iptables -D INPUT 11

VNC、分辨率相关

1. vnc4server下 
vncserver -geometry 1920x1280  -geometry 2560x1440 
3. tigervncserver下localhost不选no的话将只能本地连接
vncserver -geometry 1920x1280 -localhost no -depth 16

vnc4server在启动vnc时可以选择多个分辨率进行候选,但tigervncserver是不支持的,需要新建分辨率且添加到xrandr

xrandr -q 查询支持的分辨率 
xrandr -s 选择 可按序号选 

新建分辨率(以vnc下为例,按理说接显示屏同样适用)

1. 获得显示器名称
xrandr -q // 查询
--得出如下--,其中VNC-0就是
Screen 0: minimum 32 x 32, current 1920 x 1280, maximum 32768 x 32768
VNC-0 connected 1920x1280+0+0 0mm x 0mm
   2560x1440     60.00 +
2. 创建新的分辨率
cvt 1920 1280 
--得出如下--
# 1920x1280 59.96 Hz (CVT) hsync: 79.57 kHz; pclk: 206.25 MHz
Modeline "1920x1280_60.00"  206.25  1920 2056 2256 2592  1280 1283 1293 1327 -hsync +vsync
3. xrandr新建mode
xrandr -newmode “这里复制刚才得到的一串Modeline后面的内容”
例如为:
xrandr -newmode "1920x1280_60.00"  206.25  1920 2056 2256 2592  1280 1283 1293 1327 -hsync +vsync
4. 添加mode
xrandr --addmode VNC-0 1920x1280_60.00
5. 选择使用
xrandr -s 1920x1280_60.00
或者 xrandr -q 看下是第几个模式,从0开始算,例如第3个模式,xrandr -s 3 

java


jps -l 显示所有java运行的程序
jstack -l pid  显示pid对应的java程序对应的线程栈资源


javac HeapOOM.java 编译HeapOOM.java文件生成HeapOOM.class字节码文件
java HeapOOM 运行HeapOOM.class字节码文件
java -Xms1m -Xmx2m HeapOOM 运行时设置堆最小值为1m 最大值为2m 默认值时机器内存的1/4
java -XX:+HeapDumpOnOutOfMemoryError HeapOOM 保存内存快照
java -Xss1024k  JavaVMStackSOF 设置每个线程的栈大小为1024k
java  -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:./gclogs ReferenceCountingGC	运行ReferenceCountingGC.class并打印gc日志


GitHub

文档 https://docs.github.com/en
github仓库界面 按句号 将会打开一个vscode界面,显示代码,很方便
GitHub仓库前面加gitpod.io/#/  将会使用vscode打开,并能够运行

git

可参考工作区简介分支管理


初始配置
git config --global user.name "用户名" //该用户名 标识出本机即可,不一定要与github账号一致
git config --global user.email "邮箱地址" //github 邮箱
将已生成的公钥~/.ssh/id_rsa.pub添加到github账号中,若未生成执行 ssh-keygen -t rsa -C "备注" 生成

一个仓库的新建过程,先在GitHub上建立项目,再执行如下
git init
git add .
git commit -m "first "
git branch -M main
git remote add origin git@github.com:LiangYang666/XXXX.git
git push -u origin main 

git remote set-url origin git@github.com:LiangYang666/XXXX.git

git push main  推送到main分支 
git remote show origin 	# 显示远程仓库
git remote -v 	显示远程仓库信息
git config --global http.proxy 127.0.0.1:7890 配置代理
git config --list

git status # 查看当前状态 
git push origin main 
git push origin master
git push origin +master	# 强行更新

fetch与pull相同
git fetch origin	更新本地的origin/main与远程相同
git fetch my liang	更新本地与远程my liang相同
my是远程名,可从git remote -vgit diff
git show HEAD^ 上一个节点的变化

git add -p 弹出交互界面选择需要的行到暂存区
git reset head 清空暂存区,但不影响本地文件,通常用于撤销刚才错误地添加到暂存区


git config --global core.autocrlf input		Linux下需配置

git remote set-url origin git@github.com:LiangYang666/XXX.git	#修改

git rm --cached <文件>...	#取消某文件的跟踪

可以设置 .gitignore文件实现对某些文件的忽略,即不跟踪或git add该文件无效

git ls-files -s path.py #返回暂存区文件信息为
100644 937382e995268d218c5f4cf2f2181111d6cf508f 0       path.py
git cat-file -p 937382e #查看暂存区文件内容

git checkout path.py 将暂存区文件恢复至工作区(慎用,会覆盖掉已有的path.py,一般在误删文件时使用)
git config --global alias.dog "log --all --decorate --oneline --graph"	添加 dog 映射配置 使用git dog查看提交情况图


socks代理:
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'

也可以直接修改~/.gitconfig文件。
vi ~/.gitconfig
新建或修改这两项配置
[http]
proxy = socks5://127.0.0.1:1080
[https]
proxy = socks5://127.0.0.1:1080

要取消代理:
git config --global --unset http.proxy
git config --global --unset https.proxy
这里要说明一下,带参数是临时的,修改配置文件是永久变更,修改后最好重启所有 git bash 保证设置生效。
查看配置信息:
git config -l --global

无论http.proxy还是https.proxy,在git clone时都仅对http链接有效,如果是ssh的,需要设置如下到~/.ssh/config,其中的端口需要是socks代理端口,http代理不行

Host github.com
        ProxyCommand nc -x 127.0.0.1:7891  %h %p


学习到的:
git branch -f main C3	将分支main强制改到C3

git rebase -i HEAD~2	挑选当前分支的最后两个提交(可以调换顺序) 整合到当前分支的前面第二个提交上
git rebase -i bugFix 挑选当前分支最近的一些提交 整合到bugFix上 当前分支指向新整合的提交

git cherrt-pick C2 C3	将C2 C3的提交整合到当前分支

git checkout C1 将HEAD向移动到C1
git tag v1 c0  给c0提交打上v1的标签
git describe main 描述main节点 获取它是从哪个tag经过几个节点过来的?

git checkout HEAD^  将HEAD移动到一个父节点 无2
git checkout HEAD^2 移动到另外一个父节点 
git checkout HEAD~2 移动HEAD到前面的第二个
如果是连续操作 还可以git checkout HEAD^^2~2


修改一个文件到提交pr 可能的过程(不一定全)

git checkout origin/main	切换到远程原始分支
git fetch origin	更新本地的origin/main与远程相同
git checkout main	切换为本地main分支
git merge origin/main 合并分支
git diff HEAD --cached mmfewshot/detection/datasets/base.py


修改一个文件到提交pr 可能的过程(不一定全)

git checkout origin/main	切换到远程原始分支
git fetch origin	更新本地的origin/main与远程相同
git checkout main	切换为本地main分支
git merge origin/main 合并分支
git push my main	将合并后的main分支推到自己(my)的远程
git branch data-info-table-print-bug	创建一个分支,用于修改bug
git checkout data-info-table-print-bug 	切换修改bug分支
git reset HEAD 删除所有暂存区内容(工作区无影响)
git add mmfewshot/detection/datasets/base.py	添加更改的文件到暂存区
git commit -m "Fix tabular printing of dataset information"
git push my data-info-table-print-bug
进入github网页端,打开自己fork下来的项目,点击Compare&pull request创建pr







修改分支位置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

windows

Disable-BitLocker -MountPoint "C:"	取消c盘的bitlocker
manage-bde -status C:		查看c盘的锁情况

powershell
# 当前 shell 的代理
$env:HTTP_PROXY="http://127.0.0.1:7890"
$env:HTTP_PROXY="http://127.0.0.1:7890"
cmd
rem 当前 shell 的代理
set http_proxy=http://127.0.0.1:1080

查看进程名为qq的路径位置
wmic process where name="qq.exe" get processid,executablepath,name
使用进程号查找进程路径信息
wmic process where processid="39864" get processid,executablepath,name

mac

新建标签:command + t
关闭标签:command + w
切换标签:command + 数字 或者 command + 左右方向键

切换全屏:command + enter
垂直分屏:command + d
水平分屏:command + shift + d

切换屏幕:command + option + 方向键 


查看历史命令:方向键上键;
清除当前行:ctrl + u 

查找:command + f

到行首:ctrl + a
到行尾:ctrl + e
前进后退:ctrl + f/b (相当于左右方向键)

清屏1:command + r
清屏2:ctrl + l
选择即复制   (选择文字就相当于复制了选择的文字)
鼠标中键粘贴(粘贴直接按鼠标中间的滚轮)


  • 3
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值