ls [options] [directory]
# 列出当前目录的内容(通常是用户的主目录)
ls
# 列出指定目录的内容
ls /path/directory
# 列出当前目录的内容,包括隐藏文件和目录的内容
ls -a
# 以长格式列出当前目录的内容(包括权限、所有者、文件大小等信息)
ls -l
pwd
cd [directory]
# 进入指定目录
cd /path/to/directory
# 进入用户的主目录(通常是 home 目录)
cd ~
# 进入上级目录
cd ..
# 进入根目录
cd /
# 返回上一次所在的目录(使用 - 作为参数)
cd -
touch filename
mkdir directory
rm [options] file/directory
# -r 或 -R:递归删除目录及其内容。
# 使用这个选项时,要特别小心,因为它将删除目录及其所有子目录和文件。
rm -r directory/
# -f:强制删除,不会提示用户确认。
# 这个选项通常与 -r 一起使用,以删除目录及其内容而无需确认。
rm -rf directory/
# -i:交互式删除,会在删除前提示用户确认。
rm -i file
cp [options] source destination
options:可以是一系列选项,用于控制复制行为。
source:要复制的源文件或源目录的路径。
destination:目标文件或目录的路径,即复制后的位置。
# 复制文件到另一个位置
cp file1.txt /path/to/destination/
# 复制多个文件到目标目录
cp file1.txt file2.txt /path/to/destination/
# 复制目录及其内容到目标目录,使用 -r 选项进行递归复制
cp -r directory/ /path/to/destination/
# 保留原文件的权限和属性,使用 -p 选项
cp -p file1.txt /path/to/destination/
# 强制覆盖目标文件,如果目标文件已存在,使用 -f 选项
cp -f file1.txt /path/to/destination/
# 显示复制进度,使用 -v 选项(verbose)
cp -v file1.txt /path/to/destination/
mv [options] source destination
options:可以是一系列选项,用于控制移动或重命名的行为。
source:要移动或重命名的源文件或源目录的路径。
destination:目标文件或目录的路径,即移动后的位置或重命名后的名称。
# 移动文件到另一个位置
mv file1.txt /path/to/destination/
# 重命名文件
mv oldname.txt newname.txt
# 移动目录到另一个位置,使用 -i 选项进行交互式确认
mv -i directory/ /path/to/destination/
# 强制覆盖目标文件,如果目标文件已存在,使用 -f 选项
mv -f file1.txt /path/to/destination/
# 移动目录并保留原文件的权限和属性,使用 -p 选项
mv -p directory/ /path/to/destination/
# 移动多个文件到目标目录
mv file1.txt file2.txt /path/to/destination/
# 显示移动过程,使用 -v 选项(verbose)
mv -v file1.txt /path/to/destination/
cat filename
# more 命令以一页一页地显示文件内容,每次按下空格键会显示下一页,按下 q 键退出。
# more 不支持回滚操作,只能向前查看。
more filename
# less 支持向前和向后滚动查看文件。
# 你可以使用空格键向下滚动一页,使用 b 键向上滚动一页,按下 q 键退出。
less filename
head [options] filename
tail [options] filename
# 查看文件的前 20 行
head -n 20 filename
# 查看文件的最后 20 行
tail -n 20 filename
# 实时监视文件的末尾内容
tail -f filename
- nano 是一个相对简单的文本编辑器,适合初学者。它提供了基本的文本编辑功能,包括打开、编辑、保存和退出文件。nano 提供了一些常用的快捷键操作,例如 Ctrl + O 保存文件,Ctrl + X 退出编辑器等
- vi 是一个强大但稍微复杂的文本编辑器,通常需要一些时间来熟悉。它分为多种模式,包括正常模式、插入模式和命令模式。默认情况下,vi 打开文件后处于正常模式,需要按 i 键进入插入模式以编辑文本。编辑完成后,按 Esc 键返回正常模式,然后使用 :w 保存文件,:q 退出编辑器。
- vim 是 vi 的增强版,具有更多功能和定制选项。vim 也有多种模式,使用 i 键进入插入模式,按 Esc 返回正常模式,然后使用 :w 保存文件,:q 退出编辑器,:wq 保存并退出编辑器,:q! 放弃所有更改并强制退出编辑器。
nano filename
vi filename
vim filename
chmod [options] mode filename
options:chmod 命令的选项,例如 -R 用于递归修改目录及其内容的权限。
mode:权限模式,可以使用数字或符号来表示。
filename:要修改权限的文件或目录的名称。
使用数字设置权限
chmod 命令可以使用数字来表示权限,其中每个权限有一个数字值:
4:读权限(r)
2:写权限(w)
1:执行权限(x)
使用这些数字,可以将它们相加以创建权限模式。
# 将文件 filename 的权限设置为所有者可读、写和执行,而其他用户只能读和执行
chmod 755 filename
# 递归地设置目录 directory 及其所有内容的权限
chmod -R 755 directory
使用符号设置权限
使用符号也可以更直观地表示权限模式。
+:添加权限。
-:删除权限。
=:设置权限。
# 允许所有者添加执行权限
chmod u+x filename
#删除群组和其他用户的读写权限
chmod go-rw filename
chown [newowner]:[newgroup] filename
newowner:要分配给文件或目录的新所有者的用户名或用户 ID。
newgroup:要分配给文件或目录的新所属组的组名或组 ID。
filename:要修改所有者和所属组的文件或目录的名称。
# 将文件 file.txt 的所有者更改为用户 alice
chown alice file.txt
# 将文件 file.txt 的所属组更改为组 users
chown :users file.txt
# 将文件 file.txt 的所有者更改为用户 alice,并将所属组更改为组 users
chown alice:users file.txt
tar -cvf archive.tar files/directories
-c:创建归档文件。
-v:显示详细信息,通常用于查看正在打包的文件列表。
-f:指定归档文件的名称。
# 创建一个名为 myarchive.tar 的归档文件,包含 file1.txt、file2.txt 和 directory1/
tar -cvf myarchive.tar file1.txt file2.txt directory1/
tar -xvf archive.tar
-x:解包归档文件。
-v:显示详细信息,通常用于查看正在解包的文件列表。
-f:指定要解包的归档文件的名称。
# 解包名为 myarchive.tar 的归档文件
tar -xvf myarchive.tar
tar -tvf archive.tar
-t:显示归档文件的内容列表。
-v:显示详细信息,通常用于查看文件列表。
-f:指定要查看的归档文件的名称。
# 显示 myarchive.tar 归档文件的内容列表
tar -tvf myarchive.tar
tar -rvf archive.tar new_files/directories
-r:向归档文件中添加文件或目录。
-v:显示详细信息,通常用于查看添加的文件列表。
-f:指定归档文件的名称。
# 向名为 myarchive.tar 的归档文件中添加新文件和目录
tar -rvf myarchive.tar newfile.txt newdirectory/
# 压缩
tar -czvf archive.tar.gz files/directories
# 解压缩
tar -xzvf archive.tar.gz
-z:表示使用 gzip 压缩(或解压缩)
find [directory] [condition] filename
directory:要搜索的起始目录路径。如果不指定,默认为当前目录。
-name:定义搜索的匹配条件。常见的是 -name 用于按文件名匹配,还有 -type、-size、-mtime 等用于根据类型、大小、修改日期等匹配。
filename:要搜索的文件或目录的名称,可以使用通配符进行模糊匹配。
# 在当前目录及其子目录中搜索文件名为 "example.txt" 的文件
find . -name example.txt
# 在 /home/user/documents 目录中搜索文件名以 ".pdf" 结尾的文件
find /home/user/documents -name "*.pdf"
# 在整个文件系统中搜索目录名为 "backup" 的目录
find / -type d -name backup
# 搜索当前目录及其子目录中所有的空文件夹
find . -type d -empty
# 查找 /var/log 目录下最近 7 天内修改过的 .log 文件
find /var/log -type f -name "*.log" -mtime -7
grep [options] pattern [file...]
pattern:要搜索的文本模式,可以是普通字符串或正则表达式。
file…:要搜索的文件列表。你可以指定一个或多个文件。如果不指定文件名,grep 将从标准输入读取数据。
常用选项
-i 或 --ignore-case:忽略大小写匹配。
-r 或 --recursive:递归搜索目录中的文件。
-w 或 --word-regexp:只匹配整个单词,而不是部分匹配。
-n 或 --line-number:显示匹配行的行号。
-l 或 --files-with-matches:只显示包含匹配文本的文件名,不显示匹配的具体行。
-v 或 --invert-match:显示不匹配模式的行。
-c 或 --count:只显示匹配模式的行数,而不显示具体行。
-e 或 --regexp:允许在命令行中指定多个搜索模式。
# 在文件中搜索特定字符串
grep "pattern" filename
# 使用正则表达式搜索
grep -E "regex_pattern" filename
# 递归搜索目录中的文件
grep -r "pattern" /path/to/search
# 显示匹配行的行号
grep -n "pattern" filename
# 只显示包含匹配文本的文件名
grep -l "pattern" /path/to/search/*
# 显示不匹配模式的行
grep -v "pattern" filename
# 指定多个搜索模式
grep -e "pattern1" -e "pattern2" filename
locate [options] pattern
pattern:要搜索的文件名模式。可以是普通字符串,不是正则表达式。
常用选项
-i 或 --ignore-case:忽略大小写匹配。
-l 或 --limit:限制显示匹配结果的数量。
-c 或 --count:只显示匹配结果的数量,而不显示文件名。
-r 或 --regexp:允许在命令行中指定正则表达式模式。
# 查找包含指定名称的文件
locate filename
# 查找包含指定名称的目录
locate directoryname
# 忽略大小写查找
locate -i filename
# 限制显示结果数量
locate -l 5 filename
# 显示匹配结果的数量而不显示文件名
locate -c filename
# 使用正则表达式搜索
locate -r "regex_pattern"
uname [options]
常用选项:
-a 或 --all:显示所有信息,等同于 -s -n -r -v -m -p -i.
-s 或 --kernel-name:显示内核名称。
-n 或 --nodename:显示网络节点主机名。
-r 或 --kernel-release:显示内核版本。
-v 或 --kernel-version:显示内核发布信息。
-m 或 --machine:显示硬件架构。
-p 或 --processor:显示处理器类型。
-i 或 --hardware-platform:显示硬件平台
# 显示操作系统名称
uname
# 显示所有系统信息
uname -a
# 显示内核版本
uname -r
# 显示硬件架构
uname -m
# 多数 Linux 发行版中都默认安装了 top
# top 会以实时更新的方式显示系统状态,按 q 键可以退出
top
# 需要单独安装 htop。
# 是 top 的增强版本,提供了更多的功能和可视化效果
htop
ps [options]
# 显示当前用户的所有进程
ps
# 显示所有进程的详细信息(包括其他用户的进程)
ps aux
# 以树状结构显示进程(显示进程的父子关系)
ps -ejH
# 显示某个特定用户的进程(以用户名为条件过滤)
ps -u username
# 显示某个特定进程的信息(以进程ID为条件过滤)
ps -p process_id
# 显示完整的进程命令行(包括参数)
ps -f
# 按 CPU 使用率排序并显示前 N 个进程
ps aux --sort=-%cpu | head -n N
# 按内存使用排序并显示前 N 个进程
ps aux --sort=-%mem | head -n N
df [options]
# 查看所有挂载点的磁盘空间信息
df
# 查看指定文件系统类型(如 ext4、NTFS)的磁盘空间信息
df -t ext4
# 以更易读的格式显示磁盘空间(以 GB、MB 等单位显示)
df -h
# 仅显示本地文件系统(不包括虚拟文件系统)的磁盘空间信息
df -x tmpfs -x devtmpfs
# 显示指定挂载点的磁盘空间信息(用于特定目录的磁盘空间查看)
df /path/to/directory
# 以 inode 数量的方式查看文件系统信息(显示可用 inode 数量等)
df -i
du [options] directory
# 查看指定目录的磁盘空间使用情况(默认单位为千字节)
du /path/to/directory
# 以人类可读的格式显示磁盘空间(以 GB、MB 等单位显示)
du -h /path/to/directory
# 查看目录的总磁盘使用情况,不显示子目录的详细信息
du -s /path/to/directory
# 仅显示指定深度内的目录磁盘使用情况(例如,只显示一级子目录的情况)
du --max-depth=1 /path/to/directory
# 以更多详细信息显示目录的磁盘使用情况,包括子目录
du -ah /path/to/directory
# 排除指定目录或文件的磁盘使用情况,以忽略特定内容
du --exclude=pattern /path/to/directory
who
whoami
passwd [username]
如果未提供用户名,则只需键入 passwd,然后按 Enter 键,系统将提示您输入当前用户的密码,然后再提示您输入新密码和确认密码。
如果提供了用户名,系统将提示您输入新密码和确认密码,并将更改该用户的密码。
useradd [options] username
# 创建用户并创建home目录
useradd -m username
userdel [options] username
sudo 是一个非常重要的Linux命令,它允许普通用户以超级用户(也称为root用户)的权限来执行特权命令。这是一种重要的安全措施,以确保不是每个用户都能够执行潜在危险的操作。
sudo command
command 是要以超级用户权限执行的命令
ping [options] hostname/IP
hostname/IP 是你想要测试的目标主机的主机名或IP地址
常用选项
-c count:指定发送数据包的次数。例如,-c 4 表示发送4个数据包。
-i interval:指定发送数据包之间的时间间隔(以秒为单位)。例如,-i 2 表示每隔2秒发送一个数据包。
-s packetsize:指定发送的数据包大小(以字节为单位)。例如,-s 64 表示发送64字节的数据包。
-t timeout:设置超时时间,即等待目标主机响应的最大时间。超过这个时间没有响应则认为连接失败。
-q:以安静模式运行 ping,只显示结果摘要而不显示每个数据包的详细信息。
-v:以详细模式运行 ping,显示每个数据包的详细信息。
# 向示例主机 example.com 发送4个数据包
ping -c 4 example.com
# 设置数据包大小为100字节,并每隔1秒发送一个
ping -s 100 -i 1 example.com
ifconfig 和 ip 命令都用于配置和管理网络接口信息,但它们在不同的Linux发行版中可能有所不同。ifconfig 在一些Linux发行版中已被弃用,因此,在新的Linux系统中,推荐使用 ip 命令进行网络接口的配置和管理。
# 显示当前系统上所有的网络接口(如以太网接口、无线接口等)的配置信息,包括IP地址、子网掩码、MAC地址等。
ifconfig
# 将以太网接口 eth0 的IP地址设置为 192.168.1.2,子网掩码为 255.255.255.0
ifconfig eth0 192.168.1.2 netmask 255.255.255.0
# 显示当前系统上所有网络接口的详细信息
ip addr show
# 将以太网接口 eth0 的IP地址设置为 192.168.1.2,子网掩码为 /24,表示 255.255.255.0
ip addr add 192.168.1.2/24 dev eth0
netstat [options]
ss [options]
netstat 和 ss 都是用于查看网络状态和网络连接信息的命令,但它们在不同的Linux发行版中可能有所不同。需要注意的是,ss 命令在一些新的Linux系统中已经取代了 netstat,因为它更快速且支持更多的选项。因此,如果你使用较新的Linux发行版,推荐使用 ss 命令来查看网络状态。
# 查看网络接口信息
netstat -i
# 查看路由表信息
netstat -r
# 查看所有网络套接字的详细信息
ss -tuln
# 查看监听的TCP套接字
ss -tln
# 查看UNIX套接字
ss -lx
ssh [options] [user@]hostname
[user@]hostname:远程主机的用户名和主机名(或IP地址)。
常用选项
-p port:指定连接的远程端口号(默认是 22)。
-i identity_file:指定用于身份验证的私钥文件。
-L [bind_address:]port:host:hostport:创建本地端口转发。
-R [bind_address:]port:host:hostport:创建远程端口转发。
-X:启用 X11 转发,允许在远程主机上运行图形化应用程序。
-C:启用压缩以提高数据传输性能。
-A:启用代理跳转,允许通过远程主机连接到其他主机。
# 系统将提示你输入远程主机的用户密码以进行身份验证。一旦验证成功,你就可以在远程主机上执行命令。
ssh username@example.com
apt 和 apt-get 是用于管理 Debian 和基于 Debian 的 Linux 发行版(如 Ubuntu)上的软件包的包管理工具。
# 更新软件包列表,这会从软件源更新软件包列表,以确保你能够获取到最新的软件包信息
apt update
# 安装指定名称的软件包
apt install package-name
# 升级系统中的所有软件包
apt upgrade
# 删除软件包,但保留配置文件
apt remove package-name
# 如果要删除软件包及其配置文件
apt purge package-name
# 搜索包含指定搜索词的软件包
apt search search-term
# 显示软件包信息
apt show package-name
# 查看已安装的软件包列表
apt list --installed
# 清理不再需要的依赖和缓存
apt autoremove
yum 和 dnf 是用于管理 Red Hat、CentOS 和 Fedora 等 Linux 发行版上的软件包的包管理工具.
# 更新软件包列表
sudo yum update
# 或者
sudo dnf update
# 安装软件包
sudo yum install package-name
# 或者
sudo dnf install package-name
# 升级系统中的所有软件包
sudo yum upgrade
# 或者
sudo dnf upgrade
# 删除软件包,但保留配置文件
sudo yum remove package-name
# 或者
sudo dnf remove package-name
# 删除已安装的软件包及其配置文件
sudo yum erase package-name
# 或者
sudo dnf erase package-name
# 搜索软件包
yum search search-term
# 或者
dnf search search-term
# 显示软件包信息
yum info package-name
# 或者
dnf info package-name
# 查看已安装的软件包列表
yum list installed
# 或者
dnf list installed
# 清理不再需要的依赖和缓存
sudo yum autoremove
# 或者
sudo dnf autoremove
kill [options] process_id
ps [options]
top
htop
killall [options] process_name
date
cal
# 查看 2023 年 8 月的日历
cal 8 2023
# 查看当前的时间和时区设置
timedatectl
# 启用自动时间同步(NTP)
sudo timedatectl set-ntp true
# 将时区设置为 "Asia/Shanghai"
timedatectl set-timezone Asia/Shanghai
# 将日期设置为 "2023-08-28",时间设置为 "14:30:00"
timedatectl set-time "2023-08-28 14:30:00"
# 立即关闭系统
sudo shutdown -h now
# 立即重启系统
sudo shutdown -r now
# 计划在一定时间后关闭系统
sudo shutdown -h +30
# 取消计划的关机
sudo shutdown -c
reboot
scp [options] source destination
source 是要复制的文件或目录的路径。
destination 是目标位置,可以是本地或远程计算机的路径,格式为 [user@]host:destination。
# 从本地复制到远程计算机
scp /path/to/local/file username@remote:/path/to/destination/
# 从远程计算机复制到本地
scp username@remote:/path/to/remote/file /path/to/local/destination/
# 从远程计算机复制到本地并保持原始文件名
scp username@remote:/path/to/remote/file /path/to/local/destination/
# 从本地复制到远程计算机并保持原始文件名
scp /path/to/local/file username@remote:/path/to/destination/
rsync [options] source destination
# 从本地复制到远程计算机
rsync [options] /path/to/local/file username@remote:/path/to/destination/
# 从远程计算机复制到本地
rsync [options] username@remote:/path/to/remote/file /path/to/local/destination/
# 从远程计算机复制到本地并保持原始文件名
rsync [options] --relative username@remote:/path/to/remote/file /path/to/local/destination/
# 从本地复制到远程计算机并保持原始文件名
rsync [options] --relative /path/to/local/file username@remote:/path/to/destination/
echo "text"
history [options]
wget [options] URL
curl [options] URL
这些命令是 Linux 系统中常用的命令,用于执行各种系统管理和文件操作任务。每个命令都有各自的选项和参数,可以通过命令后跟 --help 查看帮助信息以获取更多详细信息。