linux命令
- 格式:命令名 选项(option) 参数(argument)[^可以有多个,通常使用空格分隔]
命令选项
- 短选项(short options): 以
-
作为前缀,后跟一个字母或数字。通常用于提供简短的开关功能[^例:ls -l]。可以单独使用或组合。[^ls -l -a 可以合并为 ls -la] - 长选项(long options): 以
--
作为前缀,后跟一个单词或短语[^例:ls --all] - 布尔选项(boolean options): 用于打开或关闭某些功能。通常没有参数,使用时表示打开,不使用时表示关闭。[^ -l 即布尔选项,用于显示长格式列表]
- 参数选项(argument options): 用于提供额外的参数值给命令。参数选项通常紧跟在选项后面,并提供一个值[^cp -r source destination 的 -r 就是参数选项,用于递归复制目录]
常用命令选项
-l
用于显示详细信息或进行长格式列表显示-a
在ls
命令中使用,用于显示所有文件和目录,包括隐藏文件和目录-r
用于递归操作,即处理目录及其内容-f
用于强制操作,即不进行确认提示-v
用于显示详情的操作信息,即verbose模式-i
用于询问确认操作,即interactive模式-h
用于显示人类刻度的文件大小,以便理解-p
,在cp
mv
命令使用,用于保持文件的权限属性,即保持原文件的属性-u
,在cp
mv
命令使用,用于更新目标文件,即只复制或移动比目标文件更新的文件-s
,在ln
命令中使用,用于创建符号链接(软链接)-x
,在find
命令中使用,用于限制搜索范围在当前文件系统,即不跨越文件系统边界
符号
>
: 输出重定向符号。用于将命令的标准输出重定向到指定文件,并将文件原先的内容覆盖。若文件不存在,则会创建一个新文件>>
: 追加重定向符号,用于将命令的标准输出追加到指定文件的末尾。若文件不存在则会创建一个新文件<
: 输出重定向符号,将文件的内容传递给命令
sort < input.txt > output.txt
:将文件 input.txt 的内容作为输入传递给 sort 命令进行排序,并将排序结果输出到文件 output.txt
|
: 管道符,用于将一个命令的输出作为另一个命令的输入。||
: 逻辑运算符。通常用于控制命令的执行流程和错误处理,提供了一种条件执行命令的方式。如果第一个命令执行成功(即返回零的退出状态码),则不会执行第二个命令,而是继续执行后续的命令。;
: 用于分隔多个命令,在一行上依次执行多个命令&
:- 在命令后添加
&
符号可将命令置于后台运行,即使命令执行完成后,终端仍可用于输入其他命令。对于长时间运行的命令或不需要等待命令完成的情况很有用。 - 用于连接命令时,可以并行执行多个命令而无需等待前一个命令的完成
- 在命令后添加
&&
: 逻辑运算符。只有在第一个命令执行成功才会执行之后的服务。
命令
通用命令
- 切换用户,使用root则切换为顶级用户
su root
$
号表示普通用户,#
表示顶级用户
- 帮助文档
man ls
man 命令名
manual
- bash内置命令的帮助信息
help cd
- 清屏
clear
目录相关
- 显示当前所在目录
pwd
- 显示当前目录下所有内容
ls
即list
命令ll
,即ls -l
的一种简化形式
- 创建文件夹
mkdir a
make directory
- 删除文件夹
rmdir a
- 删除文件或文件夹
rm a
- 重命名或移动
mv a z
z为名称时, 将a命名为z
z为路径时, 将a移动到z路径下
- 复制
cp b z
复制b到z文件夹
通过-r
[^递归选项],可将b及其子文件复制到z
- 切换到指定目录
cd hello/
- 查找指定目录或文件
whereis filename
文件相关
操作文件
- cat命令, 代表
concatenate
(连接). 用于显示文件的内容,并将其连接到标准输出
cat a
cat a>b
cat a>>b
上述命令分别为
- 获取a的内容
- 将a内容覆盖到b的内容上
- 将a的内容追加(复制)到b的内容后
- echo, 即回声, 用于在终端输出文本或变量的值
echo "hello world"
echo $name
echo "hello">aaa.txt
echo a>>b
echo `date`
上述命令分别为
- 在终端输出hello world
- 输出变量name的值
- 将hello覆写入名为
aaa.txt
的文件中[^linux中不存在文件后缀,所以此处的aaa.txt即该文件的名称]- 将a文件的内容追加到b文件内容的末尾
- 输出当前时间
- ln,用于在文件系统中建立文件或目录之间的链接关系
ln -s sourcefile targetfile
由此建立符号链接,创建的targetfile指向sourcefile,类似于快捷方式
-s
, 即symbol,创建符号链接(软链接)
-f
, 即force,强制操作,若目标文件已存在,则进行复告
touch filename
, 用于更新文件的时间为当前系统时间
查看文件内容
less [option] filename
more [option] filename
head [option] filename
tail [option] filename
wc [option] filename
less
&more
都用于浏览文件内容,但less
提供了更多的功能和选项。
less有如下选项,而more没有选项
-N
显示行号
-i
忽略大小写
-F
, 文件较短时不使用分页器而是直接显示全部内容
less
&more
的快捷键是相同的
空格键:向下滚动一整页。
Enter 键:向下滚动一行。
B 键:向上滚动一整页。
G 键:跳转到文件的末尾。
q 键:退出
head
, 用于显示文件内容的开头几行,默认显示10行
-n <行数>
&--lines=<行数>
, 可通过此选项自定义显示的行数
tail
, 用于显示文件的末尾内容,可实时显示最新内容
-n <行数>
&--lines=<行数>
, 可通过此选项自定义显示的行数
-f
&--follow
:实时追踪文件的变化,并持续显示新增的内容。
-q
&--quiet
:禁止显示文件名
wc
, 即"word count", 用于统计文件或标准输入中的字节数、字数和行数
不使用选项,直接使用则会分别输出 行数、字数及字节数
wc
有如下几个选项
-l
:仅统计行数。
-w
:仅统计字数(以空格、制表符或换行符作为分隔符的连续字符序列)。
-c
:仅统计字节数。
-m
:仅统计字符数。
L
:显示最长行的长度。
搜索文件或目录
which filename
, 查找文件在系统的完整路径(命令也是一个文件,可进行搜索)find path [option] [expression]
, 用于在指定路径下查找文件和目录。可使用通配符进行查找
常用选项如下
-name
文件名:按照文件名进行匹配搜索。
-type
文件类型:按照文件类型进行匹配搜索,如 f 表示普通文件,d 表示目录等。
-mtime +n/-n
:按照文件的修改时间进行匹配搜索,+n 表示 n 天前之前,-n 表示 n 天以内。
-size +n/-n
:按照文件的大小进行匹配搜索,+n 表示大于 n 字节,-n 表示小于 n 字节。
-exec 命令 {} \;
:对搜索到的每个文件执行指定的命令。
locate [option] mode
, 用于快速定位系统中符合指定模式的文件,比find
命令更迅速
以下是
locate
的常用选项
-i
:忽略模式的大小写。
-l
:仅显示匹配到的文件名,而不显示完整路径。
-c
:仅显示匹配到的文件数量,而不显示文件名。
-r
:使用正则表达式作为模式。
grep [选项] 模式 [文件]
, 根据正则表达式或简单字符串进行搜索,并显示包含匹配的行
模式 表示要搜索的文本模式,可以是简单的字符串或正则表达式。文件 表示要搜索的文件,如果不指定文件,则默认从标准输入中读取数据
grep
的常用选项
-i
:忽略模式的大小写。
-v
:仅显示不匹配模式的行。
-r
&-R
:递归地搜索目录及其子目录下的文件。
-l
:仅显示包含匹配模式的文件名。
-n
:显示匹配行的行号。
-c
:仅显示匹配模式的行数。
权限相关
group组
- linu文件系统中权限管理重要组成部分。每个文件和目录都有Owner、Group和Others的访问权限。通过将用户归属于特定的组,可以方便地对文件和目录进行权限管理。
- 常用的group相关命令
groupadd group_name # 创建新的组
groupdel group_name # 删除现有的组
groupmod -n new_name old_name # 修改组名
groupmod -g new_gid group_name # 修改组的GID
groups # 显示当前用户所属的组
newgrp group_name # 允许用户在不注销的情况下切换到不同的组身份
usermod -g new_group user_name # 修改用户的主组
usermod -G group1,group2 user_name # 修改用户的附加组
id username # 显示指定用户的UID和所属组的GID
id # 显示当前用户的UID和所属组的GID
getent group # 获取所有组的信息
getent group group_name # 获取指定组的信息
getent passwd # 获取所有用户的信息
getent passwd user_name # 获取指定用户的信息
用户相关
useradd username # 创建新用户
userdel username # 删除现有用户
passwd username # 设置用户密码
usermod -l new_username old_username # 修改用户名
usermod -u new_uid username # 修改用户的UID
su username # 切换到指定用户身份(需要输入密码)
su - username # 切换到指定用户身份,并加载其环境变量和配置文件
sudo command # 以超级用户权限执行指定的命令
whoami # 显示当前登录用户的用户名
w # 显示当前系统上活动用户的信息,包括登录时间、登录终端等
finger username # 显示用户的详细信息,如用户的全名、登录时间、登录终端等
chown new_owner file_or_directory # 修改文件或目录的所有者
chmod permission file_or_directory # 修改文件或目录的权限
chomod 777 file_or_directory # 给予所有用户对文件或目录的完全权限
permission权限
- permission用于控制文件或目录对用户的访问权限属性
r
&数字4,读权限
w
&数字2,写权限
x
&数字1,执行权限
-rw-r--r--
表示文件所有者可读写,所属组和其他用户只可读取。用数字表示为644.
drwxr-xr-x
表示目录所有者可读、写、执行(对目录而言,执行表示可以进入该目录),所属组和其他用户可读、执行。数字表示为755.由此可见,权限的表示由10个字符组成,第一个字符表示文件或目录,后面9个字符由连贯的
rwxrwxrwx
组成,没有的权限使用-
表示
- 命令中,权限表达式由
用户 加减符号 权限
组成
chmod u-rwx,g+rw,o+r file
其中
u
代表用户层,g
代表组层,o
代表其他用户
加减符号代表增加或移除权限
rwx代表对应的读写执行权限
可以用数字表示设置的权限
数字中0、3、5、6、7分别代表权限对应数字相加之和,故这五个数字分别为 无权限、写执行、读执行、读写、读写执行
将用户添加到sudoers文件中
-
切换到root用户
-
输入命令
sudo visudo
打开并编辑sudoers文件 -
找到类似行并仿照写入新的用户
-
之后添加的用户即可使用
sudo
命令
## 服务相关
- 启动停止服务
systemctl start <service-name>
systemctl stop <service-name>
- 重启服务
systemctl restart <service-name>
- 重新加载服务的配置文件
systemctl reload <service-name>
- 查看服务的状态
systemctl status <service-name>
- 将服务设置为开机自启或禁用开机自启
systemctl enable <service-name>
systemctl disable <service-name>
- 查看服务日志
journalctl -u <service-name>
防火墙相关常用命令
systemctl start firewalld # 启用防火墙
systemctl stop firewalld # 停止防火墙
firewall-cmd --add-port=port_number/tcp --permanent # 允许特定端口的进入连接
firewall-cmd --remove-port=port_number/tcp --permanent # 禁止特定端口的进入连接
firewall-cmd --reload # 重新加载防火墙配置文件,修改规则后需要使用该命令进行更新
firewall-cmd --list-all # 显示当前防火墙规则
tree命令程序
- 需要先通过
yum install tree
命令进行该程序安装 - tree 是一个在命令行界面下用于以树状结构显示目录和文件的工具。
- 语法
tree [选项] [目录]
tree命令常用选项
-a
, 显示所有文件和目录-L
, Level, 限制显示的层级深度
tree -L 2 /path/to/directory
-d
, 只显示目录-f
, 显示完整路径-i
, 不显示树状图符号-P
, pattern, 只显示符合指定模式的文件和目录
显示当前防火墙规则
## tree命令程序
* 需要先通过`yum install tree`命令进行该程序安装
* tree 是一个在命令行界面下用于以树状结构显示目录和文件的工具。
* 语法
```bash
tree [选项] [目录]
tree命令常用选项
-a
, 显示所有文件和目录-L
, Level, 限制显示的层级深度
tree -L 2 /path/to/directory
-d
, 只显示目录-f
, 显示完整路径-i
, 不显示树状图符号-P
, pattern, 只显示符合指定模式的文件和目录
tree -P "*.txt" /path/to/directory