zsh简介
- 官网:Zsh
- Zsh 属于 Shell 的一种,和 Bash 一样,但比 Bash 更好用,Zsh 完全兼容 Bash,拥有极其丰富的插件,其强大的自动补全参数、文件名以及自定义功能,可以大大提高我们使用 Linux 的效率。
-
查看 Linux 支持哪些 shell
cat /etc/shells
查看 Linux 当前使用 shell
echo $SHELL
Bash简介
bash(GNU Bourne-Again Shell)是最常用的一种shell,是当前大多数Linux发行版的默认Shell。
Shell简介
shell是一个命令语言解释器,是用户和Linux内核之间的运行在终端中的文本互动接口程序。
Shell相当于是一个翻译,把我们在计算机上的操作或我们的命令,翻译为计算机可识别的二进制命令,传递给内核,以便调用计算机硬件执行相关的操作;同时,计算机执行完命令后,再通过Shell翻译成自然语言,呈现在我们面前;
当用户成功登入系统后shell就启动了,并始终作为你与系统内核的交互手段直至你退出系统;
其他的shell还有:sh、bash、zsh、ksh、rsh、csh等。
shell命令可以分为以下三类:
- 内建函数(built-in function):shell自带的功能
- 可执行文件(executable file):保存在shell之外的脚本,提供了额外的功能。
- 别名(alias):给某个命令的简称
vim 简介
- 官网:welcome home : vim online
- Vim是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
Vim其实是vi的功能增强版,vim = vi + IMproved。.vimrc文件为Vim的配置文件,默认在home目录下,相关配置可见文件描述;
zsh 与 vim 基本配置
1.安装zsh和vim,安装后对zsh和vim进行配置使用;如下复制安装好的目录到home根目录
2.执行配置文件替换
./LINUX_TOOL/install.sh
脚本配置如下:
# 为原来文件备份
mv $HOME/.vim $HOME/.vim_backup
mv $HOME/.vimrc $HOME/.vimrc_backup
mv $HOME/.oh-my-zsh $HOME/.oh-my-zsh_backup
mv $HOME/.zshrc $HOME/.zshrc_backup
mv $HOME/.tmux.conf $HOME/.tmux.conf_backup
# 在$HOME下创建快捷方式
tool_path=$(cd "$(dirname "$0")"; pwd)
ln -s $tool_path/vim/.vim $HOME/
ln -s $tool_path/vim/.vimrc $HOME/
ln -s $tool_path/zsh/.oh-my-zsh $HOME/
ln -s $tool_path/zsh/.zshrc $HOME/
ln -s $tool_path/zsh/.tmux $HOME/
ln -s $tool_path/zsh/.tmux/.tmux.conf $HOME/
# 在$HOME下创建tmux工作区间保存目录
rm -rf $HOME/.tmux_workspace_save
mkdir $HOME/.tmux_workspace_save
# 在$HOME下创建undo历史保存目录
rm -rf $HOME/.undo_history
mkdir $HOME/.undo_history
#自动安装zshell autojump插件
python $HOME/.oh-my-zsh/custom/plugins/autojump/install.py
3. Zsh主题应用(根据个人喜好)
source ~/.zshrc
zsh使用介绍
主题切换
不同的主题可以自行切换。甚至可以将 ZSH_THEME 的值写为 random 。这样每次打开都会是一款随机主题,总有一个适合你。
//显示当前主题名
echo $ZSH_THEME
自动补全
虽然 Bash 下,tab 是一个好用的命令补全键,但 oh-my-zsh 提供了更加强大的命令补全工具,很多时候,只需要输入一条命令,然后按 tab,oh-my-zsh 就可以自动给你补全该条命令其他的参数。
也可以使用 alias 命令设置别名(.zshrc中加入)。
示例:
alias vi="vim"
alias s="source ~/.zshrc"
目录穿越
我们经常会遇到这样一个场景:先进入一个很深的目录,然后又换到另一个目录下的,如果要返回之前的某个目录,通常我们会使用 cd - 返回最近一次目录,或者使用 history 去查找更早之前的目录,不过 oh-my-zsh 给我们提供了强大的 d 命令,有了它,可以简化以上步骤。
d 命令会列出我们最近进入的目录历史,并且会给这些目录加上序号,只需要输入对应目录的序号,即可重新进入该目录,如下图所示,d 命令列出了我最近进入的几个目录,其中序号为 2 的目录是我的 LINUX_TOOL目录,直接输入 2,立马跳回到 LINUX_TOOL 所在目录。
也可以使用 hash -d 设置路径别名,进入相应路径只需要 cd ~xxx。
注意:
修改.zshrc配置文件后,需要重新加载( source ~/.zshrc )或重新启动才会生效
Bash Shell使用介绍
基本命令
cd命令: 用于切换当前工作目录。 | cd /home/user1将当前工作目录切换到/home/user1。 cd ../user2:切换到当前目录的上一级目录并进入user2。 cd ./代表当前目录 |
ls命令:用于列出指定目录中的文件和子目录。 | ls /home/user1将列出/home/user1目录下的所有文件和子目录。 ls -l:以详细列表的方式显示目录内容。 ls -a:显示全部文件,包括隐藏文件。 ls -h:以人类可读的格式显示文件大小。 |
cp命令:用于复制文件或目录。 | cp file1 file2将文件file1复制为file2。 cp -r dir1 dir2将目录dir1及其内容复制到dir2。 |
mv命令:用于移动或重命名文件或目录。 | mv file1 file2将文件file1移动到file2。 mv file1 dir1将文件file1移动到目录dir1中。 |
rm命令:用于删除文件或目录。 | rm file1将删除文件file1。 rm -r dir1将删除目录dir1及其内容。 rm -f dir2:强制删除文件,不进行确认。 rm file1?前缀一个字符的被删除 rm file1*删除匹配的 rm -r dir? rm -rf* 删除目录下所有文件 |
mkdir命令:用于创建目录。 | mkdir dir1将创建一个名为dir1的目录。 |
touch命令:用于创建空文件或更改文件的时间戳。 | touch file1将创建一个名为file1的空文件。 touch -t 202012310000.00 file1将更改文件file1的时间戳为2020年12月31日00:00。 |
cat命令:用于查看或连接文件。 | cat file1将查看文件file1的内容。 cat file1 file2 > file3将文件file1和file2的内容连接起来,并将结果保存到file3。 |
less命令:用于查看文件内容,并提供翻页浏览功能。 | less file1将以交互方式查看文件file1的内容。 |
echo命令:用于向终端输出文本。 | echo “Hello World!”将输出Hello World!到终端。 |
pwd:显示当前工作目录的路径。echo $HOME主目录 | pwd:显示当前工作目录的路径。echo $HOME主目录 |
chmod:chmod命令用于更改文件或目录的权限。 | 它可以接受一个参数,指定要更改权限的文件或目录名。可以使用不同的权限标记来指定要更改的权限。 chmod 777 file_name:将文件的权限设置为rwxrwxrwx(读r 写w 执行x)。 |
chown:修改文件所有者。 | chown owner_name file_name:将文件的所有者修改为owner_name。 |
du:查看文件或目录的磁盘使用情况。 | du -h file_name:以人类可读的方式显示文件大小。 |
history 命令 clear 清屏 | history命令用于显示最近执行过的命令历史记录。它不需要参数,并且会打印出所有先前执行过的命令。 |
tar 归档命令 | tar -czvf xxx.gz dir4 dir5 file* 压缩 tar -zxvf xxx.gz 解压缩 解压缩到指定目录:tar -zxvf xxx.gz -C /root |
ifconfig 查看IP | ifconfig eth0 192.168.1.123修改IP ping www,baidu.com |
系统用户相关命令
- su - root 普通超级
- su - xxx 超级普通
- useradd XXX 增加用户
- passwd 密码
- who 查看用户
- userdel xxx 注销才能删除
- ps - aux 显示打开的进程,相当于任务管理器
- uptime 显示系统运行时间
- shutdown -r now 重启系统
- shutdown -h now 关机
批量处理命令
1. grep命令:用于在文件中查找指定模式的字符串。
示例:grep “pattern” file1将在文件file1中查找包含指定模式的字符串。
grep “pattern” file.txt
2. sed命令:用于根据指定规则对文件进行文本替换。
示例:sed ‘s/pattern/replace/g’ file1将文件file1中的pattern字符串替换为replace字符串。
3. awk命令:用于以指定规则对文件进行流式处理。
示例:awk ‘{print $1}’ file1将输出文件file1中每行的第一个字段。
4. find:根据特定条件查找文件。
find /path/to/dir -name “file_name”:在指定目录中查找名为”file_name”的文件。
find / -name file1根目录查找
find ./ -name file1\?;
find ./ -name file1\*;
find ./ -name \*file\*中间相同
find ./ -name file1\*;
find ./ -name \*file后缀相同
管道和重定向
1. 管道:通过管道符(|)将一个命令的输出作为另一个命令的输入。
示例:command1 | command2将command1的输出作为command2的输入。
2. 重定向:用于将命令的输入或输出重定向到文件。
示例:command > file1将命令的输出重定向到文件file1。
command < file1将命令的输入重定向为文件file1。
条件判断和循环
1. 条件判断:通过if语句进行条件判断。
示例:
if [ condition ];
then command1
elif [ condition ];
then
command2
else
command3
fi
2. 循环:通过for和while语句进行循环操作。
示例:
for var in list;
do command1
$var done
while [ condition ];
do command1
done
脚本编写
1. 创建脚本:用文本编辑器创建一个扩展名为.sh的文件。
示例:vi script.sh
2. 添加执行权限:使用chmod命令为脚本文件添加执行权限。
示例:chmod +x script.sh
3. 编写脚本内容:在脚本文件中编写要执行的命令和逻辑。
示例:
#!/bin/bash
echo "Hello World!"
4. 运行脚本:使用./命令运行脚本文件。
示例:./script.sh将执行脚本内容并输出Hello World!到终端。
vim使用介绍
vim工作模式
1 . 命令模式(command Mode):
用户刚刚启动vi/vim,便进入了命令模式。此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下 i ,并不会输入一个字符, i 被当作了一个命令。
以下是常用的几个命令:
命令 | 说明 |
---|---|
i | 切换到输入模式,以输入字符 |
x | 删除当前光标所在处的字符 |
: | 切换到底线命令模式,以在最底一行输入命令 |
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
2 . 输入模式(Insert Mode)
在命令模式下按下 i 就进入了输入模式。在输入模式中可进行文本的编辑。按ESC回到命令模式。
3 . 底线命令模式(Last Line Mode)
在命令模式下按下 : (英文冒号)就进入了底线命令模式。底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。在底线命令模式中,常用命令如下,按ESC键可随时退出底线命令模式。
命令 | 说明 |
---|---|
:q | 退出 |
:w | 保存 |
:wq | 保存退出 |
:q! | 强制退出,不保存修改的内容 |
vim基本操作
编辑操作
(1)基本使用如下
(2)其它操作说明
- 使用鼠标滚动复制:
:set mouse=a 打开鼠标功能
:set mouse-=a 关闭鼠标功能
:set nonu 如果要复制多行而不使用行号禁用数字:
:set nu 则可以在复制完成后重新启用它们
-
全部复制:按esc键后,先按gg,然后ggyG;
-
单行复制:yy; 复制到单词尾yw; 复制到行尾y$; 复制到行首y^
-
撤销:u ;恢复撤销:ctrl+r ;跳转后执行回退:ctrl+o;前进ctrl+i
-
按V,按上下左右箭头,选中块进行复制删除
-
直接按delete:从左删除到右的一个一个字符
-
不用输入模式:shift+d 从右到左一个一个字符删除;
-
全部删除:按esc键后,先按gg(到达顶部),然后dG
-
单行删除:dd; 删除到单词尾dw; 删除到行尾d$; 删除到行首d^
-
mm 为//注释
-
:set paste #进入全格式粘贴模式,shift+insert全格式粘贴 :set nopaste #取消全格式粘贴模式
移动光标
(1)基本使用如下
(2)其它操作说明
- 光标所在的窗口切换
光标在左侧树形目录:ctrl+w+h
光标在右侧窗口显示:ctrl+w+l
光标左右切换 :ctrl+w+w
树显示左右切换 :ctrl+w+r
查找和搜索
(1)基本使用如下
(2)其它操作说明
- grep介绍,如果你想在当前目录下 查找"hello,world!"字符串,可以这样:
grep -rn "hello,world!" *
- 全局搜索文件的字符串:cscope find t xxx
- ctrl+f 按ctrl+j 和ctrl+k上下选择文件
- 查找函数:|+f+s |+f+t |+f+c
替换
(1)基本使用如下
(2)其它操作说明
- vim 中可用 :s 命令来替换字符串,具体如下:
:s/str1/str2/ 替换当前行第一个 str1 为 str2
:s/str1/str2/g 替换当前行中所有 str1 为 str2
:m,ns/str1/str2/ 替换第 n 行开始到最后一行中每一行的第一个 str1 为 str2
:m,ns/str1/str2/g 替换第 n 行开始到最后一行中所有的 str1 为 str2
(注:m和n 为数字,若m为 .,表示为当前行开始;若n为$,则表示到最后一行结束)如果使用 # 作为分隔符,则中间出现的 / 不会作为分隔符,比如:
:s#str1/#str2/# 替换当前行第一个 str1/ 为 str2/
:%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/
:%s/str1/str2/(等同于 :g/str1/s//str2/) 替换每一行的第一个 str1 为 str2
:%s/str1/str2/g(等同于 :g/str1/s//str2/g 和 :1,$ s/str1/str2/g ) 替换文中所有 str1 为 str2从替换命令可以看到,g 放在命令末尾,表示对搜索字符串的每次出现进行替换;不加 g,表示只对搜索
窗口操作
(1)基本使用如下
(2)其它操作说明
- 上下分窗口:sp;左右分窗口:vsp;关闭:close
- .窗口左边显示函数名:tl:关闭再tl
可视操作
(1)基本使用如下
(2)其它操作说明
跳转声明
(1)基本使用如下
(2)其它操作说明
- 打开头文件:光标放置头文件出,按|+F+F
- 跳转到文件行首:gg;跳转到行末shift+g
挂起操作
(1)基本使用如下
(2)其它操作说明
鼠标操作
(1)基本使用如下
(2)其它操作说明
编译
(1)基本使用如下
1.编译apps:make
2.清理apps:make clean
3.编译全部libg:make libs
4.清理全部libg:make clean libs
5.编译单独lib:make lib target
6.清理单独1ib:make clean lib target
7.GDB 调试 :make debug
8.组合编译命令:make clean_libs && make clean && make libs && make -j
(2)其它操作说明
环境设置
(1)基本使用如下
(2)其它操作说明
目录与文件操作
- 打开的文件切换:按1,2左右切换;或者按空格进入命令窗口:bn 下一个文件;bp上一个文件;ls列出打开的文件
-
打开目录:o ;跳转当前根目录:p
注意事项
(1)基本使用如下
(2)其它操作说明
常用插件
函数跳转插件:ctags
vim树形目录插件:NERDTree