CUI--command user interface
2015-11-13
Windows/Linux(Ubuntu, Cent OS) 常用命令
发现一个好网站 (Linux工具快速教程)[http://linuxtools-rst.readthedocs.io/zh_CN/latest/index.html]
-
sudo apt-get update
更新源sudo apt-get upgrade
更新软件sudo apt-get dist-upgrade
更新系统 … 装好linux后第一件事 -
sudo apt-get remove --purge <progrname>
彻底删除某软件 -
sudo apt-get autoremove
自动清理sudo apt-get autoclean
和sudo apt-get clean
-
sudo apt-get install software
安装软件 -
sudo apt-cache search software
搜寻软件类似于yum search software
,sudo apt-cache show software
查看软件的相关信息 -
cd
,ls
/dir
,mkdir
,cp
/copy
,rm
/remove
这些就不用介绍了吧。ls -al
显示全部文件的详细信息,在Ubuntu下同ll
,在linux下也可以用dir
。 -
ls -lat
按最后修改时间逆序排列,ls -latr
按最后修改时间顺序排列。ls -laSh
按文件大小逆序排列,la -laShr
按文件大小顺序排列,ls -lah
查看文件大小,或者是du -sh *
。 -
type/cat
查看文本文件内容。 -
tree
生成目录树。如果出现乱码,或者中文无法展示,试下tree -N
或者tree --charset UTF-8
-
arp -a
(Windows),查看arp表 ,route -n
查看路由表。 -
IE 原来是叫做
iexplore
, 在 运行中输入直接打开。 -
ipconfig
/ifconfig
查看网络信息。ipconfig /all
查看详情。 -
ip addr
现在都用 ip 命令,而不是ifconfig
-
ip route
查看 路由ip -s link
查看网络流量统计信息ip neigh
查看 ARP 记录 -
netstat -ano
(Windows),netstat -tunlp
(Linux),netstat -ant
(Mac) 查看当前电脑端口使用状态。 -
netstat -an|grep -i LISTEN
查看在监听的端口 -
lsof -i :8080
查看端口使用情况,或者lsof -i tcp:10000
查看端口被哪个进程应用占用。
8 lsof -iTCP -sTCP:listen
查看开启监听的端口和服务
-
ss -ltun
查看端口占用。 -
tasklist
/ps -A
,查看当前进程状态。ps -aux
显示详细进程信息。 -
tasklist |findstr python
与ps -aux|grep python
效果相同 -
top
(Linux),查看运行中的系统动态实时视图。 -
htop
更漂亮的查看系统CPU 和内存使用情况 glances
更更漂亮的查看系统 CPU 内存 IO 网络 磁盘的使用情况。yum install -y glances
或者pip install glances
-
kill
/tskill
杀死某个进程,killall -9 processname
强制杀死进程。 -
pkill taskname
杀死某个进程 -
shutdown -h now
关机。(我一般就这样关)reboot
重启halt
或者poweroff
也可以 -
shutdown -s -t 0
Windows下关机,shutdown -r -t 0
Windows下重启 -
cls
/clear
清屏 -
systeminfo
(windows)查看系统信息 -
find
/findstr
/grep
查找-i
忽略大小写 -
grep -i
忽略大小写,find -iname
忽略大小写。find
没有-i
参数 -
grep XXX * -r
在当前目录和和目录下的文件中查找内容 * 是指当前所有文件,r 是指递归搜索 -
在cmd中创建空文件夹,
cd.>newfilename
或者copy nul newfilename
或者type nul>newfilename
或者echo a 2>newfilename
-
notepad XXX
/vim XXX
编辑文本文件 -
vim +10 xxx
打开文件,并跳转到指定行数 -
dxdiag
Windows 下打开 DirectX 查看相关信息。 -
startx
在ubuntu命令行下从文本界面进入图形化界面。 -
sudo passwd
更改 root 密码,sudo passwd username
更改用户密码,密码默认是不会显示出来的。 -
su -l
登陆到root用户 ,在ubuntu上默认不能使用su登陆到root用户。root 默认密码为空,使用 sudo 时输入的密码是当前用户的密码,并不是root的密码,使用 su 切换到 root 用户时输入的才是 root 的密码,这两个密码可以不一样。 -
man
/info
加命令 查看相关命令的详细介绍,按q退出 -
logname
/whoami
分别显示最初登录的用户名和当前的用户名 -
who
能看到当前地址,即从何处登录至服务器。 -
pwd
显示当前目录 -
arch
(Linux)=uname -m
查看系统32位或者是64位uname -a
查看系统的详细信息uname -r
查看系统的 Linux 版本 -
cp
/mv
(copy
/move
) 复制和移动 -
rm
/del
删除rm -r xx
删除非空文件夹rmdir xxx
删除文件夹 -
gzip xxx
压缩文件gunzip -d xxx
解压文件 -
tar -cvf XXX.tar dir
将dir下所有文件打包,包括子目录中打文件tar -czvf XXX.tgz dir
将dir下所有文件压缩tar -xzvf XXX.tgz
解压还原 -
ln 源文件 目的地址
建立链接即创建快捷方式 -
chmod XXX
改变文件的权限 -R 将某文件下所有文件的权限全部改变,包括子文件夹中的文件 -
gnome-screenshot
在ubuntu的gnome桌面系统下,截取当前屏幕,也可以使用快捷键Alt+Print Screen 参数-w 只捕获当前活动窗口 -a 指定捕获内容 -d 延时捕获,可以用来关闭当前窗口 -e 给捕获内容添加效果. -
在 运行 中
snippingtool
,打开系统自带的截图。 -
dpkg -i sofeware.deb
Debian 安装软件包,rpm -i software.rpm
RHEL(Red Hat Enterprise Linux) 安装软件包 -
dpkg -l
(Linux)查看安装了哪些软件,dpkg -l softwarename
查看是否安装该软件,which softwarename
查看软件安装位置。 - 加压解压文件大全,我对压缩与解压的需求就只有三种,将文件或多个文件压缩为一个压缩文件,将文件夹压缩为一个压缩文件,将压缩文件解压到指定文件夹, 但是linux下很多的压缩程序只能将一个文件进行压缩,能够实现这三种需求的好像只有tar.gz和.zip,所以有时候只能先打包再压缩:
*.tar
用tar -rf all.tar *.jpg
将所有的jpg照片打包为all.tar,-c意为产生新的包,-f指定产生的文件名,用tar -xf all.tar
解压到当前文件夹。*.tar.gz
,*.tgz
用tar -czf all.tar.gz *.jpg
将所有的jpg文件打包压缩成all.tar.gz,用tar -czvf temp.tar.gz temp
将temp文件夹打包压缩为temp.tar.gz,用tar -xzf all.tar.gz
解压到当前文件夹。*.tar.gz2
用tar -cjf all.tar.gz2 *.jpg
将所有的jpg文件打包压缩为all.tar.gz2,用tar -xjf all.tar.gz2
解压到当前文件夹。*.tar.bz2
用tar -jxvf all.tar.tar.bz2
解压到当前文件夹。*.tar.Z
用tar -cZf all.tar.Z *.jpg
将所有的jpg文件打包压缩为all.tar.Z,用tar -xZf all.tar.Z
解压到当前文件夹。*.Z
用uncompress all.Z
解压到当前文件夹。*.gz
用gzip -d all.gz
或者gunzip -d all.zip
解压到当前文件夹,gz filename
压缩文件。*.zip
用zip -r all.zip *.enc
将所有的jpg文件打包压缩为all.zip,用zip -r temp.zip temp
将temp文件夹及其内所有文件递归打包压缩为压缩包。zip。用unzip all.zip -d data
解压到data文件夹中,用unzip all.zip
解压到当前目录。*.rar
用rar a all.rar *.jpg
将所有的jpg文件打包压缩到all.rar,用rar x all.rar
将all.rar解压到当前目录。用rar c all.rar
为all.rar添加注释,按下Ctrl+D结束输入。*.bz2
用bunzip -d all.bz2
解压到当前目录。*.xz
用xz -kz filename
将文件打包压缩为filename.xz,用unxz filename.xz
或者是xz -dk filename.xz
提取文件,参数-k
保留原始文件。
-
df -h
查看分区空间大小,df -lhT
查看文件格式,或者是df -hl
,du -h
查看当前目录使用大小,包括目录里的每一个子目录,使用du -h --max-depth=1
来只查看一级目录。 -
du -sh *
查看当前目录下一级文件及目录大小(不包括 .git 隐藏目录),du -h -d 1
查看当前目录下文件夹大小 -
du -sh
查看当前目录大小,du -sh xx
查看指定目录大小 -
fdisk -l
查看磁盘信息 -
sudo mount /dev/sda1 /media/disk
将磁盘 /dev/sda1 挂载到 /media/disk , 不过这样只有 root 才有读写权限,可以在中间加上 -o uid=pi,gid=pi 在树莓派中即可让 pi 也有读写权限 -
ls -l|grep '^-'|wc -l
统计某文件夹下文件的个数ls -l |grep "^d"|wc -l
统计文件夹下文件的个数 -
eog xx.jpg
在 Ubuntu 打开照片。 -
free
ubuntu查看内存使用情况free -h
查看内存使用状况,(*unix) -
free -h -s 3 -t
更好的查看内存使用情况,3秒刷新,展示单位,计算总和。 -
xkill
ubuntu动态的杀死某个进程,即用鼠标点击即可 -
file filename
查看文件类型,binwalk filename
分析文件类型. -
history
查看历史命令 -
在终端中,
Ctrl + A
回到命令开头,Ctrl + E
跳到命令结尾,Ctrl + R
在 history 中搜索命令 -
在终端中,
Ctrl + U
清除当前命令,Ctrl + L
,相当于 clear 清屏 -
diff filename1 filename2
比较两个文件的不同,vimdiff 用vim一边比较一边编辑,还是彩色的 -
xdg-open filename
ubuntu下,以默认打开工具打开文件,比如说pdf html之类的 -
start filename
Windows 下,以默认打开工具打开文件。 - lsusb 查看外接设备 , lspci 查看所有设备情况 , lsblk 查看块状设备,即磁盘硬盘。
- lsblk 显示的7个栏目名称如下:
- NAME : 这是块设备名。
- MAJ:MIN : 本栏显示主要和次要设备号。
- RM : 本栏显示设备是否可移动设备。注意,在本例中设备sdb和sr0的RM值等于1,这说明他们是可移动设备。
- SIZE : 本栏列出设备的容量大小信息。例如298.1G表明该设备大小为298.1GB,而1K表明该设备大小为1KB。
- RO : 该项表明设备是否为只读。在本案例中,所有设备的RO值为0,表明他们不是只读的。
- TYPE :本栏显示块设备是否是磁盘或磁盘上的一个分区。在本例中,sda和sdb是磁盘,而sr0是只读存储(rom)。(LCTT译注,此处sr0的RO项没标记为1,可能存在一些错误?)
- MOUNTPOINT : 本栏指出设备挂载的挂载点。
- lsblk 显示的7个栏目名称如下:
-
dmesg
查看启动日志,dmesg -T
查看系统日志,带时间参数。 -
last
查看用户登录日志 -
lastlog
查看当前登陆用户 -
lastb
查看登陆失败的登陆信息 -
env
查看系统环境变量 -
uptime
查看开机时间 -
smartctl --scan
查看所有磁盘,smartctl -a /dev/sda
查看磁盘信息 -
smartctl -H /dev/sda
查看磁盘状态,显示为 PASSED 或者 OK,即为良好,FAILED 即有问题 -
badblocks -s -v /dev/sda
检测磁盘坏块 -
cat /proc/scsi/scsi
查看磁盘信息,一般常用于服务器中。 -
hdparm -tT /dev/sda
测试硬盘 IO 性能,读写速度 -
cat /proc/cpuinfo
查看cpu信息,cat /proc/meminfo
查看内存信息,和使用free
的效果类似。 -
nautilus /home
打开图形化文件夹 -
pip freeze
来查看安装了那些Python的库 -
在cmd中查看某个命令的详细信息。
XXX /?
,比如说find /?
-
/etc/passwd
下存储的是系统用户的账户和密码 - 利用ssh上传下载文件
- 从服务器上下载文件
scp username@servername:/path/filename /var/www/local_dir
- 上传本地文件到服务器
scp /path/filename username@servername:/path
- 从服务器下载整个目录
scp -r username@servername:/var/www/remote_dir/ /var/www/local_dir
- 上传目录到服务器
scp -r local_dir username@servername:remote_dir
- 从服务器上下载文件
-
ssh ro[email protected] -o "ProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %p"
ssh 通过 socks5 ,需要安装 nc -
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
-
find / -name 'filename'
一个很有用的ubuntu下查找文件的命令 -
在Windows下jpg与JPG一样,但是在Linux下严格区分大小写,所以在上传服务器时注意照片后缀名
-
在windows下用win+Ctrl+D创建一个新的虚拟桌面,win+Ctrl+←或win+Ctrl+→来切换虚拟桌面,win+Ctrl+F4关闭虚拟桌面。在ubuntu下用Ctrl+Alt+↑或Ctrl+Alt+↓来切换桌面
-
连接投影仪,用 win + P 连接投影仪并选择投影模式。
-
在ubuntu下,Ctrl+A 回到命令行首,鼠标中键粘贴
-
ubuntu命令行中 在命令最后加入&表示后台执行命令,但是终端关闭也将停止进程。在命令开头加上nohup表示不随终端的关闭而关闭,如果在ssh登陆远程桌面时很有用。nohup 命令 >log &表示后台执行命令,将结果输出到log文件中,停止ssh也继续进行。
-
ubuntu下在两个命令行之间加上
;
或&
表示两个命令依次进行,加上&&
表示前一个命令执行成功之后再执行下一个命令,加上|
表示前一个命令的输出作为后一个命令的输入,加上>
表示写入到文件中,如果已存在则强制覆盖,加上>>
表示写入到文件中,如果已存在,则加在其末尾,加上’<’表示读取文件作为下一个执行的输入。 -
|
与>
的区别,|
表示前一个命令的输出作为后一个命令的输入,>
表示前一个命令保存到文本中。 -
Windows下PPPOE拨号上网,
rasdial "宽带连接" "账号" "密码"
,用rasdial /d
或者disconnect /disconnect
断开连接,也可以使用rasdial "宽带连接" "账号" *
,这样就会让你输入手动密码,而且密码不会显示。 -
Ubuntu 下系统log一般在/var/log 下
-
Linux 下检验md5值,
md5sum filename
(默认参数-t 以纯文本方式读取,-b 以二进制方式读取),如果用 echo 重定向的话,应该使用echo -n string|md5sum
,因为 echo 默认输出是带一个换行符的 -
现在一般不再推荐使用 md5 ,起码应该改用 sha1 。在 Linux 下也自带相关工具 sha1sum sha256sum sha512sum sha224sum sha384sum 与 md5sum 使用方法一致。
-
strings filename
显示文件中所有的 ASCII 字符。 -
binwalk filename
查看文件的真实格式 -
foremost -v -i filename
从文件中提取文件 -
dd if=输入文件名 of=输出文件名 bs=一次(读出/写入)bytes skip=跳过blocks
数据块提取 -
skipfish -o output_folder http://www.example.com
扫描网站漏洞,谷歌出品,品质保证 -
ln oldfile newfil
创建一个硬链接 两者是同一个文件,两者只能在同一个分区内 只能是文件 -
ln -s olddir newdir
创建一个软链接 相当于快捷方式 文件或文件夹 -
base64 -d data
base64解密,默认无参数时为加密 -
calc
/gnome-calculator
打开计算器 -
gnome-system-monitor
系统管理器 -
测试电脑 CPU 性能,
openssl speed -elapsed -evp aes-256-cfb
,最终结果在 8192 个比特的时候正常电脑都是三四十万的样子。 -
gcc filename.c -o filename
使用 gcc 编译 C语言文件 -
tracert www.baidu.com
跟踪网络请求,查看网络中间过了哪些节点 -
ctfmon.exe
Windows 下恢复输入法 -
date
查看当前日期,time
查看当前时间 UTC 格林尼治时间,PRC 中国北京时间 为 UTC+8 , zh_CN 中国大陆简体中文,zh_TW,zh_HK,为台湾和香港的繁体中文。 -
date +%F
查看格式化的日期,date +%Y-%m-%d
或者date +%Y-%m-%d:%H:%M:%S
,date +%s
查看当前时间戳,date -d @1602342382
时间戳转化为时间。 -
cal
查看日历📅,date
查看时间和日期 -
file /sbin/init
查看系统位数和 Linux 内核版本cat /etc/issue
,cat /proc/version
查看系统版本号 ,cat /etc/redhat-release
或者cat /etc/os-release
也可查看版本号,lsb_release -a
也可以查看版本号,hostnamectl
也可以查看版本信息。 -
cat /etc/*-release
标准查看版本信息,centos 和 Debian 都行。 -
getconf LONG_BIT
查看操作系统位数。 -
nohup play *.mp3
保持后台运行 -
screen
后台运行 -
python -c "XXX"
直接执行 python 命令,python -m "XXX"
直接执行 python 模块,如python -m SimpleHTTPServer
-
vmstat,iostat Linux 系统监控命令
- iptables 系统防火墙。sudo service iptables status 关闭防火墙
sudo iptables --list
查看本机的防火墙规则sudo iptables -A INPUT -p tcp --dport 8888 -j DROP
拒绝对本机 8888 端口的 TCP 访问
sudo iptables -A INPUT -p udp --dport 8888 -j DROP
拒绝对本级 8888 端口的 UPD 访问
sudo iptables -A FORWARD -p udp --dport 843 -j DROP
拒绝转发目的端口 843 的 UPD 包
sudo iptables -A INPUT -tcp --dport 8888 -j ACCEPT
打开对本级 8888 端口的 TCP 访问 -
java -jar XXX.jar
命令行中打开使用 jar 文件 -
hostname
查看服务器名,hostname -I
查看本机 IP -
which XX
查看命令的所在位置 -
type xxx
查看命令,和 which 类似 -
whereis XX
更大范围内查找命令的位置 -
whatis XX
用一句话简单的解释这个语句的功能 -
nslookup www.baidu.com
域名查 IP ,其实这个命令也能 IP 反查域名 -
more /etc/services
查看端口对应的网络服务 -
tcpdump -i wlan0
监听 wlan0 的流量,相当于网络抓包。tcpdump -i wlan0 -I
打开网卡监听模式 -
/etc/resolv.conf
DNS 服务器,实时更改,但是在每次连接网络时会被重置,可以用 nslookup 来测试你的 DNS -
/etc/network/interfaces
配置网络连接状态 -
开机启动脚本,开机启动的服务即可放在这里
/etc/rc.d/rc.local
(改文件需先chmod +x /etc/rc.d/rc.local
以确保其能在开机时启动) 或/etc/sysctl.conf
-
sudo dhclient eth0
使用 DHCP 获得 IP 地址,或请求重新分配 IP 地址 -
重启网络
/etc/init.d/networking reload
或/etc/rc.d/init.d/network restrart
-
route
查看网关和路由,route -A inet6
查看 Ipv6 网关和路由 -
设置IP和掩码
ifconfig eth0 192.168.5.40 netmask 255.255.255.0
设置默认网关route add default gw 192.168.5.1
设置 DNSecho "nameserver 202.202.202.20 ">> /etc/resolv.conf
-
route del -net 169.254.0.0 netmask 255.255.0.0
删除路由,添加 IProute add -net 169.254.0.0 netmask 255.255.0.0 dev eth0
-
在 Windows 下随便新建一个文件夹,将其名字及改为
some_name.{ED7BA470-8E54-465E-825C-99712043E01C}
,打开,即为 Windows 所有设置。 -
Ctrl
+Shift
+Alt
+R
在 Ubuntu Gnome 下录屏 -
systemctl list-unit-files
Cent OS 下查看系统服务(service) -
Linux 运行级别,标准为 3,多用户模式,带界面的为 5,X Window 模式,0 为停机模式,1 为 单用户模式,2 为无网络的多用户模式,3 为完全的多用户模式,4 为用户自定义模式,5 为 X Window 模式,6 重启。
-
systemctl get-default
查看当前运行模式,systemctl set-default multi-user.target
修改默认为 多用户模式,systemctl set-default graphical.target
修改默认为 X Window 模式。 -
Linux 运行模式配置文件为
/etc/inittab
可以在修改系统启动进入的默认运行模式。 -
startx
即可进入 X Window 模式。 -
chkconfig --level 345 httpd on
在 3,4,5 模式下开机启动 httpd 服务。 -
Cent OS 下的网络配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0
,/etc/sysconfig/network
,/etc/hosts
,/etc/resolv.conf
-
yum makecache
更改源文件之后新建缓存,yum clean all
清除原来的缓存。 -
useradd -d /home/test test
新建一个 test 用户。 -
userdel -r test
完全删除 test 用户。 -
getenforce
查看 SELinux (Security Enhanced Linux, 安全强化 Linux)状态,这是一个由 NSA (National Security Agency, 美国国家安全局) 主导开发的 Linux MAC (Mandatory Access Control, 强制访问控制系统)的一部分。在你使用本地账户的时候登陆 FTP 的时候,在你设置 Nginx 的根目录在本地账户的根目录下的时候,它就会出现,并及时的 ban 你脚。 -
setenforce 0
或setenforce Permissive
临时关闭 SELinux 。。。 -
在无法使用本地账号登陆 FTP 的时候,可以通过
setsebool -P ftpd_full_access 1
来让本地账户登陆 FTP 。 -
在无法将 Nginx 的根目录放在本地用户的根目录下的时候,可以通过
chcon -Rt httpd_sys_content_t /path/to/www
来让消除 403 错误。当然你要先将 Nginx 的运行账户为你的本地账户。 -
如果你真的要永久关闭 SELinux 的话,在
/etc/selinux/config
将SELINUX=enforcing
改为SELINUX=disabled
即可。 -
在 Linux 下 使用
time XXX
表示测量 XXX 运行的时间。 -
curl -X method http://XXX.com
method={GET, POST, PUT, DELETE} -
taskkill /f /im python.exe
Windows 下命令行终端中杀死 Python 进程 -
ffmpeg -i input.flac -acodec libmp3lame output.mp3
将 flac 音频转换为 mp3 格式 -
ffmpeg -i your-video.mp4 -ss 00:00:00 -vframes 1 thumb.png
将视频的第一帧生成封面 ffmpeg -ss 00:00:10 -to 00:00:15 -i input.mp4 -vcodec copy -acodec copy output.mp4
注意
-ss
最好放在-i
前面,表示对输入视频按时切割,不然就是对输出视频的切割
-to 00:00:15
与-t 5
的效果一致,前者表示截止,后者表示截多少
-vcodec copy -acodec copy
表示视频解码器和音频解码器与原来一致,也可以直接使用-codec copy
可以加入-accurate_see
和-avoid_negative_ts 1
参数效果更好,-accurate_seek
放在-i
之前-
ffmpeg --thread 4 -i vae.mp4 -b 150k -vcodec h264 -s 352*278 -r 10 vaeleast.mp4
使用 FFmpeg 压缩视频 vae.mp4 ,生成 150 kb/s 10 fps352*278
使用 h264 压缩方式的 vaeleast.mp4 文件。 -
ffmpeg -i Lantern.mp4 -vcodec libx264 -preset fast -crf 20 -acodec aac -ab 128k aac.mp4
将视频格式转换为视频格式为 h264 音频格式为 aac 码率为 128k 的视频 -
将1080p转成720p,宽度自适应
ffmpeg -i input.mkv -c copy -c:v libx264 -vf scale=-2:720 output.mkv
-
ffprobe vaeleast.mp4
查看视频信息 -
ffplay vae.mp4
播放视频 -
jpegtran -copy none -progressive <inputfile> <outputfile>
将标准型 JPEG (Baseline JPEG) 文件转化为 渐进式 JPEG (Progressive JPEG)文件。 -
ffmpeg -i vae.mp4 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//
或ffprobe vaeout.mp4 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//
获取视频时长 -
pdftotext [options] <PDF-file> [<text-file>]
将 PDF 转换为 纯文本。 如果没有输出文件名的话,默认为输入文件名,只改后缀名,在我的 cent OS 上执行会报错Syntax Error: Expected the default config, but wasn't able to find it, or it isn't a Dictionary
但是并不影响它正常工作。 -
pdftotext -layout <PDF-file> [<text-file>]
保持原有文件的布局格式。 -
pdftotext -f 10 -l 15 <PDF-file> [<text-file>]
只转换第 10 页到第 15 页的部分。 -
pdftohtml [options] <PDF-file> [<html-file>]
将 PDF 转换为 HTML 文件。 -
pdftohtml -xml <PDF-file> [<xml-file>]
将 PDF 转换为 XML 文件 -
wordcloud_cli.py --text mytext.txt --imagefile wordcloud.png
将文本转换为 词云。 -
pdftotext mydocument.pdf - | wordcloud_cli.py --imagefile wordcloud.png
将 PDF 转换为 词云。 -
tail -f filename
动态显示文件最后十行。 -
wget -c -r -np -k -p 127.0.0.1:5002
使用 wget 下载整站 -
winget
大家都知道wget
,但是却不知道在 Windows 下还有一个winget
-
wget https://packagecontrol.io/channel_v3.json -e use_proxy=yes -e https_proxy=127.0.0.1:1080 --no-check-certificate
为 wget 使用 代理 -
axel -n10 http://xxx.xxx.xxx
多线程下载器 -
nohup ss-server -c 10001.json >10001.log 2>&1 &
因为正常的 nohup 是忽略错误的,还是会将错误输出到屏幕上,我们可以将标准错误 (2) 重定向到标准输出 (1),这样就能够将错误也重定向到文件中。 -
退出 Telnet 连接,先输入 Escape 字符
Ctrl + [
,然后再 quit 或者 exit 即可退出 -
Windows 下查看所有的 WiFi 密码
for /f "skip=9 tokens=1,2 delims=:" %i in ('netsh wlan show profiles') do @echo %j | findstr -i -v echo | netsh wlan show profiles %j key=clear
-
Linux 下 ping 4 下
ping -c4 www.baidu.com
- 获得外网 IP 地址
curl http://httpbin.org/ip
或者其他可用的网址有- ip.cn 还能使用
ip.cn/127.0.0.1
查看归属地 - ipinfo.io
- myip.ipip.net
- ip.sb
- ip.gs
- cip.cc
- ifconfig.me
- ifconfig.io
- ipinfo.io
- httpbin.org/ip
- api.ipify.org
- ns1.dnspod.net:6666
- icanhazip.com
- ipecho.net/plain
- ident.me
- https://tnx.nl/ip
- whatismyip.akamai.com
- myip.dnsomatic.com
- haoip.cn
- myip.ipip.net
- api.ipify.org
- ip.cn 还能使用
-
curl -x http://127.0.0.1:1092 -i https://www.google.com/
使用 http 代理 -
curl -x socks5://[user:password@]proxyhost[:port]/ url
使用 sock5 代理 -
curl --socks5 127.0.0.1:1080 ifconfig.io
查看本地代理的IP -
生成32位纯随机密码
openssl rand -base64 24
-
pip install whatportis
查询端口服务。whatportis 3306
,这样不要在使用的端口上开启 http 服务了,chrome 不认。 -
dig baidu.com
或者host baidu.com
查询 DNS 。根据域名找IP -
dig -6 ipv6.google.com
查询 Ipv6 地址,dig @8.8.8.8 google.com
指定 DNS 服务器 -
find . -name "*.pyc"|xargs rm -f
循环递归找到文件文件夹下所有的 pyc 文件,一直想找一个递归使用的命令,原来就是xargs
,所以也可以用来计算代码行数find . -name "*.py"|xargs cat |wc
,然后用find . -name "*.py"|wc
查文件数。 -
计算代码行数有专门的 命令,叫
cloc
,还有linec
-
在任何编程语言中,陷入标准输入中都很难退出来,或者是在 Linux 命令中。退出标准输入使用
EOF
即Ctrl
+D
即可退出标准输入 -
更改 history 保存的行数,可以修改
HISTSIZE
和HISTORYSIZE
,然后使用echo $HISTSIZE
是否生效 -
diskutil list
查看磁盘信息 -
curl https://intoli.com/install-google-chrome.sh | bash
在 centOS 上安装 Chrome 。 -
google-chrome-stable --headless --disable-gpu --screenshot https://ele.me
使用 Google Chrome 获取网站截图 -
iconv -f UTF8 -t GB18030 a.csv > a_new.csv
改变文件编码方式 -
iconv -f GBK -t UTF-8 1.txt>2.txt
改变文件编码方式 -
nslookup windard.com
DNS 查询 -
find . -type f -size +100M
查找100M以上的大文件 -
find . -type f -size +100M -print0 | xargs -0 du -h | sort -nr
对查找结果按照文件大小做一个排序 -
sudo du -hm --max-depth=2 | sort -nr | head -20
查找当前目录下前20的大目录 -
/usr/lib/systemd/system/
centOS 上 services 的位置,/lib/systemd/system
Ubuntu 上 services 的位置 -
hostname -I
查看本机内网IP,curl -s ns1.dnspod.net:6666
查看本机的外网IP。 -
curl -u username:password http://xx.xx
与http://username:[email protected]
都可以登录 basic auth。 -
cat ~/.ssh/id_rsa.pub|pbcopy
或者pbcopy<~/.ssh/id_rsa.pub
复制公钥到剪贴板,在 Windows 下为clip
,在 Ubuntu 下xclip
-
pbpaste -
粘贴在屏幕上,pbpaste>t.text
粘贴到文件中 -
echo 'hello'>world.txt
将输出保存到文件中。 -
echo 'hello'|tee hello.txt world.txt
将输出保存到文件中,且输出到屏幕上。 -
xxx|tee log.txt
运行程序,日志输出,同时记录到文件中。 -
mkfile -n 160m test1
在 Mac 下创建指定大小的文件 -
dd if=/dev/zero of=test.file count=1024 bs=1024
创建 1m 大小的文件,也可以使用/dev/urandom
使用随机字符串填充 -
/usr/share/dict/words
记录了 235886 个常用英文单词… -
youtube-dl
和you-get
竟然是两个软件,国内外视频网站均可下载,甚至可以网易云。 -
ps -ef|grep <processname>
查看进程占用内存。netstat -anp|grep <port>
根据占用端口查看进程 -
fg
将Ctrl
+Z
放入后台的进程放到前台继续进行。 -
bg
将Ctrl
+Z
放入后台的进程在后台继续进行,实际上放入后台的命令是并没有执行的,已经被挂起了。 -
jobs
查看后台进程的状态,是挂起还是执行。 -
&
就可以将进程放入后台,继续运行。nohup
只是为了将结果输出。后台进程会继续打印结果到平面上。 -
nohup
的实际功能是让命令不会随着终端的结束而结束,后台进程是跟随着屏幕的生命周期,nohup
可以让命令在退出登录之后继续运行,而不仅仅只在当前会话。 -
lrzsz
可以让你以sz
或者rz
来下载上传文件至服务器。 -
在 Windows 下的 CUI 中,使用
explorer .
使用资源管理器打开当前目录,在 Mac 下使用open .
打开当前目录。 - vim 有时插入数据因为 tab 的原因会有问题,在插入最后的时候可以这样
cat >> test.py <<EOF > print "hello world" > > EOF
-
ifconfig | grep "inet "
查看本机 ip -
sysctl -n machdep.cpu.brand_string
Mac 上查看 CPU 的具体型号 -
查看 ssh 登陆失败的请求
grep "Failed password" /var/log/secure
或者grep "Failed password" /var/log/auth.log
-
dmesg | grep gunicorn
查看 Gunicorn 因为 OOM 内存超限被 kill 的日志 ip route list table local
查看所有本机ip,包括内外网地址。
MySQL常用命令
-
在管理员权限下cmd里,
net start mysql
启动MySQL服务。常用的还有net stop mysql
。 -
在管理员权限下cmd里,
httpd -k start
启动Apache服务。常用的还有httpd -k stop
和httpd -k restart
-
登陆MySQL,
mysql -u username -p password
。 -
查看所有的数据库,
show databases;
,选择某个数据库,use XXX;
,查看所有的表单,show tabless;
。 -
查看某个表单的内容,
select * from XXX;
,也可以选择查找,select * from XXX where XXX="XXX";
. -
模糊查找。有两种方法:1.
select * from XXX where XXX regexp "XX";
2.select * from XXX where name like "%XXX%";
-
查看表单不重复的列数
select count(distinct name) from railway;
或者select count(distinct(name)) from railway;
-
查询不重复的列就是
select distinct name from railway;
查询所有列就是select count(name) from railway;
-
查看某表单的有哪些选项,
show columns from tablename from databasename;
或者是describe tablename;
也可以简写为desc tablename
, 前两者效果一致,如果想查看更详细内容,如查看每一列的编码方式,可以使用show full columns from tablename;
-
新建数据库,
create database XXX charset=utf8;
,新建表单create table tablename(name char(15),id int);
-
新建数据库并设置编码
CREATE DATABASE 数据库名 DEFAULT CHARACTER SET UTF8 DEFAULT COLLATE utf8_general_ci;
-
更改已新建的数据库
ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_general_ci;
-
创建好数据库之后为连接设定字符编码
set names utf8
-
新插入的行自动序号加一,
AUTO_INCREMENT
。 -
select 1 union select 2 union select 1
联合查询结果,将返回结果去重 -
select 1 union all select 2 union all select 1
联合查询结果,查询结果不去重 -
union
或者union all
是将两个查询的结果,强行加到一起,所以其实是增加行数,并非把列合到一起。 -
真正的联合查询是
join
连接。默认是inner join
. -
今天面试的时候学习到了,还有
natural join
也是将两个表相连,字段相同的列需要值相等,然后只保留一行。 -
所以
nature join
可以代表join
而且自动on
字段相同的列匹配。今天面试的候选人,我对不起你,我还以为语法错误了。 -
然后
join
的时候可以用where
条件,可以直接当on
使用,不过只能用于join
,不能用于其他的left join
之类。 -
select * from user natural join relationship where per = 'A';
是和select * from user inner join relationship on user.id = relationship.id where per = 'A';
一样的结果。 -
inner join
就是join
,只展示两张表中都有的行,如果存在不匹配,则不展示,内连接。 -
left join
就是,返回左表所有的行,左连接 -
right join
就是,返回右表所有的行,右连接 -
full join
,MySQL 不支持,SQL Server 才有,外连接。 -
select A.id, B.name from user A, account B where A.id = B.user_id;
其实 联合查询也不一定非要用join
可以直接双表联查。 -
插入数据,
insert into tablename(name,id) values("name","id");
-
更新数据,
update tablename set name="XX" where name="XXX";
-
删除表单数据,
delete from XXX where XX=XX
-
删除表单,
drop table XXX;
,删除数据库,drop database XXX;
-
删除表中所有数据,保存表结构,
truncate table tablename;
自增ID也将从1重新计数。 -
查看数据库编码格式,
show variables like "%character%";
-
退出,
exit
或者是quit
。 -
在已有的table中插入一列
alter table tablename add column columnname varchar(20) not null;
,或者是加入到某一列的后面alter table tablename add column columnname varchar(20) not null after anothercolumn;
或者是加入到第一列alter table tablename add column columnname varchar(20) not null first;
-
设定某一列为key
ALTER TABLE 表名 ADD (字段名 类型)constraint 约束的名字 primary key;
或ALTER TABLE 表名 ADD (字段名 类型);
或ALTER TABLE 表名 ADD constraint 约束的名字 primary key(字段名);
-
修改数据库表的字段
alter table tablename modify column columnname varchar(256);
用的是modify
关键字,column
可以省略。 -
修改数据库表的字段名
alter table tablename change column old_name new_name varchar(10);
用的是change
关键字,column
可以省略. -
在已有的 table 中插入两列
alter table tablename add column columnname varchar(20) not null, add column columnname int;
-
删除一列
ALTER TABLE "table_name" DROP COLUMN "column_name";
-
插入一个索引
alter table table_name add index index_name(column_name)
-
删除一个索引
alter table table_name drop index index_name;
-
ORDER BY id DESC
按逆序排列查找的结果,ORDER BY id ASC
按正常顺序,即升序排列查找的结果。 -
grant create, drop, select, insert, update, delete, index on awesome.* to 'www-data'@'localhost' identified by 'www-data';
创建一个用户,并赋予其创建,删除表,查找,添加,更改和删除表单的权限。 -
grant all on test.* to test@'192.%.%.%' IDENTIFIED BY 'test';
给用户赋予一串IP的登录管理权限 -
MySQL 8 之后,创建用户赋予权限需要分成两步了。
CREATE USER 'www-data'@'%' IDENTIFIED BY 'www-data';
,GRANT ALL PRIVILEGES ON *.* TO 'www-data'@'%' WITH GRANT OPTION;
-
CREATE DATABASE demo DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
创建数据库。 -
创建表单和插入数据
CREATE TABLE `demo`.`user` (
`uid` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '用户uid',
`username` VARCHAR( 20 ) NOT NULL COMMENT '用户名',
`password` VARCHAR( 32 ) NOT NULL COMMENT '用户密码'
) ENGINE = INNODB;
INSERT INTO `demo`.`user` (`uid`, `username`, `password`) VALUES ('1', 'windard', MD5('123456'));
- 正常的创建表单
create table student(id int auto_increment primary key,name varchar(128),score int,index(id));
CREATE TABLE `student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(128) DEFAULT NULL,
`score` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
-
导出数据库
mysqldump -u username -p password database > database.sql
-
导出数据库表
mysqldump -u username -p password database table > database.sql
-
如果只是想导出数据,
select * from user into outfile '/tmp/user.txt'
-
导入数据,需自行建好 database,然后
source database.sql
或者是mysql -u username -p password database < database.sql
-
插入大量数据
insert into student(name,score) value('Mary',67), ('Tom',78), ('Heny',88), ('Lily',95), ('Amy',75), ('Bob',83), ('Jay',84), ('Piter',97);
-
create table bbs_ip(id int, ip_start varchar(128), ip_end varchar(128), addr varchar(256), operator varchar(256));
使用 MySQL 查询 IP 地址。 -
status
查看当前数据库的状态。 -
show engines;
查看数据库提供哪些存储引擎,show variables like '%storage_engine%';
查看数据库当前默认存储引擎. -
show create table tablename;
查看数据库表的创建命令,包括使用何种引擎,何种编码。show create database databasename;
查看数据库的创建命令,包括使用何种字符集。 -
创建命令不一定能准确的反映出当前的数据库表的编码状态,使用
show table status from databasename where name='tablename';
或者mysqlshow -u username -p –-status databasename tablename
-
查看数据库的默认编码方式
show variables like "%character%";
查看数据库的编码字符集show variables like 'collation%';
,查看数据库的全部表编码show table status from databasename
-
创建数据库时使用
CHARSET=utf8
的最后显示的编码是utf8_general_ci
, 但是现在推荐使用CHARSET=utf8mb4
存储更长,主要是支持 emoji ,显示的编码是utf8mb4_general_ci
. -
charset 显示的编码方式,collation 显示的字符集。编码方式比字符集要小,比如同样的 utf8 编码,但是字符集区却有 utf8_general_ci 和 utf8_unicode_ci 等等,可以通过
show collation;
查看数据库支持的字符集和编码格式。 -
set password for 'root'@'localhost'=password('passwd');
修改 ROOT 密码。 -
update user set gender = case gender when 'F' then 'M' else 'F' end;
性别反转update user set gender = if(gender='F', 'M', 'F');
-
如果性别是用 0 和 1 标识的话,还可以直接取反,注意不是按位取反。
update user set sex = !sex;
如果按位取反~sex
得到的是负数。 -
磁盘整理,收集碎片
ALTER TABLE table_name ENGINE = Innodb;
-
select table_schema,table_name,round((data_length+index_length)/1024/1024/1024,2) 'Used_GB',round((data_length)/1024/1024/1024,2) 'data_GB',round((index_length)/1024/1024/1024,2) 'index_GB',round((data_free)/1024/1024/1024,2) 'Free_GB' from information_schema.tables order by round((data_length+index_length)/1024/1024/1024,2),round((data_free)/1024/1024/1024,2) limit 10000;
查看 MySQL 磁盘占用量
vim常用命令
hjkl
左下上右
-
Esc 退出文本编辑模式进入XX模式,按
i
(insert)或者a
(append)进入文本编辑模式。 -
进入文本编辑模式还可使用
o
. -
在XX模式中,按
v
(visual)进入选择模式,若要进入文本编辑模式,先按Esc
,再按下i
. -
在选择模式中,选取了某段文本之后,按
y
(yank) 复制, 按c
(cut) 剪切 然后到需要粘贴的地方,按下p
(paste)即粘贴,yy
即复制当前行。 -
撤销,在XX模式中,按
u
(undo)即撤销,使用Ctrl
+R
可以撤销 撤销的行为. -
在XX模式中,先按
/
再输入查找的内容,即可进行查找,vim支持部分正则匹配.找到之后使用n
跳到下一个匹配项,使用shift
+n
调到上一个匹配项 -
在XX模式中,先按下
:
和!
,再输入shell命令即可执行 -
在XX模式中,先按下
:
,再按下w
, 即保存文本,或者按下wq
即保存并退出,或者按下q!
,即不保存退出。 -
在XX模式下,按两下
d
,即可删除该行,按下x
,即可删除该字符 -
XX模式表示命令模式。
-
XX模式下,
:Sex
打开另一个窗口显示当前目录文件结构,同样按:q!
退出窗口 -
XX模式下,
:sp
+ 文件名 打开一个垂直窗口显示文件,Ctrl
+W
在两个窗口之间转换。 -
XX模式下,
:vs
+ 文件名 打开一个水平方向的窗口显示文件。 -
XX模式下,
$
移动到行尾,0
移动到行头 -
XX模式下,
d$
删除到行尾,dw
删除改单词 -
XX模式下,删除的内容在寄存器中,在需要粘贴的行之上,使用
P
即可粘贴在下一行. -
XX模式下, 使用
r[\w]
先使用r(replace)
进入替换模式,然后键入替换后的字符. -
Ctrl
+P
上下文寻找,自动补全。 -
在启用了代码折叠之后,在XX模式下,按
za
打开或折叠代码,按zM
折叠所有代码,按zR
代开所有代码 -
XX模式下,按
:
加行数,可以直接跳到指定行 -
XX模式下,按
:split
分割视窗。 -
XX模式下,按
:e filename
打开编辑某文件 -
XX模式下,
Ctrl
+G
查看该文件的信息 -
gg
跳转至文件第一行开头,G
(Shift
+ ‘g’) 跳转至文件最后一行开头 -
:[\d]
跳转至某一行, 或者在 XX 模式下[\d]G
注意观察输入数字时,在页面右下角会出现输入数字,然后键入Shift
+g
跳转至改行. -
XX模式下
:s/thee/the
将本行第一个 thee 替换为 the -
XX模式下
:s/thee/the/g
将本行所有 thee 替换为 the -
XX模式下
:%s/thee/the/g
将全文所有 thee 替换为 the -
vimtutor
vim 的教程 -
gg
跳到文件开头 -
shift
+g
跳到文件结尾 -
XX模式下,
:set nu
显示行号 -
XX模式下,
:colorscheme
可以查看当前配色方案,:colorscheme <tab>
可以挑选配色方案
让我来秀一下我的vimrc
"设置语法高亮
syntax enable
syntax on
"显示行号
set number
"空格代替tab
set expandtab
"设置标尺
set ruler
"设置复制模式
set paste
"代码缩进
set shiftwidth=4
set softtabstop=4
set tabstop=4
"智能对齐
set autoindent
set smartindent
"自适应不同的语言智能对齐
filetype indent on
set showmatch
"高亮搜索结果
set hlsearch
"let mapleader=";"
filetype on
filetype plugin on
"开启实时搜索
set incsearch
"搜索时忽略大小写
set ignorecase
"配色方案
set background=dark
colorscheme desert
"set laststatus=2
set ruler
"高亮显示当前行/列
set cursorline
"set cursorcolumn
"禁止折行
set nowrap
"代码折叠基于语法/基于缩进
set foldmethod=indent
"set foldmethod=syntax
"启动vim时关闭代码折叠
set nofoldenable
set laststatus=2 " 显示状态栏 (默认值为 1, 无法显示状态栏)
set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\
" 设置在状态行显示的信息
git常用命令
-
git add -A
增加当次全部更改到暂存区 -
git reset HEAD file
撤销暂存区的修改 -
git checkout -- filename
用于误删文件恢复。撤销文件修改,改文件并未提交到暂存区 -
git commit -m "XXX"
提交当次全部更改,并注释为XXX -
git commit --amend
将此次修改包含到上次 commit 中,git commit --amend --no-edit
可以免除编辑 -
git push origin master
将本次全部更改提交到服务器上 -
git pull
更新本地文件与服务器保持一致 -
git pull origin master --rebase
当拉取远程数据的时候默认采用的 merge 模式,选择使用 rebase 拉取远程数据同步 -
git clone https://github.com/XXX/XXX.git
将XXX的XXX项目克隆到本地,git clone https://github.com/XXX/XXX.git yyy
将项目克隆并指定到yyy
目录 -
git branch branchname
创建分支 -
git checkout -b branchname
创建并切换分支 -
git checkout -b xxx origin/develop
根据 origin develop 切换分支 -
git checkout origin/develop
直接切换到 origin develop 分支,但是不能 push -
git branch -d branchname
删除分支 -
git checkout .
舍弃当前未提交的内容,本地所有修改的,没有的提交的,都返回到原来的状态。 -
git checkout tags/1.4.9 -b 1.4.9
切到某个 tag 版本 -
git merge branchname
合并某分支到当前分支 -
git status 查看当前
git 状态 -
git tag tagname
创建 Tag -
git tag -d tagname
删除 Tag -
git push origin tagname
推送 Tag 到远程 -
git push --tags
推送所有 tags -
git checkout -a
查看所有分支 -
git rebase {branchname}
重置 HEAD 到当前分支 -
git rebase -i {FETCH_HEAD}
将所有分支重置,并合并为一个 commit,在编辑分支页面,s
跳过,p
保留,最终同意填写 commit message -
一般来说,合并 commit 就是
git rebase -i master
然后在交互式中,p
第一个,s
剩下的所有,就会全部合并称为一个 commit。 -
git checkout {branchname}
改变本地当前分支 -
git log
查看日志git log --pretty=oneline
按行查看日志git log --graph
图形化查看日志,git log test.file
查看某个文件的log 记录 -
在 Linux 下上一个版本是
HEAD^
在 Windows 下是HEAD~
-
git reset --hard HEAD^
回退到上一个版本,HEAD^^
回退到上两个版本,HEAD~100
回退到前一百个版本,或者直接加版本号git reset --hard 1c73fa
-
git revert HEAD^
回退到上一个版本,但是本次提交信息依旧保留,内容回滚,变为需 add 和 commit 的模样。 -
git revert --abort
撤销此次回退。因为回滚还是会保留此次的修改,并入回滚那次的修改,如果两次有修改同一个文件,就会 merge 失败,不如用 reset。 -
git revert commit_id -m [1,2]
回滚某次合并,-m 1
以 master 分支为主,-m 2
以 develop 分支为主。 -
git reflog
查看 git 操作历史, 查看该分支上所有历史,包括已删除 commit 。 -
git remote set-url origin https://github.com/USERNAME/OTHERREPOSITORY.git
修改远程仓库位置 -
git remove -v
查看所有远程地址 -
git diff
当前所有未提交的文件与上个版本之间的差异git diff --stat
单行显示比较结果git diff --name-status
只显示文件名 -
git diff filename
对比已修改文件内容,只能是未提交到暂存区的文件 -
git diff --cached
对比已经提交到暂存区与上个版本之间的差异 -
git diff FETCH_HEAD:setup.py setup.py
专门对比某个文件的区分,或者git diff FETCH_HEAD setup.py
-
git diff HEAD
对比已经提交到暂存区的文件或未提交到暂存区的文件与上个版本之间的差异 -
git diff HEAD^
与当前版本与上一个版本对比区别,git diff 版本号1 版本号2 filename
对比两个版本号里的某个文件git diff 版本号1 版本号2
比较两个历史版本之间的差异 (版本号也可以用于换成 branch) -
git difftool
使用图形化的对比工具, 即 vimdiff -
在根目录下创建
.gitignore
文件,该文件内的所有文件名的文件将不再被跟踪,若上一个版本库中已有这些文件,则需先在版本库中将这些文件删去 -
与
.gitignore
效果相似的是.git/info/exclude
,将文件名写入这里也是不会被 git 跟踪 - 在 fork 他人的代码后在自己的代码库更新至别人最新代码。
- 设定一个他人的远程关联
git remote add upstream https://github.com/windard/Python_Lib.git
- 直接 pull 别人的最新代码
git pull upstream {branchname}
- push 代码到自己的远程
git push origin master
- 设定一个他人的远程关联
-
git push origin --delete <branchName>
或者git push origin :<branchName>
删除远程的分支 -
git stash
保存当前修改到栈上,即不用 add 也不用 commit -
git stash pop
将上次保留到栈上的修改还原回来 -
git stash list
查看所有的栈上保留的修改 -
git stash clear
清空栈 -
git stash drop
删掉 stash 栈顶更改 -
git config --global user.name "yourusername"
git config --global user.email "youremail"
设定本地账户信息 -
git config --global core.ignorecase false
开启大小写敏感,默认在 Windows 和 Mac 上不敏感。 -
git config --global pull.rebase true
开启 pull 使用 rebase 模式,默认是 merge 。 -
git config -l
查看所有本地仓库 Git 变量 -
git fetch origin master
拉取 origin 的 master 分支到本地,用来给本地分支merge或者rebase -
git fetch origin pull/766/head
拉取未合并的 pr 。 -
git log --all --oneline | grep "search query"
或者git log --grep="search query"
搜索 git commit -
git blame filename
查看代码文件历史记录,包括作者和commit记录 -
git diff >1.diff
生成普通的 diff 文件,可以用来 apply,但是不能用来 am -
git format-patch commmit_id
生成 commit_id 之后代码变更的 git patch 文件,包含 commit 信息 -
git format-patch -2
将最近的两次 commit 打成 git patch -
git apply 000-message.patch
应用代码变更 -
git apply --stat newpatch.patch
查看变更 -
git apply --check newpatch.patch
校验变更是否有冲突 -
git am newpatch.patch
应用 patch ,创建对应的 commit -
给 GitHub 上项目提交 pr
https://github.com/apache/thrift/pull/2090
-
GitHub 上 pr 的 diff 信息
https://github.com/apache/thrift/pull/2090.diff
- GitHub 上 pr 的 patch 信息
https://github.com/apache/thrift/pull/2090.patch
sublime常用快捷键
-
Ctrl + Shift + P 打开控制面板
-
Ctrl + Shift + T 打开上一个关闭的页面
-
Ctrl + C 复制
-
Ctrl + V 粘贴
-
Ctrl + O 打开
-
Ctrl + N 新建一个新页面
-
Ctrl + D 往下匹配选中内容
-
Alt + F3 匹配全文选中内容
-
Ctrl + F 全文查找
-
Ctrl + Shift + F 多文件查找
-
Ctrl + Shift + L 光标移动到选中部分每一行的行尾
-
Ctrl + G 跳转至某一行
-
Ctrl + P 跳转至某一页面
-
Ctrl + W 关闭当前页面
-
Ctrl + Q 关闭应用
-
Ctrl + S 保存
-
Alt + F4 关闭应用
-
Ctrl + R 跳转至当前文章的某一部分
-
Ctrl + A 全部选中
-
Ctrl + Z 撤销上一步
-
Ctrl + Y 取消撤销
-
Ctrl + B 运行程序
-
Ctrl + H 查找并替换
-
Esc 关闭运行窗口
-
Ctrl + X 剪贴
-
Ctrl + ` 打开python命令行
-
Tab 缩进
-
Shift + Tab 去除缩进
-
Ctrl + L 选择整行
-
Ctrl + / 注释选中的部分
-
Alt + Shift + N 分屏
-
F11 全屏模式
-
Shift + F11 免打扰模式
-
Ctrl + K + B 打开或关闭侧边栏
-
Ctrl + K + U 将选中部分全部转换为大写
-
Ctrl + K + L 将选中部分全部转换为小写
-
Ctrl + Shift + P :view [Tabs] 打开或关闭 菜单栏,标签栏,导航地图,状态栏,侧边栏。
个人的用户设置
{
"font_face": "Microsoft YaHei",
"font_size": 14,
"highlight_line": true,
"ignored_packages":
[
"Vintage"
],
"tab_size": 4,
"translate_tabs_to_spaces": true,
"trim_trailing_white_space_on_save": true,
"update_check": false
}
使用的插件
BracketHighlighter
ChineseLocalization
Emmet
Evaluate Javascript
Git
GotoDocumentation
JsFormat
JEDI
Package Control
Tag
ConvertToUTF8
ZenCoding
CSS3
WordCount
本文固定链接:https://windard.com/opinion/2015/11/13/CUI
原创文章,转载请注明出处:CUI--command user interface By Windard