linux命令sed
Java quickstart
java quickstart
在开始学习java语言之前,先了解Java的一些特性:
- 简单:语言简单,方便掌握语言特性,快速展开工作。
- 面向对象: 面向对象的编程模型。
- 分布式:支持分布式网络环境运行。
- 健壮:java的目的是创建可靠的软件,提供了编译时检查,运行时检查。通过GC简化开发自己对内存的管理。
- 安全:通过在语言和运行时系统中设计的安全功能,Java技术使您可以构建无法从外部入侵的应用程序。
- 体系结构中立,可移植:Java技术旨在支持将部署到异构网络环境中的应用程序。在这样的环境中,应用程序必须能够在各种硬件体系结构上执行。字节码是一种中立的体系结构,是将代码有效地传输到多个硬件和软件平台的中间格式。此外Java通过严格定义基本语言,将可移植性进一步提高了。
- 解释型:解释和运行系统已经被移植在任何机器上,Java解释器可以直接执行Java字节码。
- 高性能:Java解释器可以全速运行而无需检查运行时环境,从而实现了卓越的性能。自动垃圾收集器运行作为一个低优先级后台线程,确保大概率下的更好的性能和内存可用。
- 多线程:Java多线程功能提供了构建具有许多并发活动线程的应用程序的方法。因此,多线程为最终用户带来了高度的交互性。Java平台通过添加复杂的同步原语来支持语言级别的多线程:语言库提供了 Thread类,运行时系统提供了监视和条件锁定原语。此外还有高层级的库api提供同步功能
- 动态:Java编译器在编译时静态检查方面非常严格,而语言和运行时系统在其链接阶段是 动态的。类仅在需要时链接。新的代码模块可以按需链接到各种来源,甚至可以来自网络上的各种来源。
James Gosling和Henry McGilton撰写的白皮书 The Java Language Environment中解释了上述每个流行词 。
Java开发过程:
- 首先将所有源代码编写为以.java扩展名结尾的纯文本文件。
- 然后,将这些源文件由javac编译器编译为.class文件。
- .class文件中是Java虚拟机的机器语言(字节码)。然后,Java虚拟机实例运行java应用程序。
Java平台包含两个组件:Java虚拟机和Java应用程序编程接口(API).虚拟机用于执行java程序,sdk 提供了系统库和部分高级API库。
shell命令集合
shell命令集合
收集了一些工作中常用的shell命令的使用
MACOS 使用 GNU 工具
Mac OS X自带的sed等命令行工具是基于BSD的,有一些缺陷和不足,可以安装gnu命令行工具来替代Mac自带的这些常用工具。
preinstall
在安装GNU工具前,确保mac 已安装 HomeBrew,安装方法见链接。
install
- 首先安装最重要的--GNU Coreutils
GNU Coreutils包含了UNIX最基本的命令,如ls,cat等。
1 | $ brew install coreutils |
为了使用默认工具名字,例如使用 ls 而不是 gls 来执行ls命令。需要在bashrc或zshrc配置文件中加上下面这段配置。
1 | if brew list --formula | grep coreutils > /dev/null ; then |
- 其他命令
1 | brew install binutils |
帮助命令
man
Linux man中的man就是manual的缩写,用来查看系统中自带的各种参考手册,但是手册页分为好几个部分,如下所示:
- 1 Executable programs or shell commands
- 2 System calls (functions provided by the kernel)
- 3 Library calls (functions within program libraries)
- 4 Special files (usually found in /dev)
- 5 File formats and conventions eg /etc/passwd
- 6 Games
- 7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)
- 8 System administration commands (usually only for root)
- 9 Kernel routines [Non standard]
在shell中输入man+数字+命令/函数即可以查到相关的命令和函数。若不加数字,那Linux man命令默认从数字较小的手册中寻找相关命令和函数。
例如:我们输入man ls,它会在最左上角显示LS(1)
,在这里,LS
表示手册名称,而(1)
表示该手册位于第一节章,同样,我们输入man ifconfig
它会在最左上角显示IFCONFIG(8)
。man是按照手册的章节号的顺序进行搜索的,比如:man sleep,只会显示sleep命令的手册,如果想查看库函数sleep,就要输入:man 3 sleep
whatis
可以使用whatis命令是用于查询一个命令执行什么功能,并将查询结果打印到终端上。
1 | [root@nfs-server ~]#whatis cd |
tldr
tldr=Too Long; Didn't Read
,它简化了烦琐的man指令帮助文档,仅列出常用的该指令的使用方法。相比较man给出完整的帮助文档而言,大多数情况下,给出几个指令的使用demo可能正是我们想要的。tldr会在本地存储文档库,所以需要安装到本地。有多种客户端,例如python,node。mac用户可以直接用brew install tldr
安装。
使用方法: tldr [command]
,例如 tldr tar
cht.sh
cht.sh是在线版的TLDR+Cheat,此外,还支持了多种编程语言。
1 | # 安装cht.sh 客户端脚本 |
使用例子:
1 | # 命令 |
常用命令
工具
Polysh
Polysh 是一个交互式命令,可以在一台服务器上批量的对一批服务器进行处理,运行交互式命令。
1 | wget http://guichaz.free.fr/polysh/files/polysh-0.4.tar.gz |
新版维护在github上https://github.com/innogames/polysh
Id
id命令用于显示用户的ID,以及所属群组的ID。id会显示用户以及所属群组的实际与有效ID。若两个ID相同,则仅显示实际ID。若仅指定用户名称,则显示目前用户的ID。
1 | # 显示当前用户 ID (UID), group ID (GID) and groups |
numfmt
numfmt用于数字和可阅读的形式的相互转换。
1 | # 数字转可读形式 |
thefuck
ubuntu安装:
1 | sudo apt update |
macos安装:
1 | brew install thefuck |
trash-cli
1 | # ubuntu |
给 rm 设置一个别名来不使用它
1 | alias rm='trash-put' |
如果你真的要用 rm,那就在 rm 前加上斜杠来取消别名:
1 | \rm file-without-hope |
sdk manager
sdk manager,一般都支持安装,删除,切换sdk。
pyenv
python sdk manager。
1 | # ubuntu |
修改.zshrc
:
1 | export PYENV_ROOT="$HOME/.pyenv" |
sdkman
java,scala 系列的sdk manager。
1 | curl -s "https://get.sdkman.io" | bash |
修改.zshrc
:
1 | #THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!! |
nvm
node sdk manager。
1 | # ubuntu |
修改.zshrc
:
1 | export NVM_DIR="$HOME/.nvm" |
Hexo Next tag插件
My Effective Git
My Effective Git
git 配置
设置用户名和密码
1 | git config --global user.name "xxx" |
查看配置和所在文件
1 | git config --list --show-origin |
远程分支绑定
使用git在本地新建一个分支后,需要做远程分支关联。如果没有关联,在执行git pull, git push操作时就需要指定对应的远程分支。
1 | git branch --set-upstream-to=[remote_repo]/[remote_branch] [local_branch] |
git 显示中文
1 | git config --global core.quotepath false |
.gitignore
在工作区根目录下创建“.gitignore”文件,文件中配置不需要进行版本管理的文件、文件夹。“.gitignore”文件本身是被纳入版本管理的,可以共享。有如下规则:
#
开头为注释。- 可以使用Linux通配符。
- 星号(*)代表任意多个字符,
- 问号(?)代表一个字符,
- 方括号([abc])代表可选字符范围,
- 大括号({string1,string2,…})代表可选的字符串等。
- 感叹号(!)开头:表示例外规则,将不被忽略。
- 路径分隔符(/xxx)开头:,表示要忽略根目录下的文件xxx。
- 路径分隔符(xxx/)结尾:,表示要忽略文件夹xxx下面的所有文件。
常见gitignore 配置: https://github.com/github/gitignore
git 命令
查看变更
1 | #简洁模式查看本地仓库状态 |
My Effective Zsh
My Effective Zsh
Zsh是比Bash更好用的Shell。
zsh
install
macos 可以使用 HomeBrew安装Zsh
1 | brew install zsh |
ubuntu 可以使用 apt安装Zsh
1 | sudo apt install zsh |
切换默认shell
在macos中切换默认shell:
1 | echo $SHELL |
如果遇到 chsh: /usr/local/bin/zsh: non-standard shell
问题,可以修改 /etc/shells
,在文件中添加一行/usr/local/bin/zsh
。
linux的操作和macos类似
ohmyzsh
ohmyzsh是zsh的管理工具。
install
使用安装脚本,安装ohmyzsh。
1 | sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" |
内置插件开启
1 | # .zshrc |
tweak
history显示时间
1 | # .zshrc |
git 项目打开慢
Oh My Zsh 为终端增加了自动跟踪 git 仓库变化的能力,其实是在检测到当前目录是在 git 管理的目录中时,执行了一系列的操作来获取到变化。但是往往会导致终端长时间无响应,或卡顿。
1 | #通过设置标识关闭 dirty 检查 |
第三方插件
1 | plugins=( |
zsh-history-substring-search
安装插件
1 | git clone https://github.com/zsh-users/zsh-history-substring-search ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-history-substring-search |
激活插件
1 | plugins=( [plugins...] history-substring-search) |
通过cat -v
命令查看上下键的符号表示,然后绑定键位:
1 | bindkey '^[[A' history-substring-search-up |
使用:
- 键入任何先前命令的任何部分
- 使用刚才绑定的键上下翻找目标命令
control
+u
终止搜索
fzf
1 | # ubuntu |
- CTRL-T -将选定的文件和目录粘贴到命令行上
- CTRL-R -从历史记录中将所选命令粘贴到命令行上
- ALT-C -进入所选目录
fzf-tab-completion
在使用tab键补齐时,使用fzf查找。
在macos上还需要安装依赖:
1 | brew install gawk grep |
安装插件:
1 | git clone https://github.com/lincheney/fzf-tab-completion.git ${ZSH_CUSTOM:=~/.oh-my-zsh/custom}/plugins/fzf-tab-completion |
zsh-syntax-highlighting
zsh 语法高亮
1 | git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting |
zsh-autosuggestions
zsh基于历史和补齐的推荐。
1 | git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions |
git open
在浏览器中打开git项目
1 | git clone https://github.com/paulirish/git-open.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/git-open |
zsh-completion
zsh补齐扩展。
1 | git clone https://github.com/zsh-users/zsh-completions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-completions |
shell 配置
iterm2 集成
参考iterm2官方文档安装下载脚本。
1 | # zsh |
然后在.zshrc中增加配置:
1 | test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell_integration.zsh" || true |
only for macos
proxy alias 设置
1 | proxy="127.0.0.1:7890" |