Skip to content

Z01 命令汇总

[TOC]

Git常用命令

测试jenkins

新建代码库

sh
# 在当前目录新建一个Git代码库
$ git init
# 下载一个项目和它的整个代码历史
$ git clone [url]


# 新建一个目录,将其初始化为Git代码库
$ git init [project-name]

配置

Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。

sh
# 设置提交代码时的用户信息
$ git config [--global] user.name "[name]"
$ git config [--global] user.email "[email address]"


# 显示当前的Git配置
$ git config --list
# 编辑Git配置文件
$ git config -e [--global]

增加/删除文件

sh
# 添加当前目录的所有文件到暂存区
$ git add .


# 添加指定文件到暂存区
$ git add [file1] [file2] ...
# 添加指定目录到暂存区,包括子目录
$ git add [dir]
# 添加每个变化前,都会要求确认
# 对于同一个文件的多处变化,可以实现分次提交
$ git add -p
# 删除工作区文件,并且将这次删除放入暂存区
$ git rm [file1] [file2] ...
# 停止追踪指定文件,但该文件会保留在工作区
$ git rm --cached [file]
# 改名文件,并且将这个改名放入暂存区
$ git mv [file-original] [file-renamed]

代码提交

sh
# 提交暂存区到仓库区
$ git commit -m [message]
# 提交工作区自上次commit之后的变化,直接到仓库区
$ git commit -a


# 提交暂存区的指定文件到仓库区
$ git commit [file1] [file2] ... -m [message]
# 提交时显示所有diff信息
$ git commit -v
# 使用一次新的commit,替代上一次提交
# 如果代码没有任何新变化,则用来改写上一次commit的提交信息
$ git commit --amend -m [message]
# 重做上一次commit,并包括指定文件的新变化
$ git commit --amend [file1] [file2] ...

分支

sh
# 列出所有本地分支
$ git branch
# 新建一个分支,但依然停留在当前分支
$ git branch [branch-name]
# 新建一个分支,并切换到该分支
$ git checkout -b [branch]
# 切换到指定分支,并更新工作区
$ git checkout [branch-name]
# 合并指定分支到当前分支
$ git merge [branch]
# 删除分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]


# 列出所有远程分支
$ git branch -r
# 列出所有本地分支和远程分支
$ git branch -a
# 新建一个分支,指向指定commit
$ git branch [branch] [commit]
# 新建一个分支,与指定的远程分支建立追踪关系
$ git branch --track [branch] [remote-branch]
# 切换到上一个分支
$ git checkout -
# 建立追踪关系,在现有分支与指定的远程分支之间
$ git branch --set-upstream [branch] [remote-branch]
# 选择一个commit,合并进当前分支
$ git cherry-pick [commit]

标签

sh
# 列出所有tag
$ git tag
# 新建一个tag在当前commit
$ git tag [tag]
# 新建一个tag在指定commit
$ git tag [tag] [commit]
# 删除本地tag
$ git tag -d [tag]
# 删除远程tag
$ git push origin :refs/tags/[tagName]
# 查看tag信息
$ git show [tag]
# 提交指定tag
$ git push [remote] [tag]
# 提交所有tag
$ git push [remote] --tags
# 新建一个分支,指向某个tag
$ git checkout -b [branch] [tag]

查看信息

sh
# 显示有变更的文件
$ git status
# 显示当前分支的版本历史
$ git log
# 显示当前分支的版本历史(简略显示)
$ git log --oneline
# 显示暂存区和工作区的差异
$ git diff
# 显示两次提交之间的差异
$ git diff [first-branch]...[second-branch]


# 显示commit历史,以及每次commit发生变更的文件
$ git log --stat
# 搜索提交历史,根据关键词
$ git log -S [keyword]
# 显示某个commit之后的所有变动,每个commit占据一行
$ git log [tag] HEAD --pretty=format:%s
# 显示某个commit之后的所有变动,其"提交说明"必须符合搜索条件
$ git log [tag] HEAD --grep feature
# 显示某个文件的版本历史,包括文件改名
$ git log --follow [file]
$ git whatchanged [file]
# 显示指定文件相关的每一次diff
$ git log -p [file]
# 显示过去5次提交
$ git log -5 --pretty --oneline
# 显示所有提交过的用户,按提交次数排序
$ git shortlog -sn
# 显示指定文件是什么人在什么时间修改过
$ git blame [file]
# 显示暂存区和上一个commit的差异
$ git diff --cached [file]
# 显示工作区与当前分支最新commit之间的差异
$ git diff HEAD
# 显示今天你写了多少行代码
$ git diff --shortstat "@{0 day ago}"
# 显示某次提交的元数据和内容变化
$ git show [commit]
# 显示某次提交发生变化的文件
$ git show --name-only [commit]
# 显示某次提交时,某个文件的内容
$ git show [commit]:[filename]
# 显示当前分支的最近几次提交
$ git reflog

远程同步

sh
# 下载远程仓库的所有变动
$ git fetch [remote]

# 显示所有远程仓库
$ git remote -v

# 显示某个远程仓库的信息
$ git remote show [remote]

# 增加一个新的远程仓库,并命名
$ git remote add [shortname] [url]

# 删除指定的远程仓库
$ git remote rm [shortname]

# 取回远程仓库的变化,并与本地分支合并
$ git pull [remote] [branch]

# 上传本地指定分支到远程仓库
$ git push [remote] [branch]

# 强行推送当前分支到远程仓库,即使有冲突
$ git push [remote] --force

# 推送所有分支到远程仓库
$ git push [remote] --all

撤销

sh
# 恢复暂存区的指定文件到工作区
$ git checkout [file]

# 恢复某个commit的指定文件到暂存区和工作区
$ git checkout [commit] [file]

# 恢复暂存区的所有文件到工作区
$ git checkout .

# 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
$ git reset [file]

# 重置暂存区与工作区,与上一次commit保持一致
$ git reset --hard

# 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
$ git reset [commit]

# 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
$ git reset --hard [commit]

# 重置当前HEAD为指定commit,但保持暂存区和工作区不变
$ git reset --keep [commit]

# 新建一个commit,用来撤销指定commit
# 后者的所有变化都将被前者抵消,并且应用到当前分支
$ git revert [commit]

# 暂时将未提交的变化移除,稍后再移入
$ git stash
$ git stash pop

其他

sh
# 生成一个可供发布的压缩包
$ git archive

Linux常用命令

查询命令的地址:http://cmd.oldboyedu.com/

网络

ping

ping命令 是一个网络工具,用来测试主机之间网络的连通性。执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。

语法:

sh
ping [选项] <目标主机或IP地址>

[选项]:
	-t			 持续ping,直到手动停止(Ctrl+C)。适用于连续监视网络连接。
	-n <>		指定发送数据包的次数。
	-l <>		指定发送的数据包大小(单位:字节)。
	-4 -6		 强制使用IPv4或IPv6协议进行ping测试。	

<目标主机或IP地址> 	目标主机的域名或IP地址

示例:

sh
ping www.google.com
ping 8.8.8.8
ping -t www.google.com
ping -n 5 www.google.com
ping -l 1000 www.google.com
ping -4 www.google.com

telnet

Telnet命令是一个网络工具,用于通过Telnet协议与远程计算机建立连接。它允许用户在命令行界面下与远程主机进行交互,可以执行远程登录、远程管理和远程测试等操作。

语法:

sh
telnet [选项] <主机名或IP地址> [<端口号>]	

[选项]:
	-l <用户>	指定登录远程主机时使用的用户名。
	-t			  指定Telnet会话进行纯文本模式。

示例:

sh
telnet example.com
telnet example.com 80
telnet -l root example.com 80
telnet -t example.com

systemctl

sh
# systemctl管理服务
# 启动服务
systemctl start 服务名称
# 停止服务
systemctl stop 服务名称
# 重启服务
systemctl restart 服务名称
# 查看状态
systemctl status 服务名称
# 开机自动启动
systemctl enable 服务名称
# 开机不自动启动
systemctl disable 服务名称

关机重启

shutdown

shutdown命令 用于安全地关闭或重新启动系统,并向所有用户发送警告消息。

语法:

sh
shutdown [选项] [时间] [警告]

[选项]:
	-h			  设置关机时间
	-c			  取消预定的关机
	-r			  重新启动系统

[时间]:		  	指定多长时间后关机,单位分钟
	<number>	  number分钟后关机
	now			  立即关机

[警告]:		  	警告消息
	"警告消息"

示例:

sh
shutdown -h +10
shutdown -h 5
shutdown -h now
shutdown -h +5 "系统将在5分钟内关闭,请保存工作并退出。"

shutdown now

shutdown -c

shutdown -r now
shutdown -r +5 "系统将在5分钟后重新启动。"

reboot【

poweroff【

init【

halt【

文件目录

操作

cd

cd命令 用于改变当前工作目录。

语法:

sh
cd [<目录路径>]

常见用法:

sh
cd ./documents 			# 进入相对路径
cd /path/to/directory 	# 进入绝对路径

cd .. 			# 返回上一级目录
cd ~ cd 	    # 直接进入用户home目录
cd - 			# 切换到上一个工作目录

cd $HOME 		# 使用环境变量,$HOME表示当前用户的home目录

注意: 如果目录路径包含空格或特殊字符,应该使用引号括起来

sh
cd "my documents"
pwd

pwd命令 用于显示当前工作目录的路径。

语法:

sh
pwd

常见用法:

sh
# 1. 基本使用
$ pwd
/home/user

# 2. 脚本中的应用
#!/bin/bash
current_dir=$(pwd)
echo "当前工作目录是: $current_dir"
ls

ls命令 用于列出指定目录中的文件和子目录。

语法:

sh
ls [选项] [<指定的目录(s)>]

[选项]:
	-l		详细列出文件和目录的信息,包括权限、所有者、大小、修改日期等。简写:ls -l => ll
	-a		显示所有文件,包括以.开头的隐藏文件(默认情况下不显示以.开头的文件)。
	-d		仅显示目录本身,而不是目录中的内容。
	-h		人类可读格式显示文件大小(如KB、MB)。
	-t		按照修改时间排序列出文件和目录,最近修改的排在前面。
	-r		反向排序,通常与 -t 结合使用,按照修改时间倒序排列。
	-R 		递归列出指定目录及其子目录的内容。

[<指定的目录(s)>]:
	指定的目录,可以是多个目录

示例:

sh
# 1. 基本使用
ls

# 2. 列出指定目录内容
ls /path/to/directory

# 3. 组合使用
ls -lha /path/to/directory

# 4. 用于脚本和命令行
#!/bin/bash
files=$(ls)
num_files=$(echo "$files" | wc -l)
echo "当前目录下有 $num_files 个文件和目录:"
echo "$files"

# 5. 显示多个目录
ls /usr/ /etc/

# 6. 详细信息:权限、所有者、大小和修改日期等
$ ls -l
drwxr-xr-x  2 user user 4096 Aug  7 10:00 Desktop
drwxr-xr-x  3 user user 4096 Jul 30 14:28 Documents

# 7. 显示隐藏文件
$ ls -a
.  ..  .bashrc  Desktop  Documents
cp【
mv【
rm【

目录

mkdir【

文件

touch【
echo【
cat【

用户管理

系统管理

磁盘管理

系统信息

权限管理

chown

chown 命令用于改变文件或目录的所有者(owner)。在Unix和类Unix系统(如Linux)中,每个文件和目录都有一个拥有者和一个所属组。

image-20240721222033087

基本语法

bash
chown [选项] 新所有者[:新组] 文件或目录
  • 新所有者:指定新的所有者用户名或用户ID。
  • 新组:可选项,指定新的所属组。如果未指定,将保持原有的所属组。
  • 文件或目录:指定要修改所有者的文件或目录路径。

常用选项

  • -R, --recursive:递归地修改指定目录及其子目录中所有文件和子目录的所有者。
  • -f, --silent, --quiet:不显示错误信息。
  • --reference=参考文件或目录:使用参考文件或目录的所有者和所属组来修改指定文件或目录的所有者和所属组。

示例用法

  1. 将文件所有者修改为其他用户

    bash
    chown newuser file.txt

    file.txt 的所有者修改为 newuser

  2. 同时修改文件所有者和所属组

    bash
    chown newuser:newgroup file.txt

    file.txt 的所有者修改为 newuser,所属组修改为 newgroup

  3. 递归修改目录及其子目录的所有者

    chown -R newuser:newgroup directory/

    递归地将 directory 及其下所有文件和子目录的所有者修改为 newuser,所属组修改为 newgroup

  4. 参考其他文件的所有者和所属组来修改

    bash
    chown --reference=reference_file target_file

    使用 reference_file 的所有者和所属组来修改 target_file 的所有者和所属组。

注意事项

  • 权限限制:只有超级用户(通常是 root)才能修改文件的所有者和所属组。
  • 安全性:修改文件或目录的所有者和所属组可能影响系统的安全性和运行,应谨慎操作。

chown 命令在管理文件和目录的权限和访问控制时非常有用,但在使用时需要注意不要意外修改系统关键文件的所有者或所属组。

chmod

chmod 命令用于改变文件或目录的权限。在Unix和类Unix系统(如Linux)中,每个文件和目录都有一组权限,用于控制谁可以读取、写入或执行该文件,以及文件所有者、所属组和其他用户的权限设置。

基本语法

bash
chmod [选项] 模式 文件或目录
  • 模式:指定权限的变更方式,可以使用数字形式(如 755)或符号形式(如 u+rwx)。
  • 文件或目录:指定要修改权限的文件或目录路径。

常用选项

  • -R, --recursive:递归地修改指定目录及其子目录中所有文件和子目录的权限。
  • -f, --silent, --quiet:不显示错误信息。
  • --reference=参考文件或目录:使用参考文件或目录的权限来修改指定文件或目录的权限。

模式说明

chmod 命令的模式可以使用两种形式来指定权限变更:

  1. 数字形式
    • 数字权限:使用三位数字表示权限。每位数字表示不同的用户类别(所有者、所属组、其他用户),每个数字的含义如下:
      • 4:读权限(r)
      • 2:写权限(w)
      • 1:执行权限(x)
      • 0:无权限(-)
    • 例如,权限为 rwxr-xr-x 的文件用数字表示为 755
  2. 符号形式
    • 符号权限:使用符号来增加或删除权限。
      • u:所有者(user)
      • g:所属组(group)
      • o:其他用户(others)
      • a:所有用户(all)
      • +:添加权限
      • -:删除权限
      • =:设置权限为指定的值
    • 例如,u+rwx, g+rx, o-w 表示将所有者添加读、写、执行权限,给所属组添加读和执行权限,删除其他用户的写权限。

示例用法

  1. 将文件设置为可执行

    bash
    chmod +x file.sh

    file.sh 设置为可执行文件(所有用户都可执行,a+a-的a可以省略)。

  2. 递归地将目录及其子目录中所有文件设置为只读

    bash
    chmod -R a-w directory/

    递归地将 directory 及其下所有文件和子目录的所有用户的写权限移除。

  3. 将文件权限设置为特定数字形式

    bash
    chmod 644 file.txt

    file.txt 设置为 -rw-r--r-- 权限。

  4. 使用参考文件的权限来设置另一个文件的权限

    bash
    chmod --reference=reference_file target_file

    使用 reference_file 的权限来设置 target_file 的权限。

注意事项

  • 权限意义:文件权限对系统的安全性和文件的可访问性至关重要,应当根据实际需求设置适当的权限。
  • 安全性:修改系统关键文件的权限可能导致系统无法启动或功能受限,应谨慎操作,最好使用 sudo 或以超级用户身份执行。

chmod 命令是管理文件和目录权限的重要工具,可以根据需要灵活调整文件的读、写和执行权限,以保证系统安全和运行需要。

usermod

usermod 命令用于修改用户账户的属性,包括用户的用户名、用户 ID、所属组、登录 Shell 等。在Unix和类Unix系统(如Linux)中,它是管理用户账户的重要工具之一。

基本语法

bash
usermod [选项] 用户名
  • 选项:用于指定要修改的属性,如用户 ID、所属组、登录 Shell 等。
  • 用户名:指定要修改的用户账户名。

常用选项

以下是一些常见的 usermod 命令选项及其功能:

  • -c, --comment COMMENT:为用户添加描述性注释。这个注释通常会显示在 /etc/passwd 文件中。

    bash
    usermod -c "John Doe" john
  • -d, --home HOME_DIR:修改用户的家目录路径。

    bash
    usermod -d /home/newhome john
  • -e, --expiredate EXPIRE_DATE:设置用户账户的过期日期。日期格式通常为 YYYY-MM-DD。

    bash
    usermod -e 2025-01-01 john
  • -g, --gid GROUP:修改用户的主要组。

    bash
    usermod -g admins john
  • -l, --login NEW_LOGIN:修改用户的登录名(用户名)。

    bash
    usermod -l newjohn john
  • -s, --shell SHELL:修改用户的登录 Shell。

    bash
    usermod -s /bin/bash john
  • -u, --uid UID:修改用户的用户 ID。

    bash
    usermod -u 1001 john
  • -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用户的附加组。多个组名用逗号分隔。

    bash
    usermod -G developers,johns_group john
  • -a, --append:将用户添加到指定的附加组中,而不会移除他们已经属于的其他组。

    bash
    usermod -a -G developers john

示例用法

  1. 修改用户的登录 Shell

    bash
    usermod -s /bin/bash john

    将用户 john 的登录 Shell 修改为 /bin/bash

  2. 修改用户的主要组

    bash
    usermod -g admins john

    将用户 john 的主要组修改为 admins

  3. 添加用户到附加组

    bash
    usermod -a -G developers john

    将用户 john 添加到 developers 组中,保持其原有的附加组不变。

  4. 修改用户的用户 ID

    bash
    usermod -u 1001 john

    将用户 john 的用户 ID 修改为 1001

注意事项

  • 权限与安全性:使用 usermod 命令需要管理员权限,以确保对用户账户的安全修改。
  • 影响:修改用户账户的某些属性(如登录名、用户 ID 等)可能会影响系统中相关文件和服务的访问权限和功能。

usermod 命令是系统管理员在管理用户账户时的一个关键工具,能够灵活地调整用户账户的属性,以适应系统管理的需求。

包管理器

常用命令

sh
# 过滤掉@system组和@baseos组中的软件包,只显示额外安装的软件包
yum list instsalled | grep -v '@System\|@baseos'
dnf list instsalled | grep -v '@System\|@baseos'

# 列出已安装软件包的安装目录
# 示例:rpm -qil mysql
rpm -qil <package_name>

dnf

sh
# 安装package包或软件
dnf install [package]

# 显示所有已经安装的package
dnf list installed

dnf是一个现代化的软件包管理器,用于在基于RPM的Linux发行版(如Fedora、CentOS等)中安装、更新和删除软件包。以下是一些常用的dnf命令及其功能:

  1. 安装软件包

    sh
    dnf install package_name

    用于安装指定名称的软件包及其依赖项。

  2. 更新软件包

    sh
    dnf update

    用于更新系统中所有安装的软件包到最新版本。

  3. 升级特定软件包

    sh
    dnf upgrade package_name

    升级指定软件包到最新版本,如果该软件包已安装。

  4. 搜索软件包

    sh
    dnf search keyword

    在仓库中搜索包含指定关键字的软件包。

  5. 显示已安装的软件包

    sh
    dnf list installed

    列出当前系统中所有已安装的软件包。

  6. 删除软件包

    sh
    dnf remove package_name

    从系统中删除指定的软件包,但保留其配置文件。

  7. 清理软件包缓存

    sh
    dnf clean packages

    删除已下载的软件包,但保留安装后的软件包及其配置文件。

  8. 更新仓库缓存

    sh
    dnf makecache

    更新dnf使用的本地软件包仓库索引信息。

  9. 显示软件包信息

    sh
    dnf info package_name

    显示指定软件包的详细信息,包括版本号、大小、依赖关系等。

  10. 启用或禁用仓库

    sh
    dnf config-manager --enable repository_name
    dnf config-manager --disable repository_name

    启用或禁用指定名称的软件包仓库。

  11. 查看帮助信息

    sh
    dnf --help

    显示dnf命令的基本用法和选项。

dnf相对于旧版的yum有许多优势,包括更快的执行速度、依赖关系解决能力更强、更好的事务支持等。它是许多主流Linux发行版中推荐使用的默认软件包管理器之一。

rpm

rpm命令是Linux系统中用于管理RPM软件包的工具。以下是一些常用的rpm命令及其作用:

  1. 安装软件包

    sh
    rpm -i package.rpm

    用于安装指定的RPM软件包。

  2. 升级软件包

    sh
    rpm -U package.rpm

    如果软件包已安装,这会升级它;如果未安装,则安装它。

  3. 卸载软件包

    sh
    rpm -e package_name

    从系统中移除指定的软件包。

  4. 查询软件包信息

    sh
    rpm -q package_name

    查询系统中是否安装了指定的软件包,并显示其版本信息。

  5. 列出已安装的软件包

    sh
    rpm -qa

    列出系统中所有已安装的软件包。

  6. 列出文件归属的软件包

    sh
    rpm -qf /path/to/file

    查询特定文件属于哪个软件包。

  7. 显示软件包详细信息

    sh
    rpm -qi package_name

    显示指定软件包的详细信息,包括版本、描述等。

  8. 列出软件包中的文件

    sh
    rpm -ql package_name

    列出指定软件包安装的所有文件。

  9. 显示软件包的配置文件

    sh
    rpm -qc package_name

    显示指定软件包的配置文件列表。

  10. 验证软件包

    sh
    rpm -V package_name

    验证已安装软件包的完整性,检查是否有文件被改动。

这些是rpm命令的一些常用选项和用法。使用rpm命令可以有效地管理和操作系统中的软件包。

wget

wget 是一个用于从网络下载文件的命令行工具,它支持HTTP、HTTPS和FTP等常见的网络协议。以下是 wget 命令的一些常用选项和用法:

  1. 基本用法
    • wget URL:下载指定 URL 的文件。例如,wget http://example.com/file.zip 将会下载 file.zip 文件到当前目录。
  2. 常用选项
    • -O filename:指定下载的文件保存的名称。例如,wget -O myfile.zip http://example.com/file.zip 将会把从 http://example.com/file.zip 下载的文件保存为 myfile.zip
    • -P directory:指定下载的文件保存的目录。例如,wget -P /path/to/directory http://example.com/file.zip 将会把下载的文件保存到指定目录。
  3. 后台下载
    • -b:后台下载模式,将 wget 进程置于后台运行。
  4. 继续下载
    • -c:继续之前被中断的下载。如果下载文件不完整或中断,使用 -c 可以继续下载。
  5. 限速下载
    • --limit-rate=amount:限制下载速度,amount 可以是字节每秒(如 50k 表示每秒50KB)或比特每秒(如 1m 表示每秒1Mbps)。
  6. 递归下载
    • -r--recursive:递归下载,下载指定 URL 下的所有链接文件。
  7. 静默模式
    • -q--quiet:静默模式,减少输出信息。
  8. 断点续传
    • -c--continue:断点续传,重新开始下载时从上次中断的地方继续。
  9. 使用代理
    • --proxy=on/off:启用或禁用代理。
  10. 示例用法
    • wget http://example.com/file.zip:简单地下载一个文件。
    • wget -O myfile.zip http://example.com/file.zip:下载文件并保存为指定名称。
    • wget -P /path/to/directory http://example.com/file.zip:下载文件并保存到指定目录。
    • wget -c http://example.com/file.zip:继续下载之前中断的文件。
    • wget -r http://example.com:递归下载整个网站的所有链接文件。

wget 是一个强大且灵活的工具,常用于在命令行中快速、有效地下载文件或整个网站。

vim

Vim 是一个功能强大的文本编辑器,特别在 Unix 和类 Unix 系统中广泛使用。它的特点是高度定制化、强大的编辑功能和效率。以下是一些 Vim 的基本命令和用法:

进入 Vim 编辑器

  1. 打开文件:
    • 打开一个文件:vim filename,例如 vim myfile.txt
    • 如果文件不存在,Vim 将会创建一个新文件并打开编辑器。

Vim 的三种模式

Vim 三种主要模式:普通模式、插入模式和命令行模式。在普通模式下,可以执行各种命令,包括导航、删除、复制等操作;插入模式用于输入文本;命令行模式用于保存文件、退出 Vim 等。

常用命令

  1. 普通模式下的基本操作
    • 移动光标
      • h 左移一个字符,j 下移一行,k 上移一行,l 右移一个字符。
      • w 向前移动一个单词,b 向后移动一个单词,e 移动到单词末尾。
      • 0 移动到行首,$ 移动到行尾。
      • gg 移动到文件开头,G 移动到文件末尾,:<line_number> 跳转到指定行号。
    • 编辑文本
      • i 进入插入模式,在当前光标位置前插入文本。
      • a 进入插入模式,在当前光标位置后插入文本。
      • o 在当前行后插入新行并进入插入模式。
      • dd 删除当前行,dw 删除一个单词,x 删除当前字符。
      • yy 复制当前行,yw 复制一个单词。
    • 撤销和重做
      • u 撤销上一步操作,Ctrl + r 重做。
    • 保存和退出
      • :w 保存当前文件,但不退出 Vim。
      • :q 退出 Vim。
      • :wq 保存并退出,也可以简写为 :x
      • :q! 强制退出 Vim,丢弃所有修改(不保存)。
    • 搜索和替换
      • /pattern 向后搜索包含 pattern 的文本。
      • ?pattern 向前搜索包含 pattern 的文本。
      • :s/pattern/replacement/g 替换当前行第一个匹配的 patternreplacement
      • :%s/pattern/replacement/g 替换文件中所有匹配的 patternreplacement
  2. 插入模式
    • 在普通模式下按 i 进入插入模式,可以输入文本。
    • Esc 键回到普通模式。
  3. 命令行模式
    • 在普通模式下按 : 进入命令行模式,可以输入各种命令,例如保存文件 :w、退出 :q、保存并退出 :wq 等。

其他常用功能

  • 分割窗口:sp 横向分割窗口,:vsp 纵向分割窗口。
  • 配置 Vim:通过编辑 ~/.vimrc 文件来配置 Vim 的行为,如设置缩进、配色方案等。

Vim 是一个非常强大和灵活的文本编辑器,学习它的基本操作可以极大提高编辑效率和技能。

top

语法

sh
$ top

image-20240720220834716

清理缓存释放内存

如上图内存缓存为933.5buff/cache,表示缓存过大,需要清理。可以使用以下命令来清理缓存

sh
sudo sync && sudo echo 3 > /proc/sys/vm/drop_caches

检查内存使用情况

也可以使用以下命令检查内存使用情况:

sh
ps aux --sort -rss | head

image-20240720221311307

rm

语法

sh
# 删除/dir/目录下的所有文件
rm -rf /dir/*

# 删除/dir/目录下的所有隐藏文件
rm -rf /dir/.*

node

sh
node --version # 查看当前的版本
node <path/index.js> # 运行index.js文件

nvm

sh
nvm list # 显示已安装的版本(同 nvm list installed)
nvm list intalled # 显示已安装的版本
nvm list available # 显示所有可以下载的版本

# 安装node
nvm install 16.19.0 
nvm install 16
nvm install lts
nvm install latest

# 卸载node
nvm uninstall [版本号]

# 使用指定版本的node
nvm use [版本号]

# 查看nvm版本
nvm version
nvm --version

npm

sh
# 查看版本号
npm -v

# 创建模块
npm init [-y]

# 搜索模块
npm search <搜索> [-g]

# 列出当前安装包
npm list 
npm list -g --depth 0 # 列出全局安装的模块 带上[--depth 0] 不深入到包的支点 更简洁

# 查看npm镜像
npm config get registry

# 设置淘宝镜像
npm config set registry http://registry.npmmirror.com

# 全局安装
npm i <name> -g

# 获取全局安装的包的位置

install 安装

sh
# 读取package.json里面的配置单安装  
$ npm install 
//可简写成 npm i

# 默认安装指定模块的最新(@latest)版本
$ npm install [<@scope>/]<name> 
//eg:npm install gulp

# 安装指定模块的指定版本
$ npm install [<@scope>/]<name>@<version>
//eg: npm install gulp@3.9.1

# 安装指定指定版本范围内的模块
$ npm install [<@scope>/]<name>@<version range>
//eg: npm install vue@">=1.0.28 < 2.0.0"

# 安装指定模块的指定标签 默认值为(@latest)
$ npm install [<@scope>/]<name>@<tag>
//eg:npm install sax@0.1.1

# 通过Github代码库地址安装
$ npm install <tarball url>
//eg:npm install git://github.com/package/path.git

其他

sh
#卸载当前项目或全局模块 
$ npm uninstall <name> [-g] 
eg: npm uninstall gulp --save-dev  

# 强制重新build
npm rebuild

# 清除缓存
npm cache clean

pm2

sh
# 安装
npm i pm2 -g

# 启动某个项目
pm2 start <app.js>

# 启动某个项目 - 指定端口号
pm2 start <app.js> -p <port>

# 启动某个项目 - 自定义名称
pm2 start <app.js> --name <new_name>

# 列出所有管理的项目
pm2 list 
pm2 ls

# 停止、重启、删除某个项目
pm2 stop     <app_name|namespace|id|'all'|json_conf>
pm2 restart  <app_name|namespace|id|'all'|json_conf>
pm2 delete   <app_name|namespace|id|'all'|json_conf>

# 显示某个项目的具体信息
pm2 describe <id|app_name>

# 监控
pm2 monit

# 重命名name
pm2 restart <app_name> --name <new_name>

TypeScript

tsc-编译环境

sh
# 全局安装TSC
npm i typescript -g

# 查看TSC版本
tsc --version

# 编译ts文件
tsc <ts_name>.ts

ts-node-运行环境

sh
# 全局安装ts-node
npm i ts-node -g

# 全局安装ts-node的2个依赖包:tslib、@types/node
npm i tslib @types/node -g

# 运行ts文件
ts-node <ts_name>.ts

生成tsconfig.json

tsconfig.json:是ts的配置文件

sh
# 生成初始化TS配置文件tsconfig.json
tsc --init

MySQL