linux 命令

记录 linux bash 命令

0. 终端命令说明

  • command [-options] [parameter]

    • command:命令名, 比如: ls、pwd
    • [-options]:选项,可以有零个、一个或者多个选项,多个选项可以合并,比如使用的 -r 就是选项。
    • [parameter]:参数,可以有零个、一个 或者 多个参数, 比如: touch 文件名、mkdir 目录名、cd 目标目录(路径),这些文件名和目录名都是参数。
    • []:代表可选
    • 命令的选项和参数一般情况下没有顺序要求,但是scp命令是必须先选项然后在跟上参数。
  • 查看命令帮助

    • –help : command –help
    • man : man command
      操作键 说明
      空格 显示下一屏信息
      回车 显示下一行信息
      b 显示上一屏信息
      f 显示下一屏信息
      q 退出

1. 查看目录命令

命令 说明
ls 查看当前目录信息
ls -l 以列表方式显示
ls -h 显示文件大小单位,默认是字节
ls -a 显示隐藏文件和隐藏目录
tree 以树状方式显示目录信息
pwd 查看当前目录路径
clear 清除终端内容

ls -l 详情
ls参数详情

2. 切换目录命令 cd

命令 说明
cd 目录 切换到指定目录
cd ~ 切换到当前用户的主目录
cd .. 切换到上一级目录
cd . 切换到当前目录
cd - 切换到上一次目录
  • 绝对路径
    • 从 / 目录开始
  • 相对路径
    • 从当前目录开始

3. 创建、删除、复制、移动

命令 说明
touch 文件名 创建指定文件
mkdir 目录名 创建目录(文件夹)
mkdir -p 创建所依赖的文件夹/递归创建文件夹
rm 文件名 删除指定文件
rm -i 交互式提示
rm -r 递归删除目录及其内容
rm -f 强制删除,忽略不存在的文件,无需提示
rm -d 删除空目录
rm -r 目录名 删除指定目录
rmdir 目录名 删除空目录
cp 拷贝文件、拷贝目录
cp -i 交互式提示
cp -r 递归拷贝目录及其内容
cp -v 显示拷贝后的路径描述
cp -a 保留文件的原有权限
mv 移动文件、移动目录、重命名
mv -i 交互式提示
mv -v 显示移动后的路径描述

4. 重定向

命令 说明
> 如果文件存在会覆盖原有文件内容,相当于文件操作中的‘w’模式
>> 如果文件存在会追加写入文件末尾,相当于文件操作中的‘a’ 模式

5. 查看文件内容

命令 说明
cat 查看小型文件
more 分屏查看大型文件
less 分屏查看大型文件, 比 more 少百分比
tail 默认显示文件最后10行内容
watch 根据指定间隔时间重复运行后续命令
  • cat命令结合重定向可以完成多个文件的合并
  • tail -n
    • n 为要查看的内容的行数
  • watch -n 2 tail -20 /var/log/messages
    • 每个两秒查看 messages 文件最后20行

more 操作说明:
| 操作键 | 说明 |
| — | — |
| 空格 | 显示下一屏信息 |
| 回车 | 显示下一行信息 |
| b | 显示上一屏信息 |
| f | 显示下一屏信息 |
| q | 退出 |

6. 管道命令 |

管道(|):一个命令的输出可以通过管道做为另一个命令的输入,可以理解成是一个容器,存放在终端显示的内容。

7. 链接命令 ln

命令 说明
ln -s 创建软链接
ln 创建硬链接
  • 软链接: 类似于Windows下的快捷方式。
    • ln -s 源文件路径(使用绝对路径) 软链接
    • 如果软链接和源文件不在同一个目录,源文件要使用绝对路径,不能使用相对路径。
    • 删除源文件则软链接失效
    • 可以给目录创建软链接
  • 硬链接: 类似于源文件的一个别名,也就是说这两个名字指向的是同一个文件数据。
    • 创建硬链接使用相对路径和绝对路径都可以
    • 删除源文件,硬链接还可以访问到数据。
    • 创建硬链接,硬链接数会加1,删除源文件或者硬链接,硬链接数会减1。
    • 创建软链接,硬链接数不会加1
    • 不能给目录创建硬链接
  • 硬链接数就是文件数据被文件名使用的次数, 好比引用计数

8. 文本处理命令

命令 说明
grep 文本搜索
grep -i 忽略大小写
grep -n 显示匹配行号
grep -v 显示不包含匹配文本的所有行
egrep 在文件内查找指定的字符串。
awk 文本数据处理工具
  • grep 搜索内容 文本
    • grep ‘a’ test.txt
    • ls | grep test
  • egrep执行效果与 grep-E 相似
    • egrep是用extended regular expression语法来解读的,而grep则用basic regular expression 语法解读,extended regular expression比basic regular expression的表达更规范。
  • awk 命令也是逐行扫描文件(从第 1 行到最后一行),寻找含有目标文本的行,如果匹配成功,则会在该行上执行用户想要的操作;反之,则不对行做任何处理。
    • netstat -pantu | egrep -v ‘0.0.0.0|:::’ | awk ‘{print $5}’,打印 netstat -pantu 的第五列,以空格作分隔符

grep 可以结合正则表达式一起使用
| 正则表达式 | 说明 |
| — | — |
| ^ | 以指定字符串开头 |
| $ | 以指定字符串结尾 |
| . | 匹配一个非换行符的字符 |

9. 查找文件命令

whereis 命令比 find 快,原因:非源码安装的软件信息实际上会存储在 linux 的一个数据库中, whereis 是通过查询数据库获得信息

命令 说明
find 在指定目录下查找文件(包括目录)
find -name 根据文件名(包括目录名)字查找
which 查看命令位置

find命令结合通配符的使用
通配符不仅能结合 find 命令使用,还可以结合其它命令使用, 比如: ls、mv、cp 等,只有 find 命令使用通配符需要加上引号。
| 通配符 | 说明 |
| — | — |
| * | 代表0个或多个任意字符 |
| ? | 代表任意一个字符 |

find -name “1?1.txt”

10. 压缩和解压缩命令tar

  • Linux默认支持的压缩格式:
    • .gz
    • .bz2
    • .zip

      .gz和.bz2的压缩包需要使用tar命令来压缩和解压缩
      .zip的压缩包需要使用zip命令来压缩,使用unzip命令来解压缩

命令 说明
tar 压缩和解压缩命令
参数 说明
-c 创建打包文件
-v 显示打包或者解包的详细信息
-f 指定文件名称, 必须放到所有选项后面
-z 压缩或解压缩(.gz)
-j 压缩或解压缩(.bz2)
-x 解包
-C 解压缩到指定目录
命令 说明
zip 压缩成.zip格式文件
unzip 解压缩.zip格式文件
unzip -d 解压缩到指定目录

11. 权限命令

1. 文件权限

  • 字母法格式: chmod 不同角色设置的权限 文件
  • 数字法格式: chmod 不同角色的权限值 文件名
命令 说明
chmod 修改文件权限
角色 说明
u user, 表示该文件的所有者
g group, 表示用户组
o other, 表示其他用户
a all, 表示所有用户
操作符 说明
+ 增加权限
- 撤销权限
= 设置权限
权限 说明
r 可读
w 可写
x 可执行
- 无任何权限

chmod 数字法的使用

权限 说明
r 可读,权限值是4
w 可写,权限值是2
x 可执行,权限值是1
- 无任何权限,权限值是0

2. 管理员权限

命令 说明
sudo -s 切换到root用户,获取管理员权限
sudo 某个命令的执行需要获取管理员权限可以在执行命令前面加上sudo
whoami 查看当前用户限
exit 退出登录用户
  • exit
    • 如果是切换后的登陆用户,退出则返回上一个登陆账号。
    • 如果是终端界面,退出当前终端。

12. 用户相关操作

/etc/passwd 文件记录了所有用户信息

1. 创建用户

命令 说明
useradd 创建(添加)用户
id 查看用户信息

创建用户 chang 并指定用户组 test : sudo useradd -m -g test chang

参数 说明
-m 自动创建用户主目录,主目录的名字就是用户名
-g 指定用户所属的用户组,默认不指定会自动创建一个同名的用户组
  • 说明
    • useradd 命令的使用需要使用管理员权限,前面需要加上 sudo
    • 创建用户如果不指定用户组,默认会自动创建一个同名的用户组
    • 查看用户是否创建成功,可以查看/etc/passwd这个文件
    • 查看用户组是否创建成功,可以查看/etc/group这个文件
  • passwd文件中的每项信息说明,以root:x:0:0:root:/root:/bin/bash为例:
    • 第一个:用户名
    • 第二个:密码占位符
    • 第三个:uid, 用户id
    • 第四个:gid, 用户所在组id
    • 第五个:用户描述, 可选,
    • 第六个:用户的主目录所在位置
    • 第七个:用户所用 shell 的类型,一般由bash或者sh,默认不设置是sh类型
  • group文件中的每项信息说明, 以chang:x:1001:为例:
    • 第一个:用户组名
    • 第二个:用户组密码占位符,一般Linux系统的用户组都没有密码的
    • 第三个:组id

2. 设置密码

sudo passwd 用户名

3. 切换用户

命令 说明
su 切换用户

4. 修改用户信息

命令 说明
usermod 修改用户信息
参数 说明
-G 设置一个附加组
-g 修改用户组

5. 删除附加组

命令 说明
gpasswd 添加和删除附加组信息
参数 说明
-a 用户名 给用户添加附加组
-d 用户名 给用户删除附加组

6. 删除用户

命令 说明
userdel 删除用户
参数 说明
-r 用户名 删除用户主目录,必须要设置,否则用户主目录不会删除

删除用户,默认同名的用户组也会被删除

13. 用户组相关操作

1. 创建用户组

命令 说明
groupadd 创建(添加)用户组

创建用户 chang 并指定用户组 test : sudo useradd -m -g test chang

2. 修改用户组

命令 说明
usermod 创修改用户的用户组

sudo usermod -g test1 chang

3. 删除用户组

命令 说明
groupdel 删除用户组

如果用户组下面有用户先删除用户在删除用户组

14. 远程登录、远程拷贝命令

命令 说明
ssh 远程登录
scp 远程拷贝

1. ssh

在Ubuntu安装ssh客户端命令:

1
sudo apt-get install openssh-client

若Ubuntu作为服务端,需要安装ssh服务端软件.

1
sudo apt-get install openssh-server

ssh 连接命令:ssh 用户名@ip地址

1
ssh chang@172.16.47.197

2. scp

scp是基于ssh进行远程文件拷贝的命令,需要保证服务端和客户端电脑安装了相应的ssh软件

  • scp命令格式:
    • 远程拷贝文件
      • scp 本地文件 远程服务器用户名@远程服务器ip地址:指定拷贝到远程服务器的路径
      • scp 远程服务器用户名@远程服务器ip地址:远程服务器文件 指定拷贝到本地电脑的路径
    • 远程拷贝目标
      • scp -r 本地目录 远程服务器用户名@远程服务器ip地址:指定拷贝到远程服务器的路径
      • scp -r 远程服务器用户名@远程服务器ip地址:远程服务器目录 指定拷贝到本地电脑的路径
      • -r 表示递归拷贝整个目录

        大量的文件上传和下载可以通过可视化工具FileZilla来完成。

14. 软件安装与卸载

1. 软件安装

Ubuntu软件安装有两种方式:

  • 离线安装(deb文件格式安装)
  • 在线安装(apt-get方式安装)

dpkg 是 Ubuntu 的安装包格式,可以使用 dpkg 命令进行软件的安装和卸载
| 命令 | 说明 |
| — | — |
| dpkg | 安装和卸载deb安装包 |
| dpkg -i | 离线安装deb安装包 |

apt-get 是在线安装 deb 软件包的命令,主要用于在线从互联网的软件仓库中搜索、安装、升级、卸载软件。

sudo apt–get install 安装包

2. 软件卸载

Ubuntu软件卸载有两种方式:

  • 离线安装包的卸载(deb 文件格式卸载)
  • 在线安装包的卸载(apt-get 方式卸载)

deb 文件格式卸载

sudo dpkg –r 安装包名

apt-get 方式卸载

sudo apt-get remove 安装包名

15. 查看系统实时信息

命令 说明
top 查看系统实时信息

k,结束某进程:pid to signal/kill
q,退出

16. 查看进程信息

ps 命令 为了适应不同的 UNIX 系统,可用格式非常多

  • ps aux :可以查看系统中所有的进程;
  • ps -le : 可以查看系统中所有的进程,而且还能看到进程的父进程的 PID 和进程优先级;
  • ps -l : 只能看到当前 Shell 产生的进程;

17. 网络相关命令

1. ifconfig 命令

命令 说明
ifconfig 查看或修改网络接口配置信息
参数 说明
-a 显示全部接口信息。
-s 显示摘要信息(类似于 netstat -i)。
<interface> address 为网卡设置IPv4地址。
<interface> add
给指定网卡配置IPv6地址。
<interface> del
删除指定网卡的IPv6地址。
<interface> netmask
设置网卡的子网掩码。掩码可以是有前缀0x的32位十六进制数,也可以是用点分开的4个十进制数。如果不打算将网络分成子网,可以不管这一选项;如果要使用子网,那么请记住,网络中每一个系统必须有相同子网掩码。
<interface> dstaddr
设定一个远端地址,建立点对点通信。
<interface> tunnel
建立隧道。
<interface> hw
设置硬件地址。
<interface> mtu 设置最大传输单元。
<interface> [-]arp 设置指定网卡是否支持ARP协议。-表示不支持arp。
<interface> multicast 为网卡设置组播标志。
<interface> [-]promisc 设置是否支持网卡的promiscuous模式,如果选择此参数,网卡将接收网络中发给它所有的数据包。-表示关闭混杂模式。
<interface> txqueuelen 为网卡设置传输列队的长度。
<interface> up 启动指定网卡。
<interface> down 关闭指定网卡。该参数可以有效地阻止通过指定接口的IP信息流,如果想永久地关闭一个接口,我们还需要从核心路由表中将该接口的路由信息全部删除。

2. macchanger

修改 mac 地址

只能修改让别人看见的mac地址,实际真正的mac地址不能改变

参数 说明
-h, –help 帮助信息
-V, –version 输出版本信息并退出
-s, –show 输出MAC地址并退出
-e, –ending 不改变有关设备商信息的字节
-a, –another 设置相同供应商的随机MAC地址
-A 设置任意类型的供应商MAC
-p, –permanent 重置为原始、永久的硬件MAC
-r, –random 设置完全随机MAC地址
-l, –list[=keyword] 输出已知的供应商
-b, –bia 冒充地址
-m, –mac XX:XX:XX:XX:XX:XX 设置 MAC XX:XX:XX:XX:XX:XX

3. netstat

netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。

查看 Active Internet connections (servers and established):

sudo netstat -pantu

————————————————