Linux操作命令的笔记(一)(Ubuntu)
其实Linux不同发行版的基础命令区别不大。
Linux命令基础格式
命令通用格式:command [-options] [parameter]
[]
表示可选的意思command
:命令本身-options
:[可选,非必填]命令的一些选项,可以通过选项控制命令的行为细节parameter
:[可选,非必填]命令的参数,多数用于命令的指向目标等
提示:Linux命令,它们的本体是一个个二进制可执行程序
Linux命令行快捷键
Ctrl + c
强制停止(某些命令执行的中断、命令输错的重新输入)Ctrl + d
退出登出(退出登出某些特定程序的专属页面)ps:不能用于退出vi或vimhistory
查看历史命令!
命令前缀,自动匹配上一个命令Ctrl + r
搜索历史命令Ctrl + a
|e
光标移动到命令开始或结束Ctrl + ←
|→
左右跳单词Ctrl + l
或clear
命令清屏
包管理工具安装软件
安装软件方式:
-
下载安装包自行安装
- Windows:exe、msi等
- Mac:dmg、pkg等
- CentOS:rpm
- Ubuntu:deb
-
系统的应用商店内安装
- Windows:Microsoft Store商店
- Mac:AppStore商店
- CentOS:yum
- Ubuntu:apt
包管理工具在线下载
CentOS和Ubuntu包管理工具在线下载(用于自动化安装配置Linux软件,并可以自行解决依赖问题)。包管理工具安装软件需要root权限,可以su切换到root用户或使用sudo提权:
CentOS中,使用yum命令联网管理软件下载
语法:yum [-y] [install | remove | search] 软件名称
参数:
- 选项:
-y
,自行确认,无需手动确认安装或卸载过程 install
:安装remove
:卸载search
:搜索
Ubuntu中,使用apt命令联网管理软件下载
语法:apt [-y] [install | remove | search] 软件名称
参数:
- 选项:
-y
,自行确认,无需手动确认安装或卸载过程 install
:安装remove
:卸载search
:搜索
路径
相对路径和绝对路径
- 绝对路径:以根节点做起点,描述路径的方式,路径以
/
开头 - 相对路径:以当前目录做起点,描述路径的方式,路径不需以
/
开头
特殊路径符
.
表示当前目录,比如cd .
或cd ./Desktop
..
表示上一级目录,比如cd ..
或cd ../..
~
表示用户的HOME目录,比如cd ~
或cd ~/Desktop
- 提示:
cd ~
相当于回家
环境变量
用途:在Bash shell中设置环境变量意味着你在Bash会话中定义了变量,这些变量可以被运行在该会话中的程序和脚本访问。环境变量是一种向不同程序传递配置信息的机制。设置环境变量通常通过在启动时执行的脚本文件来完成,这样设置的变量将会应用到用户的所有会话中。
案例:当安装Java JDK时,需要设置 JAVA_HOME 环境变量来指定JDK的安装路径,以便于Java程序知道从哪里找到JDK。同样,还需要将JDK的 bin 目录添加到 PATH 环境变量中,这样就可以在任何目录下执行 java 命令了。
描述:系统级/etc/profile
和用户的 ~/.bashrc
文件都是在Bash shell中设置环境变量的脚本文件。
-
系统环境变量
/etc/profile
:系统级别的配置文件,对所有用户生效。当任何用户登录时,系统会读取这个文件,并执行里面的命令。这是系统级别的初始化文件,对所有使用Bash的用户生效。它在登录时执行。 -
用户环境变量
~/.bashrc
:用户级别的配置文件,只对当前用户生效。它在每次新的shell会话开始时加载。这是用户级别的初始化文件,仅对当前用户生效。它在每次启动一个新的非登录Bash会话时执行。
案例:配置Java环境变量(/etc/profile
或 ~/.bashrc
文件)
# 配置Java环境变量
export JAVA_HOME=/usr/lib/jvm/jdk8_391
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
# 执行命令重新加载环境变量
source /etc/profile
Linux权限管控信息
认知权限信息
通过 ls -l
可以以列表的形式查看目录内容并显示权限细节。
序号1的权限细节:
权限的具体含义
r
(读权限):- 针对文件:可以查看文件内容。
- 针对文件夹:可以查看文件夹内容,如执行
ls
命令。
w
(写权限):- 针对文件:表示可以修改此文件。
- 针对文件夹:可以在文件夹内创建、删除、改名等操作。
x
(执行权限):- 针对文件:表示可以将文件作为程序执行。
- 针对文件夹:表示可以更改工作目录到此文件夹,即
cd
进入。
管道符
|
管道符:将管道符左边命令的结果作为右边命令的输入
source命令
- 用途:在当前shell环境中执行指定的文件里的命令。
- 描述:
source
是一个shell内置命令,执行的脚本不会启动新的shell,它在当前shell中运行,这意味着所有的变量和函数将在当前shell中定义,并且对当前会话立即生效。
tar命令
- 用途:解压
tar
压缩文件到当前目录中。 - 参数:
-x
:表示解压文件。-z
:表示使用gzip解压。-v
:表示显示详细的解压过程,即verbose模式。-f
:表示后面跟着要解压的文件名。
- 案例:
tar -xzvf 文件名.tar.gz
文件和目录管理
创建和删除操作
-
mkdir
命令:创建新目录。- 语法:
mkdir [-p] [Linux路径]
-p
选项表示自动创建不存在的父目录。
- 语法:
-
touch
命令:创建文件。- 语法:
touch [Linux路径]
- 语法:
-
rm
命令:删除文件或文件夹。-r
:递归删除目录。-f
:强制删除,无需确认。
文件内容查看和复制
-
cat
命令:查看文件内容。- 无选项,参数为文件路径。
-
more
命令:分页显示文件内容。- 使用空格键翻页,
q
退出查看。
- 使用空格键翻页,
-
cp
命令:复制文件或文件夹。-r
选项用于复制目录。
-
mv
命令:移动或重命名文件或文件夹。- 无特别选项,参数为源路径和目标路径。
权限和所有权修改
-
chmod
命令:修改文件或文件夹的权限。- 示例:
chmod u=rwx,g=rx,o=x [文件或文件夹名]
- 示例:
-
chown
命令:修改文件或文件夹的所属用户和组。- 语法:
chown [用户][:][组] [文件或文件夹名]
-R
选项适用于递归操作。
- 语法:
系统和网络管理命令
用户和用户组管理
-
useradd
命令:创建新用户。-g
指定用户组,-d
指定用户主目录。
-
groupadd
和groupdel
命令:创建和删除用户组。 -
usermod
命令:修改用户所属组。-aG
添加用户到指定组。
系统服务管理
-
systemctl
命令:管理系统服务(启动、停止、自启管理等)。start
,stop
,enable
,disable
等选项用于控制服务。
-
sudo
命令:为普通用户执行命令提供临时的root权限。- 配置需要编辑
/etc/sudoers
文件。
- 配置需要编辑
su命令
- 用途:用于账户切换的系统命令(Switch User)
- 语法:
su [-] [用户名]
- 参数:
-
符号是可选的,表示是否在切换用户后加载环境变量,建议带上。- 参数:用户名,表示要切换的用户,用户名也是可以省略的,省略表示切换到root用户。
- 切换用户后,可以通过
exit
命令退回上一个用户,也可以使用快捷键:Ctrl + d
- 提示:使用普通用户切换到其他用户需要输入密码,如切换到root用户;使用root用户切换到其他用户,可以无需密码直接切换。
特权命令
sudo
和su
命令用于权限提升和用户切换。sudo [命令]
执行需要管理员权限的命令。su - [用户名]
切换到指定用户。
高级命令和工具
查找和过滤命令
-
find
命令:查找文件和目录。- 语法:
find [起始路径] -name "文件名"
-size
参数可以按文件大小查找,例如-size +100M
查找大于100MB的文件。
- 语法:
-
grep
命令:从文件中过滤含有特定关键字的行。- 语法:
grep [选项] [关键字] [文件路径]
-n
选项显示匹配行的行号。
- 语法:
统计命令
wc
命令:统计文件的行数、单词数、字节数。- 语法:
wc [-lwm] [文件路径]
-l
行数,-w
单词数,-m
字符数。
- 语法:
输出和重定向
echo
命令:输出文本到标准输出或重定向到文件。- 语法:
echo [文本] > [文件路径]
>
覆盖写入文件,>>
追加到文件。
- 语法:
文件尾部内容查看
tail
命令:查看文件的尾部内容。-f
用于实时跟踪文件更新。
文本编辑器
vi
/vim
命令:命令行下的文本编辑器。- 进入命令模式,输入模式和底线命令模式。
- 命令模式下,键入
i
进入插入模式,:
进入底线命令模式进行保存(w
)或退出(q
).
用户和用户组管理
id
命令:查看用户的UID和所属的组。useradd
,userdel
,usermod
管理用户账号和属性。groupadd
,groupdel
管理用户组。
文件和目录权限修改
chmod
和chown
命令用于改变文件和目录的权限及所有权。chmod 755 [文件名]
,chown 用户名:用户组 [文件名]
系统服务管理
systemctl
命令用于管理系统服务。- 示例:
systemctl start [服务名]
,systemctl enable [服务名]
- 示例:
特权命令
sudo
和su
命令用于权限提升和用户切换。sudo [命令]
执行需要管理员权限的命令。su - [用户名]
切换到指定用户。
其他常用命令
which命令
- 用途:查找命令的程序文件位置
- 语法:
which [要查找的命令]
- 案例:
which java
find命令
- 用途:查找指定(文件名或大小)的文件
- 语法:
- 按文件名查找文件:
find [起始路径] -name "被查找文件名"
- 按文件大小查找文件:
find [起始路径] -size +|-n[kMG]
- 按文件名查找文件:
- 案例:
- 查找小于10KB的文件:
find / -size -10k
- 查找大于100MB的文件:
find / -size +100M
- 查找大于1GB的文件:
find / -size +1G
- 查找小于10KB的文件:
grep命令
- 用途:从文件或管道符输入中通过关键字过滤匹配行
- 语法:
grep [-n] [关键字] [文件路径]
- 参数:
-n
:显示匹配的行的行号- 关键字,建议使用引号包围
- 文件路径,可作为管道符的输入,不写该参数
wc命令
- 用途:统计文件或管道符输入的行数、单词数量、字节数、字符数等
- 语法:
wc [-c -m -l -w] [文件路径]
- 参数:
-c
字节数-m
字符数-l
行数-w
单词数
echo命令
- 用途:在命令行内输出指定内容
- 语法:
echo [输出的内容]
- 参数:
- 无需选项,只有一个参数,表示要输出的内容
- 复杂的内容可以用引号包围
反引号(飘号)`
- 用途:用反引号包围的内容会被当做命令执行,而非普通字符
重定向符
- 用途:将左侧命令的结果写入到符号右侧指定的文件中
- 覆写
>
:覆盖写入到符号右侧指定的文件中,清空旧内容 - 追加
>>
:追加写入到符号右侧指定的文件中
- 覆写
tail命令
- 用途:查看文件尾部内容,跟踪文件的最新修改
- 语法:
tail [-f -num] [Linux路径]
- 参数:
-f
:持续跟踪-num
:查看尾部多少行,不填默认10行
vi和vim命令行文本编辑器
- 用途:用于在命令行下对文本文件进行编辑
- 语法:
vi [文件路径]
或vim [文件路径]
vi/vim编辑器的三种工作模式:
-
命令模式(Command mode):命令模式下,所敲的按键编辑器都理解为命令,以命令驱动执行不同的功能。此模式下,不能自由进行文本编辑。
- 命令模式快捷键:
- 命令模式快捷键:
-
输入模式(Insert mode):可以对文件内容进行自由编辑。进入编辑模式后,任何快捷键都没有作用,就是正常的输入文本模式,通过
ESC
键可以退回命令模式。 -
底线命令模式(Last line mode):以
:
开始,通常用于文件的保存、退出。- 底线命令模式快捷键:
- 底线命令模式快捷键:
root用户(超级管理员)
描述:root用户拥有最大的操作系统权限,而普通用户在许多地方的权限是受限的。
普通用户的权限,一般在其HOME目录内是不受限的,一旦出了HOME目录,大多数地方,普通用户仅有只读和执行权限,无修改权限。
用户和用户组
查看当前系统中有哪些用户
语法:getent passwd
查询解释:共7份信息,分别是:用户名:密码(X):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)
查看当前系统中有哪些用户组
语法:getent group
查询解释:共3份信息,分别是:组名称:组认证(显示为X):组ID
用户组管理(需以root用户执行)
-
用途:Linux中关于权限管控级别有2个级别:用户、用户组
-
介绍: Linux系统中可以:
配置多个用户。
配置多个用户组。
一个用户可以加入多个用户组中。
-
Linux中关于权限的管控级别有2个级别:
针对用户的权限控制。
针对用户组的权限控制。
-
创建用户组
语法:
groupadd 用户组名
-
删除用户组
语法:
groupdel 用户组名
用户管理(需以root用户执行)
-
创建用户
语法:
useradd [-g -d] 用户名
参数:
-g
指定用户的组,不指定则创建同名组并自动加入-d
指定用户HOME路径,不指定则默认在/home/用户名
-
删除用户
语法:
userdel [-r] 用户名
参数:
-r
删除用户的HOME目录,不使用-r
则删除用户时HOME目录保留
-
查看用户所属组
语法:
id [用户名]
参数:用户名(可选),不提供则查看自身
-
修改用户所属组
语法:
usermod -aG 用户组 用户名
chmod命令和chown命令
chmod命令:修改权限信息
用途:修改文件、文件夹的权限信息(change mode)
注意:只有文件、文件夹的所属用户或者root用户可以修改
语法:chmod [-R] 权限 文件或文件夹
参数:
- 选项:
-R
对文件夹内的全部内容应用同样的操作 -R
用法1:u=rwx,g=rx,o=x
,其中:u
表示user所属用户权限,g
表示group组权限,o
代表other其它用户权限-R
用法2:777
,权限的数字序号表示法,r记为4,w记为2,x记为1。计算方法:每组权限顺序为rwx,三位二进制表示,有权限标记为1,转换为十进制0-7
示例:
chmod u=rwx,g=rx,o=x hello.txt # 将文件权限修改为:rwxr-x--x
systemctl命令
用途:Linux系统很多软件(内置或第三方)均支持使用systemctl
命令控制:启动、停止、开机自启,能够被systemctl
管理的软件一般也称之为:服务
语法:systemctl start | stop | restart | status | enable | disable | reload 服务名
参数:
start
:启动stop
:关闭restart
:重启status
:查看状态enable
:开启开机自启disable
:关闭开机自启reload
:重新加载配置文件
系统内置的服务比如:
NetworkManager
:主网络服务network
:副网络服务firewalld
:防火墙服务sshd
:ssh服务
说明:除了内置的服务外,部分第三方软件安装后也可以使用systemctl
进行控制,如:
yum install -y ntp # ntp程序可以通过ntpd管理
示例操作:
# 启动 `sshd` 服务
sudo systemctl start sshd
# 停止 `sshd` 服务
sudo systemctl stop sshd
# 重启 `sshd` 服务
sudo systemctl restart sshd
# 查看 `sshd` 服务状态
sudo systemctl status sshd
# 启用 `sshd` 服务开机自启
sudo systemctl enable sshd
# 禁用 `sshd` 服务开机自启
sudo systemctl disable sshd
# 重新加载 `sshd` 服务配置文件
sudo systemctl reload sshd
【未完待续…】