以Ubuntu为例操作命令的笔记。
其实Linux不同发行版的基础命令区别不大。
Linux命令基础格式
命令通用格式:command [-options] [parameter]
语法中的[]
,表示可选的意思
command
:命令本身-options
:[可选,非必填]命令的一些选项,可以通过选项控制命令的行为细节parameter
:[可选,非必填]命令的参数,多数用于命令的指向目标等
tips
:Linux命令,它们的本体是一个个二进制可执行程序
Linux命令行快捷键
- 1、
Ctrl + c
强制停止(某些命令执行的中断、命令输错的重新输入) - 2、
Ctrl + d
退出登出(退出登出某些特定程序的专属页面)ps:不能用于退出vi
或vim
- 3、
history
查看历史命令 - 4、
!
命令前缀,自动匹配上一个命令 - 5、
Ctrl + r
搜索历史命令 - 6、
Ctrl + a|e
光标移动到命令开始或结束 - 7、
Ctrl + ←|→
左右跳单词 - 8、
Ctrl + l
或clear
命令清屏
包管理工具安装软件
安装软件方式:
1、下载安装包自行安装
Windows
:exe
、msi
等
Mac
:dmg
、pkg
等
CentOS
:rpm
Ubuntu
:deb
2、系统的应用商店内安装
Windows
:Microsoft Store
商店
Mac
:AppStore
商店
CentOS
:yum
Ubuntu
:apt
CentOS
和Ubuntu
包管理工具在线下载(用于自动化安装配置Linux
软件,并可以自行解决依赖问题)包管理工具安装软件需要root
权限,可以su
切换到root
用户或使用sudo
提权:
- 1、
CentOS
中,使用yum
命令联网管理软件下载- 语法:
yum [-y] [install | remove | search] 软件名称
- 参数:
- 选项:
-y
,自行确认,无需手动确认安装或卸载过程install
:安装remove
:卸载search
:搜索- 2、
Ubuntu
中,使用apt
命令联网管理软件下载- 语法:
apt [-y] [install | remove | search] 软件名称
- 参数:
- 选项:
-y
,自行确认,无需手动确认安装或卸载过程install
:安装remove
:卸载search
:搜索
路径
1、相对路径和绝对路径
- 绝对路径:以根节点做起点,描述路径的方式,路径以
/
开头 - 相对路径:以当前目录做起点,描述路径的方式,路径不需以
/
开头
2、特殊路径符
.
表示当前目录,比如cd .
或cd ./Deaktop
..
表示上一级目录,比如cd ..
或cd ../..
~
表示用户的HOME目录,比如cd ~
或cd ~/Deaktop
tips
:cd ~
相当于回家~
环境变量
用途:在Bash shell中设置环境变量意味着你在Bash会话中定义了变量,这些变量可以被运行在该会话中的程序和脚本访问。环境变量是一种向不同程序传递配置信息的机制。设置环境变量通常通过在启动时执行的脚本文件来完成,这样设置的变量将会应用到用户的所有会话中。
案例:当安装Java JDK时,需要设置 JAVA_HOME
环境变量来指定JDK的安装路径,以便于Java程序知道从哪里找到JDK。同样,还需要将JDK的 bin
目录添加到 PATH
环境变量中,这样就可以在任何目录下执行 java
命令了。
描述:系统级/etc/profile
和用户的 ~/.bashrc
文件都是在Bash shell中设置环境变量的脚本文件
1、系统环境变量**/etc/profile
**:系统级别的配置文件,对所有用户生效。当任何用户登录时,系统会读取这个文件,并执行里面的命令。这是系统级别的初始化文件,对所有使用Bash的用户生效。它在登录时执行。
2、用户环境变量**~/.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的权限细节:
rwx
具体含义:
r
代表读权限w
代表写权限x
表示执行权限
针对文件、文件夹的不同,
rwx
的含义有细微差别
r
- 针对文件可以查看文件内容
- 针对文件夹,可以查看文件夹内容,如
ls
命令w
- 针对文件表示可以修改此文件
- 针对文件夹,可以在文件夹内,创建、删除、改名等操作
x
- 针对文件表示可以将文件作为程序执行
- 针对文件夹,表示可以更改工作目录到此文件夹,即
cd
进入
|
管道符:将管道符左边命令的结果作为右边命令的输入
用途:将管道符左边命令的结果作为右边命令的输入
source
命令:执行指定的文件里的命令
用途:source
是一个shell内置命令,用于在当前shell环境中执行指定的文件里的命令。运行 source
命令时,shell会读取指定的文件,然后执行文件中的所有命令,就好像它们是在命令行中直接输入的一样。
描述:source
命令执行的脚本不会启动新的shell,它在当前shell中运行,这意味着所有的变量和函数将在当前shell中定义,并且对当前会话立即生效
tar
命令:解压 tar 压缩文件
用途:解压 tar 压缩文件,解压该压缩文件到当前目录中,tar 是一个用于归档文件的命令行工具,通常与 gzip
或者其他压缩算法结合使用来压缩文件或文件夹
参数:
-x
:表示解压文件。-z
:表示使用gzip
解压。-v
:表示显示详细的解压过程,即 verbose 模式。-f
:表示后面跟着要解压的文件名。
案例:
tar -xzvf 文件名.tar.gz
ls
命令:查看指定文件夹(目录)的内容
用途:查看指定文件夹(目录)的内容。不给参数默认当前工作目录的内容
参数:
- -a:展示出隐藏内容
- -l:以列表形式展示内容,显示更多细节
- -h:和-l搭配使用,以更加人性化方式显示文件的大小单位
cd
命令:更改当前工作目录
用途:更改当前工作目录(change directory)
语法:cd [Linux路径]
参数:
- cd命令无需选项,只有参数,表示要切换到哪个目录下
- cd命令直接执行,不写参数,表示回到用户的HOME目录
pwd
命令:查看当前所在工作目录路径
用途:查看当前所在工作目录路径(print work directory)
语法:pwd
参数:
pwd
命令,无选项,无参数,直接输入pwd
即可
mkdir
命令:创建新目录(文件夹)
用途:创建新目录(文件夹)(make directory)
语法:mkdir [-p] Linux路径
参数:
- 参数必填,表示Linux路径,即要创建的文件夹的路径,相对路径或绝对路径均可
- -p选项可选,表示自动创建不存在的父目录,适用于创建连续多层级的目录
tips:创建文件夹需要修改权限,请确保操作均在HOME目录内,不要在HOME外操作,涉及权限问题,HOME外无法成功
touch
命令:创建文件
用途:创建文件
语法:touch Linux路径
参数:
- touch命令无选项,参数必填,表示要创建的文件路径,相对、绝对、特殊路径符均可以使用
cat
命令:查看文件内容,将内容全部显示
用途:查看文件内容,将内容全部显示
语法:cat Linux路径
参数:
- cat没有选项,只有必填参数,参数表示:被查看的文件路径,相对、绝对、特殊路径符均可以使用
more
命令:更加灵活地查看文件内容,支持内容翻页显示
用途:比cat
命令更加灵活地查看文件内容,支持内容翻页显示
翻页操作:使用空格
翻页,使用q
退出查看
语法:more Linux路径
参数:
- 没有选项,只有必填参数,参数表示:被查看的文件路径,相对、绝对、特殊路径符均可以使用
cp
命令:复制文件\文件夹
用途:复制文件\文件夹(copy)
语法:cp [-r] 参数 参数2
- -r选项,可选,用于复制文件夹使用,表示递归复制
- 参数1,Linux路径,表示被复制的文件或者文件夹
- 参数2,Linux路径,表示要复制去的地方
mv
命令:移动文件、文件夹或者文件改名
用途:用于移动文件、文件夹或者文件改名(move)
语法:mv 参数1 参数2
- 参数1,Linux路径,表示被移动的文件或文件夹
- 参数2,Linux路径,表示要移动去的地方,如果目标不存在,则进行改名,确保目标存在
rm
命令:删除文件或者文件夹
用途:用于删除文件或者文件夹(remove)
语法:rm [-r -f] 参数1 参数2 ...... 参数N
参数:
- -r选项,可选,文件夹删除
- -f选项,可选,用于强制删除(普通用户删除不提示,超级管理员删除如果不使用-f会提示删除确认,-f一般用于root用户)
- 参数,表示被删除的文件或文件夹路径,支持多个,空格隔开
- 参数支持通配符*,用于做模糊匹配
tips
:不要在root管理员用户下执行rm -rf /
或 rm -rf /*
which
命令:查找命令的程序文件位置
用途:查找命令的程序文件位置
语法:which 要查找的命令
参数:
- 无需选项,只需要参数表示查找哪个命令
案例:
which java
find
命令:查找指定(文件名或大小)的文件
用途:用于查找指定的文件
1、按文件名查找文件
语法:find 起始路径 -name "被查找文件名"
参数:
- 被查找文件名支持使用通配符
*
做模糊匹配,通配符*
表示匹配任意内容(包括为空)
2、按文件大小查找文件
语法:find 起始路径 -size +|-n[kMG]
参数:
- +、-表示大于和小于
- n表示文件大小数字
- kMG表示文件大小的单位,k(小写字母)表示kb,M表示MB,G表示GB
案例:
- 查找小于10KB的文件:
find / -size -10k
- 查找大于100MB的文件:
find / -size +100M
- 查找大于1GB的文件:
find / -size +1G
grep
命令:从文件或管道符输入中通过关键字过滤匹配行
用途:从文件或管道符输入中通过关键字过滤匹配行
语法:grep [-n] 关键字 文件路径
参数:
- 选项-n,可选,表示在结果中显示匹配的行的行号
- 参数,关键字,必填,表示过滤的关键字,建议使用
""
将关键字包围起来 - 参数,文件路径,必填,表示要过滤的文件路径,可作为管道符的输入,此时不写该参数
wc
命令:统计文件或管道符输入的行数、单词数量、字节数、字符数等
用途:统计文件或管道符输入的行数、单词数量、字节数、字符数等
语法:wc [-c -m -l -w] 文件路径
参数:
- 不带选项默认统计:行数、单词数、字节数
- -c字节数、-m字符数、-l行数、-w单词数
- 参数,被统计的文件路径,可作为管道符的输入,此时不写该参数
echo
命令:在命令行内输出指定内容
用途:在命令行内输出指定内容
语法:echo 输出的内容
参数:
- 无需选项,只有一个参数,表示要输出的内容,复杂的内容可以用
""
包围起来(带有空格或\
等特殊符号建议使用双引号包围)
反引号(飘号)`:用反引号(飘号)包围起来的内容会被当做命令执行
用途:反引号(飘号)包围起来的内容会被当做命令执行,而非普通字符
>
和>>
重定向符
用途:将左侧命令的结果写入到符号右侧指定的文件中
1、覆写>
用途:将左侧命令的结果,覆盖写入到符号右侧指定的文件中,清空旧内容
2、追加>>
用途:将左侧命令的结果,追加写入到符号右侧指定的文件中
案例:
echo "Hello Linux" > "test.txt" # 覆盖旧内容
echo "Hello Linux" >> "test.txt" # 在旧内容之下继续追加
tail
命令
用途:查看文件尾部内容,跟踪文件的最新修改
语法:tail [-f -num] Linux路径
参数:
- 参数,Linux路径,表示被跟踪的文件路径
- 选项,-f,表示持续跟踪
- 选项,-num,表示查看尾部多少行,不填默认10行
vi
和vim
命令行文本编辑器
用途:用于在命令行下对文本文件进行编辑。如果文件路径表示的文件不存在,那么此命令会用于编辑新文件;如果文件路径表示的文件存在,那么此命令用于编辑已有文件
语法:vi 文件路径
或vim 文件路径
介绍:vim
是vi
的加强版本,兼容vi
的所有的指令,不仅能编辑文本,而且还具有shell程序编辑的功能,可以不同颜色的字体来辨别语法的正确性,极大方便了程序的设计和编辑性
vi\vim编辑器的三种工作模式:
进入流程:
进入vi编辑器会进入命令模式;
通过命令模式输入键盘指令,可以进入输入模式;
输入模式需要退回到命令模式,然后通过命令可以进入底线命令模式。
-
1、命令模式(Command mode):命令模式下,所敲的按键编辑器都理解为命令,以命令驱动执行不同的功能。此模式下,不能自由进行文本编辑。
命令模式快捷键:
-
2、输入模式(Insert mode):也就是所谓的编辑模式、插入模式、此模式下,可以对文件内容进行自由编辑。进入编辑模式后,任何快捷键都没有作用,就是正常的输入文本模式,唯一需要记住的是通过
ESC
键可以退回命令模式 -
3、底线命令模式(Last line mode):以
:
开始,通常用于文件的保存、退出。
底线命令模式快捷键:
## root
用户(超级管理员)
描述:root
用户拥有最大的操作系统权限,而普通用户在许多地方的权限是受限的。
- 普通用户的权限,一般在其
HOME
目录内是不受限的,一旦出了HOME
目录,大多数地方,普通用户仅有只读和执行权限,无修改权限
su
命令
用途:用于账户切换的系统命令(Switch User)
语法:su [-] [用户名]
参数:
-
符号是可选的,表示是否在切换用户后加载环境变量,建议带上- 参数:用户名,表示要切换的用户,用户名也是可以省略的,省略表示切换到
root
用户 - 切换用户后,可以通过
exit
命令退回上一个用户,也可以使用快捷键:Ctrl + d
tips
:使用普通用户切换到其他用户需要输入密码,如切换到root
用户;使用root
用户切换到其他用户,可以无需密码直接切换。
sudo
命令
用途:为了避免长期使用root
用户可以带来的系统损坏的风险,使用sudo
命令可以为普通的用户在执行不在权限范围的命令时,临时以root
身份执行该命令
语法:sudo 其他命令
tips
:在执行其他命令之前,带上sudo
即可为这一条命令临时赋予root
授权,但不是所有的用户都有权力使用sudo
,需要为要使用sudo
命令的普通用户配置sudo认证
配置sudo
认证
- 1、切换到
root
用户,执行visudo
命令或者vim /etc/sudoers
,会自动通过vi编辑器打开:/etc/sudoers
- 2、在文件最后追加:
用户名 ALL=(ALL) NOPASSWD: ALL
,保存编辑结果 - 3、切换回普通用户执行的命令均可添加
sudo
前缀以root
权限执行
用户、用户组
用途:Linux中关于权限管控级别有2个级别:用户、用户组
介绍:
Linux系统中可以:
- 配置多个用户;
- 配置多个用户组;
- 一个用户可以加入多个用户组中。
Linux中关于权限的管控级别有2个级别:
- 针对用户的权限控制;
- 针对用户组的权限控制。
比如:针对某个文件,可以控制用户的权限也可以控制用户组的权限
查看当前系统中有哪些用户
语法:getent passwd
查询解释:共7份信息,分别是:用户名:密码(X):用户ID:组ID:描述信息(无用):HOME目录:执行终端(默认bash)
查看当前系统中有哪些用户组
语法:getent group
查询解释:共3份信息,分别是:组名称:组认证(显示为X):组ID
用户组管理
以下命令需以root
用户执行
创建用户组
语法:groupadd 用户组名
删除用户组
语法:groupdel 用户组名
用户管理
以下命令需以root
用户执行
创建用户
语法:useradd [-g -d] 用户名
参数:
- 选项:
-g
指定用户的组,不指定-g
,会创建同名组并且自动加入,指定-g
需要组已经存在,如已存在同名组,必须使用-g
- 选项:
-d
指定用户HOME
路径,不指定,HOME
目录默认在:/home/用户名
,指定就可以使HOME
目录和用户名不一致
删除用户
语法:userdel [-r] 用户名
参数:
- 选项:
-r
,删除用户的HOME
目录,不使用-r
,删除用户时,HOME
目录保留,需自行删除
查看用户所属组
语法:id [用户名]
参数:
- 参数:用户名,被查看的用户,如果不提供则查看自身
修改用户所属组
语法:usermod -aG 用户组 用户名
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
记为1,w
记为2,x
记为1。计算方法:每组权限顺序为rwx
,三位二进制表示,有权限标记为1,转换为十进制0-7
示例:
chmod u=rwx,g=rx,o=x hello.txt # 将文件权限修改为:rwxr-x--x
其中:u
表示user
所属用户权限,g
表示group
组权限,o
代表other
其它用户权限
chown
命令:修改文件、文件夹的所属用户和用户组
用途:修改文件、文件夹的所属用户和用户组(change owner)
注意:普通用户无法修改所属为其他用户或组,所以此命令只能由root
用户执行
语法:chown [-R] [用户][:][用户组] 文件或文件夹
参数:
- 选项,
-R
,同chmod
,对文件夹内全部内容应用相同的规则 - 选项,用户,修改该文件、文件夹所属为该用户(不写则不修改)
- 选项,用户组,修改该文件、文件夹所属为该用户组(不写则不修改)
- 选项,
:
用于分隔用户和用户组
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
【未完待续…】