白乐天

道阻且长,行则将至。

Linux命令

基础命令

命令基础格式
command [-options] [parameter]

  • command : 命令本身。
  • [] : 可选,非必填。
  • options : 命令的一些选项。
  • parameter : 命令的参数。

ls

ls [-a -l -h] [Linux路径]

  • [-a -l -h] 是可选的选项。
  • Linux路径是此命令的可选参数。
  • -a表示all的意思,即列出全部文件(包含隐藏的文件/文件夹),以.开头的文件夹就是Linux系统中隐藏的文件/文件夹。
  • -l表示以列表(竖向排列)的形式展示内容,并展示更多信息。
  • -h表示以易于阅读的形式,列出文件大小,需要和-l搭配使用。

cd

cd来自英文:Change Directory

cd [Linux路径]

  • cd命令无需选项,只有参数,切换目录。
  • cd命令直接执行,不写参数,表示回到用户的HOME目录/系统的根目录。

pwd

查看当前所在的工作目录(Print Work Directory)。

pwd命令,无选项,无参数,直接输入pwd即可。

特殊路径符

.:表示当前目录
..:表示上一级目录
~:表示HOME目录
/:根目录

文件操作命令

mkdir

可以创建新的目录文件夹
mkdir来自英文:Make Directory
mkdir [-p] Linux路径

  • 参数必填,表示Linux路径,就是要创建的文件夹的路径。
  • -p选项可选,表示自动创建不存在的父目录,适用于创建连续多层级的目录,如mkdir -p dir1/dir2/dir3

touch

创建文件
touch Linux路径

  • touch命令无选项,参数必填

cat

查看文件的内容
cat Linux路径

  • cat同样没有选项,只有必填参数

more

也可以查看文件内容,不同的是:

  • cat直接将内容全部显示出来
  • more支持翻页,如果文件内容过多,可以一页一页显示

more Linux路径

  • 没有选项,只有必填参数
  • 在查看的过程中,通过空格翻页
  • 通过q退出查看

cp

复制文件/文件夹
cp [-r] 源文件 目标文件

  • -r:选项,可选,用于复制文件夹使用
  • 源文件:Linux路径,表示被复制的文件或文件夹
  • 目标文件:Linux路径,表示要复制去的地方

mv

用于移动文件/文件夹
mv 源文件 目标文件

  • 源文件:Linux路径,表示被移动的文件或文件夹
  • 目标文件:Linux路径,表示要移动去的地方,如果目标不存在,则进行改名,确保目标存在

rm

删除文件、文件夹
rm [-r -f] 参数1 参数2 ... 参数n

  • -r:选项用于删除文件夹
  • -f表示force,强制删除(不会弹出提示确认信息)
    普通用户删除内容不会弹出提示,只有root管理员用户删除内容会有提示
    所以一般普通用户用不到-f选项
  • 参数1、参数2…参数n:表示要删除的文件或文件夹路径,按照空格隔开

rm命令支持通配符*,用来做模糊匹配

  • 符号*表示通配符,即匹配任意内容(包含空)
  • test*,表示匹配任何以test开头的内容
  • *test,表示匹配任何以test结尾的内容
  • *test*,表示匹配任何包含test的内容

以下命令慎用

1
2
3
rm -f *
rm -rf *
rm -rf /*

which

搜索系统的环境变量 $PATH 中列出的目录,以找到对应的可执行文件。
which xxx

  • which 命令只能查找在 $PATH 环境变量中列出的目录里的可执行文件。

grep

从文件中通过关键字过滤文件的行
grep [-n] "关键字" 文件路径

  • -n:表示在结果中显示匹配的行的行号
  • "关键字":必填,表示过滤的关键字。
  • 参数文件路径:必填,表示要过滤的文件的文件路径,可作为内容输入端口。

|

管道符,将管道符左边命令的结果作为右边命令的输入

echo

在命令行内输出指定内容
echo "输出的内容"

  • 无需选项,只有一个参数,表示要输出的内容

反引号 `

被`包围的内容,会被当做命令执行,而非普通字符

重定向符>>>

>将左侧命令的结果,覆盖 写入到符号右侧指定的的文件中
>>将左侧命令的结果,追加 写入到符号右侧指定的文件中

tail

查看文件尾部内容,跟踪文件的最新更改
tail [-f -num] Linux路径

  • Linux路径:表示被跟踪的文件路径
  • -f:表示持续跟踪
  • -num:表示查看尾部多少行,不填默认10行

tree

以树状图的形式列出目录的内容。

whoami

显示当前用户名的命令。

file

查看一个文件的类型
file filename

find

find [路径] [选项] [参数]

选项

  • -name

    根据文件名查找

    find path -name "name"

  • -size

    根据文件大小查找

    find path -size [+|-] #size

    size单位:c(字节)k()千字节M(兆字节)G

    find /path/to/search -size +100M

curl

curl 是常用的命令行工具,用来请求 Web 服务器。

  • 无选项时

    1
    curl https://www.example.com

    www.example.com发出 GET 请求,服务器返回的内容会在命令行输出。

当使用curl访问github时出现Couldn't contect to server问题时,可以在/etc/hosts将github的ip改为国外的ip,然后进行访问。

uname

用于显示系统相关信息,比如主机名、内核版本号、硬件架构等。

1
2
3
4
5
6
7
8
9
10
uname --help
usage: uname [-asnrvm]

Print system information.
-s System name
-n Network (domain) name
-r Kernel Release number
-v Kernel Version
-m Machine (hardware) name
-a All of the above

关机命令

1
2
3
shutdown -h now # 关闭系统
reboot # 重启
logout # 注销

环境变量

执行env可查看当前系统中记录的环境变量
环境变量是一种KeyValue型结构

PATH

PATH记录了系统执行任何命令的搜索路径(路径之间以:隔开)
执行任何命令就会从上述路径中搜索要执行的本体

$符号

在Linux系统中,$符号用于取“变量”的值
比如echo $PATH,取得PATH这个环境变量的值,并通过echo语句输出出来。
或者echo ${PATH}ABC,通过{}来标注取的变量是谁

设置环境变量

临时设置环境变量

在当前 shell 会话中有效,关闭 shell 后失效。

1
export PATH=$PATH:value

可以通过echo $PATH查看

永久设置环境变量

需要编辑配置文件,根据作用范围选择以下文件:

  • 全局设置: 修改 /etc/profile/etc/environment(所有用户)。

  • 用户级设置: 修改 ~/.bashrc~/.bash_profile(仅当前用户)。

1
vim ~/.bashrc

添加如下内容

1
export PATH=$PATH:value

可以通过命令直接把环境变量添加到.bashrc文件中

1
2
echo 'export PATH=$PATH:value' >> ~/.bashrc

保存后退出,执行如下命名使配置文件生效

1
source ~/.bashrc

网络

IP地址

每台联网的电脑都会有一个地址,用于和其他计算机进行通讯
可以通过:ifconfig命令查看本机的ip

特殊IP地址

  • 127.0.0.1指代本机

  • 0.0.0.0

    特殊IP

    • 可以用于指代本机
    • 可以在端口绑定中来确定绑定关系
    • 在一些IP地址限制中,表示所有IP的意思,表示允许任意IP访问

主机名

每台电脑除了IP地址外,还可以有一个名字,称为主机名
Windows系统和Linux都可以给系统设置主机名

  • Windows查看系统设备名称
  • Linux可以用命令hostname

在Linux中修改主机名

可以使用命令:hostnamectl set-hostname "主机名"
重新登陆即可看到更改

域名解析

先查看本机的记录(通过主机名找到对应计算机的IP地址)

  • Windows:C:\Windows\System32\drivers\etc\hosts
  • Linux: /etc/hosts

再联网去DNS服务器询问

网络传输

使用ping命令检查服务器是否可联通

1
ping [-c num] ip或主机名
  • -c,检查的次数,不使用-c选项,将无限次持续检查
  • ip或主机名,被检查的服务器的IP地址或主机名地址

使用wget命令下载文件

wget是一个非交互式的文件下载器,可以在命令行内下载网络文件
wget [-b] url

  • -b,可选,后台下载,会将日志写入到当前工作目录的wget-log文件
  • url ,下载链接

使用curl命令发起网络请求

发送http网络请求,可用于下载文件、获取信息等
curl [-O] url

  • -O,用于下载文件,当url是下载链接时,可以使用此选项保存文件
  • url,要发起请求的网络地址

端口

端口是设备与外界通讯交流的出入口。

  • 物理端口:又可以称之为接口,是可见端口,如USB接口,HDMI端口等
  • 虚拟端口:指计算机内部的端口,不可见,是用来操作系统和外部进行交互使用的
    • 通过IP只能锁定计算机,但是无法锁定具体的程序。
    • 通过端口可以锁定计算机上具体的应用程序,确保程序之间进行沟通。

IP地址相当于小区地址,而端口相当于门牌号了。

Linux系统可以支持65535个端口,这么多端口可以分为3类进行使用:

  • 公认端口:1~1023,通常用于一些系统内置或知名程序的预留使用,如SSH服务的22端口,HTTPS服务的443端口,非特殊需要,不能占用这个范围的端口
  • 注册端口:1024~49151,通常可以随意使用,用于松散的绑定一些程序\服务
  • 动态端口:49152~65535,通常不会固定绑定程序,而是当时程序对外网进行网络链接时,临时使用

查看端口占用情况

可以使用nmap命令
nmap 被查看的IP地址
netstat
可以通过netstat命令,查看指定端口的占用情况
netstat -anp|grep 端口号
常用选项

  • -a: 列出所有端口
  • -l: 只显示监听端口
  • -t: 显示 TCP 传输协议的连线状况
  • -u: 显示 UDP 传输协议的连线状况

进程管理

程序运行在操作系统中,是被操作系统所管理的。
每一个程序在运行的时候,便被操作系统注册为系统中的一个进程
并为每一个进程都分配一个独有的:进程ID(进程号)。

查看进程ps

通过PS命令查看Linux系统中的进程信息
ps [options]

  • -A,显示所有终端进程
  • -e,显示出全部的进程
  • -f,以完全格式化的形式展示信息(展示全部信息)

ps -ef 列出全部进程的全部信息

1
2
3
4
5
6
7
8
UID     :进程所属的用户ID
PID :进程的进程号ID
PPID :进程的父ID(启动此进程的其他进程)
C :此进程的CPU占用率(百分比)
STIME :进程的启动时间
TTY :启动此进程的终端序号,如显示?,表示非终端启动
TIME :进程占用CPU时间
CMD :进程对应的名称或启动路径或启动命令

关闭进程kill

通过kill命令关闭进程。
kill [-9] 进程ID

  • -9,表示强制关闭进程。不使用此选项会向进程发送信号要求其关闭,但是否关闭看进程自身的处理机制。

pidof

查找正在运行的特定程序的进程 ID(PID)。
pidof [options] programName

压缩和解压

压缩格式

  • zip格式:Linux、Windows、MacOS常用
  • 7zip:Windows常用
  • rar:Windows常用
  • tar:Linux、MacOS常用
  • gzip:Linux、MacOS常用

tar命令

有两种常见压缩格式,后缀名分别是:

  • .tar,称之为tarball,归档文件,简单的将文件组装到一个.tar的文件内,仅仅是简单的封装。
  • .gz,常见为.tar.gz,gzip格式压缩文件,即使用gzip压缩算法将文件压缩到一个文件内,极大减少压缩后的体积

对于这两种格式,可以用tar命令进行压缩和解压操作:
tar [-c -v -x -f -z -C] 参数1 参数2 ... 参数N

  • -c,创建压缩文件,用于压缩模式
  • -v显示压缩、解压过程,用于查看进度
  • -x,解压模式
  • -f,要创建的文件,或解压的文件,-f选项必须在所有选项中位置处于最后一个
  • -z,gzip模式,不使用就是tarball格式
  • -C,选择解压的目的地,用于解压模式

tar命令压缩

tar常用压缩组合有两种:

  • tar -cvf test.tar 1.txt 2.txt 3.txt
    将1.txt 2.txt 3.txt压缩到test.tar文件内
  • tar -zcvf test.tar.gz 1.txt 2.txt 3.txt
    将1.txt 2.txt 3.txt压缩到test.tar.gz文件内,使用gzip模式

要注意的是:

  • -z选项要使用的话,一般处于选项第一个
  • -f选项,必须在选项位最后一个

tar命令解压

tar常用解压组合有:

  • tar -xvf test.tar
    解压test.tar,将文件解压至当前目录
  • tar -xvf test.tar -C /home/itheima
    解压test.tar,解压至/home/itheima
  • tar -zxvf test.tar.gz -C /home/itheima
    以gzip模式解压test.tar.gz,将文件解压至指定目录(/home/itheima)

注意:

  • -f选项必须在最后一位
  • -z选项,建议在开头位置
  • -C单独使用,和解压的其他参数分开

zip命令

zip压缩

1
zip [-r] 参数1 参数2 ... 参数N
  • -r,被压缩的文件包含文件夹的时候,需要使用-r选项

unzip解压

1
unzip 参数 [-d]
  • -d,指定要解压去的位置,同tar的-C选项
  • 参数,被解压的zip压缩包文件

dpkg命令

dpkg --help
dpkg --version
管理deb包,可以对其安装、卸载、deb打包、deb解压等操作

1
2
3
4
5
6
7
8
9
10
-i: 安装软件包
-r: 删除软件包
-P: 删除软件包的同时删除其配置文件
-L: 显示与软件包关联的文件
-l: 显示已安装软件包列表
-s: 查看软件包(已安装)的详细信息
-S: 查询一个文件属于哪个软件包
--unpack: 解开软件包
-c: 显示软件包内文件列表
--configure: 配置软件包

7z命令

解压

1
7z x [-r -o]
  • x,代表解压文件,按原始目录解压
  • -r,表示递归解压所有的子文件夹
  • -o,指定解压到的目录,-o后面没有空格直接跟目录

系统目录

/etc

  • /etc/hostname

    这个文件里存放着主机名,可以进行修改

  • /etc/hosts

    本地主机名解析文件,用于将 IP 地址映射到主机名,在 DNS(域名系统)查询之前进行解析。

快捷键

Ctrl+Alt+T

打开终端