Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > Linux常用命令

一文整理Linux最常用命令大全(附详细实例)

作者:say_fall

本文总结了Linux系统中最常用的文件与目录操作命令,适合初学者快速上手,主要内容包括基础概念,核心命令,文本处理和实用技巧,文中的示例代码讲解详细,有需要的小伙伴可以了解下

前言

提到Linux,很多人的第一反应是——那个黑乎乎的终端界面。确实,不像Windows有图形化界面,Linux大部分操作都要通过命令行完成。但也正因为如此,Linux拥有了高效、灵活、可自动化的独特魅力。

对于初学者来说,面对一堆陌生指令,确实有点发怵。不过不用担心——命令本质就是程序的调用,和调用函数没太大区别。本文将Linux中最常用的指令分门别类,每条都配有实际例子,学完就能直接在终端上手操作。

通过本文,你将掌握:

技能应用场景
文件与目录操作创建、删除、复制、移动文件
文本查看与处理看日志、搜关键字、统计行数
打包与压缩传输或备份文件
文件传输服务器之间互传文件

前置知识: 本文不要求你有多少Linux基础,只要会用键盘就行。

一、文件与目录基础概念

目录和文件是什么

概念说明
目录就是文件夹,里面存着文件名和inode的对应关系
文件内容 + 属性。即使是空文件,也会因为要存元数据占用一个inode

文件操作分两类:一类是对内容的操作(读、写、追加),另一类是对属性的操作(改权限、改所有者、重命名)。

目录里的隐藏成员

任何目录(包括空目录)都会自动带上两个隐藏目录:

根目录 / 比较特殊,它的上级还是自己。

隐藏文件规则

文件名以 . 开头的都是隐藏文件,默认看不见,要用 ls -a 才能显示。

文件系统长什么样

从根目录 / 开始往下,整个文件系统就是一棵大树:

Windows的路径用 \ 分隔,Linux用 /,这个别搞混了。

绝对路径 vs 相对路径

路径类型长什么样特点啥时候用
绝对路径/home/user/test.c从根目录写起,唯一确定写脚本、配置文件
相对路径../test.c从当前目录出发日常敲命令更方便

二、文件与目录操作指令

ls — 看看目录里有什么

功能:查看文件和目录的属性信息

语法:ls [选项] [目录或文件]

命令功能
ls只显示非隐藏文件名
ls -l显示详细属性(权限、大小、时间等)
ls -a显示所有文件,包括隐藏的
ls -la详细属性 + 隐藏文件(最常用)
ls -lh文件大小用 KB/MB/GB 显示
ls -i显示文件的inode编号

ls -l 里的三个时间

时间含义啥时候会变
Access最后访问时间cat、grep读文件时更新
Modify内容修改时间改文件内容时更新
Change状态改变时间改内容或改属性都会更新

pwd — 我在哪儿?

语法:pwd

显示当前所在目录的绝对路径,迷路了就敲一下。

[user@localhost test]$ pwd
/home/user/test

cd — 换个地方待着

语法:cd [目录名]

命令功能
cd ..回上级
cd ~回家目录
cd -回上一次待的目录
cd /tmp绝对路径跳转

touch — 新建文件 / 改时间

语法:touch [选项] 文件...

touch newFile.txt      # 创建文件
touch -a newFile.txt   # 只改访问时间
touch -m newFile.txt   # 只改修改时间

mkdir — 建目录

语法:mkdir [选项] dirname...

选项功能
-p递归创建多级目录
mkdir mydir                     # 普通建
mkdir -p a/b/c/d               # 一口气建多层

rmdir — 删空目录

只能删空目录!目录里有东西会报错。

rmdir mydir                    # 删空目录
rmdir -p a/b/c/d              # 递归删空目录

rm — 删除(危险!)

语法:rm [-f-i-r-v] [dirName/dir]

选项功能
-f强制删,不问
-i删之前问一下
-r递归删目录

rm -rf 直接删除不过回收站,极其危险!手抖可能删库跑路

rm file.txt        # 删文件
rm -r dir          # 删目录
rm -rf dir         # 强制删目录(危险!)

cp — 复制

语法:cp [选项] 源 目标

选项功能
-f强制覆盖
-i覆盖前问一下
-r递归复制目录
cp a.txt b.txt          # 复制文件
cp -r dir1 dir2        # 复制整个目录

mv — 移动或重命名

语法:mv [选项] 源 目标

mv a.txt b.txt      # 改名
mv a.txt temp/      # 移动到temp目录
mv -i a.txt b.txt   # 覆盖前问一下

mv本质是改名+改路径,文件内容纹丝不动,放心用

三、文本查看与处理

echo & printf — 输出点什么

echo "hello world"          # 自动换行
printf "hello %d\n" 100     # 格式化输出,要手动加\n

cat — 看文件内容

语法:cat [选项] [文件]

选项功能
-b非空行编号
-n所有行编号
-s压缩连续空行

小文件直接 cat 一眼看完,大文件用 less 才能愉快地翻页浏览

more — 分页看(简陋版)

空格翻页,回车换行,q退出。缺点是只能往下翻,不能往上。

less — 分页看(推荐)

比more强大多了:

大文件首选less,不用一次性加载到内存

head & tail — 看头看尾

head -20 log.txt       # 看前20行
tail -20 log.txt       # 看后20行
tail -f log.txt        # 实时跟踪日志(很实用!)
head -200 log.txt | tail -20   # 取181~200行

wc — 统计

选项功能
wc -l统计行数
wc -w统计单词数
wc -c统计字节数

grep — 搜内容

语法:grep [选项] "字符串" 文件

选项功能
-i忽略大小写
-n显示行号
-v反向选择(不要这行)
grep "error" log.txt        # 找含error的行
grep -n "error" log.txt     # 带行号
grep -iv "error" log.txt    # 忽略大小写 + 反选

四、查找与帮助

find — 找文件

语法:find 路径 -name "文件名"

find ~ -name "test.c"       # 在家目录找test.c
find / -name "*.conf"      # 全盘找conf文件

which — 命令在哪

which ls       # /usr/bin/ls
which python   # 看python在哪

whereis 只认识"外部公民"(独立程序),cd 这种 Shell 内置命令它找不到也正常

man — 查手册

语法:man [章节] 命令

章节内容
1普通命令
2系统调用
3库函数
man printf      # 看命令
man 3 printf    # 看C函数

五、系统信息与工具

uname — 系统信息

uname -r       # 内核版本
uname -a       # 全部信息

date — 时间

date                      # 当前时间
date +%Y-%m-%d           # 格式化
date +%s                 # 时间戳
date -d @1700000000      # 时间戳转日期

cal — 日历

cal           # 当月
cal 2000      # 2000年全年
cal -3        # 前后三个月

bc — 计算器

bc            # 进入交互模式
1+2*3         # 输入表达式

history — 历史命令

history       # 查看历史
!100          # 执行第100条
!!            # 执行上一条

六、打包与压缩

先搞清楚两个概念

概念干啥的
打包把多个文件合并成一个,体积不变
压缩用算法把文件变小

zip/unzip — 通用格式

yum install -y zip unzip    # 安装

zip backup.zip a.txt b.txt  # 压缩多文件
zip -r backup.zip dir/      # 压缩目录

unzip backup.zip            # 解压
unzip backup.zip -d /tmp    # 解压到指定目录

tar — Linux最常用

语法:tar 参数 压缩包名 源文件

参数功能
-c打包
-x解包
-zgzip压缩/解压
-jbzip2压缩/解压
-Jxz压缩/解压
-v显示过程
-f指定文件名(放最后!)
-C解压到指定目录
tar -czf backup.tar.gz dir/           # 打包+gzip压缩
tar -xzf backup.tar.gz -C /tmp        # 解压到/tmp

tar -cJf backup.tar.xz dir/           # 打包+xz压缩
tar -xJf backup.tar.xz                # 解压xz

格式要匹配!.tar.gz用-z,.tar.xz用-J,混用会报错

七、文件传输

rz/sz — 和Windows互传

用Xshell连Linux时很方便:

yum install -y lrzsz    # 安装

rz                      # 弹窗选文件上传
sz file.txt             # 下载文件

scp — 跨服务器传

基于SSH,安全可靠:

# 上传
scp local.txt root@192.168.1.200:/root/

# 下载
scp root@192.168.1.200:/root/remote.txt ./

# 传目录加 -r
scp -r local_dir root@192.168.1.200:/root/

八、重定向与管道

重定向

把输出写到文件里:

符号功能
>覆盖写
>>追加写
echo "hello" > a.txt      # 覆盖
echo "world" >> a.txt     # 追加

管道

把前一个命令的输出,传给后一个命令当输入:

head -200 log.txt | tail -20      # 取181~200行
cat log.txt | grep "error" | wc -l  # 统计error行数

九、终端快捷键

常用快捷键

快捷键功能
Ctrl + C强制停掉当前程序
Ctrl + D退出登录
Ctrl + L清屏
Ctrl + R搜历史命令
Tab自动补全

XShell复制粘贴:Ctrl+Insert复制,Shift+Insert粘贴

关机重启

reboot              # 重启
halt                # 关机
shutdown -h now     # 立刻关机
shutdown -r now     # 立刻重启
shutdown -h 20:00   # 定时关机
shutdown -c         # 取消定时

云服务器别乱关机,可能丢数据

十、命令的本质

命令就是程序,和我们自己写的C代码没区别。它们放在 /bin、/usr/bin 这些目录下,敲命令就是运行这些程序。

Linux有个理念叫"一切皆文件"——键盘是文件,显示器是文件,连进程都可以是文件。统一用"打开-读写-关闭"来操作。

十一、标准流

程序运行时默认打开三个流:

默认指向啥时候用
stdin键盘scanf读输入
stdout显示器printf输出
stderr显示器报错信息

十二、几个思考题

学完本文,来试试回答这些问题:

为什么程序退出了,文件数据还在?

答: 因为数据已经写到磁盘上了。程序运行时数据存在内存(RAM)中,断电即失;而磁盘是持久存储介质,除非物理损坏或主动删除,数据会一直保留。

这就是为什么写代码时要记得保存——程序崩溃了,磁盘上的文件可不会丢!

空文件为啥也占空间?

答: 因为文件系统不仅要存文件内容,还要存文件属性(权限、所有者、创建时间等)。这些元数据存储在inode中,每个文件至少占用一个inode,即使文件内容为空。

可以用 ls -i 查看文件的inode编号

重定向>和管道|有什么区别?

答: 本质区别在于数据的流向:

符号作用数据最终去哪儿
> 或 >>重定向写到文件中
``管道

以上就是一文整理Linux最常用命令大全(附详细实例)的详细内容,更多关于Linux常用命令的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文