Shell命令格式
命令提示符:
- 通常显示为
用户名@主机名:目录名 $或用户名@主机名:目录名 #(对于root用户)。 ~表示当前用户的家目录。
命令格式:
bash
$ 命令 [-选项] [参数1] [参数2] ... |
$或#是命令提示符,$代表普通用户,#代表root用户。[-选项]是可选的,用于修改命令的行为。[参数]是命令操作的对象或数据。
多行命令处理:
- 使用
;分隔可以在一行中执行多个命令。 - 使用
\可以将一条命令分成多行书写,以提高可读性。但请注意,\后面不能有空格,且\仅用于命令行的末尾,以表示该命令将在下一行继续。
Linux命令:
用户系统相关
(1)su:切换用户
- 语法:
su [选项] [用户名] - 常见参数:
-:以登录shell启动新的shell(加载用户的shell环境)。-c 命令:以指定用户的身份执行单个命令。
- 示例:
- 切换到root用户:
su - - 以user1身份执行
ls命令:su - user1 -c 'ls'
- 切换到root用户:
exit:退出切换(切换用户组成栈的结构)


(2)添加用户
- 使用
useradd命令。 - 语法:
useradd [选项] 用户名 - 示例:
useradd -m -s /bin/bash newuser(-m创建家目录,-s指定shell)
(3)删除用户
- 使用
userdel命令。 - 语法:
userdel [选项] 用户名 - 示例:
userdel -r username(-r同时删除用户的家目录) -
删除账号的家目录和邮箱:
-

(4)查询用户
- 使用
id、whoami、who、w、users、finger(可能需要安装)等命令。 id 用户名:显示用户的UID、GID等信息。whoami:显示当前用户名称。who、w、users:显示当前登录的用户信息。finger 用户名:显示用户的详细信息(如果系统支持)。
查看Linux系统上的所有用户:
-
查看
/etc/passwd文件这个文件包含了系统上每个用户的基本信息。你可以使用
cat、less、more或grep等命令来查看这个文件的内容。cat /etc/passwd或者,如果你只想查看用户名列表,可以结合使用
awk命令:awk -F: '{ print $1}' /etc/passwd这里,
-F:选项指定了字段分隔符为冒号(:),$1表示打印每行的第一个字段,即用户名。 -
使用
getent命令getent命令用于从各种源获取条目,包括/etc/passwd文件。要列出所有用户,可以使用:getent passwd
更改密码:


修改用户属性:
usermod (modify a user account)
用途: usermod 命令用于修改用户账户的各种属性。
语法: usermod [选项] 用户名
选项:
-l或--login 新用户名: 更改用户的登录名。-d或--home 新家目录: 更改用户的家目录。-m或--move-home: 移动用户的家目录内容到新家目录。-u或--uid 新UID: 更改用户的UID。-g或--gid 新GID: 更改用户的主组ID。-G或--groups 组名列表: 更改用户的附加组列表。-s或--shell 新shell: 更改用户的登录shell。-c或--comment 新注释: 更改用户的注释信息。-e或--expiredate YYYY-MM-DD: 设置用户的账户过期日期。-f或--inactive 天数: 设置用户账户过期后多少天内可以继续登录。-L或--lock: 锁定用户的密码。-U或--unlock: 解锁用户的密码。-aG或--append 组名列表: 添加用户到额外的组。-Z或--selinux-user SELinux用户: 更改用户的SELinux用户映射。-V或--version: 显示版本信息。-h或--help: 显示帮助信息。
示例:
-
更改用户的登录名:
1usermod -l new_username old_username -
更改用户的家目录:
1usermod -d /new/home/directory username -
更改用户的家目录,并移动家目录内容:
1usermod -md /new/home/directory username -
更改用户的UID:
1usermod -u 1001 username -
更改用户的主组ID:
1usermod -g new_group_id username -
更改用户的附加组:
1usermod -G group1,group2 username -
添加用户到额外的组:
1usermod -aG group1,group2 username -
更改用户的登录shell:
1usermod -s /bin/zsh username -
更改用户的注释信息:
1usermod -c "New comment" username -
设置用户的账户过期日期:
1usermod -e 2024-12-31 username -
设置用户账户过期后多少天内可以继续登录:
1usermod -f 30 username -
锁定用户的密码:
1usermod -L username -
解锁用户的密码:
1usermod -U username
用户系统配置文件
passwd
- 用途:
/etc/passwd文件存储了系统中所有用户的账号信息。- 格式: 每行代表一个用户,每一列由冒号分隔。
- 列说明:
- 用户名 (
username): 用户名。- 密码占位符 (
x): 密码已被加密并移至/etc/shadow文件。- 用户ID (
uid): 用户标识号。- 组ID (
gid): 主用户组标识号。- 用户信息 (
comment): 用户的描述信息。- 家目录 (
home_dir): 用户的家目录路径。- 登录shell (
shell): 用户登录时默认使用的shell。- 示例行:
1root:x:0:0:root:/root:/bin/bash 2alice:x:1000:1000:Alice User:/home/alice:/bin/bashshadow
- 用途:
/etc/shadow文件存储了系统中所有用户的加密密码以及其他密码相关的信息。- 格式: 每行代表一个用户,每一列由冒号分隔。
- 列说明:
- 用户名 (
username): 用户名。- 加密密码 (
password): 密码的加密形式。- 上次更改时间 (
last_change): 密码上一次更改的时间(以天为单位)。- 最小更改周期 (
min): 密码更改后的最短使用期限。- 最大更改周期 (
max): 密码的有效期。- 警告周期 (
warn): 密码到期前的警告天数。- 不活动周期 (
inactive): 用户账户不活动的天数。- 过期周期 (
expire): 账户过期后的天数。- 标志 (
flag): 特殊标志。- 示例行:
1root:$6$hash:18759:0:99999:7::: 2alice:$6$hash:18759:0:99999:7:::group
- 用途:
/etc/group文件存储了系统中所有组的信息。- 格式: 每行代表一个组,每一列由冒号分隔。
- 列说明:
- 组名 (
groupname): 组名。- 密码占位符 (
x): 组密码已被加密并通常不需要。- 组ID (
gid): 组标识号。- 成员 (
members): 组的成员列表,用逗号分隔。- 示例行:
1wheel:x:10:root,alice 2users:x:1000:alice,boblogin.defs
- 用途:
/etc/login.defs文件定义了登录和密码管理的策略。- 内容:
- 密码策略:
PASS_MAX_DAYS: 密码的最大有效期。PASS_MIN_DAYS: 密码更改后的最短使用期限。PASS_WARN_AGE: 密码到期前的警告天数。- 用户策略:
LOGIN_RETRIES: 登录失败的尝试次数。LOGIN_TIMEOUT: 登录超时时间。UMASK_DEFAULT: 默认的 umask 值。UID_MIN和UID_MAX: 用户ID的最小和最大值。GID_MIN和GID_MAX: 组ID的最小和最大值。- 示例配置:
1PASS_MAX_DAYS 99999 2PASS_MIN_DAYS 0 3PASS_WARN_AGE 7 4LOGIN_RETRIES 3 5LOGIN_TIMEOUT 60 6UMASK_DEFAULT 022 7UID_MIN 1000 8UID_MAX 60000 9GID_MIN 1000 10GID_MAX 60000pwconv
- 用途:
pwconv命令用于将/etc/passwd文件中的密码转换为加密形式,并将其移动到/etc/shadow文件中。- 语法:
pwconv [选项]- 选项:
-f或--force: 强制转换,即使/etc/shadow文件不存在。-V或--version: 显示版本信息。-h或--help: 显示帮助信息。- 示例:
- 转换密码:
1pwconv
用户组管理命令
-
groupadd
- 用途:
groupadd命令用于创建新的用户组。 - 语法:
groupadd [选项] 组名 - 选项:
-g或--gid GID: 指定新组的GID。-r或--system: 创建系统组。-f或--force: 强制创建,即使GID已经存在。-h或--help: 显示帮助信息。-V或--version: 显示版本信息。
- 示例:
- 创建名为
developers的新组:1groupadd developers - 创建名为
developers的新组,并指定GID为 2000:1groupadd -g 2000 developers
- 创建名为
- 用途:
-
groupdel
- 用途:
groupdel命令用于删除用户组。 - 语法:
groupdel [选项] 组名 - 选项:
-h或--help: 显示帮助信息。-V或--version: 显示版本信息。
- 示例:
- 删除名为
developers的组:1groupdel developers
- 删除名为
- 用途:
-
gpasswd
- 用途:
gpasswd命令用于管理用户组成员。 - 语法:
gpasswd [选项] 组名 - 选项:
-a或--add 用户名: 添加用户到组。-d或--delete 用户名: 从组中删除用户。-A或--admin 用户名列表: 设置组管理员。-M或--members 用户名列表: 设置组成员。-h或--help: 显示帮助信息。-V或--version: 显示版本信息。
- 示例:
- 将用户
alice添加到developers组:1gpasswd -a alice developers - 从
developers组中删除用户alice:1gpasswd -d alice developers - 设置
developers组的管理员为bob:1gpasswd -A bob developers - 设置
developers组的成员为alice和bob:1gpasswd -M alice,bob developers
- 将用户
- 用途:
-
groups
- 用途:
groups命令用于显示用户的组成员身份。 - 语法:
groups [选项] [用户名] - 选项:
-h或--help: 显示帮助信息。-V或--version: 显示版本信息。
- 示例:
- 显示当前用户的组成员身份:
1groups - 显示用户
alice的组成员身份:1groups alice
- 显示当前用户的组成员身份:
- 用途:
文件系统相关的:
认识文件系统
/:Linux文件系统的根目录,所有目录和文件的起点。/bin:存放系统中最常用的可执行文件(二进制),如ls、cp等。/boot:存放Linux内核和系统启动文件,包括启动加载器如Grub、lilo。/dev:存放所有设备文件,代表系统中的硬件设备和接口。/etc:存放系统的所有配置文件,如/etc/passwd存储用户账户信息,/etc/hostname存储主机名等。/home:用户主目录的默认位置,每个用户都有自己的目录。/initrd:存放启动时挂载的initrd.img映像文件及所需设备模块。/lib:存放共享库文件,这些库文件被系统程序所使用。/lost+found:用于存放fsck命令在检查文件系统时发现的零散文件。/media:Ubuntu系统自动挂载外部设备(如CD-ROM、USB等)后,存放临时读入的文件。/mnt:通常用于手动挂载文件系统的挂载点。/opt:可选的应用软件和程序的存放目录,主要供第三方开发者使用。/proc:一个虚拟文件系统,包含系统运行时的信息,如/proc/cpuinfo存储CPU信息。/root:根用户(超级用户)的主目录。/sbin:存放系统管理员使用的可执行文件,如reboot、shutdown等。/tmp:存放用户和程序的临时文件,所有用户都有读写权限。/usr:用于存放系统用户直接相关的文件和目录,如应用程序和库文件。/var:存放长度可变的文件,如日志文件、邮件队列等。
文件类型:
-
普通文件 (Regular File)
- 表示:
- - 用途: 用于存储数据,如文本文件、配置文件、可执行文件等。
- 表示:
-
目录 (Directory)
- 表示:
d - 用途: 用于组织文件和其他目录。
- 表示:
-
符号链接 (Symbolic Link)
- 表示:
l - 用途: 指向另一个文件或目录的引用,类似于 Windows 中的快捷方式。
- 表示:
-
硬链接 (Hard Link)
- 表示:
-(与普通文件相同,但通过ls -i查看inode可以识别) - 用途: 指向同一文件的不同名称,多个硬链接指向同一个inode。
- 表示:
-
块设备文件 (Block Device)
- 表示:
b - 用途: 用于直接访问硬件设备,如硬盘驱动器。
- 表示:
-
字符设备文件 (Character Device)
- 表示:
c - 用途: 用于访问不需要缓冲的设备,如终端。
- 表示:
-
套接字文件 (Socket)
- 表示:
s - 用途: 用于进程间通信 (IPC)。
- 表示:
-
管道文件 (FIFO)
- 表示:
p - 用途: 用于进程间的无名管道通信。
- 表示:
文件和目录操作
-
创建
mkdir [选项] 目录: 创建目录。- 示例:
mkdir -p /path/to/new/directory -p: 如果父目录不存在也一并创建。
- 示例:
touch [文件]: 创建空文件或更新文件的时间戳。- 示例:
touch newfile.txt
- 示例:
mkfifo [文件]: 创建一个命名管道。- 示例:
mkfifo mypipe
- 示例:
-
删除
rm [选项] 文件: 删除文件。- 示例:
rm file.txt -i: 交互模式,逐一确认删除。-f: 强制删除,忽略不存在的文件,不提示。-r或-R: 递归删除目录及其内容。- 示例:
rm -rf directory
- 示例:
- 示例:
rmdir [选项] 目录: 删除空目录。- 示例:
rmdir emptydir -p: 递归删除目录。
- 示例:
-
复制
cp [选项] 源 目标: 复制文件或目录。- 示例:
cp file1.txt file2.txt -r或-R: 递归复制目录。- 示例:
cp -r source_directory target_directory
- 示例:
-i: 交互模式,在覆盖前询问用户。- 示例:
cp -i file1.txt file2.txt
- 示例:
-p: 保留文件的权限、时间戳等元数据。- 示例:
cp -p file1.txt file2.txt
- 示例:
- 示例:
-
移动/重命名
mv [选项] 源 目标: 移动文件或目录,也可以用于重命名。- 示例:
mv oldfile.txt newfile.txt -i: 交互模式,在覆盖前询问用户。- 示例:
mv -i file1.txt file2.txt
- 示例:
- 示例:
-
查看
-
文件内容:
cat [文件]: 显示文件内容。- 示例:
cat file.txt
- 示例:
head [选项] [文件]: 显示文件的前几行。- 示例:
head -n 5 file.txt -n N: 显示前N行。
- 示例:
tail [选项] [文件]: 显示文件的最后几行。- 示例:
tail -n 5 file.txt -n N: 显示最后N行。
- 示例:
less [文件]: 分页查看文件内容。- 示例:
less largefile.txt
- 示例:
more [文件]: 传统分页查看文件内容。- 示例:
more largefile.txt
- 示例:
-
目录内容:
ls [选项] [目录]: 列出目录内容。- 示例:
ls -al /path/to/directory -a: 显示隐藏文件。-l: 长格式列出。-h: 人性化输出文件大小。-t: 按修改时间排序。-r: 反向排序。
- 示例:
ll: 等同于ls -l.- 示例:
ll
- 示例:
ls -d [目录]: 列出目录本身的信息而非其内容。- 示例:
ls -d /path/to/directory
- 示例:
-
切换工作目录:
cd [路径]: 切换当前工作目录。- 示例:
cd /path/to/directory ~: 用户家目录。- 示例:
cd ~
- 示例:
-: 上一个工作目录。- 示例:
cd -
- 示例:
..: 上一级目录。- 示例:
cd ..
- 示例:
- 示例:
-
-
给文件添加内容
echo "文本" >> 文件: 追加文本到文件末尾。- 示例:
echo "Hello, world!" >> file.txt
- 示例:
cat > 文件: 创建新文件或清空已有文件,并从标准输入读取内容。- 示例:
1cat > newfile.txt 2Hello, this is a new file. 3^D
- 示例:
-
改变文件权限
chmod [选项] [模式|数字] 文件: 改变文件权限。- 示例:
chmod u+x file.txt u: 用户权限。g: 组权限。o: 其他用户权限。a: 所有用户。+/-/:增加/减少/设置权限。rwx: 读写执行权限。- 数字: 用八进制数字表示权限。
- 示例:
chmod 755 file.txt
- 示例:
- 示例:
-
链接文件
ln [选项] 源 目标: 创建硬链接。- 示例:
ln file.txt link_file.txt -s: 创建符号链接(软链接)。- 示例:
ln -s file.txt soft_link_file.txt
- 示例:
- 示例:
-
压缩与解压
gzip [选项] 文件: 使用 gzip 算法压缩文件。- 示例:
gzip file.txt
- 示例:
bzip2 [选项] 文件: 使用 bzip2 算法压缩文件。- 示例:
bzip2 file.txt
- 示例:
zip [选项] 归档文件 文件: 使用 zip 算法压缩文件。- 示例:
zip archive.zip file.txt
- 示例:
-
归档与释放
tar [选项]: 打包或解包文件。- 示例:
tar czvf archive.tar.gz file1.txt file2.txt c: 创建一个新的归档文件。r: 向已存在的归档文件中添加文件。- 示例:
tar rvf archive.tar file3.txt
- 示例:
x: 解包文件。- 示例:
tar xvf archive.tar
- 示例:
f: 指定归档文件的名称。v: 显示处理过程中的详细信息。z: 使用 gzip 对归档文件进行压缩或解压缩。- 示例:
tar cvzf archive.tar.gz file.txt
- 示例:
- 示例:
-
比较文件的不同
diff [选项] 文件1 文件2: 显示两个文件之间的差异。- 示例:
diff file1.txt file2.txt -r: 递归比较目录中的文件。- 示例:
diff -r dir1 dir2
- 示例:
- 示例:
-
查看文件属性信息
file [文件]: 显示文件的类型和可能的编码。- 示例:
file file.txt
- 示例:
-
查看文件的统计信息
wc [选项] [文件]: 显示文件的行数、单词数和字符数。- 示例:
wc file.txt -l: 只显示行数。- 示例:
wc -l file.txt
- 示例:
-w: 只显示单词数。- 示例:
wc -w file.txt
- 示例:
-m或-c: 只显示字符数。- 示例:
wc -m file.txt
- 示例:
- 示例:
-
在文件中查找字符串
grep [选项] "模式" 文件: 在文件中搜索匹配模式的行。- 示例:
grep "hello" file.txt -r: 递归搜索目录中的文件。- 示例:
grep -r "hello" /path/to/directory
- 示例:
- 示例:
-
文件查找命令
-
locate
- 用途:
locate命令通过查询预先构建的数据库来快速查找文件系统中的文件。 - 原理:
locate命令通过查询一个预先构建的数据库来快速查找文件系统中的文件。这个数据库通常通过定期运行updatedb命令来更新。 - 特点: 查找速度快,但无法查找到最近添加且尚未更新到数据库中的文件。
- 用法:
locate [选项] 文件名 - 选项:
-i: 忽略大小写。-r: 使用正则表达式。-b: 使用基本正则表达式。-d数据库: 指定数据库文件。
- 示例:
- 查找名为
example.txt的文件:1locate example.txt - 查找包含
example的文件,忽略大小写:1locate -i example
- 查找名为
- 用途:
-
which
- 用途:
which命令用于查找并显示给定命令的绝对路径,确保你调用的是正确的程序。 - 用法:
which [选项] 命令名 - 选项:
-a: 显示所有匹配项,即使它们位于不同的目录中。-m: 显示匹配项的数量。
- 示例:
- 查找
ls命令的绝对路径:1which ls
- 查找
- 用途:
-
tree
- 用途:
tree命令以树状图列出目录的内容,包括子目录和文件。 - 用法:
tree [选项] 目录名 - 选项:
-L限制目录显示深度。-a显示所有文件和目录(包括以.开头的隐藏文件)。-d只列出目录。-h人性化输出文件大小。-H使用符号链接的目标作为基点。-n不自动排序。-p显示文件权限。-u显示最后一次访问时间。-t显示最后一次修改时间。-f显示完整路径。
- 示例:
- 以树状图形式列出当前目录的内容:
1tree . - 限制目录显示深度为 2:
1tree -L 2 . - 显示所有文件和目录(包括隐藏文件):
1tree -a .
- 以树状图形式列出当前目录的内容:
- 用途:
-
find
- 用途:
find命令在目录树中搜索文件,并执行指定的操作。它非常灵活,可以基于文件名、类型、大小、权限等多种条件进行搜索。 - 基本语法:
find [起始目录] [查找条件] [操作] - 查找条件:
-name: 根据文件名查找。- 示例:
find /path/to/start -name "*.txt"
- 示例:
-type: 根据文件类型查找(f代表普通文件,l代表符号链接)。- 示例:
find /path/to/start -type f
- 示例:
-user、-group、-uid、-gid: 根据文件的所有者或组来查找。- 示例:
find /path/to/start -user alice
- 示例:
-size: 根据文件大小查找。单位可以是c(字节)、k(千字节)、M(兆字节)等。- 示例:
find /path/to/start -size +10M
- 示例:
-empty: 查找空文件或空目录。- 示例:
find /path/to/start -empty
- 示例:
-perm: 根据文件权限查找。- 示例:
find /path/to/start -perm 755
- 示例:
-newer: 查找比参考文件更新的文件。- 示例:
find /path/to/start -newer /path/to/reference/file
- 示例:
- 组合条件:
-a: 逻辑与(AND),默认条件之间就是逻辑与关系。-o: 逻辑或(OR)。!: 逻辑非(NOT)。
- 示例:
- 查找所有
.txt文件:1find /path/to/start -name "*.txt" - 查找大于 1MB 的
.txt文件:1find /path/to/start -name "*.txt" -size +1M - 查找由
alice拥有的.txt文件:1find /path/to/start -name "*.txt" -user alice - 查找所有
.txt文件或.log文件:1find /path/to/start \( -name "*.txt" -o -name "*.log" \) - 查找不属于
alice的.txt文件:1find /path/to/start -name "*.txt" ! -user alice
- 查找所有
- 用途:
-
特别说明:
chown (change owner)修改文件或目录的所有者和所属组
用途: 更改文件或目录的所有者和所属组。
语法: chown [选项] [所有者][.[所属组]] 文件或目录
选项:
-R或--recursive: 递归地更改目录及其子目录内的文件所有权。-h或--no-dereference: 只更改符号链接的所有权,而不是链接指向的实际文件。-v或--verbose: 显示更改所有权的每个文件或目录。-f或--silent: 抑制错误信息的输出。-c或--changes: 仅报告更改了所有权的文件。-L或--dereference-command-line-symbolic-links-to-directories: 当命令行参数中包含符号链接时,递归地更改它们所指向的目录的所有权。-X或--preserve-root: 如果当前用户不是超级用户,则禁止将根目录的所有权更改为其他用户。--reference=FILE: 将文件或目录的所有权设置为参考文件的所有权。
示例:
-
更改单个文件的所有者为
user1:1chown user1 file.txt -
更改单个文件的所有者为
user1并所属组为group1:1chown user1.group1 file.txt -
递归地更改目录及其所有子目录和文件的所有者为
user1:1chown -R user1 directory/ -
递归地更改目录及其所有子目录和文件的所有者为
user1并所属组为group1:1chown -R user1.group1 directory/ -
显示递归更改所有权的过程:
1chown -Rv user1 group1 directory/ -
更改符号链接的所有权:
1chown -h user1 symlink.txt
chgrp (change group)修改文件或目录的所属组
用途: 更改文件或目录的所属组。
语法: chgrp [选项] 组 文件或目录
选项:
-R或--recursive: 递归地更改目录及其子目录内的文件所属组。-h或--no-dereference: 只更改符号链接的所属组,而不是链接指向的实际文件。-v或--verbose: 显示更改所属组的每个文件或目录。-f或--silent: 抑制错误信息的输出。-c或--changes: 仅报告更改了所属组的文件。-L或--dereference-command-line-symbolic-links-to-directories: 当命令行参数中包含符号链接时,递归地更改它们所指向的目录的所属组。-X或--preserve-root: 如果当前用户不是超级用户,则禁止将根目录的所属组更改为其他组。
示例:
-
更改单个文件的所属组为
group1:1chgrp group1 file.txt -
递归地更改目录及其所有子目录和文件的所属组为
group1:1chgrp -R group1 directory/ -
显示递归更改所属组的过程:
1chgrp -Rv group1 directory/ -
更改符号链接的所属组:
1chgrp -h group1 symlink.txt
进程管理命令
-
top
top: 显示系统当前运行的所有进程的状态,并实时更新。-b: 批处理模式,适合脚本调用。-d seconds: 设置更新间隔秒数。-n count: 更新次数,通常用于批处理模式。-p pid: 显示指定PID的进程。-q: 快速模式,更新频率更快,不等待数据完全更新。-S: 累计模式,显示累计CPU时间。-s: 安全模式,禁用键盘输入。-c: 显示完整的命令行。-C: 不将子进程的CPU时间累加到父进程中。-P: 显示每个线程的信息。-o field[,field...]: 指定排序字段,多个字段用逗号分隔。-O field[,field...]: 类似于-o,但只对当前窗口有效。-s: 设置安全模式,禁用键盘输入。-m bytes: 设置最大显示内存大小。-p pid: 显示特定PID的进程。-u username: 显示特定用户的进程。
- 示例:
1top -b -n 1 | head -n 17 # 批处理模式下获取一次系统状态,并仅输出前17行 2top -d 5 # 更新间隔为5秒 3top -p 1234 # 仅显示PID为1234的进程 4top -c # 显示完整的命令行 5top -S # 累计模式
-
ps
ps [选项]: 显示当前系统的进程快照。-A: 显示所有进程。-a: 显示终端中运行的所有进程。-u: 显示更详细的用户信息。-x: 显示没有控制终端的进程。-e: 显示所有进程。-f: 显示完整信息。-h: 人性化输出。-j: 作业控制格式。-w: 宽输出。-o format: 自定义输出格式。-C command: 显示指定命令的进程。-p pid: 显示指定PID的进程。
- 示例:
1ps aux # 显示所有进程 2ps -ef | grep ssh # 查找包含ssh关键字的进程 3ps -o pid,ppid,command -C nginx # 显示nginx进程的PID、PPID和命令 4ps -p 1234 -o %cpu,%mem # 显示PID为1234的进程的CPU和内存使用率
-
pstree
pstree [选项]: 以树形结构显示进程。-p: 显示PID。-u: 显示用户。-s: 显示会话ID。-l: 显示长格式命令行。-a: 显示所有进程。-h: 显示帮助信息。-n: 不解析命令名。-c: 显示命令名。-p pid: 从指定PID开始显示。
- 示例:
1pstree # 显示当前用户的进程树 2pstree -p # 显示PID 3pstree -a # 显示所有进程 4pstree -p 1234 # 从PID为1234的进程开始显示
-
kill
kill [选项] PID: 发送信号给指定PID的进程。-signal: 发送特定信号。-l: 列出所有可用信号。-0: 检查进程是否存在。-CONT: 继续暂停的进程。-STOP: 暂停进程。-TERM: 终止进程。-KILL: 强制终止进程。-HUP: 重启进程。-INT: 中断进程。-QUIT: 退出进程。
- 示例:
1kill -9 1234 # 强制终止PID为1234的进程 2killall -9 ssh # 终止所有名为ssh的进程 3kill -l # 列出所有信号 4kill -0 1234 # 检查PID为1234的进程是否存在 5kill -SIGTERM 1234 # 使用SIGTERM信号终止PID为1234的进程 6kill -SIGCONT 1234 # 继续PID为1234的暂停进程
磁盘相关命令:
-
fdisk
- 用途:
fdisk是一个用于创建、显示、修改和删除分区表的命令。 - 语法:
fdisk [选项] 设备 - 选项:
-l或--list: 显示所有磁盘的分区表。-c或--convert: 显示分区的单位转换。-u或--units: 设置分区单位。-b或--sectorsize: 设置扇区大小。-v或--version: 显示版本信息。-u或--units: 设置使用的单位(如 sectors, cylinders)。-b或--sectorsize: 设置每个扇区的大小。-l或--list: 列出分区表。
- 命令:
p: 显示当前分区表。n: 新建分区。d: 删除分区。m: 移动分区。t: 改变分区类型。w: 写入分区表并退出。q: 退出而不保存更改。
- 示例:
- 列出所有磁盘的分区表:
1fdisk -l - 创建新的分区表:
接下来,按照提示进行操作:1sudo fdisk /dev/sda- 输入
n创建新分区。 - 输入
p创建主分区。 - 输入起始扇区(默认为第一扇区)。
- 输入结束扇区(或按回车键接受默认值)。
- 输入
w保存分区表并退出。
- 输入
- 列出所有磁盘的分区表:
- 用途:
-
mount
- 用途:
mount用于挂载文件系统。 - 语法:
mount [选项] 设备 挂载点 - 选项:
-t或--types: 指定文件系统类型。-o或--options: 指定挂载选项。-a或--all: 挂载/etc/fstab文件中的所有条目。-r或--read-only: 以只读方式挂载。-w或--rw: 以读写方式挂载。-n或--no-mtab: 不更新/proc/mounts文件。-f或--fake: 创建一个虚拟挂载点。-u或--update: 更新已存在的挂载点。-l或--list: 列出所有已挂载的文件系统。-v或--verbose: 显示详细信息。
- 示例:
- 挂载一个分区:
1sudo mount /dev/sda1 /mnt/newdrive - 以只读方式挂载一个分区:
1sudo mount -o ro /dev/sda1 /mnt/newdrive - 挂载一个ext4类型的分区:
1sudo mount -t ext4 /dev/sda1 /mnt/newdrive - 挂载所有分区(根据/etc/fstab文件):
1sudo mount -a - 列出所有已挂载的文件系统:
1mount
- 挂载一个分区:
- 用途:
-
umount
- 用途:
umount用于卸载已挂载的文件系统。 - 语法:
umount [选项] 挂载点 | 设备 - 选项:
-l或--lazy: 允许卸载正在被使用的文件系统。-f或--force: 强制卸载。-n或--no-mtab: 不更新/proc/mounts文件。-v或--verbose: 显示详细信息。
- 示例:
- 卸载一个分区:
1sudo umount /mnt/newdrive - 强制卸载一个分区:
1sudo umount -f /mnt/newdrive
- 卸载一个分区:
- 用途:
-
df
- 用途:
df用于显示磁盘空间使用情况。 - 语法:
df [选项] - 选项:
-h或--human-readable: 以易于阅读的方式显示文件大小(KB, MB, GB)。-H或--si: 类似于-h选项,但是使用 1000 字节的倍数。-T或--print-type: 显示文件系统的类型。-t或--type=TYPE: 只显示指定类型的文件系统。-x或--exclude-type=TYPE: 排除指定类型的文件系统。-P或--portability: 兼容旧版本 df 的输出格式。-a或--all: 包括临时文件系统。
- 示例:
- 显示磁盘使用情况:
1df -h - 显示所有文件系统的使用情况:
1df -a
- 显示磁盘使用情况:
- 用途:
-
du
- 用途:
du用于估计每个文件或目录占用的磁盘空间。 - 语法:
du [选项] 文件或目录 - 选项:
-a或--all: 显示所有文件的磁盘使用情况。-h或--human-readable: 以易于阅读的方式显示文件大小(KB, MB, GB)。-H或--si: 类似于-h选项,但是使用 1000 字节的倍数。-s或--summarize: 显示总计。-S或--separate-dirs: 显示每个目录的总大小。-x或--one-file-system: 跳过其它文件系统。-L或--follow: 跟随符号链接。-k或--kilobytes: 以 KB 为单位显示大小。-m或--megabytes: 以 MB 为单位显示大小。
- 示例:
- 显示当前目录及其子目录的磁盘使用情况:
1du -sh . - 显示所有文件的磁盘使用情况:
1du -ah - 显示当前目录及其子目录的总大小:
1du -sch .
- 显示当前目录及其子目录的磁盘使用情况:
- 用途:
其他相关命令:
echo (echo text to standard output)
用途: echo 命令用于将文本输出到标准输出。
语法: echo [选项] [文本]
选项:
-n: 不打印末尾的新行。-e: 解释转义字符(如\n,\t)。-E: 不解释转义字符。--help: 显示帮助信息。--version: 显示版本信息。
示例:
-
输出一行文本,不带换行符:
1echo -n "Hello, world!" -
输出带有换行符的文本:
1echo "Hello,\nworld!"
shutdown (halt or reboot the system)
用途: shutdown 命令用于关闭或重启系统。
语法: shutdown [选项] [时间] [消息]
选项:
-h: 关机。-r: 重启。-k: 发送警告信息,但不执行关机或重启。-c: 取消已计划的关机或重启。-P: 在关机时关闭电源。-t seconds: 设置延迟秒数。--help: 显示帮助信息。--version: 显示版本信息。
示例:
-
在5分钟后关机:
1shutdown -h +5 -
立即重启:
1shutdown -r now
history (list or save the commands you have used)
用途: history 命令用于列出或保存您使用过的命令历史记录。
语法: history [选项]
选项:
-c: 清除历史记录。-d pos: 删除指定位置的历史记录项。-w: 将历史记录写入文件。-a: 将新命令添加到历史记录文件。-r: 从文件中读取历史记录。-n: 显示历史记录的编号。-p: 将历史记录项加入到命令行。-s: 将命令添加到历史记录,但不执行。--help: 显示帮助信息。--version: 显示版本信息。
示例:
-
列出历史记录:
1history -
清除历史记录:
1history -c
date (display or set the system date and time)
用途: date 命令用于显示或设置系统日期和时间。
语法: date [选项] [时间格式]
选项:
-u: 使用协调世界时(UTC)。-s: 设置日期和时间。--set: 设置日期和时间。--help: 显示帮助信息。--version: 显示版本信息。
示例:
-
显示当前日期和时间:
1date -
设置日期和时间:
1date -s "2023-09-01 12:00:00"
sleep (suspend execution for a given number of seconds)
用途: sleep 命令用于使进程暂停执行一定的时间。
语法: sleep [选项] 秒数
选项:
--help: 显示帮助信息。--version: 显示版本信息。
示例:
- 暂停执行5秒:
1sleep 5
env (run a command with an environment)
用途: env 命令用于运行一个命令,并可以指定命令的环境变量。
语法: env [选项] [变量=值]... [命令] [参数]
选项:
-i: 忽略所有环境变量。--help: 显示帮助信息。--version: 显示版本信息。
示例:
-
显示所有环境变量:
1env -
运行命令并设置环境变量:
1env NEW_VAR=value command arg
环境变量管理
用途: 环境变量是在操作系统中定义的变量,它们可以被 shell 和运行中的程序使用。
删除环境变量:
-
临时删除:
- 在当前 shell 会话中删除环境变量:
1unset VAR_NAME
- 在当前 shell 会话中删除环境变量:
-
永久删除:
- 编辑
.bashrc或.profile文件,删除相应的export行。
- 编辑
临时添加环境变量:
-
在当前 shell 会话中添加环境变量:
1export VAR_NAME=value -
使用
env命令临时设置环境变量:1env VAR_NAME=value command arg
永久添加环境变量:
- 在
.bashrc或.profile文件中添加环境变量:
然后添加以下行:1nano ~/.bashrc
保存文件后,运行:1export VAR_NAME=value1source ~/.bashrc
软件包管理工具
dpkg (Debian package manager)
用途: dpkg 是 Debian 和基于 Debian 的发行版(如 Ubuntu)的基础软件包管理工具。
语法: dpkg [选项] [命令] [参数]
命令:
--configure: 配置未完成安装的软件包。--get-selections: 显示软件包的选择状态。--set-selections: 设置软件包的选择状态。--verify: 验证已安装的软件包。--info: 显示软件包信息。--contents: 显示软件包的内容。--status: 显示软件包的状态。--list: 列出已安装的软件包。--purge: 卸载软件包并清除其配置文件。--remove: 卸载软件包。--install: 安装或升级软件包。--reconfigure: 重新配置软件包。
选项:
-i或--install: 安装或升级软件包。-r或--remove: 卸载软件包。-P或--purge: 卸载软件包并清除配置文件。-L或--listfiles: 显示软件包安装的文件列表。-l或--list: 列出已安装的软件包。-S或--search: 搜索文件属于哪个软件包。-s或--status: 显示软件包的状态。-c或--contents: 显示软件包的内容。-I或--show: 显示软件包信息。-V或--verify: 验证已安装的软件包。-D或--debug: 设置调试级别。-h或--help: 显示帮助信息。-V或--version: 显示版本信息。
示例:
-
安装软件包:
1dpkg -i package.deb -
卸载软件包:
1dpkg -r package-name -
显示软件包的状态:
1dpkg -s package-name -
搜索文件属于哪个软件包:
1dpkg -S /path/to/file
apt-get (Advanced Package Tool)
用途: apt-get 是基于 Debian 的发行版中的高级软件包管理工具,用于安装、卸载、更新软件包等操作。
语法: apt-get [选项] [子命令] [参数]
子命令:
update: 更新软件包列表。upgrade: 升级已安装的软件包。dist-upgrade: 升级系统版本。install: 安装软件包。remove: 卸载软件包。purge: 卸载软件包并清除配置文件。autoremove: 卸载不再需要的依赖软件包。clean: 清除下载的软件包缓存。source: 安装源代码包。build-dep: 安装构建依赖。
子选项:
-y: 自动回答 yes。-f: 修复损坏的依赖关系。-d: 下载但不安装。-o: 设置APT配置选项。-s或--simulate: 模拟操作。-h或--help: 显示帮助信息。-V或--version: 显示版本信息。
示例:
-
更新软件包列表:
1sudo apt-get update -
升级已安装的软件包:
1sudo apt-get upgrade -
安装软件包:
1sudo apt-get install package-name -
卸载软件包:
1sudo apt-get remove package-name -
卸载软件包并清除配置文件:
1sudo apt-get purge package-name -
清除下载的软件包缓存:
1sudo apt-get clean
网络相关命令
ping (test Internet connectivity)
用途: ping 命令用于测试与另一台计算机的网络连接是否可达。
语法: ping [选项] 目标地址
选项:
-c或--count 数量: 发送指定数量的ICMP Echo Request报文。-i或--interval 时间: 发送ICMP Echo Request报文之间的间隔时间(以秒为单位)。-t或--time-out 时间: 设置超时时间(以毫秒为单位)。-W或--timeout 时间: 设置等待每次回复的超时时间(以秒为单位)。-s或--size 大小: 设置ICMP Echo Request报文的大小(以字节为单位)。-q或--quiet: 减少输出信息。-v或--verbose: 增加输出信息。-h或--help: 显示帮助信息。-V或--version: 显示版本信息。
示例:
-
测试与 www.example.com 的连接:
1ping www.example.com -
发送 5 个 ICMP Echo Request 报文:
1ping -c 5 www.example.com -
每次发送报文之间间隔 2 秒:
1ping -i 2 www.example.com -
设置超时时间为 500 毫秒:
1ping -W 0.5 www.example.com
ifconfig (configure network interfaces)
用途: ifconfig 命令用于配置和显示网络接口的信息。
语法: ifconfig [选项] [网络接口]
选项:
-a: 显示所有网络接口的信息。-s: 以表格形式显示网络接口统计信息。up: 启用网络接口。down: 关闭网络接口。promisc: 设置网络接口为混杂模式。arp: 启用网络接口的 ARP 功能。noarp: 禁用网络接口的 ARP 功能。mtu MTU: 设置网络接口的最大传输单元。inet IP: 设置网络接口的 IPv4 地址。netmask MASK: 设置网络接口的子网掩码。broadcast BROADCAST: 设置网络接口的广播地址。ether MAC: 设置网络接口的 MAC 地址。alias IP: 设置网络接口的别名地址。-h或--help: 显示帮助信息。-V或--version: 显示版本信息。
示例:
-
显示所有网络接口的信息:
1ifconfig -a -
启用网络接口
eth0:1ifconfig eth0 up -
关闭网络接口
eth0:1ifconfig eth0 down -
设置
eth0的 IPv4 地址为192.168.1.100:1ifconfig eth0 inet 192.168.1.100 -
设置
eth0的子网掩码为255.255.255.0:1ifconfig eth0 netmask 255.255.255.0 -
设置
eth0的广播地址为192.168.1.255:1ifconfig eth0 broadcast 192.168.1.255
常用特殊字符
-
通配符 (Wildcard)
-
*(星号)- 用途: 代表任意数量的任意字符。
- 示例:
这将列出当前目录下所有扩展名为1ls *.txt.txt的文件。
-
?(问号)- 用途: 代表单个任意字符。
- 示例:
这将列出当前目录下所有以1ls a?.txta开头,接着是一个任意字符,然后是.txt扩展名的文件。
-
[...](方括号)- 用途: 代表方括号内的任何一个字符。
- 示例:
这将列出当前目录下所有以1ls a[bcd].txta开头,接着是b、c或d,然后是.txt扩展名的文件。
-
[^...](方括号加脱字符)- 用途: 代表除了方括号内的任何字符。
- 示例:
这将列出当前目录下所有以1ls a[^bcd].txta开头,接着不是b、c或d的任意字符,然后是.txt扩展名的文件。
-
{n...m}(花括号)- 用途: 代表一系列字符串的组合。
- 示例:
这将列出当前目录下的1ls {file1,file2,file3}.txtfile1.txt、file2.txt和file3.txt。
-
-
选择 (Selection)
-
|(竖线)- 用途: 用于管道,将一个命令的输出作为另一个命令的输入。
- 示例:
这将列出当前目录下所有1ls *.txt | grep "example".txt文件,并通过grep命令筛选包含 "example" 的行。
-
-
转义 (Escape)
-
`` (反引号)
- 用途: 用于嵌入命令的输出。
- 示例:
这将输出今天的日期,格式为1echo "Today is `date +%Y-%m-%d`."YYYY-MM-DD。
-
-
重定向 (Redirection)
-
>(大于号)- 用途: 用于重定向命令的输出到文件,覆盖原有文件内容。
- 示例:
这将把当前目录下所有1ls *.txt > file_list.txt.txt文件的列表写入file_list.txt文件中。
-
>>(两个大于号)- 用途: 用于追加重定向命令的输出到文件,不会覆盖原有文件内容。
- 示例:
这将把当前目录下所有1ls *.txt >> file_list.txt.txt文件的列表追加到file_list.txt文件的末尾。
-
<(小于号)- 用途: 用于从文件读取输入,代替标准输入。
- 示例:
这将输出1cat < input.txtinput.txt文件的内容。
-



![[JAVA]创建多线程的三种方式与区别](https://i-blog.csdnimg.cn/direct/6c28d4422e2a4826a148632b189bf0fb.png)















