用户管理
su
- 切换用户:su 用户名
logname
- 显示当前用户的登录用户名:logname
useradd
- 创建用户:useradd 用户名
- 创建用户时指定用户的主组:useradd -g 组名 用户名
usermod
- 添加附属组:usermod -G 组名 用户名
- 添加多个附属组:usermod -G 组名1,组名2,组名3 用户名
- 去除附属组:usermod -G 组名1,组名3 用户名(备注:这里将去除了组名2)
userdel
- 删除用户:userdel 用户名
- 强制删除用户帐户:userdel -f 用户名
- 删除用户帐户和主目录:userdel -r 用户名
id
- 查看用户的id:id 用户名(备注:uid:用户编号;gid:用户组编号;groups:附属组编号)
passwd
- 给用户设置或修改密码:passwd 用户名
cat
- 查看系统中有哪些用户组:cat /etc/group
- 通过查看passwd文件可以获取用户信息:cat /etc/passwd
groupadd
- 创建组:groupadd 组名
- 创建组时指定组编号:groupadd -g 组编号 组名
groupmod
- 修改组编号:groupmod -g 组编号 组号
- 修改用户的群组:usermod -g 组名/组编号 用户名
- 修改组名:groupmod -n 新组名 组名
groupdel
- 删除组:groupdel 组名(备注:如果要删除的组被用户设置成主组,则不能删除)
文件或目录
du
- 查看指定文件的大小:du -s 文件
- 查看该目录及其下的所有文件的大小:du 目录
touch
- 在当前目录下创建新的空文件:touch filename.txt(备注:如果文件已经存在,它将保持不变)
- 在当前目录下创建多个空文件:touch file1.txt file2.txt file3.txt
- 更改文件的访问时间和修改时间为当前时间:touch -a -m filename.txt
- 创建或更新带有特定时间戳的文件为指定的时间:touch -t 202309251430.00 filename.txt (备注:时间戳格式为:YYYYMMDDhhmm.ss)
echo
- 在终端中显示文本:echo "Hello, World!"
- 将文本重定向到文件中:echo "文本" > 文件名(备注:如果文件不存在,它将被创建;如果已存在,它将被覆盖)
- 将文本追加到文件的末尾:echo "文本" >> output.txt(备注:将文本追加到文件的末尾,而不是覆盖文件内容)
rm
- 删除文件或目录:rm 文件或目录名
- 删除多个文件:rm 文件1 文件2 文件3
- 递归删除目录及其内容::rm -r 目录
- 强制删除:rm -f 文件或目录名
rmdir
- 删除空目录:rmdir 空目录(备注:如果目录不为空,将会报错,该命令将无法删除它。rmdir 命令只能删除空目录。如果目录中包含文件或子目录,你需要使用 rm 命令来删除其内容,然后再使用 rmdir 删除空目录)
- 删除多个空目录:rmdir 空目录1 空目录2 空目录3
- 递归删除目录及其所有父目录:rmdir -p /path/to/mydirectory
- 安静模式删除目录:rmdir -q mydirectory(备注:在删除目录时抑制错误消息,如果目录不存在也不会显示错误消息)
chmod
- 更改文件或目录的权限(使用数字表示权限):chmod 644 文件或目录(备注:r=4 w=2 x=1)
- 更改文件或目录的权限(使用符号表示权限):chmod u+rwx,g+rx,o+r 文件或目录(备注: u 表示文件的所有者;g 表示文件所属组;o 表示其他用户(不是文件的所有者也不是文件所属组的用户))
- 更改文件或目录的权限:chomd u=rwx,g=wx,o=rw 文件或目录
- 更改文件或目录的权限:chmod uo-x,go+w,g-r 文件或目录
- 去除文件写入权限:chmod -w file.txt
- 赋予文件执行权限:chmod +x script.sh
- 修改文件的拥有者:chown 用户名 文件名
- 修改文件的所属组:chown :users 文件名
- 将文件所有者和所属组更改为其他:chmod 所有者:所属组 file.txt
- 更改文件或目录的所属组:chgrp 组名 文件或目录
- 递归更改目录及其内容的所属组:chgrp -R 所属组 目录
cp
- 复制文件或目录:cp 源文件或目录 目标文件或目录
- 复制多个文件:cp 文件1 文件2 目录
- 递归复制目录及其内容:cp -r 源文件或目录 目标文件或目录
zip
- 创建ZIP压缩文件:zip target.zip 文件1 文件2(备注:创建一个名为 target.zip 的ZIP压缩文件,并将 文件1 和 文件2 添加到其中)
- 递归压缩目录及其内容:zip -r target.zip 文件1 文件2
- 添加文件到已存在的ZIP文件:zip target.zip 文件名
- 从ZIP文件删除文件:zip -d target.zip 文件名
-
查看ZIP文件的内容列表:unzip -l target.zip
gz
- 压缩文件(不保留源文件):gzip file.txt(备注:将压缩文件file.txt,并创建一个名为 file.txt.gz 的GZIP压缩文件)
- 递归压缩目录及其内容中的所有文件:gzip -r 目录
- 压缩并保留原始文件:gzip -k file.txt
- 解压缩文件:gzip -d file.txt.gz(备注:解压缩 file.txt.gz 文件,将其还原为原始文件 file.txt)
- 查看压缩文件的信息:gzip -l file.txt.gz
tar.gz & tar.bz2
- 创建压缩包:tar -cvf target.tar file1 file2(备注:创建一个名为 target.tar 的压缩包,并将 file1 和 file2 添加到其中)
- 添加文件到已存在的压缩包:tar -rvf target.tar newfile
- 从压缩包中删除指定的文件:tar --delete -f target.tar file
- 列出压缩包的内容列表:tar -tvf target.tar
- 把文件压缩成.tar.gz格式:tar -czvf target.tar.gz directory/(备注:在创建压缩包时对其进行gzip压缩,这将创建一个名为 target.tar.gz 的压缩文件)
- 解压缩压缩包:tar -xvf target.tar
- 解压缩target.tar.gz文件中的内容:tar -xzvf target.tar.gz
pwd
- 显示用户的当前工作目录(以绝对路径方式表示):
cd
- 切换工作目录至绝对路径:cd 绝对路径
- 切换至当前所在目录:cd .
- 切换至上一层目录:cd ..
- 切换至上两级目录:cd ../ ..
mkdir
- 创建目录:mkdir 目录名
- 创建多个目录:mkdir 目录名1 目录名2(备注:目录名之间使用的空格隔开)
- 在路径下创建目录:mkdir 绝对路径/目录名
- 在不同的路径下创建多个目录:mkdir 路径1/目录名1 路径2/目录名2
- 创建目录时指定权限:mkdir -m 目录权限 目录名(例如:mkdir -m 777 hello)
mv
- 移动文件或目录(或用于文件或目录的重命名):mv 源文件或目录 目标文件或目录
- 移动文件到另一个目录:mv file.txt 目录
- 重命名文件:mv oldname.txt newname.txt
- 递归地移动目录及其内容:mv -r sourcedir/ destination/
- 强制覆盖目标位置已存在的文件:mv -f sourcefile.txt destination/
- 将文件移动到当前目录下并重命名:mv /sourcedir/file.txt newname.txt
ls
- 列出当前工作目录的文件和子目录的列表:ls
- 列出指定目录的文件和子目录:ls 指定目录(绝对路径)
- 以列表方式列出当前工作目录的详细信息:ls -l
- 列出隐藏文件:ls -a(备注:列出包括以点开头的隐藏文件在内的所有文件和目录)
- 使用通配符进行过滤:ls *.txt(备注:列出所有扩展名为 .txt 的文件)
cat
- 只读模式查看文件内容:cat 文件名(备注:也用选项有:-n(显示行号,包含空行)、-b(显示行号,不包含空行)、-v(查看非打印字符)
- 合并多个文件的内容:cat 文件1 文件2
- 将文件内容追加到另一个文件:cat 文件1 >> 文件2(备注:将文件1的内容追加到文件2的末尾)
- 将文本输入到文件:cat > 文件(备注:这里将等待你输入文本,然后将输入的文本保存到文件中。要结束输入,请按 Ctrl + D)
grep
- 搜索文件中包含关键字的文本:grep "关键字" 文件名
- 搜索文件夹(包括其子文件夹)中包含关键字的文本:grep -r "关键字" 目录
- 搜索文件中包含关键字的文本时忽略大小写:grep -i "关键字" 文件名
- 搜索文件中包含关键字的文本时显示匹配行的行号:grep -n "关键字" 文件名
- 显示匹配行之前/之后的行:
grep -B 2 "pattern" filename # 显示匹配行之前的2行
grep -A 3 "pattern" filename # 显示匹配行之后的3行
- 搜索文件中不包含关键字的行:grep -v "关键字" 文件名
- 将搜索结果输出到文件:grep "关键字" 搜索文件名 > 输出文件名
head
- 查看文件的前M行:head -n M 文件名(备注:不使用选项-n 则默认显示10行内容)
- 显示多个文件的开头部分:head 文件1 文件2
- 显示非打印字符:head -v 文件名
find
- 根据文件名在起始目录及其子目录中搜索文件:find 起始目录 -name "文件名"
- 根据文件类型在起始目录及其子目录中搜索文件:find 起始目录 -type f
备注:
-type f 中的 f 表示要搜索的文件类型。具体来说,f 代表普通文件(regular file)。当你使用 -type f 选项时,find 命令会搜索指定目录及其子目录中的普通文件,而不包括目录、设备文件、符号链接或其他特殊文件类型。
这是 -type 选项的一些常见参数和它们的含义:
- f:代表普通文件。
- d:代表目录。
- l:代表符号链接(软链接)。
- c:代表字符设备文件。
- b:代表块设备文件。
- p:代表命名管道(FIFO)。
- s:代表套接字文件。
因此,当你运行 find 起始目录 -type f 命令时,它会搜索起始目录及其子目录中的普通文件,并将它们列出或执行其他操作,具体取决于你的 find 命令的后续操作。
- 根据文件大小在起始目录及其子目录中搜索文件:find 起始目录 -size +1M(备注:查找大小大于1兆字节的文件)
- 根据修改日期在起始目录及其子目录中搜索文件:find 起始目录 -mtime -7(备注:查找最近7天内修改过的文件)
- 根据文件权限在起始目录及其子目录中搜索文件:find 起始目录 -perm 644(备注:查找文件权限为644的文件)
- 将匹配的文件输出到文件中:find 起始目录 -name "*.txt" > 文件(备注:这将在起始目录及其子目录中查找所有以 ".txt" 结尾的文件,并将结果输出到名为 files.txt 的文件中)
系统管理
ps
- 列出当前用户的所有进程:ps
- 列出所有进程的详细信息:ps -f
- 查看运行中的进程:ps -r
- 列出指定用户的进程:ps -u 用户名
- 查找特定进程的信息:ps -p PID(备注:这将显示指定PID(进程ID)的进程的信息)
top
- 显示进程(任务)信息:top(备注:按q键退出)
kill
- 终止指定进程ID的进程:kill 进程ID(备注:向进程发送终止信号SIGTERM,使其正常退出)
- 终止指定进程名的进程:pkill 进程名(备注:终止所有名为 "进程名" 的进程)
- 强制终止进程:kill -9 进程ID(备注:向进程发送强制终止信号SIGKILL,强制终止进程)
- 发送其他信号:kill -SIGNAL 进程ID(备注:可以使用 -SIGNAL 格式的选项来指定发送的信号类型)
- 查看可用的信号名称和对应的编号:kill -l
date
- 显示当前系统的日期和时间:date(备注:通常的格式类似于 "Sat Sep 25 14:30:00 UTC 2023")
- 以自定义格式显示日期和时间:date "+%Y-%m-%d %H:%M:%S"(备注:这将以 "YYYY-MM-DD HH:MM:SS" 的格式显示当前日期和时间,例如 "2023-09-25 14:30:00")
- 设置系统日期和时间为指定的值:date --set "2023-09-25 14:30:00"
cal
- 显示当前月份的日历:cal
- 显示指定月份和年份的日历:cal 月份 年份
history
- 显示命令历史号和执行的命令的列表:history
- 显示特定数量N的历史命令:history N
- 清除命令历史记录:history -c
- 将命令历史记录保存到文件:history -w 文件名
clear
- 清除屏幕上的所有文本:clear
sudo
- 以超级用户权限执行命令:sudo command(备注:需要输入用户密码验证身份)
- 以其他用户的权限执行命令:sudo -u username command
软件包管理
rpm
rpm 命令是在基于RPM包管理系统的Linux系统中用于管理软件包的命令。RPM(Red Hat Package Manager)是一种常见的包管理系统,用于安装、升级、查询和卸载软件包。
请注意,rpm 命令用于管理RPM软件包,而不同的Linux发行版可能使用不同的包管理系统(如Debian的APT或Fedora的DNF)。因此,具体的包管理命令可能会因发行版而异。要查看有关 rpm 命令的更多详细信息和选项,请使用 man rpm 命令查看帮助文档。
- 安装RPM软件包:rpm -i package.rpm
- 升级软件包:rpm -U package.rpm(备注:如果软件包不存在则安装它)
- 查询已安装的软件包:rpm -q package-name
- 显示软件包信息:rpm -qi package-name
- 列出系统上所有已安装的软件包的名称:rpm -qa
- 卸载软件包:rpm -e package-name
- 查询软件包提供的文件:rpm -ql package-name
- 查询软件包由哪个软件包依赖:rpm -q --whatrequires package-name
- 查询软件包依赖哪个软件包:rpm -q --requires package-name
yum
yum 命令是在基于RPM包管理系统的Linux系统中用于安装、升级、删除和管理软件包的命令。它是一个包管理工具,常用于Red Hat、CentOS和Fedora等Linux发行版中。
请注意,yum 命令在不同的Linux发行版中可能有不同的变体,例如在Fedora中使用 dnf 命令来执行相似的操作。要查看有关 yum 命令的更多详细信息和选项,请使用 man yum 命令查看帮助文档。
- 安装软件包以及其依赖项:yum install package-name
- 升级系统上已安装的软件包:yum update(备注:包括操作系统本身)
- 升级特定的软件包:yum update package-name
- 搜索可用的软件包:yum search 关键字
- 列出所有已安装的软件包:yum list installed
- 卸载软件包:yum remove package-name(备注:这将卸载软件包,但保留其配置文件)
- 清理系统中的旧软件包文件:yum clean packages
- 清理软件包的缓存:yum clean all(备注:包括元数据)
- 列出软件包的信息:yum info package-name
apt
apt 命令是在基于Debian包管理系统的Linux系统中用于管理软件包的命令。它是一个包管理工具,常用于Debian、Ubuntu和其他基于Debian的Linux发行版中。
请注意,apt 命令是用于Debian包管理系统的工具,而在不同的Linux发行版中可能有不同的包管理工具和命令。要查看有关 apt 命令的更多详细信息和选项,请使用 man apt 命令查看帮助文档。
- 更新系统上可用软件包的列表:apt update(备注:以便 apt 知道有哪些新的软件包可用)
- 安装软件包以及其依赖项:apt install package-name
- 升级系统上所有已安装的软件包:apt upgrade(备注:区别于yum 命令,apt upgrade不会升级操作系统本身)
- 升级特定软件包:apt install --only-upgrade package-name
- 搜索包含关键字 keyword 的可用的软件包:apt search keyword
- 列出所有已安装的软件包:dpkg -l(备注:这使用了 dpkg 命令而不是 apt 命令)
- 卸载软件包:apt remove package-name(备注:卸载软件包,但保留其配置文件)
- 清理软件包的缓存:apt clean(备注:删除下载的软件包文件,但不会删除已安装的软件包)
- 列出软件包的信息:apt show package-name
关机与重启
- 现在立刻关机:shutdown -h now
- 10分钟后关机:shutdown -h 10
- 系统时间17:20时关机:shutdown -h 17:20
- 立刻重启:shutdown -r now
- 取消重启或关机:shudown -c
- 关机:halt
- 关机:poweroff
- 关机:init 0
- 重启:reboot
- 重启:init 6