程序员手记

news/2025/11/20 21:06:56/文章来源:https://www.cnblogs.com/yh172782/p/19249570

Linux

终端快捷键

光标移动

快捷键作用
crtl+a 移动到开头
crtl+e 移动到结尾
alt+b 向左移动一个单词
alt+f 向右移动一个单词
crtl+b 向左移动一个字符
crtl+f 向右移动一个字符
esc+b 向左移动一个单词
esc+f 向右移动一个单词
ctrl+XX 在上次光标和当前光标所在字符间跳转
esc+t 交换光标位置钱的两个单词

删除

快捷键作用
ctrl+k 删除光标后所有字符
ctrl+u 删除光标前所有字符
ctrl+w 删除光标前一个单词
ctrl+d 删除光标所在字符(右侧)
ctrl+h 删除光标前字符(左侧)

撤销

快捷键作用
ctrl+_ 撤销操作
ctrl+y 粘贴ctrl+u/k剪切的内容
ctrl+? 撤销前一次输入
alt+r 撤销前一次动作

替换

快捷键作用
ctrl+t 将光标当前字符与前一个字符替换

历史命令编辑

快捷键作用
ctrl+p 上一条历史命令
ctrl+n 下一条历史命令
alt+> 上一次执行的命令的最后一个单词
ctrl+r 搜索历史命令

控制命令

快捷键作用
ctrl+l 清除屏幕
ctrl+s 锁住终端,阻止屏幕输出
ctrl+q 解锁终端,允许屏幕输出
ctrl+c 终止命令
ctrl+i 补全,相当于tab
ctrl+o 重复执行命令
alt+<数字> 操作的次数
ctrl+z 挂起

!命令

快捷作用
!! 执行上条命令
!-n 执行前n条命令

shell中的 $ 用法

特殊符号含义
$# 传给脚本的参数个数
$0 shell脚本文件的名字
$1 传递给该shell脚本的第一个参数
$2 传递给该shell脚本的第二个参数
$@ 传给脚本的所有参数的列表
$* 以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$ 脚本运行的当前进程ID号,Shell本身的PID
$? 显示最后命令的退出状态,0表示没有错误,其他表示有错误
$! Shell最后运行的后台Process的PID
$- 使用Set命令设定的Flag一览
$() 相当于``,括号中放的是命令
${} 括号中放的是变量。例如echo P A T H 取 P A T H 变 量 的 值 并 打 印 , 也 可 以 不 加 括 号 比 如 {PATH}取PATH变 量的值并打印,也可以不加括号比如PATH取PATH变量的值并打印,也可以不加括号比如PATH。
$1~n 添加到Shell的各参数值。$1是第1参数、$2是第2参数…。

${}的特殊用法

# sh, dash 都不能使用该语法
# 基础语法:${parameter,,pattern} / ${parameter^^pattern}
# 另外这个语法不会改变原变量
var="Hello,World"
# 第一个字符变为大写
echo ${var^}
# 所有字符变为大写
echo ${var^^}
# 第一个字符变为小写
echo ${var,}
# 所有字符变为小写
echo ${var,,}

判断/比较

语法(用例)

if [ $SYSTEM = "Linux" ] ; then # 如果是linux话输出linux字符串
echo "Linux"
elif [ $SYSTEM = "FreeBSD" ] ; then
echo "FreeBSD"
elif [ $SYSTEM = "Solaris" ] ; then
echo "Solaris"
else
echo "What?"
fi # 判断结束,以fi结尾

字符串判断

语法含义
str1 = str2 当两个串有相同内容、长度时为真
str1 != str2 当串str1和str2不等时为真
-n str1 当串的长度大于0时为真(串非空)
-z str1 当串的长度为0时为真(空串)
str1 当串str1为非空时为真

数字的判断

语法含义
int1 -eq int2 两数相等为真
int1 -ne int2 两数不等为真
int1 -gt int2 int1大于int2为真
int1 -ge int2 int1大于等于int2为真
int1 -lt int2 int1小于int2为真
int1 -le int2 int1小于等于int2为真

文件相关的if判断条件语句

语法含义
-r file 用户可读为真
-w file 用户可写为真
-x file 用户可执行为真
-f file 文件为正规文件为真
-d file 文件为目录为真
-c file 文件为字符特殊文件为真
-b file 文件为块特殊文件为真
-s file 文件大小非0时为真
-t file 当文件描述符(默认为1)指定的设备为终端时为真

复杂逻辑判断

语法含义
-a
-o
!

[] 和 [[]] 的区别

if [[]] 要求括号里的表达式前后必须有一个空格,格式如 if [[ xxx ]]。
当 if [[]] 用于字符串常量或变量比较时,表达式本身的运算符,如 <、>、==、!= ,其前后可以不加空格;
但当 if [[]] 用于数值比较时,表达式本身的运算符前后必须加空格,否则会得到相反的结果。

如:

if [[ $1 != "start"  &&  $1 != "stop" ]]

在if之后要用空格,[[ 之后要有一个空格,]]之前要有空格,不然会出错.

elif [[ $1 == "stop" ]]

双等号两边要有空格不然后会出错.

在shell中查看每条指令实际执行的结果

set +x表示开始记录,set -x表示停止记录。

例子:

set +x
name="test"
echo $name
set -x

实用小技巧

查找包含某个字符串的所有文件,可以用于后续的自动处理:

# 指令
grep -r "desktop\." | awk '{print $1}' | sed 's/://g' | uniq
# 用途
for script_name in `grep -r "desktop\." | awk '{print $1}' | sed 's/://g' | uniq`
do
echo y | edopkg pull $script_name
done

日志管理

dmesg命令可以查看系统的整个启动日志

GIT

批量删除已合并分支

# 获取已合并分支
git branch --merged
# 筛选去除指定字符串(正则方式)
grep -i -v -E "master|dev"
# 以字符串结尾的
grep -i -v -E "x-master$|x-develop$|x-release$"
# 批量执行(要用管道)
xargs git branch -d
# 合起来
git branch --merged | grep -i -v -E "x-master$|x-develop$|x-release$" | xargs git branch -d

删除远程跟踪分支

git remote prune origin

修改当前commit

git add . && git commit --amend --no-edit

该操作会修改当前最新commit并添加当前目录下所有修改了但未提交的文件。
如果最新commit已经push到远端,则需要再次强制推送到远端。

查找某个commit被哪个branch和tag包含

查找被包含的branch:git branch --contains commit_id --all
查找被包含的tag:git tag --contains tag_name

设置命令别名

git config --global alias.a add
git config --global alias.c commit
git config --global alias.o checkout

也可以在config文件进行修改和查看,
~/.gitconfig或项目的.git/config文件中,有以下信息,可以进行修改:

[alias]
a = add
c = commit
o = checkout
# ...

还可以直接用别人写好的:
项目地址
使用方法:

  1. 首先将该开源项目中的gitalias.txt文件下载下来
  2. 然后在.gitconfig文件里面加入:
    [include]
    path = gitalias.txt

获取两个commit之间更改的文件

可以方便在shell或者bash中执行自动化操作

以最新的更新为例:git diff --name-only HEAD HEAD^
执行自动化操作:for fp in `git diff --name-only HEAD HEAD^`; do echo $fp; done

Docker

删除虚悬镜像:docker images --filter dangling=true
删除所有虚悬镜像:

docker rmi $(docker images --filter dangling=true -q)
#
docker image prune
# 删除24小时前的虚悬镜像,-a 标签还支持删除所有未使用的镜像
docker image prune -f --filter until=24h

列出latest镜像之前的所有镜像:docker images aka-gm --filter before=aka-gm:latest
从以上输出中取出镜像的REPOSITORY与TAG:docker images aka-gm --filter before=aka-gm:latest --format "{{.Repository}}:{{.Tag}}"
排除TAG为的镜像并删除:docker images aka-gm -f before=aka-gm:latest | grep aka-gm | grep -v "<none>" | awk '{printf "%s:%s\n",$1,$2}' | xargs -r docker rmi
删除TAG为的镜像:docker images aka-gm -f before=aka-gm:latest | grep "<none>" | awk '{printf "%s:%s\n",$1,$2}' | xargs -r docker rmi

找出容器对应的日志滤镜:docker inspect --format='{{.LogPath}}' containername

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/971424.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Object.entries() 和 Object.formEntries()的用法详解

Object.entries() 该方法返回一个由对象自身可枚举属性的键值对组成的二维数组,每个子数组形式为 [key, value],顺序与 for...in 循环一致,但不会遍历原型链上的属性。若输入是数组,键会被转换为字符串索引(如 [0…

详细介绍:MyBatis 与 Spring Data JPA 核心对比:选型指南与最佳实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

详细介绍:【从0开始学习Java | 第23篇】动态代理

详细介绍:【从0开始学习Java | 第23篇】动态代理pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas",…

安卓中执行 root 命令

object SuShell {private const val SU_CMD = "su"fun exec(cmd: String): Result<String> {val process = Runtime.getRuntime().exec(SU_CMD)val writer = process.outputStream.bufferedWriter()wr…

UniApp缓存系统详解 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

FreeSWITCH使用mod_fail2ban模块来提升安全

FreeSWITCH使用mod_fail2ban模块来提升安全操作系统:Debian 12.5_x64 FreeSWITCH版本: 1.10.11 fail2ban版本: 1.1.0 nftables版本: 1.0.6 FreeSWITCH系统部署在公网,大概率会碰到恶意注册,今天整理下debian12环…

【ArcMap】使用拓扑(Topology)检查线是否存在断点

拓扑必须在地理数据库中创建,Shapefile无法创建拓扑。 第一步:创建要素数据集在 Catalog 窗口中,右键点击地理数据库(.gdb),没有就新建一个数据库。选择 新建(New) -> 要素数据集(Feature Dataset)。在弹…

电动汽车行业时序数据库选型指南:以 TDengine 为例的四大关键维度与评估标准

在软件定义汽车的时代,电动汽车每天产生数十GB的时序数据,包括电池电芯电压温度、电机转速、传感器读数、自动驾驶轨迹等。高效管理这些数据,直接影响车辆安全、用户体验和商业模式创新。本文结合行业最佳实践,提出…

CF2165 VP 记录

A 贪心,注意到从小到大合并,每次选择代价少的最优,因为生成的新数等于代价. 在此基础上模拟即可,可以使用链表实现. 我用的链表 + 并查集,感觉怪怪的.点击查看代码 #include<bits/stdc++.h> using namespac…

如何在SPM混编中实现不同target之间的通信?

在 SPM 混编场景中,不同 target 之间的通信核心是通过 “模块依赖 + 公开接口” 实现跨语言 / 跨模块调用—— 因为 SPM 的核心限制是 “单个 target 不能混放 Swift 与 C 系语言(OC/C、C++)”,所以拆分后的多 tar…

Python在线教育广告精准投放:SEM结构方程、XGBoost、KDE核密度、聚类、因子分析、随机森林集成优化融合用户满意度渠道效能|附代码数据

全文链接:https://tecdat.cn/?p=44299 原文出处:拓端数据部落公众号分析师:Jian Huang在数字经济纵深发展的今天,在线广告已成为在线教育行业触达用户、实现商业转化的核心载体,但行业普遍面临“流量昂贵却转化低…

完整教程:Spring Boot Actuator全解析

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

专题:2025年AI Agent智能体行业价值及应用分析报告:技术落地与风险治理|附140+ 份报告PDF、数据、可视化模板汇总下载

原文链接:https://tecdat.cn/?p=44322原文出处:拓端抖音号@拓端tecdat引言 2024年,AI智能体终于从实验室走进企业车间、客服中心和财务部门——金融机构用它优化风控流程,医药零售靠它解答用药疑问,工业企业尝试…

专题:2025构建全自动驾驶汽车生态系统:中国智能驾驶行业全景研究报告|附80+份报告PDF、数据仪表盘汇总下载

原文链接:https://tecdat.cn/?p=44316原文出处:拓端抖音号@拓端tecdat2025年,智能驾驶正站在“技术落地”与“规模商业化”的十字路口——自主品牌城市NOA渗透率已达9.1%,15万级车型标配激光雷达成为常态,但深圳…

2025/11/20-Why brushing teeth twice a day is not always best

2025/11/20-Why brushing teeth twice a day is not always bestWhy brushing teeth twice a day is not always best p { line-height: 1.5 } From LearnAndRecordWe all think we know how to brush our teeth - a s…

uos安装idea

uos安装idea1、下载ideaIU-2025.2.4-aarch64.tar.gz,可用最新版本。 网址:https://www.jetbrains.com/idea/download/download-thanks.html?platform=linuxARM64 2、操作系统更新 命令:sudo apt update 命令:apt …

HDU3586-Information Disturbing

HDU3586-Information Disturbing 题目大意 给你一棵树,你可以花费 \(w_i\) 去切断一条边。你的目标是切断每个叶子节点到根节点 \(1\) 的联系。要求在切断的总花费不大于 \(m\) 的条件下,最小化切断边的花费 \(w\) 的…

【App Service】.NET 应用在App Service上内存无法占用100%的问题原因

问题描述 如果使用Azure App Service部署.NET 应用,会发现在内容并没有达到100%的时候,也会出现OOM错误。这是一个什么情况呢?大内存测试代码static void Main(string[] args){Console.WriteLine("Hello, Worl…

深入解析:css 的 clip-path 属性,绘制气泡

深入解析:css 的 clip-path 属性,绘制气泡2025-11-20 20:30 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: bl…

快速构建一个基础、现代化的 WinForm 管理系统!

前言 前段时间有小伙伴在后台留言问:有没有好用的 WinForm 管理系统?今天大姚给大家分享一个基于 AntdUI 构建的 WinForm 管理系统,不需要我们写一行代码既能快速构建一个基础、现代化的 WinForm 管理系统。 项目介…