Linux入门笔记
本文内容主要基于linuxjourney.com 部分网络内容补充
基本命令
pwd (Print Working Directory)
打印当前工作目录
cd (Change Directory)
需要了解下相对路径和绝对路径
- Absolute path: This is the path from the root directory. The root is the head honcho. The root directory is commonly shown as a slash. Every time your path starts with / it means you are starting from the root directory. For example, /home/pete/Desktop.
- Relative path: This is the path from where you are currently in filesystem. If I was in location /home/pete/Documents and wanted to get to a directory inside Documents called taxes, I don’t have to specify the whole path from root like /home/pete/Documents/taxes, I can just go to taxes/ instead.
ls (List Directories)
列出文件目录
扩展用法
ls -a 显示隐藏文件 |
touch
新建文件
touch myfile |
file
查询文件类型
file myfile.txt |
cat
读取文件内容
tips: cat 命令是 concatenate 的缩写
cat myfile.txt |
它不适合查看大文件,仅适用于短内容。
扩展:
显示非空的行编号
cat -b myfile.txt |
显示所有行编号
cat -n myfile.txt |
less
类似于cat命令 , less更适合查看大文件
less myfile.txt |
扩展命令
- q - Used to quit out of less and go back to your shell.
- Page up, Page down, Up and Down - Navigate using the arrow keys and page keys.
- g - Moves to beginning of the text file.
- G - Moves to the end of the text file.
- /search - You can search for specific text inside the text document. Prefacing the words you want to search with /
- h - If you need a little help about how to use less while you’re in less, use help.
history & clear
当你想查询之前使用过的命令时 ,history可以帮助你
终端内容很杂乱可以使用clear清屏
cp (Copy)
复制
cp 文件名 目录/文件名 |
多文件复制
- * the wildcard of wildcards, it’s used to represent all single characters or any string.
- ? used to represent one character
- [] used to represent any character within the brackets
cp *.jpg /home/pete/Pictures |
目录复制
cp -r Pumpkin/ /home/pete/Documents |
覆盖提示
cp -i mycoolfile /home/pete/Pictures |
mv (Move)
移动命令
mv 旧文件 新文件 |
多个bash
移动到不同目录
mv myfile /home/pete/Documents |
多文件移动
mv file1 file2 /home/pete/Documents |
重命名目录
mv 旧名字 新名字 |
与 cp 一样,如果您 移动的是 一个文件或目录,它将覆盖同一目录中的任何内容。因此,您可以在覆盖任何内容之前使用 -i 标志来提示您。
mv -i 目录1 目录2 |
文件备份
mv -b 目录1 目录2 |
mkdir (Make Directory)
创建目录
mkdir 目录1 |
递归创建子目录 -p
mkdir -p 目录1/子目录1/子目录2/子目录3...... |
rm (Remove)
tips:会直接删除文件 回收站不会留存
删除文件
rm file1 |
强制删除
rm -f file1 |
删除提示确认
rm -i file1 |
删除目录
rm -r 目录 |
扩展
rmdir 也可以删除目录
find
寻找文件
find /home -name puppies.jpg |
使用 find 您必须指定要搜索的目录,要搜索的内容,在这种情况下,我们尝试查找名称为 puppies.jpg 的文件。
您可以指定要查找的文件类型。
find /home -type d -name MyFolder |
help
Linux 有一些很棒的内置工具可以帮助您如何使用命令或检查命令可用的标志。一个工具,help,是一个内置的 bash 命令,它为其他 bash 命令(echo、logout、pwd 等)提供帮助。
help echo |
还可以
echo --help |
man
我希望其中一些程序有一个手册,这样我们就可以看到更多关于它们的信息。幸运的是,他们做到了!恰当命名的手册页,您可以使用 man 命令查看命令的手册。
man ls |
手册页是大多数 Linux 操作系统默认内置的手册。它们提供有关命令和系统其他方面的文档。
尝试一些命令以获取有关它们的更多信息。
whatis
简要说明
whatis cat |
alias
为常用的长命令换个名称
alias foobar='ls -la' |
此时在命令行输入foobar就会代替ls -la的效果
这会在下次重启时还原 如果想添加永久别名 需要在下面这个地方添加
~/.bashrc |
删除别名
unalias |
exit
退出终端
exit |
或注销
logout |
文本操作命令
grep
文本内容查询
grep 查询关键词 查询文件名 |
tips: 搜带空格的关键词需要加上双引号
例 grep “hello python” 123.txt
| 选项 | 说明 |
|---|---|
| -n | 显示匹配行号 |
| -i | 不区分大小写 |
| -v | 显示不包含匹配文本的所有行 |
模式查找
| 模式 | 说明 |
|---|---|
| ^a | 行首匹配 |
| a$ | 行尾匹配 |
echo
echo hello |
配合重定向使用
| 重定向 | 说明 |
|---|---|
| > | 覆盖 |
| >> | 追加内容 |
ls -lh >> a |
| pipe 管道
管道可以传递命令
ls -lha ~ | more |
远程管理常用命令
shutdown
关机 重启
shutdown 选项 时间 |
tips 不指定任何参数将会在1分钟后关闭电脑
重启
shutdown -r |
常用命令
# 重新启动操作系统,其中 now 表示现在 |
查看配置网卡信息
ifconfig
查询当前电脑网卡配置信息
tips:通过管道快速查找ip地址
ifconfig | grep inet |
127.0.0.1被称为 本地回环\环回地址 一般测试本机网卡是否正常
ping
检测目标ip连接
ping ip地址 |
远程管理ssh scp
ssh
远程登陆
ssh [-p port] user@remote |
user是在远程机器上的用户名,如果不指定的话默认为当前用户remote是远程机器的地址,可以是 IP/域名,或者是 后面会提到的别名port是 SSH Server 监听的端口,如果不指定,就为默认值 22
常见端口号
SSH 服务器 22 |
Windows连接同网段Ubuntu虚拟机
ssh -p 22 user@ip地址 |
如果被拒绝了你还需要在Ubuntu上安装openssh-server
sudo apt install openssh-server |
scp
远程拷贝文件
tips : scp 中 -P是大写字母 P
# 把本地当前目录下的 01.py 文件 复制到 远程 家目录下的 Desktop/01.py |
scp -P 22 源文件地址 user@remote:目标地址 |
复制文件夹
scp -P 22 -r 源文件地址 user@remote:目标地址 |
tips:FTP传输文件 端口填写21
https://filezilla-project.org/
ssh进阶
- 免密码登录
- 配置别名
免密码登录
步骤
配置公钥
执行 ssh-keygen 即可生成 SSH 钥匙,一路回车即可
上传公钥到服务器
执行 ssh-copy-id -p port user@remote,可以让远程服务器记住我们的公钥
配置别名
每次都输入 ssh -p port user@remote,时间久了会觉得很麻烦,特别是当 user, remote 和 port 都得输入,而且还不好记忆
而 配置别名 可以让我们进一步偷懒,譬如用:ssh mac 来替代上面这么一长串,那么就在 ~/.ssh/config 里面追加以下内容:
Host mac |
保存之后,即可用 ssh mac 实现远程登录了,scp 同样可以使用
用户权限相关命令
| 序号 | 权限 | 英文 | 缩写 | 数字代号 |
|---|---|---|---|---|
| 01 | 读 | read | r | 4 |
| 02 | 写 | write | w | 2 |
| 03 | 执行 | excute | x | 1 |
ls -l扩展
传送门:点我
ls -l 可以查看文件夹下文件的详细信息,从左到右依次是:
- 权限,第 1 个字符如果是 d 表示目录
- 硬链接数,通俗地讲,就是有多少种方式,可以访问到当前目录/文件
- 拥有者,家目录下 文件/目录 的拥有者通常都是当前用户
- 组,在 Linux 中,很多时候,会出现组名和用户名相同的情况,后续会讲
- 大小
- 时间
- 名称

chmod
修改权限的命令
chmod 可以修改 用户/组 对 文件/目录 的权限
chmod +/-rwx 文件名|目录名 |
sudo
su 是 substitute user 的缩写,表示 使用另一个用户的身份
得到超级用户权限
语法
sudo -i |
参数说明:
- -i 切换root
- -V 显示版本编号
- -h 会显示版本编号及指令的使用方式说明
- -l 显示出自己(执行 sudo 的使用者)的权限
- -v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码
- -k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)
- -b 将要执行的指令放在背景执行
- -p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称
- -u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)
- -s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell
- -H 将环境变数中的 HOME (家目录)指定为要变更身份的使用者家目录(如不加 -u 参数就是系统管理者 root )
- command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令
组管理
添加组
groupadd |
删除组
groupdel |
确认组信息
cat /etc/group |
修改文件/目录名所属组
chgrp -R 组名 文件/目录名 |
用户管理
新建用户
useradd -m -g 组名 用户名 |
-m 自动建立用户家目录
-g 指定用户组
设置密码
passwd 用户名 |
删除用户
userdel -r 用户名 |
查询用户信息
id
查询uid和gid
id 用户名 |
passwd 文件
/etc/passwd 文件存放的是用户的信息,由 6 个分号组成的 7 个信息,分别是
- 用户名
- 密码(x,表示加密的密码)
- UID(用户标识)
- GID(组标识)
- 用户全名或本地帐号
- 家目录
- 登录使用的 Shell,就是登录之后,使用的终端命令,ubuntu 默认是 dash
who
查看当前所有登录的用户列表
whoami
查看当前登录用户的账户名
修改用户组
usermod
- usermod 可以用来设置 用户 的 主组 / 附加组 和 登录 Shell,命令格式如下:
- 主组:通常在新建用户时指定,在 etc/passwd 的第 4 列 GID 对应的组
- 附加组:在 etc/group 中最后一列表示该组的用户列表,用于指定 用户的附加权限
提示:设置了用户的附加组之后,需要重新登录才能生效!
# 修改用户的主组(passwd 中的 GID) |
注意:默认使用 useradd 添加的用户是没有权限使用 sudo 以 root 身份执行命令的,可以使用以下命令,将用户添加到 sudo 附加组中
usermod -G sudo 用户名 |
which(重要)
/etc/passwd是用于保存用户信息的文件/usr/bin/passwd是用于修改用户密码的程序
- which 命令可以
查看执行命令所在位置,例如:
which ls |
bin 和 sbin
bin 存放普通的可执行文件, sbin 存放与系统管理相关的可执行文件.
- 在 Linux 中,绝大多数可执行文件都是保存在 /bin、/sbin、/usr/bin、/usr/sbin
- /bin(binary)是二进制执行文件目录,主要用于具体应用
- /sbin(system binary)是系统管理员专用的二进制代码存放目录,主要用于系统管理
- /usr/bin(user commands for applications)后期安装的一些软件
- /usr/sbin(super user commands for applications)超级用户的一些管理程序
tips:
cd 这个终端命令是内置在系统内核中的,没有独立的文件,因此用 which 无法找到 cd 命令的位置
切换用户
切换用户
su 用户名 |
切换用户,并且切换目录
su - 用户名 |
退出当前用户
exit |
切换root用户
su |
tips: 出现
su: 认证失败说明你的root用户当前没有密码 需要设置一个
sudo passwd root设置好密码就可以切换了

修改文件权限
序号 命令 作用 |
示例:
# 修改文件|目录的拥有者 |
- chmod 在设置权限时,可以简单地使用三个数字分别对应 拥有者 / 组 和 其他 用户的权限
# 直接修改文件|目录的 读|写|执行 权限,但是不能精确到 拥有者|组|其他 |

- 常见数字组合有(u表示用户/g表示组/o表示其他):
- 777 ===> u=rwx,g=rwx,o=rwx
- 755 ===> u=rwx,g=rx,o=rx
- 644 ===> u=rw,g=r,o=r
系统信息相关命令
- 本节内容主要是为了方便通过远程终端维护服务器时,查看服务器上当前
系统日期和时间/磁盘空间占用情况/程序执行情况 - 本小结学习的终端命令基本都是查询命令,通过这些命令对系统资源的使用情况有个了解
时间和日期
date 查看系统时间cal 全称 calendar 查看日历,-y 选项可以查看一年的日历
磁盘和目录空间
df
disk free 显示磁盘剩余空间
df -h |
du
disk usage 显示目录下的文件大小
du -h [目录名] |
进程信息
更多参考:
https://linuxjourney.com/lesson/monitor-processes-ps-command
ps
进程 , 就是当前正在执行的程序
ps |
仅显示当前用户通过终端启动的程序
- PID:进程 ID
- TTY:与进程关联的控制终端(我们稍后会详细介绍)
- STAT:进程状态码
- TIME:总CPU使用时间
- CMD:可执行文件/命令的名称
ps aux |
查看进程的详细状况
a显示所有正在运行的进程,包括其他用户正在运行的进程。
u显示有关进程的更多详细信息。
x列出了所有没有与之关联的 TTY 的进程(显示没有控制终端的进程)
您会注意到您现在看到了更多字段,无需全部记住它们,在稍后的高级流程课程中,我们将再次讨论其中的一些:
- USER:有效用户(我们正在使用其访问权限的用户)
- PID:进程 ID
- %CPU:使用的 CPU 时间除以进程运行的时间
- %MEM:进程的驻留集大小与机器上物理内存的比率
- VSZ:整个进程的虚拟内存使用情况
- RSS:驻留集大小,任务已使用的非交换物理内存
- TTY:与进程关联的控制终端
- STAT:进程状态码
- START:进程的开始时间
- TIME:总CPU使用时间
- COMMAND:可执行文件/命令的名称
top
动态显示运行中的进程并且排序
top |
单独动态显示某个进程
top -p pid |
退出top
ctrl + c |
kill
杀进程
kill pid |
强制杀进程
kill -9 pid |
本章总结:
通过ps au 或top 来找到高占用进程 , 在使用kill 杀掉
tips:不要随便 kill root用户启动的进程
其它常用命令补充
- 查找文件
- find
- 软链接
- ln
- 打包和压缩
- tar
- 软件安装
- apt-get
查找文件
find命令功能非常强大,通常用来在 特定的目录下 搜索 符合条件的文件
查找指定路径下扩展名是 .py 的文件,包括子目录
find /路径 -name “*.py” |
查找指定文件类型
find /路径 -type d -name 文件名 |
示例
- 搜索桌面目录下,文件名包含
1的文件
find -name "*1*" |
- 搜索桌面目录下,所有以
.txt为扩展名的文件
find -name "*.txt" |
- 搜索桌面目录下,以数字
1开头的文件
find -name "1*" |
软链接
建立文件的软链接,用通俗的方式讲类似于 Windows 下的快捷方式
ln -s 源文件目录 软链接的名字 |
注意:
没有
-s选项建立的是一个 硬链接文件- 两个文件占用相同大小的硬盘空间,工作中几乎不会建立文件的硬链接
源文件要使用绝对路径,不能使用相对路径,这样可以方便移动链接文件后,仍然能够正常使用
演练目标
- 将桌面目录下的
01.py移动到demo/a/b/c目录下 - 在桌面目录下新建
01.py的 软链接FirstPython
分别使用 相对路径 和 绝对路径 建立FirstPython的软链接 - 将
FirstPython移动到demo目录下,对比使用 相对路径 和 绝对路径 的区别
硬链接简介(仅作了解)
- 在使用
ln创建链接时,如果没有-s选项,会创建一个 硬链接,而不是软链接
演练
- 1.在
~/Desktop/demo目录下建立~/Desktop/demo/b/c/01.py的硬链接01_hard - 2.使用
ls -l查看文件的硬链接数(硬链接——有多少种方式可以访问文件或者目录) - 3.删除
~/Desktop/demo/b/c/01.py,并且使用tree来确认demo目录下的三个链接文件

关于硬链接的理解 , 可以理解为镜像复制了一份, 改动其内容 另外那个也会被改动
打包压缩
tar
# 打包文件 |
tar选项说明
| 选项 | 含义 |
|---|---|
| c | 生成档案文件,创建打包文件 |
| x | 解开档案文件 |
| v | 列出归档解档的详细过程,显示进度 |
| f | 指定档案文件名称,f 后面一定是 .tar 文件,所以必须放选项最后 |
tips: 注意:
f选项必须放在最后,其他选项顺序可以随意
打包解包演练
- 删除桌面下的所有内容
- 在桌面下新建三个空白文件
01.py、02.py、03.py - 将这三个文件打一个
py.tar的包 - 新建
tar目录,并且将py.tar移动到tar目录下 - 解包
py.tar
总结:tar直接解压会直接解压在当前你所在的目录
假如你在桌面下(~/Desktop),你想解压桌面上tar文件夹下的py.tar
tar -xvf tar/py.tar |
他一样会解压到桌面(~/Desktop) , 而不是解压到(~/Desktop/tar)
压缩和解压缩
gzip
tar与gzip命令结合可以使用实现文件 打包和压缩tar只负责打包文件,但不压缩- 用
gzip压缩tar打包后的文件,其扩展名一般用xxx.tar.gz
在
Linux中,最常见的压缩文件格式就是xxx.tar.gz
在
tar命令中有一个选项 -z 可以调用gzip,从而可以方便的实现压缩和解压缩的功能命令格式如下:
# 压缩文件 |
| 选项 | 含义 |
|---|---|
| -C | 解压缩到指定目录,注意:要解压缩的目录必须存在 |
指定目录解压缩
tar -zxvf 压缩包地址 -C 指定目录地址 |
bzip2
tar与bzip2命令结合可以使用实现文件 打包和压缩(用法和gzip一样)tar只负责打包文件,但不压缩,- 用
bzip2压缩tar打包后的文件,其扩展名一般用xxx.tar.bz2
在
tar命令中有一个选项 -j 可以调用bzip2,从而可以方便的实现压缩和解压缩的功能命令格式如下:
# 压缩文件 |
软件安装
apt
- apt 是
Advanced Packaging Tool,是 Linux 下的一款安装包管理工具 - 可以在终端中方便的 安装/卸载/更新软件包
# 1. 安装软件 |
安装演练
# 一个小火车提示 |
4.2 配置软件源
- 如果希望在
ubuntu中安装软件,更加快速,可以通过设置镜像源,选择一个访问网速更快的服务器,来提供软件下载/安装服务 - 提示:更换服务器之后,需要一个相对比较长时间的更新过程,需要耐心等待。更新完成后,再安装软件都会从新设置的服务器下载软件了
所谓镜像源,就是所有服务器的内容是相同的(镜像),但是根据所在位置不同,国内服务器通常速度会更快一些!


新版本在左下角菜单里>>软件和更新
.jpg)
.jpg)


