新闻详情

新闻详情

首页 / 资讯中心 / 详情

Linux常用命令实战:删除文件夹、压缩解压、日志清理与效率技巧

发布时间:2026/10/2 2:49:35来源:尧图网络
Linux常用命令实战:删除文件夹、压缩解压、日志清理与效率技巧
用了十几年 Linux天天打交道的就是那几十条常用命令。很多人觉得命令枯燥其实完全不是——真正干活的时候你会发现会用的命令就那么几十条但每一条用好了都能省下大把时间用不好就是事故现场。我见过把rm -rf敲到根目录把服务器删到起不来的也见过tar解压报错 status 1 急得满头大汗的更见过 Windows 切过来的同事连grep和findstr都分不清的。这篇东西不搞命令字典就把日常最常用、最容易被坑的 Linux 命令捋一遍删除文件夹、压缩解压、日志清理、会话保活、并行任务、Windows 对照以及 Shell 脚本和 MSSQL 连接这些实操场景。不管你是刚入门的新手还是已经用了一段时间想查漏补缺都值得花几分钟过一遍。1. 文件与目录操作每天都在敲但你真的敲对了吗文件操作是 Linux 使用频率最高的部分没有之一。但越常用的东西越容易栽跟头尤其是删除文件夹这种事情。我先把目录结构和基础操作讲透再重点说说删除文件夹的正确姿势。1.1 先摸清 Linux 目录结构再动手不犯错很多人拿到 Linux 服务器第一件事就是到处乱逛然后一顿操作猛如虎删的时候才发现删错了地方。Linux 的目录结构是有规矩的我挑几个日常一定会用到的说。/根目录一切从这个目录开始。所有路径上的第一个斜杠指的就是它。/home普通用户的家目录所在地比如用户tom的家目录就是/home/tom。/etc系统配置文件集中地改 Nginx、MySQL、SSH 的配置基本都在这里。/var/log日志文件的家排查问题时 90% 的时间都在这里翻日志。/tmp临时目录重启后可能被清空别把重要文件放这儿。/opt很多第三方软件默认装在这里比如jdk、node手动解压版。/usr/local自己编译安装的软件默认位置源码包安装的软件一般都在这里。理解目录结构不是为了背路径而是为了两件事一是找东西快二是删东西的时候心里有数。比如你要清理磁盘先du -sh /var/log/*看看哪个日志占空间而不是盲目地去/底下瞎找。我自己习惯把常用的目录路径写进一个笔记比如测试环境的日志目录、配置文件路径避免每次靠记忆。1.2 删除文件夹rm -rf 的正确打开方式“linux删除文件夹命令”这个热词能上热搜说明大家是真的被 rm 折磨过。删除文件夹的标准命令是rm -rf但这里面的坑深不见底。先说基础。删除空目录可以用rmdir这个命令不会递归所以你删不了非空目录相对安全。删除非空目录就得靠rm -rf-r表示递归recursive把目录里的文件和子目录一层层全部删掉-f表示强制force忽略不存在的文件、不再逐个询问确认。举个实际场景你有个项目目录/home/tom/project/build想把它删掉重建直接执行rm -rf /home/tom/project/build命令很简单问题出在细节上。我踩过几个坑或者说见过太多人踩总结出来第一绝对路径配合 rm -rf 要格外小心。如果你写的是rm -rf /home/tom/project/ build注意那个空格系统会理解为删除/home/tom/project/和当前目录下的build前者整个家底都没了。命令行里的空格是参数分隔符所以任何路径里带着意思想合并的写法都是灾难。第二变量为空时的致命陷阱。写脚本时如果DIR变量没取到值rm -rf $DIR/会变成rm -rf /这是 Linux 下最著名的自杀命令之一。我在脚本里一定会先判断变量是否为空再执行删除DIR/home/tom/old_build if [ -n $DIR ]; then rm -rf $DIR fi第三干掉危险操作的手感。我建议给rm加保险把默认行为变成交互式确认alias rmrm -i这样每次删除文件时都会问你rm: remove regular file xxx?虽然会多一点确认步骤但关键时刻能救命。如果你用的是 bashrc 或 zshrc把这一行加进去再source一下立刻生效。桌面环境还可以考虑trash-cli删除的东西进回收站而不是直接消失用trash-put代替rm给后悔留一条后路。1.3 高频文件操作速查表除了删除日常打交道最多的还有这些命令我整理了一份速查表照着敲就行。需求命令示例说明查看目录内容ls -lah-l详情-a含隐藏文件-h人类可读大小切换目录cd /var/log回到上次目录cd -回家目录cd ~查看当前位置pwd不知道自己在哪时就用它复制文件/目录cp -r /data/app /data/app_bak复制目录必须加-r移动/重命名mv old.txt new.txt移动文件或目录都用它新建目录mkdir -p /a/b/c-p自动创建父目录创建空文件touch a.log也用来快速修改文件时间戳查找文件find /home/tom -name *.log按名字、时间、大小找文件查看磁盘占用du -sh /var/log看目录总大小查看磁盘空间df -h看分区剩余空间这些命令的熟练程度决定了你日常敲键盘的效率。我见过有人一台一台地去ls然后cat翻日志其实一条find加grep就能解决。多用管道、多用-h、多用-p手感和效率都会上来。2. 压缩打包与文件传输tar 和 sz 的那些坑压缩和解压、上传下载是日常开发运维逃不开的场景。tar命令是最常用的打包解包工具但那个“status 1”报错能把人看懵sz命令又只能传单个文件想下整个文件夹得绕个弯。这一节把这俩讲明白。2.1 tar 命令详解打包、解包和 status 1 排查tar的全称是 Tape Archive最早是为了把数据写到磁带上现在成了 Linux 下最通用的打包工具。它本身不压缩只是把多个文件打包成一个大文件压缩是靠 gzip 或 bzip2 完成的。所以你会看到tar.gz和tar.bz2这样的后缀名。常用参数我直接列出来参数作用-c创建打包文件create-x解包extract-z通过 gzip 压缩/解压.gz-j通过 bzip2 压缩/解压.bz2-v显示处理过程verbose-f指定文件名file必须放在最后-t查看包内文件列表打包并压缩一个目录tar -czvf app.tar.gz /home/tom/app解压一个.tar.gz文件到指定目录tar -xzvf app.tar.gz -C /opt/app-C指定解压目标目录这个参数特别常用因为它允许你把文件解压到任意位置而不是只能解压到当前目录。接下来就是重头戏tar 解压报 status 1 怎么办。很多人执行tar -xzvf xxx.tar.gz结果终端冒出一段错误退出码是 1直接懵了。这里先说明一点Linux 命令执行完都会返回一个退出码0 表示成功非 0 就是各种错误。tar返回 status 1 说明解压过程中遇到了问题。我用实际排查经验告诉你 causes 和对应解法原因一文件或目录权限不足。如果你用普通用户解压一个属于 root 的包或者解压到没有写权限的目录系统会提示Cannot open: Permission denied。解决方法是确认当前用户对解压目标目录有写权限或者用sudo提起权限但千万别顺手sudo rm -rf去删除原本删不掉的东西。原因二文件路径写错了。检查你指定的文件名是否存在tar找不到文件时会直接报错。可以用ls -lh xxx.tar.gz看文件是否就位别把路径写岔了。原因三磁盘空间不足。解压大包时No space left on device最常见。先df -h看磁盘余量再用du -sh估算包解压后的大小。我曾经解压一个 4GB 的包磁盘只剩 3GB结果解压到一半就报错退出白白等了几分钟。原因四压缩格式与参数不匹配。这个坑特别经典。你拿.tar.gz文件却用tar -xjvf-j是 bzip2 的解压参数去解会得到一堆乱码或者gzip: invalid compressed data。记一个口诀后缀带 gz 就用-z后缀带 bz2 就用-j不带压缩后缀就直接tar -xvf。如果不确定压缩格式直接file xxx.tar.gz看一眼。原因五压缩包已损坏。如果下载过程中断导致包不完整tar会提示Unexpected EOF in archive或者gzip: stdin: unexpected end of file。没辙重新下载完整包再说。下载完先md5sum xxx.tar.gz和源文件的 MD5 值比一下确认完整再解压。原因六系统提示 command not found: tar。极个别的精简系统没有安装 tar这时候用包管理器装一下CentOS 系yum install -y tarDebian/Ubuntu 系apt install -y tar。排查 status 1 的整体思路就一条先看错误信息的前几行别管退出码是多少错误信息一定会告诉你真正的原因。tar的错误比较直白不像有些服务日志那样绕弯子读出来基本就能定位。2.2 sz 下载整个文件夹先打包再传输szsend ZMODEM是 lrzsz 工具包里的命令配合 Xshell、SecureCRT 这类终端能直接弹窗把文件保存到本地比 scp 还方便特别适合临时下载一个文件看看内容。但它有个硬伤——只能传文件不能传目录。如果你直接sz /home/tom/app/终端只会报错说这是个目录。想要下载整个文件夹正确的姿势是先打包再传输cd /home/tom tar -czvf app.tar.gz app sz app.tar.gz下载完记得在本地解压然后上服务器把临时生成的包删掉别占着磁盘空间。还可以用 zip 格式zip -r app.zip app sz app.zip大文件传输时有个细节sz默认传输缓冲区可能不够大文件太大时提示失败。可以加参数调整sz -b 40960 app.tar.gz-b后面跟的是每次传输的字节数单位是字节40960大约 40KB。遇到大文件就调大这个值能有效减少传输中断的概率。传完之后在本地执行md5sum app.tar.gz和服务端的 MD5 值做比对确认文件完整。另外提醒一句用sz的前提是终端软件支持 ZMODEM 协议Xshell、SecureCRT 都支持但某些终端不支持就会直接乱码。遇到这种情况别死磕换scp或者后面的rsync方案。2.3 scp 和 rsync更靠谱的传输方式如果sz不够用比如文件特别大、需要跨服务器传输或者要增量同步scp和rsync是更可靠的选择。scp基于 SSH加密传输最简单直接scp -r /home/tom/app user192.168.1.100:/data/-r递归拷贝整个目录把本地的app目录整个传到远端。反过来从远端拉下来也类似scp -r user192.168.1.100:/data/app /home/tom/rsync是同步利器最大的优势是增量传输——只传变化的部分文件大但改动小时速度优势极其明显rsync -avz --progress /home/tom/app/ user192.168.1.100:/data/app/-a归档模式保持权限、时间戳等属性-v显示过程-z传输时压缩--progress显示进度条。注意源目录末尾的斜杠加斜杠表示把目录内容拷过去不加斜杠表示把目录本身包括名字拷过去这个细节很多人搞混。rsync 还支持断点续传SSH 断了重新跑一遍就行幂等性极好。这两条命令的对比如下工具特点适用场景scp简单直接全量传输一次性拷贝、目录不大rsync增量同步断点续传可压缩大目录、周期同步、异地备份3. 文本检索与日志清理grep 与清空日志的正确姿势说实话我每天在服务器上干活一半时间在敲grep。排查问题、翻日志、过滤接口响应全靠它。但很多人对grep的了解就停留在grep 关键字 文件这一步完全没发挥出它的威力。这一节把grep的常用场景和日志清空的方法讲透。3.1 grep从会用到用好grep这个名字来自Global Regular Expression Print作用是在文本中按模式匹配并打印匹配的行。最基础的就是从文件里抓关键字grep ERROR /var/log/app.log这条命令会把app.log中所有包含ERROR的行打印出来。但实际排查中你往往需要的是组合能力。场景一递归搜索整个目录。你有一个服务日志分散在多个子目录或者你想在源码工程里搜一个函数名定义在哪用-rgrep -r getUserInfo /home/tom/project/src/-r会一层层往下钻直到把所有子目录都翻一遍。场景二排除干扰行。你想搜 ERROR但日志里有一堆ERROR_TIMEOUT这样的噪音可以用-v排除包含特定关键字的行grep ERROR /var/log/app.log | grep -v TIMEOUT场景三看上下文。搜到异常了光看那一行往往不够得看看前后发生了什么。-A是 after-B是 before-C是 bothgrep -A 5 -B 2 OutOfMemory /var/log/app.log这条会在匹配行后面显示 5 行、前面显示 2 行排查 OOM 全程上下文一目了然。场景四统计出现次数。只想知道某个错误发生了多少次不用wc -l直接用-cgrep -c ERROR /var/log/app.log场景五管道组合。这是 grep 最高频的用法——过滤其他命令的输出。比如看 Java 进程还在不在ps aux | grep java比如在历史命令里搜自己之前怎么解压包的history | grep tar比如看端口被谁占了netstat -tlnp | grep 8080场景六正则表达式。-E打开扩展正则可以匹配复杂模式。比如在一堆日志里提取 IP 地址grep -E 192\.168\.[0-9]{1,3}\.[0-9]{1,3} /var/log/access.log再比如同时匹配多个关键字用竖线分隔grep -E ERROR|WARN|FATAL /var/log/app.log我在实际排查问题时的习惯是先grep -c看关键字的出现量级量大再用grep -r定位具体文件最后用grep -C看上下文。一条命令几次管道下来问题基本就浮出水面了。记住grep不只能搜文件它更是一个过滤器跟其他命令组合起来威力才大。3.2 清空日志别用 rm用 truncate日志文件越来越大磁盘满了这是所有运维都会遇到的经典场景。很多人的第一反应是rm -rf /var/log/app.log删完之后惊呼磁盘空间还是没有释放。这里涉及 Linux 文件系统的一个关键机制文件句柄与 inode 的关系。进程打开一个日志文件后会持有这个文件的句柄file descriptor指向文件对应的 inode。你用rm删除的只是文件名对应的目录项dentry但 inode 本身还在文件内容还没有真正释放——只有当所有打开这个文件的进程都关闭句柄后磁盘空间才会被回收。所以删掉正在被进程写入的日志文件空间不会马上释放必须重启进程或者等进程自己关闭句柄这对生产环境简直是灾难大家都懂。正确的清空姿势有三种# 方法一重定向清空 /var/log/app.log # 方法二用 /dev/null 喂数据清空 cat /dev/null /var/log/app.log # 方法三truncate 命令直接截断 truncate -s 0 /var/log/app.log这三种本质都是把文件长度截断为 0文件本身还在inode 还在进程句柄还指向同一个文件所以空间会立即释放而服务进程完全不受影响。我个人的偏好是truncate -s 0因为它最直接、一眼就能看懂在干什么。 file是最快的一条符号就解决但新手看着容易懵。补充一句清空日志前先df -h看看当前磁盘占用清完再看一次确认释放了多少。重要日志清空之前最好先cp一份到备份目录或者tail -n 1000存一下最近的内容免得真需要查问题时发现数据没了。如果日志长得实在太快反复手动清不是长久之计。可以用系统自带的logrotate做日志轮转配置/etc/logrotate.d/里的规则比如按天轮转、最多保留 7 份、超过 100MB 就压缩等。比如一个常见的配置片段/var/log/app.log { daily rotate 7 compress delaycompress missingok notifempty }daily表示每天轮转一次rotate 7表示保留 7 份旧日志compress表示对轮转出的日志做 gzip 压缩。这种方案是治本的日志再多也不用人工干预。4. 会话管理与并行执行跑长任务不中断多条命令同时跑跑数据迁移、训练脚本、批量任务时最怕的就是 SSH 断线导致任务中断——你在终端里跑了个需要两小时的脚本结果笔记本合盖了或者网络闪断回去一看终端卡死、任务白跑。screen就是解决这个痛点的。另外就是多条命令串行执行太慢的问题并行处理能节省大量时间。4.1 screen 命令详解一条命令保住你的任务screen是一个终端复用器terminal multiplexer它允许你在一个终端会话里创建多个虚拟窗口并且让这些窗口里的进程脱离当前 SSH 连接独立运行。你的 SSH 断了screen 里的任务照样跑重新连接后还能把会话恢复回来。基本使用流程从头到尾实操一遍第一步创建一个名为deploy的 screen 会话screen -S deploy这时你会进入一个新的终端窗口看起来和普通终端没区别但你已经在一个 screen 会话里了。第二步在里面跑你的长任务比如启动一个 Spring Boot 服务java -jar app.jar第三步按下CtrlA然后按D注意是先按 CtrlA松开后再按 D这会脱离detach当前会话回到原来的终端。任务还在后台继续跑。第四步过一会儿重新连上服务器恢复之前的会话screen -r deploy你会看到java -jar app.jar的输出还在继续滚动一切都还在。管理多个 screen 会话时这些参数非常实用命令作用screen -ls列出所有会话screen -r 会话名恢复指定会话screen -d -r 会话名先把会话强制脱离再恢复解决“会话被占用”报错screen -S 会话名 -X quit关闭指定会话在会话内部配合快捷键可以做到一个会话里开多个窗口快捷键作用CtrlA C创建一个新窗口CtrlA N切换到下一个窗口CtrlA P切换到上一个窗口CtrlA 列出所有窗口回车切换我自己的习惯是每个长任务单独开一个screen -S 任务名会话名字取得有辨识度一点比如screen -S train_model、screen -S backup_db这样screen -ls一看就知道哪个任务在跑、哪个任务跑完了。对比一下tmux它是更现代的选择功能也更强大比如分屏、窗口管理、插件体系但screen的使用门槛更低、大多数系统默认自带而且概念上更简单。如果你只是需要“长任务不中断”这个能力screen完全够用。想追求更舒适的终端体验再去研究tmux也不迟。4.2 并行执行 Linux 命令的实操姿势Linux下的命令默认是串行执行的——你写完一条回车等它跑完再写下一条。但有些场景串行太亏比如你要批量压缩 10 个目录、批量转换 100 张图片或者同时跑多个爬虫任务一个一个跑时间翻倍。方式一后台执行加wait。在命令末尾加让它在后台跑shell 会立刻返回你可以继续敲下一条命令。一次性把多条命令都放后台再用wait等待全部完成tar -czvf a.tar.gz /data/a tar -czvf b.tar.gz /data/b tar -czvf c.tar.gz /data/c wait echo 全部打包完成wait会阻塞直到所有后台任务结束。这种方式适合几条任务并行代码简单逻辑清晰。方式二xargs -P实现真正的并行。xargs可以把输入流变成参数传给命令加-P指定并发数。比如有 10 个日志文件要压缩并发 4 个任务ls /var/log/app*.log | xargs -P 4 -I {} gzip {}-I {}表示用{}占位符接收每一条输入gzip {}就是真正要执行的命令。也可以用find配合find /data/images -name *.png | xargs -P 8 -I {} convert {} {}.jpg这里-P 8表示同时跑 8 个convert进程处理 100 张图片的速度提升接近 8 倍但要留意 CPU 和内存占用别把机器弄死。方式三nohup让任务完全脱离终端。nohup配合可以在进程退出后继续运行并且把输出写到nohup.out文件nohup python3 train.py train.log 21 这条命令会把训练脚本放到后台输出重定向到train.log即使终端关闭进程也不会被 SIGHUP 信号杀死。配合tail -f train.log就能实时观察进度。并行任务的核心经验是一定要控制并发数。先nproc看一下 CPU 核数并发数不要超过核数的两倍尤其是 CPU 密集任务。批量任务并行后最好把每个任务的输出重定向到单独文件这样出错了能精准定位是哪条任务的问题而不是一锅粥混在同一个终端里。5. Linux 与 Windows 命令对照给跨平台开发者的速查手册很多从 Windows 转过来的开发者一开始最难受的就是终端里敲什么都不对——dir不好使了cls也不好使了copy的逻辑也对不上。这节整理一张常用命令对照表再聊几个跨平台容易踩的认知差异。5.1 常用命令对照表Windows / CMDLinux作用说明dirls -l列出目录内容cdcd切换目录copycp复制文件xcopycp -r递归复制目录movemv移动/重命名delrm删除文件rmdir /srm -rf删除整个目录树mdmkdir -p创建目录typecat查看文本文件内容findstrgrep搜索文本模式fcdiff比较文件差异tasklistps aux查看进程列表taskkill /F /PID 123kill -9 123强制结束进程pingping网络连通性测试ipconfigip addr或ifconfig查看 IP 配置clsclear清屏renmv重命名文件whoamiwhoami查看当前用户helpman或--help查看命令帮助这张表不是让你照着敲而是帮你建立“命令对位”的思维——Windows 下的每个操作在 Linux 下都有一个对应的工具先把这层映射关系搞清楚切过去就不慌了。5.2 Windows 开发者切 Linux 的三个适应点光会命令还不够很多 Windows 的“默认认知”在 Linux 下是不成立的这几个差异我切过来时踩得很深提前说出来给你省点学费。第一路径分隔符和大小写敏感。Windows 用反斜杠\分隔路径Linux 用正斜杠/。Windows 文件名不区分大小写README.md和readme.md是同一个文件Linux 则是两个完全不同的文件。这种差异在代码里引用文件时最容易出问题——在本地 Windows 编译好的代码放到 Linux 服务器上运行时告诉你文件找不到十有八九是对大小写敏感没适应。第二换行符差异。Windows 文本文件的行尾是\r\nLinux 是\n。Windows 写的脚本传到 Linux 上可能报bad interpreter这类错误因为第一行的#!/bin/bash\r把\r当作了解释器路径的一部分。解决办法是用sed批量清理sed -i s/\r$// myscript.sh这条命令会去掉每行结尾的\r脚本立刻恢复正常。第三权限模型完全不同。Windows 的目录通常默认所有用户可读可写Linux 则是严格的文件权限控制每个文件都有 owner、group、others 三组权限读、写、执行。从 Windows 切过来的开发者到了 Linux 服务器上经常会遇到Permission denied以为自己账号有问题其实只是文件权限没配好。看完权限后一个chmod就能解决chmod x myscript.sh # 给脚本加执行权限 chmod -R 755 /data/web # 目录权限在这三个适应点里最需要刻在脑子里的就是大小写敏感和权限模型它们会反复出现在各种莫名其妙的问题里。6. Shell 脚本与数据库操作把命令串起来干活单条命令再强干复杂活也得串起来。Shell 脚本就是 Linux 命令的“胶水”把多条命令、循环、条件判断组合成一个自动化流程。开发环境里还经常要连各种数据库这一节说一下 Shell 脚本的基础姿势和 Linux 下登录 MSSQL 查看数据库的实操方法。6.1 Shell 脚本执行 Linux 命令从写第一行开始Shell 脚本说白了就是把你要敲的命令写进一个文件然后让系统批量执行。一个最基本的脚本长这样#!/bin/bash # 我的第一个脚本 cd /home/tom/project ls -lh echo 脚本执行完毕第一行#!/bin/bash是 shebang告诉系统用哪个解释器来跑这个脚本。保存为myscript.sh后需要给它执行权限再运行chmod x myscript.sh ./myscript.sh脚本里常用的三个要素变量。脚本里别写死路径用变量代替改起来省事LOG_DIR/var/log/app BACKUP_DIR/backup cp $LOG_DIR $BACKUP_DIR命令替换。把某个命令的输出拿去当参数这是脚本拼装的核心技巧。把当前日期拼进文件名TODAY$(date %F) tar -czvf backup_${TODAY}.tar.gz /data/app$()里执行命令结果赋值给变量。老式写法是反引号date %F功能一样但$()可读性更好还支持嵌套。循环和条件判断。比如批量给所有.txt文件加.bak后缀for file in /home/tom/*.txt; do cp $file $file.bak done比如检查命令是否执行成功if [ $? -ne 0 ]; then echo 上一次命令执行失败 exit 1 fi$?是上一条命令的退出码-ne 0表示不等于 0即失败。给你一个实际能用的脚本批量打包日志目录下最近 7 天的日志文件并清理 7 天前的#!/bin/bash LOG_DIR/var/log/app TODAY$(date %F) tar -czvf ${LOG_DIR}/logs_${TODAY}.tar.gz ${LOG_DIR}/*.log find ${LOG_DIR} -name *.log -mtime 7 -delete-mtime 7表示修改时间超过 7 天-delete直接删除。这个脚本可以直接加到 crontab 里定时跑自动化解决日志归档问题。Shell 脚本上手后的感觉就是你真正在教 Linux 帮你干活而不是自己在终端里一遍遍地敲命令。我在实际工作中会把重复三次以上的操作都写成脚本哪怕只是三行把脚本放进~/bin目录设好执行权限后续随时调用。6.2 Linux 下连接 MSSQL 查看数据库很多团队用的是 SQL Server但服务器是 Linux。微软官方提供了sqlcmd工具可以在 Linux 命令行下直接连 MSSQL。前提条件有几个MSSQL 服务端需要开启了 SQL 身份验证混合模式也就是sa账号能登录防火墙或安全组放行了 1433 端口客户端能访问到服务端。安装sqlcmd以 Ubuntu/Debian 系为例先导入微软的软件源curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg curl -fsSL https://packages.microsoft.com/config/ubuntu/22.04/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list sudo apt-get update sudo ACCEPT_EULAY apt-get install -y mssql-tools18 unixodbc-dev安装完成后把sqlcmd的路径加到环境变量里echo export PATH$PATH:/opt/mssql-tools18/bin ~/.bashrc source ~/.bashrc连接 MSSQL 的命令sqlcmd -S 192.168.1.100,1433 -U sa -P 你的密码 -C-S指定服务器地址和端口逗号不是冒号这是 SQL Server 的习惯-U用户名-P密码-C表示信任服务器证书新版工具要求加这个参数否则 TLS 证书校验会报错。连接成功后进入了sqlcmd交互模式输入语句后要敲GO才会执行SELECT name FROM sys.databases; GO这个查询会列出服务器上所有数据库的名字。想查看某个数据库里的表USE your_db_name; GO SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES; GO或者直接查数据USE your_db_name; GO SELECT TOP 10 * FROM users; GO退出交互模式EXIT也可以直接在命令行里一次性执行不进入交互模式sqlcmd -S 192.168.1.100,1433 -U sa -P 你的密码 -C -Q SELECT name FROM sys.databases用-Q接一条 SQL执行完自动退出适合写脚本时调用。我自己写脚本查数据库时都是用的这种方式省得处理交互式输入。如果你不想装一堆依赖还可以用 Docker 跑一个 sqlcmd 容器一条命令完事docker run --rm -it mcr.microsoft.com/mssql-tools:latest /opt/mssql-tools18/bin/sqlcmd -S 192.168.1.100,1433 -U sa -P 你的密码 -C不过容器方式每次都要拉镜像速度不如本机装工具来得快看你取舍了。我在实际使用中总结了几点经验密码别直接写在命令行参数里终端历史记录会留下密码用环境变量传递更安全一些连接超时或登录失败时先确认端口能通telnet 192.168.1.100 1433或者nc -vz再确认 SQL Server 服务状态sa密码里如果包含特殊字符在 shell 里记得用单引号包起来避免 shell 解释。这些细节看着小但都能避免你在生产环境里手忙脚乱。最后再分享一个小技巧不管用哪个命令养成习惯先看command --help或man command很多参数记不住很正常但帮助文档就在手边。我自己工作这么多年也经常临时翻man页面。命令这东西不是背出来的是踩坑踩出来的——多敲几次多踩几次坑你就自然记住了。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

AI工程从零开始:从模型微调到部署的完整链路实战指南 2026/10/2 5:37:13

AI工程从零开始:从模型微调到部署的完整链路实战指南

我刚入行AI时,最怕看到的就是“from scratch”这个词。当时啃完《动手学深度学习》,又把《Build a Large Language Model from Scratch》那本英文书翻了快一半,心里总有一种错觉:好像我已经会造模型了。结果真到了要独立做一个AI系…

阅读更多 →
AI编译栈原理与实战:模型如何高效映射到边缘硬件 2026/10/2 5:37:13

AI编译栈原理与实战:模型如何高效映射到边缘硬件

1. 这不是“跑个模型”那么简单:为什么同一份PyTorch代码在手机上卡成PPT,而在服务器上却丝滑如德芙?你肯定见过这种场景:一个在A100上跑得飞快的ResNet-50模型,导出成ONNX后往安卓手机一扔,推理耗时直接从…

阅读更多 →
开源鸿蒙7.0 Release技术解析:RISC-V与星闪的物联网新范式 2026/10/2 5:37:12

开源鸿蒙7.0 Release技术解析:RISC-V与星闪的物联网新范式

开源鸿蒙(OpenHarmony)7.0 Release在2026年9月迎来一个标志性时刻:AtomGit研发的小鸿AI开源鸿蒙星闪AIOT RISC-V实验箱正式通过兼容性认证,成为全球首款获此认证的商用设备。但比这个事件本身更值得关注的,是7.0 Relea…

阅读更多 →
OpenRig开放式可重构电脑机架:从设计到组装的完整指南 2026/10/2 5:37:12

OpenRig开放式可重构电脑机架:从设计到组装的完整指南

1. 从"openrig"这个想法说起:为什么要打造开放式的可重构工作装备先说背景。我最早接触"rig"这个概念,是在折腾视频剪辑工作站的时候。那时候做一条4K素材的片子,渲染动辄三四个小时,想升级硬件却发现自己被机…

阅读更多 →
TF.js浏览器端AI落地:WebGL与WebGPU算力调度深度解析 2026/10/2 5:37:12

TF.js浏览器端AI落地:WebGL与WebGPU算力调度深度解析

1. 为什么非得在浏览器里跑模型?——从“能跑”到“该跑”的底层逻辑重估TensorFlow.js 这个词,现在几乎成了前端工程师简历里的标配技能点。但翻遍社区教程,90%的内容止步于“加载预训练模型识别一张猫图”,剩下10%则在抱怨“卡顿…

阅读更多 →
MOM系统实战:直连PLC与QMS构建制造实时数据流 2026/10/2 5:37:05

MOM系统实战:直连PLC与QMS构建制造实时数据流

简介:本资源是一份面向制造业数字化转型从业者、MOM系统实施顾问及智能制造工程师的实战型PPT方案,聚焦数字化企业制造运营管理(MOM)系统的整体架构设计与落地实践路径。内容覆盖MOM八大核心模块(生产执行、质量管理、…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉