Linux 基础命令整理
一、 文件目录管理
1. 文件查看
-
ls
-
选项
-
-a
: 查看所有文件(包括隐藏文件) -
-L
: 以长格式查看该目录下的文件信息 -
-d
: 查看当前目录的信息
-
-
-
cat:显示文件内容
-
more
- 作用:分页显示文件内容
- 使用:
- 空格键:向下翻一页
- 回车键:向下翻一行
- b键:回到上一页
- / 键:搜索
- q键:退出
-
less
- 作用:显示文件末尾内容(默认显示末尾10行)
- 选项:
-n
:指定行数-f
:实时查看文件末尾内容
-
strings
- 作用:从二进制文件中提取可打印的字符序列。这在分析非文本文件(如编译后的执行文件)时特别有用
- 使用:
strings [文件名]
:显示文件中所有长度至少为四个字符的字符串strings -n [长度] [文件名]
:搜索长度至少为指定字符数的字符串strings -t d [文件名]
:显示字符串及其在文件中的偏移量(十进制形式)strings -f [文件名]
:在每个字符串前面输出它在文件中的位置
-
locate
- 作用:用来快速查找文件和目录,由于locate命令是通过查询一个包含系统中所有文件的快照的数据库来快速找到文件的位置,所以这比直接在文件系统中搜索要快得多
- 使用:
locate [文件名]
:打印出所有与搜索模式匹配并且用户有读取权限的文件和目录的绝对路径locate -i [文件名]
:在搜索时忽略大小写locate -n [数量] [文件名]
:限制输出的条目数locate -c [文件名]
:仅输出找到的数量locate -d [数据库路径] [文件名]
:将使用指定的数据库,而不是默认数据库/var/lib/mlocate/mlocate.db
- locate命令的工作原理是通过查询一个由
updatedb
命令生成的数据库文件来搜索给定的模式。找到的结果会显示在屏幕上,每行一个。在安装 mlocate 包时,会创建一个 cron 作业,该作业每24小时运行一次updatedb
命令。这确保数据库定期更新。数据库可以通过以 root 或具有 sudo 权限的用户身份运行updatedb
来手动更新。
-
diff
- 作用:用来逐行比较两个文件或者两个目录的差异,在分析和比较文件内容时特别有用。
- 使用:
diff [文件1] [文件2]
:逐行比较两个文件的异同处diff -i [文件1] [文件2]
:在比较时忽略大小写的不同diff -w [文件1] [文件2]
:在比较时忽略全部的空格字符diff -r [目录1] [目录2]
:比较子目录中的文件diff -y [文件1] [文件2]
:以并列的方式显示文件的异同之处
-
man
- 作用:查看Linux系统中的命令使用手册
- 使用:
man [命令]
:查看 [命令] 的使用手册man -f [命令]
:显示命令的简短描述man -k [命令]
:搜索包含指定关键字的所有手册页
2. 权限管理
- chmod
- 作用:用于修改目录或者文件的权限【读(r)、写(w) 和 执行(x)】
- 使用:
chmod [选项] 模式 文件名
- 选项:
-R
:递归地改变指定目录及其所有子目录和文件的权限-v
:在改变权限时显示详细信息-c
:只在进行了改变时显示详细信息-f
:不输出错误消息
- 模式:
- 字母:
u
表示所有者,g
表示组,o
表示其他用户。+
表示添加权限,-
表示删除权限,=
表示设置权限。r
表示读权限,w
表示写权限,x
表示执行权限 - 数字:一共三位数字,分别代表 u g x,每一位数字都是其对应权限的数字的和
- 读—4
- 写—2
- 执行-1
- 字母:
- 选项:
- chown
- 作用:修改文件或目录的所有者和组
- 使用:
chown [选项] 所有者[.组] 文件名
- 选项:和上面一样
- chattr
- 作用:用于改变文件或目录的属性
- 使用:
chattr [选项] [+-=][属性] 文件
- 选项:
-R
:递归处理目录-V
:详细模式,报告正在进行的处理信息-f
:强制模式,即使发生错误也改变属性
- 属性:
a
:设置后,文件只能以追加的方式写入i
:设置后,文件将不可变,不能被删除、修改、重命名或链接s
:安全删除,一旦文件被删除,系统会彻底抹去文件的内容A
:访问文件/目录时,不更新其最后一次访问时间
- 选项:
- lsattr
- 作用:用于显示文件或目录的属性
- 使用:
lsattr [选项] 文件
- 选项:
-R
:递归处理目录-a
:显示所有文件和目录,包括隐藏文件-d
:只列出目录的属性,而不是其内容
- 选项:
3. 软件包管理
- rpm
- 作用:安装软件包(不自动安装其他所依赖的软件包,费事的)
- 使用:
-i
:安装软件包(都是配合着-ivh来一起使用)-q
:查询软件包-qa
:查询所有软件包(一般配合着grep来使用,比如 rpm -qa | grep wget)-qi
:查询已安装软件包的详情信息-ql
:查询这个软件安装的时候创建了哪些文件夹-U
:升级软件包-e
:删除已安装的软件包
- yum
- 作用:安装软件包(自动安装所依赖的软件包,基本都用这个)
- 使用:
- 安装软件包:
yum install XXX
(一般配合着选项-y
来使用,-y
代表yes) - 更新软件包:
yum update XXX
(同上) - 卸载软件包:
yum remove XXX
(会连同安装时所依赖的软件包一起卸载) - 详细搜索:
yum list XXX
(特定名字) - 模糊搜素:
yum search XXX
(包名中包含XXX的都列出来) - 查看软件包详情信息:
yum info XXX
- 制作本地yum缓存:
yum makecache
(在学校教室里就得先用这个) - 查看yum源里有多少个包:
yum repolist
(这个命令同时也可以检查yum源配没配对/开没开启)
- 安装软件包:
4. 系统管理
- w
- 作用:显示当前系统登录的用户
- 使用:
w [选项] [用户]
-h
:不显示标题行-u
:忽略用户的进程活动
- vmstat
- 作用:虚拟内存统计
- 使用:
vmstat [选项] [延迟 [计数]]
-a
:显示活动和非活动内存-d
:显示磁盘统计信息-s
:显示事件计数和内存统计信息
- top
- 作用:实时显示系统资源使用情况
- 使用:
top [选项]
-d
:设置刷新间隔-p
:监视特定进程的PID-u
:监视特定用户的进程
- sar
- 作用:系统活动报告
- 使用:
sar [选项] [间隔 [次数]]
-u
:显示CPU使用情况-r
:显示内存使用情况-n DEV
:显示网络使用情况
- free
- 作用:显示系统中物理和交换内存的使用情况
- 使用:
free [选项]
-b
:以字节为单位显示内存使用情况。-k
:以KB为单位显示内存使用情况。-m
:以MB为单位显示内存使用情况。-g
:以GB为单位显示内存使用情况。-h
:以易读的方式(自动选择合适的单位)显示内存使用情况。
- ps
- 作用:查看当前进程
- 使用:
-A
:查看所有进程-u
:查看指定用户的进程-f
:查看进程详细信息(一般都用ps -ef)
- netstat
- 作用:显示网络连接、路由表、接口统计等等网络相关的信息,常用来帮助我们诊断网络问题
- 使用:
netstat [选项]
(常用:netstat -tuln
)-a
:显示所有连接和监听端口-n
:以数字形式显示地址和端口号(不进行域名、服务名的解析)-t
:显示TCP连接-u
:显示UDP连接-l
:仅显示监听状态的套接字-p
:显示每个套接字/域关联的进程-r
:显示路由表-i
:显示网络接口信息
- tcpdump
- 作用:命令行界面的网络抓包工具,显示经过网络接口的TCP/IP和其他网络包的详细信息
- 使用:
tcpdump [选项] [表达式]
-i
:指定网络接口-n
:不解析主机名和服务名,直接显示IP地址和端口号-v
、-vv
、-vvv
:提供更详细的输出-X
:以十六进制和ASCII码显示数据包内容-w
:将数据包写入文件-r
:从文件读取数据包
- Wireshark
- 作用:有GUI的网络抓包工具,其他和上面一样
- dmesg
- 作用:查看硬件设备的状态、驱动程序的加载情况、内存使用情况等东西
- 使用:
dmesg [选项]
(通常搭配| grep [搜索的内容]
来使用)-R
:递归地改变指定目录及其所有子目录和文件的所有者和组-c
:只在进行了改变时显示详细信息-v
:在改变所有者或组时显示详细信息-f
:不输出错误消息
- crontab
-
作用:设置自动任务
-
使用:
crontab [选项]
-
crontab
文件中的每一行都代表一个任务,每行有六个字段,前五个用于指定任务的执行时间,最后一个字段是要执行的命令,时间字段的格式如下:- 分钟(0 - 59)
- 小时(0 - 23)
- 月份中的日期(1 - 31)
- 月份(1 - 12)
- 星期中的日期(0 - 7)(0 和 7 都表示星期日)
-
选项:
-
-e
:编辑crontab
文件,如果文件不存在,将创建一个新的 -
-l
:显示crontab
文件的内容 -
-r
:删除当前的crontab
文件 -
-i
:在删除当前的crontab
文件前提示
-
-
eg. 想在每天的午夜(0点)运行一个脚本,那么可以在
crontab
文件中添加如下一行:0 0 * * * /path/to/script.sh
这表示在每天的0点0分(即午夜)执行/path/to/script.sh
脚本
-
-
- firewall-cmd
- 作用:防火墙
- 使用:
firewall-cmd [选项]
firewall-cmd --state
:显示firewalld
的运行状态firewall-cmd --get-zones
:显示所有可用的区域firewall-cmd --get-default-zone
:显示默认区域firewall-cmd --add-port=80/tcp
:允许任何 IP 通过特定端口(例如 80)firewall-cmd --add-service=http
:允许 HTTP 服务firewall-cmd --reload
:重新加载firewalld
和所有永久规则
- rsync
-
作用:同步文件或者目录
-
使用:
rsync [选项] 源 [目标]
-a
:这等同于使用-rlptgoD
。存档模式包括所有必要的选项,如递归复制文件,保留几乎所有内容(如符号链接,文件权限,用户和组所有权以及时间戳)-v
:默认情况下,rsync
静默运行。使用单个“-v”选项在传输过程中提供有关传输文件和最后的摘要的信息。添加两个“-v”选项在传输过程中提供有关增量传输和跳过的文件的状态更新,以及最后的更多信息。通常使用多个“-v”选项来调试rsync
-h
:以人类可读的格式输出-z
:强制rsync
在将数据发送到目标机器时压缩数据。只有在到远程机器的连接较慢时才使用此选项
-
eg. 本地复制文件从 /src/filename 到 /dest/filename
rsync -a /src/filename /dest/filename
-
- chkconfig
- 作用:查看和更新系统服务的运行级别设置
- 使用:
chkconfig --list
:列出所有服务的当前状态chkconfig --add service
:添加一个服务。chkconfig --del service
:删除一个服务chkconfig service on/off
:启用或禁用一个服务
- systemd
- 作用:启动守护进程
- 使用:
systemctl start [service]
:启动一个服务systemctl stop [service]
:停止一个服务systemctl restart [service]
:重启一个服务systemctl enable [service]
:使一个服务在启动时自动运行systemctl disable [service]
:禁止一个服务在启动时自动运行
5. 进程管理
-
nohub
-
作用:后台运行进程
-
使用:
nohup Command [Arg …] [&]
Command
:要执行的命令Arg
:一些参数,可以指定输出文件&
:让命令在后台执行,终端退出后命令仍旧执行
-
eg.
nohup /root/runoob.sh &
这表示在后台执行/root/runoob.sh
脚本。 如果看到以下输出说明运行成功:appending output to nohup.out
这时我们可以看到生成了nohup.out
文件 如果要停止运行,需要使用以下命令查找到nohup
运行脚本的 PID,然后使用kill
命令来删除:1
ps -aux | grep "runoob.sh"
找到 PID 后,就可以使用
kill PID
来删除
-
-
screen
- 作用:“开一个窗口(screen)”
- 使用:
screen [选项]
- 选项:
screen -S [name]
:创建一个新的 screen 会话并给它一个名字。screen -ls
:列出所有的 screen 会话。screen -r [name]
:重新连接到一个已经存在的 screen 会话。screen -d [name]
:离开一个 screen 会话
- 快捷键:
- Ctrl-A
c
:创建一个新的窗口 Ctrl-An
:切换到下一个窗口 Ctrl-Ap
:切换到上一个窗口 Ctrl-Ad
:分离当前的 screen 会话
- Ctrl-A
- 选项:
-
xargs
- 作用:读取文本行,并将它们转换为命令然后执行
- 使用:
xargs [选项] [命令 [初始参数]]
- 选项:
-p
或--interactive
:在执行每个命令之前,先提示用户确认-n
或--max-args
:每次命令执行的最大参数数量-I
或--replace
:替换字符串-0
或--null
:从输入中读取以 null 字符结尾的项,而不是以空格、制表符或换行符结尾的项
- 命令:字面意思,常见的
rm
、cp
、echo
、mkdir
都可以用 - 初始参数:说的是命令的参数,比如
rm -rf
里的-rf
- 选项:
- eg. 从 filelist.txt 文件中读取文件名,并使用
rm -f
命令删除每个文件cat filelist.txt | xargs rm -f
-
exec
- 作用:用新的进程替换掉当前的进程
- 使用:
exec [选项] [命令 [参数]]
-c
:在空环境中执行命令-l
:将破折号(-)作为第零个参数传递-a [名称]
:将[名称]
作为第零个参数传递
- 备注:
exec
命令的行为取决于参数的数量:- 如果存在参数,
exec
命令会替换当前的 shell 并执行程序 在 Bash 脚本中,任何在exec
命令之后的命令都不会被执行 - 如果没有命令参数,所有的重定向都会在当前的 shell 中发生
exec
命令永远不会返回到原始进程,除非出现错误或命令在子 shell 中运行
- 如果存在参数,
6. 用户管理
- useradd
- 作用:创建新用户
- 使用:
useradd [选项] 用户名
-d
:指定新用户的主目录-u
:指定新用户的用户 ID (UID)-g
:指定新用户的组 ID (GID)-M
:创建没有主目录的用户-e
:设置用户账户的过期日期-c
:为用户添加注释或描述-s
:为用户指定一个不同的登录 shell
- userdel
- 作用:删除用户
- 使用:
userdel [选项] 用户名
-r
:删除用户的主目录以及账户-f
:强制删除用户,即使用户正在登录
- su
- 作用:临时切换用户
- 使用:
su [选项] [用户 [参数]]
-
(-l
):使 shell 成为登录 shell,环境非常类似于真正的登录,并更改当前目录-s
:切换到 root 并运行指定的 shell-c
:以 root 用户身份执行指定的命令
7. 环境变量
-
echo $PATH
: 显示PATH环境变量。PATH环境变量定义了系统查找命令的路径。 -
vim /etc/profile
: 修改全局环境变量。/etc/profile文件中定义了全局环境变量。
8. Shell 命令
-
alias:
alias
命令用于为其他命令创建替代名称,使它们更易于记忆和使用 eg.alias ls='ls --color=auto'
会创建一个名为ls
的别名,该别名会以彩色方式显示文件和目录 -
bg:
bg
命令用于将挂起或停止的作业移动到后台 eg. 如果你有一个被挂起的作业,你可以使用bg %jobid
命令将其移动到后台,其中jobid
是作业的ID -
bind:
bind
命令用于显示或修改键绑定 eg.bind -p
会显示所有的键绑定和它们所绑定的函数 -
break:
break
命令用于在循环中提前退出或终止循环 eg. 在一个for
或while
循环中,如果满足某个条件,你可以使用break
命令来终止循环 -
builtin:
builtin
命令用于执行shell内建命令 eg. 如果你有一个与shell内建命令同名的函数,使用builtin
命令可以显式地执行shell内建命令,从而忽略定义的shell函数 -
case:
case
命令允许你根据特定块创建多个条件及其结果。例如:1 2 3 4 5 6 7 8
case $variable in pattern1) commands;; pattern2) commands;; *) default_commands;; esac
这将根据
$variable
的值匹配pattern1
或pattern2
,并执行相应的命令。如果没有匹配到任何模式,将执行default_commands
-
cd:
cd
命令用于在目录之间导航 eg.cd /usr/local
会将当前工作目录更改为/usr/local
-
command:
command
命令用于执行外部命令,绕过任何具有相同名称的别名或函数 eg. 如果你有一个与外部命令同名的别名,使用command
命令可以优先执行外部命令 -
compgen:
compgen
命令用于列出所有可能的补全选项 eg.compgen -c
会列出所有可以在系统中执行的命令,包括文件名、命令别名、内建命令等 -
complete:
complete
命令用于设置命令的补全规范 eg.complete -f -d -W "bar car" foo
会设置foo
命令的补全选项,当我们为foo
命令进行补全时,它会列出文件、目录以及单词列表