linux常用命令
1.常见命令
1.1 alias命令别名
对于较长的命令,可以将其定义成较短的别名
alias NAME='VALUE'
unalias #删除别名
-a #取消所有别名
\alias #斜杠加别名可以还原同名命令
如果想永久有效,要定义在配置文件中
- 仅对当前用户:~/.bashrc
- 对所有用户有效:/etc/bashrc
注:source是命令,点号(.)也是命令,功能同source
1.2 查看硬件信息
1.2.1查看cpu
[root@localhost ~]#lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 158
Model name: Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz
Stepping: 10
CPU MHz: 3192.002
BogoMIPS: 6384.00
Hypervisor vendor: VMware
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 12288K
NUMA node0 CPU(s): 0,1
[root@localhost ~]#cat /proc/cpuinfo
1.2.2 查看内存大小
[root@localhost ~]#free
total used free shared buff/cache available
Mem: 1863032 171824 1479760 9728 211448 1538864
Swap: 2098172 0 2098172
[root@localhost ~]#cat /proc/meminfo
MemTotal: 1863032 kB
MemFree: 1480116 kB
MemAvailable: 1539220 kB
Buffers: 2116 kB
Cached: 186272 kB
SwapCached: 0 kB
Active: 85476 kB
Inactive: 143752 kB
Active(anon): 41244 kB
Inactive(anon): 9324 kB
Active(file): 44232 kB
Inactive(file): 134428 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 2098172 kB
SwapFree: 2098172 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 40880 kB
Mapped: 23360 kB
Shmem: 9728 kB
Slab: 49576 kB
SReclaimable: 23060 kB
SUnreclaim: 26516 kB
KernelStack: 3952 kB
PageTables: 3776 kB
NFS_Unstable: 0 kB
......
1.2.3 查看硬盘和分区情况
[root@localhost ~]#lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 50G 0 part /
sr0 11:0 1 4.4G 0 rom
[root@localhost ~]#cat /proc/partitions
major minor #blocks name
11 0 4601856 sr0
8 0 104857600 sda
8 1 1048576 sda1
8 2 2098176 sda2
8 3 52428800 sda3
1.2.4 查看系统版本信息
查看系统架构
[root@localhost ~]#arch
x86_64
[root@rhel5 ~]# arch
i686
查看内核版本
[root@localhost ~]#uname -r
3.10.0-1160.el7.x86_64
查看操作系统发行版
[root@localhost ~]#cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@localhost ~]#cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
[root@ubuntu1804 ~]#cat /etc/issue
Ubuntu 18.04.1 LTS \n \l
[root@localhost ~]#lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.9.2009 (Core)
Release: 7.9.2009
Codename: Core
[root@localhost ~]#lsb_release -rs
7.9.2009
1.3其他常用命令
1.3.1关机与重启
- 关机:
halt
poweroff
- 重启:
reboot
-f: 强制,不调用shutdown
-p: 切断电源
- 关机或重启:shutdown
-r: reboot
-h: halt
-c:cancel
TIME:无指定,默认相当于+1(CentOS7)
now: 立刻,相当于+0
+#: 相对时间表示法,几分钟之后;例如 +3
hh:mm: 绝对时间表示,指明具体时间
1.3.2用户登录信息查看命令
-
whoami: 显示当前登录有效用户
-
who: 系统当前所有的登录会话
-
w: 系统当前所有的登录会话及所做的操作
[root@localhost ~]#whoami
root
[root@localhost ~]#who
root pts/0 2022-05-26 00:49 (192.168.10.1)
[root@localhost ~]#w
02:27:39 up 1:38, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.10.1 00:49 3.00s 0.19s 0.00s w
1.3.3命令行扩展:`` 和 $()
把一个命令的输出打印给另一个命令的参数
1.4输出信息echo
选项:
- -E (默认)不支持 \ 解释功能
- -n 不自动换行
- -e 启用 \ 字符的解释功能
[root@localhost ~]#echo "echo $HOSTNAME"
echo localhost.localdomain
1.5 history命令行历史
参考:https://www.cnblogs.com/liwenlong-unix/p/17759217.html
-c: 清空命令历史
-d offset: 删除历史中指定的第offset个命令
n: 显示最近的n条历史
-a: 追加本次会话新执行的命令历史列表至历史文件
-r: 读历史文件附加到历史列表
-w: 保存历史列表到指定的历史文件
-n: 读历史文件中未读过的行到历史列表
-p: 展开历史参数成多行,但不存在历史列表中
-s: 展开历史参数成一行,附加在历史列表后
调用命令行历史
#重复前一个命令方法
!string 重复前一个以“string”开头的命令
!?string 重复前一个包含string的命令
!string:p 仅打印命令历史,而不执行
#要重新调用前一个命令中最后一个参数
!$ 表示前一个命令中最后一个参数
Esc, . 点击Esc键后松开,然后点击 . 键
Alt+ . 按住Alt键的同时点击 . 键
1.6bash的快捷键
Ctrl + l 清屏,相当于clear命令
Ctrl + s 阻止屏幕输出,锁定
Ctrl + q 允许屏幕输出,解锁
Ctrl + c 终止命令
Ctrl + z 挂起命令
Ctrl + a 光标移到命令行首,相当于Home
Ctrl + e 光标移到命令行尾,相当于End
Ctrl + u 从光标处删除至命令行首
Ctrl + k 从光标处删除至命令行尾
Alt + r 删除当前整行
1.7 cd更改目录
- 切换至父目录: cd ..
- 切换至当前用户主目录: cd
- 切换至以前的工作目录: cd -
pwd显示当前路径
2.文件管理
2.1常见的文件系统目录功能
/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录
/bin:所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
/sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序
/lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
/lib64:专用于x86_64系统上的辅助共享库文件存放位置
/etc:配置文件目录
/home/USERNAME:普通用户家目录
/root:管理员的家目录
/media:便携式移动设备挂载点
/mnt:临时文件系统挂载点
/dev:设备文件及特殊文件存储位置
b: block device,随机访问
c: character device,线性访问
/opt:第三方应用程序的安装位置
/srv:系统上运行的服务用到的数据
/tmp:临时文件存储位置
/usr: universal shared, read-only data
bin: 保证系统拥有完整功能而提供的应用程序
sbin:
lib:32位使用
lib64:只存在64位系统
include: C程序的头文件(header files)
share:结构化独立的数据,例如doc, man等
local:第三方应用程序的安装位置
bin, sbin, lib, lib64, etc, share
/var: variable data files
cache: 应用程序缓存数据目录
lib: 应用程序状态信息数据
local:专用于为/usr/local下的应用程序存储可变数据
lock: 锁文件
log: 日志目录及文件
opt: 专用于为/opt下的应用程序存储可变数据
run: 运行中的进程相关数据,通常用于存储进程pid文件
spool: 应用程序数据池
tmp: 保存系统两次重启之间产生的临时数据
/proc: 用于输出内核与进程信息相关的虚拟文件系统
/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统
/selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位置
2.2应用程序的组成部分
二进制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
库文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
配置文件:/etc, /etc/DIRECTORY, /usr/local/etc
帮助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man, /usr/local/share/doc
2.3Linux下的文件类型
- 普通文件
d 目录文件directory
l 符号链接文件link
b 块设备block
c 字符设备character
p 管道文件pipe
s 套接字文件socket
2.4 ls列出目录内容
-a 包含隐藏文件
-l 显示额外的信息
-R 目录递归
-ld 目录和符号链接信息
-1 文件分行显示
-S 按从大到小排序
-t 按mtime排序
-u 配合-t选项,显示并按atime从新到旧排序
-U 按目录存放顺序显示
-X 按文件后缀排序
-F 对不同类型文件显示时附加不同的符号:*/=>@|
-C 文件多时,以多列的方式显示文件,默认是一列(标准输出)
2.5 file确定文件内容
file命令查看文件类型
-b 列出文件辨识结果时,不显示文件名称
-f filelist 列出文件filelist中文件名的文件类型
-F 使用指定分隔符号替换输出文件名后默认的”:”分隔符
-L 查看对应软链接对应文件的文件类型
2.6touch创建空文件和刷新时间
时间戳:
access time 访问时间,atime,读取文件内容
modify time 修改时间,mtime,改变文件内容(数据)
change time 改变时间,ctime,元数据发生改变
[root@localhost ~]#stat /etc/passwd
File: ‘/etc/passwd’
Size: 844 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 34087913 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-05-27 00:01:01.967915385 +0800
Modify: 2022-05-11 03:37:20.841987135 +0800
Change: 2022-05-11 03:37:20.842987134 +0800
Birth: -
touch命令可以用来创建空文件或刷新文件的时间
-a 仅改变 atime和ctime
-m 仅改变 mtime和ctime
-t [[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的时间戳
-c 如果文件不存在,则不予创建
2.7cp复制文件和目录
cp(copy)命令可以实现文件或目录的复制
常用选项
- -i 如果目标已存在,覆盖前提示是否覆盖
- -n 不覆盖,注意两者顺序
- -r, -R 递归复制目录及内部的所有内容
- -a 归档,相当于-dR --preserv=all,常用于备份功能
- -d --no-dereference --preserv=links 不复制原文件,只复制链接名
- -u --update 只复制源比目标更新文件或目标不存在的文件
- -b 目标存在,覆盖前先备份,默认形式为 filename~ ,只保留最近的一个备份
- --backup=numbered 目标存在,覆盖前先备份加数字后缀,形式为 filename.# ,可以保留多个版本
2.8mv移动和重命名文件
mv 命令可以实现文件或目录的移动和改名
常用选项:
- -i 交互式
- -f 强制
- -b 目标存在,覆盖前先备份
2.9 rm删除文件
常用选项:
- -i 交互式
- -f 强制删除
- -r 递归--no-preserve-root 删除/
2.10目录操作
2.10.1 tree显示目录树
常见选项:
- -d: 只显示目录
- -L level:指定显示的层级数目
- -P pattern: 只显示由指定wild-card pattern匹配到的路径
2.10.2 mkdir创建空目录
常见选项:
-
-p 存在于不报错,且可自动创建所需的各目录
-
-v 显示详细信息
-
- -m MODE: 创建目录时直接指定权限
2.10.3 rmdir删除空目录
常见选项:
- -p 递归删除父空目录
- -v 显示详细信息
注:rmdir只能删除空目录
3.链接
3.1硬(hard)链接
- 硬链接本质上就给一个文件起一个新的名称,实质是同一个文件
- 硬链接特性
- 创建硬链接会在对应的目录中增加额外的记录项以引用文件
- 对应于同一文件系统上一个物理文件
- 每个目录引用相同的inode号
- 创建时链接数递增
- 删除文件时:rm命令递减计数的链接,文件要存在,至少有一个链接数,当链接数为零时,该文件被删除
- 不能跨越驱动器或分区
- 不支持对目录创建硬链接
[root@localhost home]#ln /home/dir/1.txt /home/filedir/a.txt
[root@localhost home]#ll !*
ll /home/dir/1.txt /home/filedir/a.txt
-rw-r--r-- 3 root root 501 May 27 19:03 /home/dir/1.txt
-rw-r--r-- 3 root root 501 May 27 19:03 /home/filedir/a.txt
[root@localhost home]#ll -i /home/dir/1.txt /home/filedir/a.txt
67160149 -rw-r--r-- 3 root root 501 May 27 19:03 /home/dir/1.txt
67160149 -rw-r--r-- 3 root root 501 May 27 19:03 /home/filedir/a.txt
3.2符号 symbolic (或软 soft)链接
软链接文件和原文件本质上不是同一个文件
软链接特点
- 一个符号链接的内容是它引用文件的名称
- 可以对目录创建软链接
- 可以跨分区的文件实现
- 指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数
- 在创建软链接时, 如果源文件使用相对路径,是相对于软链接文件的路径,而非相对于当前工作目录,但是软链接的路径如果是相对路径,则是相对于当前工作目录
[root@localhost home]#ll !*
ll -s /home/dir/1.txt /home/filedir/a.txt
4 -rw-r--r-- 2 root root 501 May 27 19:03 /home/dir/1.txt
0 lrwxrwxrwx 1 root root 15 May 27 19:23 /home/filedir/a.txt -> /home/dir/1.txt
3.3硬链接和软链接区别总结
\1. 本质:
硬链接:本质是同一个文件
软链接:本质不是同一个文件
\2. 跨设备
硬链接:不支持
软链接:支持
\3. inode
硬链接:相同
软链接:不同
\4. 链接数
硬链接:创建新的硬链接,链接数会增加,删除硬链接,链接数减少
软链接:创建或删除,链接数不会变化
\5. 文件夹
硬链接:不支持
软链接:支持
\6. 相对路径
硬链接:原始文件相对路径是相对于当前工作目录
软链接:原始文件的相对路径是相对于链接文件的相对路径
\7. 删除源文件
硬链接:只是链接数减一,但链接文件的访问不受影响
软链接:链接文件将无法访问
\8. 文件类型
硬链接:和源文件相同
软链接:链接文件,和源文件无关
\9. 文件大小
硬链接: 和源文件相同
软链接: 源文件的路径的长度
4.IO 重定向和管道
4.1 标准输入和输出
Linux给程序提供三种 I/O 设备
- 标准输入(STDIN) -0 默认接受来自终端窗口的输入
- 标准输出(STDOUT)-1 默认输出到终端窗口
- 标准错误(STDERR) -2 默认输出到终端窗口
[root@localhost ~]#ll /dev/std*
lrwxrwxrwx 1 root root 15 May 27 16:38 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 May 27 16:38 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root 15 May 27 16:38 /dev/stdout -> /proc/self/fd/1
[root@localhost ~]#ll /proc/self/fd/*
ls: cannot access /proc/self/fd/255: No such file or directory
ls: cannot access /proc/self/fd/3: No such file or directory
lrwx------ 1 root root 64 May 27 19:53 /proc/self/fd/0 -> /dev/pts/0
lrwx------ 1 root root 64 May 27 19:53 /proc/self/fd/1 -> /dev/pts/0
lrwx------ 1 root root 64 May 27 19:53 /proc/self/fd/2 -> /dev/pts/0
4.2 I/O重定向 redirect
4.2.1 标准输出和错误重新定向
1> 或 > 把STDOUT重定向到文件
2> 把STDERR重定向到文件
&> 把标准输出和错误都重定向
>& 和上面功能一样,建议使用上面方式
覆盖与追加
覆盖 >
追加 >>
4.2.2 标准输入重定向
从文件中导入STDIN,代替当前终端的输入设备,使用 < 来重定向标准输入
能够接受从文件中导入的STDIN的命令
4.2.2.1 tr 命令
选项:
- -d --delete:删除所有属于第一字符集的字符
- -s --squeeze-repeats:把连续重复的字符以单独一个字符表示,即去重
- -t --truncate-set1:将第一个字符集对应字符转化为第二字符集对应的字符
- -c –C --complement:取字符集的补集.
[root@localhost ~]#df > df.log
[root@localhost ~]#tr -s ' ' < df.log
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 920748 0 920748 0% /dev
tmpfs 931516 0 931516 0% /dev/shm
tmpfs 931516 9696 921820 2% /run
tmpfs 931516 0 931516 0% /sys/fs/cgroup
/dev/sda3 52403200 1632188 50771012 4% /
/dev/sda1 1038336 145424 892912 15% /boot
tmpfs 186304 0 186304 0% /run/user/0
[root@localhost ~]#tr -s ' ' : < df.log
Filesystem:1K-blocks:Used:Available:Use%:Mounted:on
devtmpfs:920748:0:920748:0%:/dev
tmpfs:931516:0:931516:0%:/dev/shm
tmpfs:931516:9696:921820:2%:/run
tmpfs:931516:0:931516:0%:/sys/fs/cgroup
/dev/sda3:52403200:1632188:50771012:4%:/
/dev/sda1:1038336:145424:892912:15%:/boot
tmpfs:186304:0:186304:0%:/run/user/0
4.2.2.2 多行重定向
使用 "<<终止词" 命令从键盘把多行重导向给STDIN
[root@localhost ~]#cat > a.log << EOF
> xiaoming
> EOF
[root@localhost ~]#cat a.log
xiaoming
4.3 管道
4.3.1管道符
将命令1的STDOUT发送给命令2的STDIN,命令2的STDOUT发送到命令3的STDIN
[root@localhost ~]#df|tr -s ' '
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 920748 0 920748 0% /dev
tmpfs 931516 0 931516 0% /dev/shm
tmpfs 931516 9696 921820 2% /run
tmpfs 931516 0 931516 0% /sys/fs/cgroup
/dev/sda3 52403200 1632196 50771004 4% /
/dev/sda1 1038336 145424 892912 15% /boot
tmpfs 186304 0 186304 0% /run/user/0
4.3.2 tee 命令
利用 tee 命令可以重定向到多个目标,经常配合管道符一起使用
把命令1的STDOUT保存在文件中,做为命令2的输入
[root@localhost ~]#cat <<EOF | tee /etc/motd
> welcome to magedu
> happy new year
> EOF
welcome to magedu
happy new year
[root@localhost ~]#cat <<EOF | tee /etc/motd > /root/a.txt
> hello
> EOF
[root@localhost ~]#cat a.txt
hello
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!