samonxian / common-usage Goto Github PK
View Code? Open in Web Editor NEW一些常用知识、命令等的记录,好记忆不如烂笔头啊
一些常用知识、命令等的记录,好记忆不如烂笔头啊
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'
为了方便使用,可以设置 git alias
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'"
vim ~/.ssh/config
host test1
# 用户名
user lcpub
# 主机
hostname 10.201.5.34
# 端口
port 22
# 私钥
identityfile ~/.ssh/id_rsa
如果没有上传公钥到指定服务器,那么私钥无效,需要输入密码,密码无法配置的。
vim --version | grep "clipboard"
clipboard
前面有一个小小的减号(-clipboard
,会标红),说明不支持。
vim-gnome
,或者重新编译 vimsudo apt-get install vim-gnome
如果报错了,安装提示更新下 apt-get update
,然后重新运行之前的安装命令。
安装完后运行
vim --version | grep "clipboard"
发现支持了 clipboard
就可以了。
~/.vimrc
set clipboard+=unnamed
如果你使用的是 windows wsl 那么无效,linux 子系统默认不跟 windows 的剪贴板共享。
ctrl+v
进入多行编辑模式,其他移动命令不变,然后 r
进入编辑模式,如果想取消按 esc
。
:[range]s/pattern/string/[c,e,g,i]5.1
参数 | 说明 |
---|---|
range | 指的是范围,1,7 指从第一行至第七行,1,$ 指从第一行至最后一行,也就是整篇文章,也可以 % 代表。% 是目前编辑的文章,# 是前一次编辑的文章。 |
pattern | 就是要被替换掉的字串,可以用 regexp 来表示。 |
string | 将 pattern 由 string 所取代。 |
c | confirm,每次替换前会询问。 |
e | 不提示 error。 |
g | global,不询问,全局替换。 |
i | ignore 不分大小写。 |
:s/vivian/sky/ 替换当前行第一个 vivian 为 sky
:s/vivian/sky/g 替换当前行所有 vivian 为 sky
:n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky
:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
n 为数字,若 n 为 .,表示从当前行开始到最后一行
:%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky
:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky
vim ~/.vimrc
然后在 .vimrc
加上这句话 set term=screen-256color
。
查看远程分支
git branch -a
删除远程分支
git push origin xxx --delete
set -g prefix C-u #
unbind C-b # C-b即Ctrl+b键,unbind意味着解除绑定
bind C-u send-prefix # 绑定Ctrl+x为新的指令前缀
# 从tmux v1.6版起,支持设置第二个指令前缀
#set-option -g prefix2 ` # 设置一个不常用的`键作为指令前缀,按键更快些
# 绑定快捷键为r
bind r source-file ~/.tmux.conf \; display-message "Config reloaded.."
unbind '"'
bind - splitw -v -c '#{pane_current_path}' # 垂直方向新增面板,默认进入当前目录
unbind '%'
bind \ splitw -h -c '#{pane_current_path}' # 水平方向新增面板,默认进入当前目录
set -g mouse on # 开启鼠标功能
# 绑定hjkl键为面板切换的上下左右键
bind -r k select-pane -U # 绑定k为↑
bind -r j select-pane -D # 绑定j为↓
bind -r h select-pane -L # 绑定h为←
bind -r l select-pane -R # 绑定l为→
# 绑定Ctrl+hjkl键为面板上下左右调整边缘的快捷指令
bind -r ^k resizep -U 10 # 绑定Ctrl+k为往↑调整面板边缘10个单元格
bind -r ^j resizep -D 10 # 绑定Ctrl+j为往↓调整面板边缘10个单元格
bind -r ^h resizep -L 10 # 绑定Ctrl+h为往←调整面板边缘10个单元格
bind -r ^l resizep -R 10 # 绑定Ctrl+l为往→调整面板边缘10个单元格
详细文章请看 tmux 灵活的配置性。
docker images # 查看所有镜像
docker ps -a # 查看所有containers信息
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1cca4e6667b4 mytensorflow "bash" 2 minutes ago Up 2 minutes 6006/tcp, 8888/tcp wonderful_jang
docker rm container_id # 删除容器
docker rmi image_id # 删除镜像
docker commit <CONTAIN-ID> <IMAGE-NAME> #命令把一个正在运行的容器保存为镜像
docker save IMage_id > /f/image_x.tar # 再把镜像保存为本地文件
docker load < /f/image_x.tar # 将本地镜像文件加载
docker tag IMAGEID(镜像id) REPOSITORY:TAG(仓库:标签)
docker tag fd507b1fc7ed tensorflow1.5x:latest # 重命名images rep和tag
docker run -it --rm centos6.8 # 运行一个容器在它的进程结束后,立马自动删除
# 获取长Id
docker inspect -f '{{.ID}}' container_id
docker inspect -f '{{.ID}}' NAMES # NAMES 通过docker ps -a 命令获取最后一列
# example : docker inspect -f '{{.ID}}' wonderful_jang
# 拷贝本地文件夹下test.py 到 container的/home 路径下
docker cp test.py 7f0700a3430595c3049ff436a903fe2f323c36bf4b6ae21ec724a6d507c199ef:/home
# 拷贝docker 镜像内文件到本地
docker cp 1dc842b17a5adcf22c8a32ff8cb3cc20288d565e29c645d72fe595a86369b49b:/home/test_images/image2_x.jpg /f/
# 获取容器名称及Ip地址
docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq) # ip访问不了
docker-machine ip # 可以访问
# 通过DockerFile 创建镜像, -t 指定镜像名
docker build -t imagename ./dockerfolder # 不指定Dokerfile路径,而是/path/to/your/Dockerfile
find <指定目录> <指定条件> <指定动作>
find . -name 'my*'
搜索当前目录(含子目录,以下同)中,所有文件名以my开头的文件。
find . -name 'my*' -ls
搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息。
locate 命令其实是 find -name
的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。
但较差劲的是 locate 所找到的档案若是最近才建立或 刚更名的,可能会找不到,在内定值中,updatedb每天会跑一次,可以由修改crontab来更新设定值 (etc/crontab),如下我的配置:
# 每天 23:30 分更新 locate 数据库
30 23 * * * root updatedb -U /mnt/f
# 每天 23:40 分更新 locate 数据库
18 40 23 * * * root updatedb -U /mnt/c/Users/Samo
也可以手动更新:
updatedb -U /mnt/f
updatedb -U /mnt/c/Users/Samo
locate /etc/sh
搜索etc目录下所有以sh开头的文件。
locate ~/m
搜索用户主目录下,所有以m开头的文件。
locate -i ~/m
搜索用户主目录下,所有以m开头的文件,并且忽略大小写。
首先我们需要了解数字如何表示权限。 首先,我们规定 数字 4 、2 和 1表示读、写、执行权限,即 r=4,w=2,x=1 。
rwx = 4 + 2 + 1 = 7
rw- = 4 + 2 + 0 = 6
r-x = 4 + 0 +1 = 5
若要同时设置 rwx (可读写运行) 权限则将该权限位 设置 为 4 + 2 + 1 = 7
若要同时设置 rw- (可读写不可运行)权限则将该权限位 设置 为 4 + 2 = 6
若要同时设置 r-x (可读可运行不可写)权限则将该权限位 设置 为 4 +1 = 5
ls -l
可以看到如下结构的信息
drwxrwxrwx 1 root root 4096 Jul 12 13:44 文件夹
-rwxrwxrwx 1 root root 4096 Jul 12 13:44 文件
lrwxrwxrwx 1 root root 4096 Jul 12 13:44 符号连接(即快捷方式)
drwxrwxrwx
结构由四部分组成 文件类型+用户权限+群组权限+其他用户权限
第一位代码的意义
d代表的是目录(directroy)
-代表的是文件(regular file)
s代表的是套字文件(socket)
p代表的管道文件(pipe)或命名管道文件(named pipe)
l代表的是符号链接文件(symbolic link)
b代表的是该文件是面向块的设备文件(block-oriented device file)
c代表的是该文件是面向字符的设备文件(charcter-oriented device file)
权限码值
-rw------- (600) 只有拥有者有读写权限。
-rw-r--r-- (644) 只有拥有者有读写权限;而属组用户和其他用户只有读权限。
-rwx------ (700) 只有拥有者有读、写、执行权限。
-rwxr-xr-xr (755) 拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限。
-rwx--x--x (711) 拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限。
-rw-rw-rw- (666) 所有用户都有文件读、写权限。
-rwxrwxrwx (777) 所有用户都有读、写、执行权限。
chmod [可选项] <mode> <file...>
最方便就是直接使用数字设置权限
chmod 777 file # chmod xxx file
详细可以看这篇文章 https://blog.csdn.net/u013197629/article/details/73608613
git config --global core.autocrlf true
git config --global core.autocrlf input
git config --global core.autocrlf false
git rebase -i [startpoint] [endpoint]
其中 -i 的意思是 --interactive,即弹出交互式的界面让用户编辑完成合并操作,[startpoint] [endpoint]则指定了一个编辑区间,如果不指定[endpoint],则该区间的终点默认是当前分支HEAD所指向的commit(注:该区间指定的是一个前开后闭的区间)。 在查看到了log日志后,我们运行以下命令。
pick:保留该commit(缩写:p)
reword:保留该commit,但我需要修改该commit的注释(缩写:r)
edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)
squash:将该commit和前一个commit合并(缩写:s)
fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)
exec:执行shell命令(缩写:x)
drop:我要丢弃该commit(缩写:d)
合并的 commit 需要修改为 squash
,默认都为 pick
,需要保留一个 最早的 pick
commit 作为合并目标 commit。
alter TABLE pecker.mp_drilldown_day add column cost double precision default random()*10;
如果使用的是 zsh,设置如下
npm completion >> ~/.zshrc # 相当于在 ./zshrc 文件末尾追加一些补全配置
source ~/.zshrc
如果使用的是 bash,设置如下
npm completion >> ~/.bashrc # 相当于在 ./bashrc 文件末尾追加一些补全配置
source ~/.bashrc
查看 top 10 内存消耗进程
ps aux | sort -k4nr |head -n 10
查看内存占用 和 CPU 占用 排序
top
然后按 M
。
ssh-keygen
运行命令不断回车即可,然后公钥在 ~/.ssh/id_rsa.pub
,私钥在 ~/.ssh/id_rsa
ls 颜色设置一个在实际使用中一个比较困扰我的问题是在bash on windows这边,使用ls显示的目录大都有很难看的底色;而对于正常的linux环境下,则没有这个问题;
这个的原因其实是因为windows的目录在linux这边的权限不同,导致windows的目录在ls的默认颜色中就应该有那种底色;所以只要修改环境变量$LS_COLORS
就可以了
具体的不同:在windows下,目录都是ow
,即Directory that is other-writable (o+w) and not sticky
;而正常linux系统下的目录都是di
默认的$LS_COLORS
如下:
rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:
可以看到其中ow
的配色是34;42
,其中那个42就是指定颜色的底色的意思,我们只要在配置中删掉它就可以啦~修改方式,还是在~/.bashrc
文件里加上相关设置,把它放到开头,然后执行source命令就可以了=,=我的修改示例:
# for ls colorsLS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=01;34:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:"export LS_COLORS
样式:
00 — Normal (no color, no bold)
01 — Bold //粗体
文字颜色
30 — Black //黑色
31 — Red //红色
32 — Green //绿色
33 — Yellow //黄色
34 — Blue //蓝色
35 — Magenta //洋红色
36 — Cyan //蓝绿色
37 — White //白色
背景颜色
40 — Black
41 — Red
42 — Green
43 — Yellow
44 — Blue
45 — Magenta
46 — Cyan
47 – White
白色: 表示普通文件
蓝色: 表示目录
绿色: 表示可执行文件
红色: 表示压缩文件
蓝绿色: 链接文件
红色闪烁:表示链接的文件有问题
黄色: 表示设备文件
灰色: 表示其他文件
git credential-manager uninstall
alter table table_name(表名) rename 字段名 to 新字段名
ssh-copy-id user@host
运行上面的命令(user 和 host 根据实际情况填写),用户需要有足够权限,而且开启了 ssh 公钥功能,那么上传后就可以生效了。
ssh user@host
即可连接上服务器。
为了更方便,可以使用 ssh alias。
在默认设置下,中文文件名在工作区状态输出,查看历史更改概要,以及在补丁文件中,文件名的中文不能正确地显示,而是显示为八进制的字符编码,示例如下:
JavaScript \347\261\273\345\236\213\350\275\254\346\215\242\346\216\242\347\264\242.md
通过将Git配置变量 core.quotepath 设置为false,就可以解决中文文件名称在这些Git命令输出中的显示问题
git config --global core.quotepath false
运行上面的命令,.gitconfig 就会被设置为如下:
[core]
quotepath = false
ALTER TABLE pecker.mp_cost_analysis_ratio_day SET SCHEMA public2;
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.