Linux常用命令
基础命令
ls list 查看当前文件夹下的内容
-a 显示指定目录下所有子目录与文件,包括隐藏文件
-l 以列表方式显示文件的详细信息
-h 配合 -l 以人性化的方式显示文件大小pwd print wrok directory 查看当前所在文件夹
cd [目录名] change directory 切换文件夹
cd 切换到当前用户的主目录(/home/用户目录)
cd ~ 切换到当前用户的主目录(/home/用户目录)
cd . 保持在当前目录不变
cd .. 切换到上级目录
cd - 可以在最近两次工作目录之间来回切换
创建和删除操作
- touch [文件名] touch 如果文件不存在,新建文件
- 创建文件或修改文件时间
- 如果文件 不存在,可以创建一个空白文件
- 如果文件 已经存在,可以修改文件的末次修改日期
- 创建文件或修改文件时间
- mkdir [目录名] make directory 创建目录
- -p可以递归创建目录
rm [文件名] remove 删除指定的文件名
-f 强制删除,忽略不存在的文件,无需提示
-r 递归地删除目录下的内容,删除文件夹 时必须加此参数clear clear 清屏
- -p可以递归创建目录
- touch [文件名] touch 如果文件不存在,新建文件
拷贝和移动文件
- tree [目录名] tree 以树状图列出文件目录结构
- -d只显示目录
-i 覆盖文件前提示cp 源文件 目标文件 copy 复制文件或者目录
-r 若给出的源文件是目录文件,则 cp 将递归复制该目录下的所有子目录和文件,目标 文件必须为一个目录名
mv 源文件 目标文件 move 移动文件或者目录/文件或者目录重命名 - -i覆盖文件前提示
- -d只显示目录
- tree [目录名] tree 以树状图列出文件目录结构
查看文件内容
cat 文件名 concatenate 查看文件内容、创建文件、文件合并、追加文件内容等
cat 命令可以用来 查看文件内容、创建文件、文件合并、追加文件内容 等功能,cat 会一次显示所有的内容,适合 查看内容较少 的文本文件。
- -b 对非空输出行编号
-n 对输出的所有行编号more 文件名 more 分屏显示文件内容
more 命令可以用于分屏显示文件内容,每次只显示一页内容适合于 查看内容较多的文本文件。
空格键 显示手册页的下一屏
Enter 键 一次滚动手册页的一行
b 回滚一屏
f 前滚一屏
q 退出
/word 搜索 word 字符串grep 搜索文本 文件名 grep 搜索文本文件内容
Linux 系统中 grep 命令是一种强大的文本搜索工具,grep允许对文本文件进行 模式查找,所谓模式查找,即正则表达式。
- -n 显示匹配行及行号
-v 显示不包含匹配文本的所有行(相当于求反)
-i 忽略大小写
其他
echo 文字内容
- echo 会在终端中显示参数指定的文字,通常会和 重定向 联合使用
重定向 > 和 >>
Linux 允许将命令执行结果 重定向到一个 文件将本应显示在终端上的内容 输出/追加 到指定文件中
- > 表示输出,会覆盖文件原有的内容
- >> 表示追加,会将内容追加到已有文件的末尾
管道 |
Linux 允许将 一个命令的输出 可以通过管道 做为 另一个命令的输入
- more:分屏显示内容
- grep:在命令执行结果的基础上查询指定的文本
小技巧
- ctrl + - 缩小终端窗口的字体显示
- ctrl + + 放大终端窗口的字体显示
远程管理常用命令
关机/重启
shutdown
不指定选项和参数,默认表示 1 分钟之后 关闭电脑远程维护服务器时,最好不要关闭系统,而应该重新启动系统
- -r重新启动
- # 重新启动操作系统,其中 now 表示现在 $ shutdown -r now
- # 立刻关机,其中 now 表示现在 $ shutdown now
- # 系统在今天的 20:25 会关机 $ shutdown 20:25
- # 系统再过十分钟后自动关机 $ shutdown +10
- # 取消之前指定的关机计划 $ shutdown -c
查看或配置网卡信息
ifconfig
一台计算机中有可能会有一个 物理网卡 和 多个虚拟网卡,在 Linux 中物理网卡的名字通常以 ensXX 表示127.0.0.1 被称为 本地回环/环回地址,一般用来测试本机网卡是否正常
- # 查看网卡配置信息 $ ifconfig
- # 查看网卡对应的 IP 地址 $ ifconfig | grep inet
ping
远程登录和复制文件
ssh
SSH 客户端是一种使用 Secure Shell(SSH) 协议连接到远程计算机的软件程序。SSH 是目前较可靠,专为远程登录会话和其他网络服务 提供安全性的协议,利用 SSH 协议可以有效防止远程管理过程中的信息泄露,通过 SSH 协议 可以对所有传输的数据进行加密,也能够防止 DNS 欺骗和 IP 欺骗;SSH 的另一项优点是传输的数据可以是经过压缩的,所以可以加快传输的速度。
01 ssh 用户名@ip secure shell 关机/重新启动
02 scp 用户名@ip:文件名或路径 用户名@ip:文件名或路径 secure copy 远程复制文件SSH 客户端的简单使用
- ssh [-p port] user@remote
常见服务端口号列表:
服务 端口号
SSH 22
Web 80HTTPS 443
FTP 21
scp
- 它的地址格式与 ssh 基本相同,需要注意的是,在指定端口时用的是大写的 -P 而不是小写的
-r 若给出的源文件是目录文件,则 scp 将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名
-P 若远程 SSH 服务器的端口不是 22,需要使用大写字母 -P 选项指定端口 - # 把本地当前目录下的 01.py 文件 复制到 远程 家目录下的 Desktop/01.py
- # 注意:
:
后面的路径如果不是绝对路径,则以用户的家目录作为参照路径 - scp -P port 01.py user@remote:Desktop/01.py
- # 注意:
- # 把远程 家目录下的 Desktop/01.py 文件 复制到 本地当前目录下的 01.py
- scp -P port user@remote:Desktop/01.py 01.py # 加上 -r 选项可以传送文件夹
- # 把当前目录下的 demo 文件夹 复制到 远程 家目录下的 Desktop
- scp -r demo user@remote:Desktop
- # 把远程 家目录下的 Desktop 复制到 当前目录下的 demo 文件夹
- scp -r user@remote:Desktop demo
- 它的地址格式与 ssh 基本相同,需要注意的是,在指定端口时用的是大写的 -P 而不是小写的
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 HostName ip地址 User itheima Port 22
- 保存之后,即可用 ssh mac 实现远程登录了,scp 同样可以使用
- 免密码登录
用户权限相关命令
ls -l 可以查看文件夹下文件的详细信息,从左到右依次是:
- 权限,第 1 个字符如果是 d 表示目录
- 硬链接数,通俗地讲,就是有多少种方式,可以访问到当前目录/文件
- 拥有者,家目录下 文件/目录 的拥有者通常都是当前用户
- 组,在 Linux 中,很多时候,会出现组名和用户名相同的情况,后续会讲
- 大小
- 时间
- 名称
chmod 简单使用
- chmod +/-rwx 文件名|目录名
sudo
- su 是 substitute user 的缩写,表示 使用另一个用户的身份
- sudo 命令用来以其他身份来执行命令,预设的身份为 root
- 用户使用 sudo 时,必须先输入密码,之后有 5 分钟的有效期限,超过期限则必须重新输入密码
- 若其未经授权的用户企图使用 sudo,则会发出警告邮件给管理员
组管理 终端命令
创建组 / 删除组 的终端命令都需要通过 sudo 执行
- 01 groupadd 组名 添加组
02 groupdel 组名 删除组
03 cat /etc/group 确认组信息
04 chgrp -R 组名 文件/目录名 递归修改文件/目录的所属组 - 组信息保存在 /etc/group 文件中
- /etc 目录是专门用来保存 系统配置信息 的目录
- 01 groupadd 组名 添加组
用户管理 终端命令
创建用户 / 删除用户 / 修改其他用户密码 的终端命令都需要通过 sudo 执行
创建用户/设置密码/删除用户
- 01 useradd -m -g 组 新建用户名 添加新用户 -m 自动建立用户家目录-g 指定用户所在的组,否则会建立一个和同名的组
02 passwd 用户名 设置用户密码 如果是普通用户,直接用 passwd 可以修改自己的账户密码
03 userdel -r 用户名 删除用户 -r 选项会自动删除用户家目录
04 cat /etc/passwd | grep 用户名 确认用户信息 新建用户后,用户信息会保存在 /etc/passwd 文件中 - 创建用户时,如果忘记添加 -m 选项指定新用户的家目录 —— 最简单的方法就是删除用户,重新创建
- 创建用户时,默认会创建一个和用户名同名的组名
- 用户信息保存在 /etc/passwd 文件中
- 01 useradd -m -g 组 新建用户名 添加新用户 -m 自动建立用户家目录-g 指定用户所在的组,否则会建立一个和同名的组
查看用户信息
01 id [用户名] 查看用户 UID 和 GID 信息
02 who 查看当前所有登录的用户列表
03 whoami 查看当前登录用户的账户名
passwd 文件
- /etc/passwd 文件存放的是用户的信息,由 6 个分号组成的 7 个信息,分别是
- 用户名
- 密码(x,表示加密的密码)
- UID(用户标识)
- GID(组标识)
- 用户全名或本地帐号
- 家目录
- 登录使用的 Shell,就是登录之后,使用的终端命令,ubuntu 默认是 dash
usermod
- usermod 可以用来设置 用户 的 主组 / 附加组 和 登录 Shell,命令格式如下:
- 主组:通常在新建用户时指定,在 etc/passwd 的第 4 列 GID 对应的组
- 附加组:在 etc/group 中最后一列表示该组的用户列表,用于指定 用户的附加权限
- 提示:设置了用户的附加组之后,需要重新登录才能生效!
- # 修改用户的主组(passwd 中的 GID)usermod -g 组 用户名
- # 修改用户的附加组usermod -G 组 用户名
- # 修改用户登录 Shellusermod -s /bin/bash 用户名
- 注意:默认使用 useradd 添加的用户是没有权限使用 sudo 以 root 身份执行命令的,可以使用以下命令,将用户添加到 sudo 附加组中
- usermod -G sudo 用户名
which
/etc/passwd 是用于保存用户信息的文件/usr/bin/passwd 是用于修改用户密码的程序
- which 命令可以查看执行命令所在位置
- cd 这个终端命令是内置在系统内核中的,没有独立的文件,因此用 which 无法找到 cd 命令的位置
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)超级用户的一些管理程序
切换用户
- 01 su - 用户名 切换用户,并且切换目录 - 可以切换到用户家目录,否则保持位置不变
02 exit 退出当前登录账户
- 01 su - 用户名 切换用户,并且切换目录 - 可以切换到用户家目录,否则保持位置不变
修改文件权限
- 01 chown 修改拥有者
- # 修改文件|目录的拥有者
- chown 用户名 文件名|目录名
2 chgrp 修改组
- chown 用户名 文件名|目录名
- # 递归修改文件|目录的组
- chgrp -R 组名 文件名|目录名
3 chmod 修改权限
- chgrp -R 组名 文件名|目录名
- # 递归修改文件权限
- chmod -R 755 文件名|目录名
- # 修改文件|目录的拥有者
- chmod 在设置权限时,可以简单地使用三个数字分别对应 拥有者 / 组 和 其他 用户的权限
- 01 chown 修改拥有者
系统信息相关命令
时间和日期
- date 查看系统时间
cal calendar 查看日历,-y 选项可以查看一年的日历
- date 查看系统时间
磁盘和目录空间
- df -h disk free 显示磁盘剩余空间
du -h [目录名] disk usage 显示目录下的文件大小 - -h 以人性化的方式显示文件大小
- df -h disk free 显示磁盘剩余空间
进程信息
ps aux process status 查看进程的详细状况
ps 默认只会显示当前用户通过终端启动的应用程序
a 显示终端上的所有进程,包括其他用户的进程
u 显示进程的详细状态
x 显示没有控制终端的进程top 动态显示运行中的进程并且排序
要退出 top 可以直接输入 q
kill [-9] 进程代号 终止指定代号的进程,-9 表示强行终止
- 其他命令
- 查找文件
- find
- find [路径] -name “*.py”查找指定路径下扩展名是 .py 的文件,包括子目录
- 如果省略路径,表示在当前文件夹下查找
- find
- 软链接
- ln
- ln -s 被链接的源文件 链接文件
建立文件的软链接,用通俗的方式讲类似于 Windows 下的快捷方式 - 没有 -s 选项建立的是一个 硬链接文件
两个文件占用相同大小的硬盘空间,工作中几乎不会建立文件的硬链接 - 源文件要使用绝对路径,不能使用相对路径,这样可以方便移动链接文件后,仍然能够正常使用
- 硬链接简介
- 在 Linux 中,文件名 和 文件的数据 是分开存储的
- 在 Linux 中,只有文件的 硬链接数 == 0 才会被删除
- 使用 ls -l 可以查看一个文件的硬链接的数量
- ln -s 被链接的源文件 链接文件
- ln
- 打包和压缩
- 打包 / 解包
- # 打包文件 tar -cvf 打包文件.tar 被打包的文件/路径…
- # 解包文件 tar -xvf 打包文件.tar
c 生成档案文件,创建打包文件
x 解开档案文件
v 列出归档解档的详细过程,显示进度
f 指定档案文件名称,f 后面一定是 .tar 文件,所以必须放选项最后
- 压缩/解压缩
- gzip
- tar 与 gzip 命令结合可以使用实现文件 打包和压缩
- tar 只负责打包文件,但不压缩
- 用 gzip 压缩 tar 打包后的文件,其扩展名一般用 xxx.tar.gz
- 在 Linux 中,最常见的压缩文件格式就是 xxx.tar.gz
- 在 tar 命令中有一个选项 -z 可以调用 gzip,从而可以方便的实现压缩和解压缩的功能
- # 压缩文件 tar -zcvf 打包文件.tar.gz 被压缩的文件/路径…
- # 解压缩文件 tar -zxvf 打包文件.tar.gz
- # 解压缩到指定路径 tar -zxvf 打包文件.tar.gz -C 目标路径
- -C解压缩到指定目录,注意:要解压缩的目录必须存在
- tar 与 gzip 命令结合可以使用实现文件 打包和压缩
- bzip2(two)
- tar 与 bzip2 命令结合可以使用实现文件 打包和压缩(用法和 gzip 一样)
- tar 只负责打包文件,但不压缩,
- 用 bzip2 压缩 tar 打包后的文件,其扩展名一般用 xxx.tar.bz2
- 在 tar 命令中有一个选项 -j 可以调用 bzip2,从而可以方便的实现压缩和解压缩的功能
- # 压缩文件 tar -jcvf 打包文件.tar.bz2 被压缩的文件/路径…
- # 解压缩文件 tar -jxvf 打包文件.tar.bz2
- tar 与 bzip2 命令结合可以使用实现文件 打包和压缩(用法和 gzip 一样)
- gzip
- 打包 / 解包
- 软件安装
- apt-get
- # 1. 安装软件 $ sudo apt install 软件包
- # 2. 卸载软件 $ sudo apt remove 软件名
- # 3. 更新已安装的包 $ sudo apt upgrade
- apt-get
- 查找文件