Linux常用命令知识点总结
目录
基础指令
Linux命令基本格式
gec@ubuntu:~$ 命令 [选项] [参数]
文件操作
文件格式
file命令,该命令用于查看Linux系统中文件的类型,包括但不限于文本文件、目录、二进制文件、符号链接等。
file [选项] 文件名
file code.tar.bz2 #查看code.tar.bz2 的文件类型
文件权限
chmod命令,是英文单词change module的缩写,利用该命令可以修改Linux系统的文件权限
chmod 权限 文件
系统中的所有用户被分成三类:文件所有者(现登录用户),同组用户和其他用户。这三类用户对这个文件的rwx权限,可以由命令 ls -l 来查看。
在上述列子中,rwx三组权限对应了三种用户。当我们需要修改这些权限的时候,为了便于描述,一般用3组八进制数来对应这些权限为,如下表所示:
创建文件
touch 文件不存在时创建空文件 , 文件存在时将已存在的文件或目录的时间标签更新为当前系统时间
touch 文件名 //可以一次性创建多个不同类型的文件
查看文件
cat命令,是英文concatenate的缩写,该命令是 Linux操作系统中最常用的命令之一。cat 命令允许创建单个或多个文件、查看文件内容、连接文件和重定向终端或文件中的输出,常用于查看文件内容。
cat file.txt #显示文本文件内容
cat -n a.c #显示文本文件内容(并显示行号)
cat -A a.c #显示文本文件内容(含不可见字符)
#注意:在某些情况下,我们可能需要检测文件中那些不可见的字符。比如在Windows系统中编辑了程序源文件,放到Ubuntu系统中编译可能会出现字符错误,这是因为Windows系统中的某些回车符、制表符跟Ubuntu系统的不一致,导致无法编译,而这些字符是不可见的,因此可以使用上述 cat -A 来识别。
删除文件
rm 永久性地删除文件系统中指定的文件或目录。在使用 rm 命令删除文件或目录时,系统不会产生任何提示信息。
rm [选项] 文件或目录
-f:强制删除(force),和 -i 选项相反,使用 -f,系统将不再询问,而是直接删除目标文件或目录。
-i:和 -f 正好相反,在删除文件或目录之前,系统会给出提示信息,使用 -i 可以有效防止不小心删除有用的文件或目录。
-r:递归删除,主要用于删除目录,可删除指定目录及包含的所有内容,包括所有的子目录和文件。
移动文件
mv 命令,是英文move的缩写,该命令有两种作用:既可以在不同的目录之间移动文件或目录,也可以对文件和目录进行重命名。
mv [选项] 源文件 目标文件/目录路径
-f:强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖
-i:交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项)
-n:如果目标文件已经存在,则不会覆盖移动,而且不询问用户
复制文件
cp命令,是英文copy的缩写,主要用来复制文件和目录,同时借助某些选项,还可以实现复制整个目录,以及比对两文件的新旧而予以升级等功能。
cp [选项] 源文件(被复制文件) 目标路径
-i:询问,如果目标文件已经存在,则会询问是否覆盖
-r:递归复制,用于复制目录
-u:若目标文件和源文件有差异,则可以更新目标文件,可用于对文件的升级和备用
编辑文件
gedit命令,可以以记事本的风格打开一个文件,gedit图形化编辑器跟Windows下记事本的用法基本一致。
gedit 文件名
查找文件
find命令,该命令用于查找Linux系统中某个指定的路径下文件的位置,并且可以把文件的绝对路径输出到终端。注意:如果打算查找根目录下的文件,则应该使用sudo获取root权限。
find 路径 [选项] 文件名
find /usr -name "xxx.h" #在/usr中查找所有以.h结尾的文件
find /tmp -type d # 在/tmp中查找类型为目录的文件
find / -name passwd #找出档名为 passwd 这个文件
查找命令路径
which命令,在Linux系统中该命令用于定位和查找系统中可执行文件的路径。它主要用于确定某个命令是否存在以及该命令的完整路径。
which [选项] 命令名
which ls #查找ls命令的路径
vim文本编辑器
因为中文编码有 big5 与utf8 两种,如果你的文件是使用big5 编码制作的,但在vim 的终端接口中你使用的是万国码(utf8), 由于编码的不同,你的中文文件内容当然就是一堆乱码了!
【1】安装并部署好 vsCode 编程环境,并安装 vim 插件,试试使用 vi 模式编写代码。
直接在 vsCode 中的扩展栏搜索 vim 安装即可。关于 vi 编辑器:
- 特点:
- vi的改进版本叫vim(vi’s improved version),vi和vim是同一个软件。
- vi其初衷是解放鼠标,只用键盘高效操作所有的编辑任务。
- 没有菜单,操作分成编辑模式和命令模式,除了编辑之外的操作都在命令模式下进行。
Vi有三种工作模式:一般命令模式、编辑模式、指令列命令行模式。
一般指令模式(command mode)
作用: ①移动光标 ②搜索与取代 ③删除字符、删除整列 ④复制整列、粘贴整列
进入: ①默认进入②在编辑模式或指令列模式中按下 ESC键
# ①移动光标
[Ctrl] + [b] #向上翻一页
[Ctrl] + [f] #向下翻一页
0 或功能键[Home] #移动到这一列的最前面字符处
$ 或功能键[End] #移动到这一列的最后面字符处
gg #移动到这个文件的第一行 (常用)
G #移动到这个文件的最后一行(常用)
n <Enter> #n 为数字。光标向下移动 n 行(常用)
# ②搜索与取代
/word #向光标之下寻找一个名称为 word 的字符串。 (常用)
:n1,n2s/word1/word2/g #n1 与 n2 为数字。在第 n1 与 n2 列之间寻找 word1 这个字符串,并将该字符串取代为 word2 !
:1,$s/word1/word2/g #从第一列到最后一列寻找 word1 字符串,并将该字符串取代为 word2 !
:1,$s/word1/word2/gc #从第一列到最后一列寻找 word1 字符串,并将该字符串取代为 word2 !且在取代前显示提示字符给用户确认
#(confirm) 是否需要取代!(常用)
# ③删除字符、删除整列
见下表
命令 | 效果 |
---|---|
yy | 复制游标所在的那一整行 |
nyy | n为数字。复制光标所在的向下 n 列,例如 20yy 则是复制 20 列(常用) |
p | 将已复制的数据在光标下一列贴上 |
P | 贴在游标上一列 |
X | 向前删除一个字符(相当于 [backspace] 亦即是退格键) |
x | 向后删除一个字符 (相当于 [del] 按键) |
dd | 删除游标所在的那一整行 |
ndd | n 为数字。删除光标所在的向下 n 列,例如 20dd 则是删除 20 列 (常用) |
u | 撤销, 复原前一个动作。 |
. | 重复前一个动作的意思 |
ctrl+r | 重做上一个动作 |
r | 替换当前字符 |
k | 光标向上移动 |
j | 光标向下移动 |
h | 光标向左移动 |
l | 光标向右移动(小写的L) |
删除文本
需要注意的是被删除的内容并没有真正删除,都放在了剪贴板中。将光标移动到指定位置处,按下 "p" 键,就可以将刚才删除的内容又粘贴到此处。
快捷键 | 功能描述 |
---|---|
x | 删除光标所在位置的字符 |
dd | 删除光标所在行 |
ndd | 删除当前行(包括此行)后 n 行文本 |
dG | 删除光标所在行一直到文件末尾的所有内容 |
D | 删除光标位置到行尾的内容 |
:a1,a2d | 函数从 a1 行到 a2 行的文本内容 |
复制粘贴
快捷键 | 功能描述 |
---|---|
p | 将剪贴板中的内容粘贴到光标后 |
P(大写) | 将剪贴板中的内容粘贴到光标前 |
y | 复制已选中的文本到剪贴板 |
yy | 将光标所在行复制到剪贴板,此命令前可以加数字 n,可复制多行 |
yw | 将光标位置的单词复制到剪贴板 |
其他常用
某些情况下,可能需要把两行进行连接。比如说,下面的文件中有两行文本,现在需要将其合并成一行(实际上就是将两行间的换行符去掉)。可以直接在命令模式中按下 "J" 键。
如果不小心误删除了文件内容,则可以通过 "u" 键来撤销刚才执行的命令。如果要撤销刚才的多次操作,可以多按几次 "u" 键。
编辑模式(insert mode)
作用: ①以插入或取代来编辑内容
进入使用:
插入模式:i I o O a A #均可进入编辑模式 退出ESC
i #在当前光标处插入文本
I #在当前光标所在行的开头处插入文本
O #往上插一行
o #往下插一行
A #在当前光标所在行的末尾处插入文本
a #在当前光标的下一个字符处插入文本
取代模式:
r #取代一个字符
R #一直取代, 直到按ESC结束
界面提示: INSERT 或 REPLACE
指令列命令模式command-line mode
作用: ①以插入或取代来编辑内容
进入使用: : / ?
#指令列模式的储存、离开等指令
:w 将编辑的数据写入硬盘文件中(常用)
:q 离开 vi (常用)
:q! 放弃保存并退出
:wq 储存后离开
:wq! 则为强制储存后离开 (常用)
#vim 环境的变更
:set nu 显示行号,设定之后,会在每一列的前缀显示该列的行号
:set nonu 与 set nu 相反,为取消行号!
查找内容
:?printf #查找printf
如果在文件中并没有找到所要查找的字符串,则在文件底部会出现 "Pattern not found" 提示。
在查找过程中需要注意的是,要查找的字符串是严格区分大小写的,如查找 "shenchao" 和 "ShenChao" 会得到不同的结果。如果想忽略大小写,则输入命令 ":set ic";调整回来输入":set noic"。
如果在字符串中出现特殊符号,则需要加上转义字符 ""。常见的特殊符号有 \、*、?、$ 等。如果出现这些字符,例如,要查找字符串 "10$",则需要在命令模式中输入 "/10$"。
替换文本
快捷键 | 功能描述 |
---|---|
r | 替换光标所在位置的字符 |
R | 从光标所在位置开始替换字符,其输入内容会覆盖掉后面等长的文本内容,按“Esc”可以结束 |
😒/a1/a2/g | 将当前光标所在行中的所有 a1 用 a2 替换 |
:n1,n2s/a1/a2/g | 将文件中 n1 到 n2 行中所有 a1 都用 a2 替换 |
😒/a1/a2/g | 将文件中所有的 a1 都用 a2 替换 |
快捷键 | 功能描述 |
---|---|
/abc | 从光标所在位置向前查找字符串 abc |
/^abc | 查找以 abc 为行首的行 |
/abc$ | 查找以 abc 为行尾的行 |
?abc | 从光标所在为主向后查找字符串 abc |
n | 向同一方向重复上次的查找指令 |
N | 向相反方向重复上次的查找指定 |
保存退出
需要注意:vi/vim 的保存和退出是在编辑模式中进行的,"w!" 和 "wq!" 等类似的指令,通常用于对文件没有写权限的时候(显示 readonly),但如果你是文件的所有者或者 root 用户,就可以强制执行。
命令 | 功能描述 |
---|---|
:wq | 保存并退出 Vim 编辑器 |
:wq! | 保存并强制退出 Vim 编辑器 |
:q | 不保存就退出 Vim 编辑器 |
:q! | 不保存,且强制退出 Vim 编辑器 |
:w | 保存但是不退出 Vim 编辑器 |
:w! | 强制保存文本 |
:w filename | 另存到 filename 文件 |
x! | 保存文本,并退出 Vim 编辑器,更通用的一个 vim 命令 |
ZZ | 直接退出 Vim 编辑器 |
目录操作
打印路径
pwd 命令,是英文单词print working directory的缩写,功能是显示用户当前所处的工作目录,可以把路径信息输出到终端。
pwd //该指令输出的路径是绝对路径
pwd [-p] # 显示完整路径
查看目录
显示当前目录下的内容
ls [选项] [目录名称] //选项可以省略,目录名称也可以省略
ls -a #列出当前目录下所有内容, 含 . 隐藏文件
ls -i #显示目录下每个文件的节点信息, 文件的节点相当于文件在磁盘的索引
ls -l #列出目录下的详细信息 可以简化为 ll
Linux系统的思想是“一切皆文件”,所以Linux系统把文件分为七类:规则文件(-)、目录文件(d)、管道文件(p)、链接文件(l)、套接字文件(s)、字符设备文件(c)、块设备文件(b)
切换目录
cd [选项] [目录名称]
cd #用户家目录
cd -#刚刚去过的路径
cd ~#用户家目录 对应的绝对路径 /home/xxx xxx就是用户名
cd ~用户名# 该用户的家目录
cd . #用户当前目录 此层目录
cd .. #相对当前所在目录的上一级目录
目录结构
根目录 /
常用路径 | 解释 |
---|---|
bin: | linux常用的命令 |
dev: | linux外部设备的端口 |
etc: | 系统所有的配置文件 |
lib: | 系统的动态链接库(.so) |
mnt: | 系统挂载目录,例子: Windows的共享目录 |
home: | 普通用户家目录 /home/gec |
usr: | 一般存放着头文件,库文件 |
相对路径 ./
绝对路径 /
创建目录
mkdir [-m or -p] 目录名
创建空目录
gec@ubuntu:~$ mkdir [-m or -p] 目录名
-m 选项用于手动配置所创建目录的权限,而不再使用默认权限。
-p 选项递归创建所有目录,以创建 /home/gec/test/abc为例,在默认情况下,你需要一层一层的创建各个目录,而使用 -p 选项,则系统会自动帮你创建 /home、/home/gec、/home/gec/test 和 /home/gec/test/abc。
mkdir -m 711 test1#创建有权限的目录
mkdir -p a/b/c #递归创建目录
压缩解压
tar命令,该命令的作用是归档/释放 以及 压缩/解压,归档的意思把文件统一打包但不作压缩处理,所以压缩和归档生成的包的大小不同。
tar 选项 目标文件 源文件
-c:创建一个新的归档文件。
-x:从归档文件中提取文件。
-f:指定要处理的归档文件名。 //该选项必须放在所有选项的最后面
-z:使用gzip压缩创建tar文件。
-j:使用bzip2压缩法创建存档文件。
归档/释放
tar cf a.tar dir/* #将目录dir中的所有文件归档成a.tar
tar tf a.tar #查看归档文件a.tar
tar xf a.tar #释放归档文件a.tar
压缩/解压
tar czf a.tar.gz dir/* 将目录dir中的所有文件归档并压缩为gz格式
tar xzf a.tar.gz ==> 解压压缩文件a.tar.gz
tar cjf a.tar.bz2 dir/* 将目录dir中的所有文件归档并压缩为bz2格式
tar xjf a.tar.bz2 ==> 解压压缩文件a.tar.bz2
用户管理
用户切换
sudo su - #默认切换root管理员
sudo su #普通用户切换超级用户 实际开发中尽量避免一直使用超级用户
sudo su [用户]#切换用户,但是不切换工作目录
sudo su - username#切换username用户且切换工作环境
sudo [命令] #拥有部分管理员权限执行命令
exit #超级用户退回为普通用户
用户信息查看
sudo cat /etc/shadow # 查看账号数量及其信息
cat etc/passwd # 查看所有用户信息
用户创建
useradd -m -u 800 user2 # 创建用户并赋予权限
useradd -m -G group2 ah #创建用户ah,目录默认,并添加到组 group2中
password user2
修改用户密码 ,但先进入root
userdel test5 -r
删除用户test5及其主目录
usermod -l u1新 user1源 -u 700 -d /test -p 123456
修改已有的账号信息
usermod –l mtest3 test3 –g 1001 –d /home/mtest3
将test3用户名修改为mtest3,用户组gid改为1001,用户主目录改为/home/mtest3
sudo usermod -G 1100 用户名user01
修改附加组
usermod -g 1000 user01
修改用户所属附加组
用户组
一个用户可以有多个附加组,但只能有一个基本组
cat /etc/group
查看用户组的信息,用文本编辑器查看group_name:group_password:group_id:group_members
cat /etc/gshadow
查看这个文件需要root权限
用户组的管理命令
groupadd 创建新的组账号
groupadd -g 343 newgroup
添加用户组, 1000以上为普通
groupmod
groupmod -n linux新名字 newgroup旧名称
更改组的名字
groupmod -g 300 组名称
修改组编号
groupdel
groupdel newgroup
删除组,但先删除或踢出去组员
userdel new
删除用户newer
gpasswd 管理群组,加入用户,修改组密码
gpasswd -a
加入成员
gapsswd -M user1,user2待添加用户 group组
把用户加入组
gpasswd -A test2组里面的用户 malimei组
指定一个用户当组管理员
id test2用户名
查看用户信息
gpasswd -d test4用户 sudo组
将组sudo中的用户test4删除
gpasswd g1
修改组g1的密码
网络操作
配置网络
ifconfig命令,该命令的作用是查看或者设置系统IP地址,ifconfig并非系统自带命令,需要利用命令进行安装使用:
sudo apt install net-tools //安装指令只需要执行一次即可
基本格式:
ifconfig [选项]
ifconfig #查看网络配置信息
ifconfig ens32 192.168.1.6# 修改静态IP 但只能临时生效! 需要写入启动文件
设置静态IP
以下的配置信息展现如何使用 netplan 来给 NetworkManager 配置自动获取IP的信息,如下:
基本格式如下:
sudo gedit /etc/netplan/01-network-manager-all.yaml
说明:
[192.168.100.100/24] 中的24代表设定的IP地址的前24比特位为子网掩码,也就是255.255.255.0
nameservers 代表 DNS 服务器
图片中的IP地址等参数只是例子,大家需要根据实际情况进行修改,否则会导致无法联网。
注意:如果用户已经配置好 yaml 文件之后,需要执行如下命令来使之生效,操作如下所示:
gec@ubuntu:$ sudo netplan apply
网络测试
ping命令,该命令的作用是向指定主机发送要求回应的ICMP数据包,可以用来测试网络是否连通。
ping IP地址
ping 主机域名
注意:一般而言,如果网络是畅通的,那么ping命令将会看到数据包返回的延迟时间,否则如果看不到延迟时间,那么网络就是不通的。
软件管理
apt管理器指令
apt命令来安装软件包
apt update #更新软件源
apt upgrade #更新所有已安装的包
apt install <pkg> #安装软件包<pkg>,多个软件包用空格隔开
apt remove <pkg> #移除软件包<pkg>
apt purge <pkg> #移除软件包及配置文件
apt autoremove #自动删除不再需要的软件包和依赖关系
apt-cache depends 软件包名 #显示该件包的依赖信息
apt-cache search 软件包名# 搜索软件包
apt常用命令
数据源地址
lUpdate 更新和查询软件包数据源:/var/lib/apt/lists (存放Ubuntu已经下载的个软件源数据);
lUpgrade 升级软件包数据源:/etc/apt/sources.list
lUbuntu 软件中心和APT安装的数据源:/var/lib/dpkg/states
l卸载数据软件包备份位置:/var/cache/apt/archieves
dpkg命令
•dpkg是用来安装.deb文件,但不会解决模块的依赖关系,且不会关心ubuntu的软件仓库内的软件,可以用于安装本地的deb文件,实现手动安装软件包文件(如网络不通、或安装软件源中不存在)。
•如果自己下载了deb包,那么可以直接双击deb包文件,用ubuntu软件中心进行安装,也可以用dpkg命令行工具安装。
- 安装deb包:安装前,要先查找再安装。 使用命令如下:
#dpkg –i deb 包名
- 列出系统所有安装的软件包:
sudo dpkg –l
- 列出软件包详细的状态信息
sudo dpkg –S 包名
- 列出属于软件包的文件
sudo dpkg –L 包名
帮助手册
help帮助
命令名 --help
man手册
编程开发的过程中,需要使用众多的系统指令、各类函数库、系统调用、各类系统脚本文件等,这些种类繁多、功能各异的信息,可以通过统一的man手册来获取第一手资料,man文档是帮助信息的权威通道,是大多数教程、书籍的知识来源。
由于 man 手册所需要罗列的帮助条目众多,因此 man 手册被妥善地分为9册,不同的帮助信息被放入对应的man分册中:
man文档的九个分册:
- Shell命令(默认已安装)
- 系统调用
- 库函数
- 特殊文件(通常出现在/dev目录下)
- 文件的特殊格式或协定(例如/etc/passwd的格式)
- 游戏
- 杂项(例如一些宏定义)
- 系统管理员命令(通常只能由管理员执行)
- 非标准内核例程
使用man手册查询命令、函数时,一般直接在man后面接上待查条目即可,但有时候会遇到同一个待查询的条目存在于多个man分册的情况,这就需要先罗列出该条目所在的分册信息,然后再根据需要去选择帮助文档的序号。
# 查询单一分册的条目:
man strcpy
# 查询存在于多个分册的条目:
man -f printf # 先使用 -f 来查看有哪些分册包含了该条目
printf (1) - format and print data
printf (3posix) - print formatted output
man 3posix printf # 根据需要,指定查询某一册帮助分册
#查询某一分册的条目
man 1 ls
man 3 printf
注意:
按 q退出
磁盘/文件系统
查看分区
df命令,该命令的作用是查看系统分区信息,侧重在文件系统级别的磁盘占用方面,用法如下:
df [选项]
-h #转换为倍数显示
创建链接
ln 命令,是英文link的缩写,中文具有链接的含义,该命令用于给文件创建链接,在Linux系统中,为文件创建链接的方式分为以下两种:
ln [选项] 源文件 目标文件
-s #创建软连接文件
软链接:类似于 Windows 系统中给文件创建快捷方式,即产生一个特殊的文件,该文件用来指向另一个文件,此链接方式同样适用于目录。
硬链接:文件的基本信息都存储在inode中,而硬链接指的就是给一个文件的 inode 分配多个文件名,通过任何一个文件名,都可以找到此文件的inode,从而读取该文件的数据信息。
注意:软链接文件的源文件必须写成绝对路径,而不能写成相对路径(硬链接没有这样的要求),否则软链接文件会报错。
U盘操作
插入FAT32格式U盘到USB0接口
sudo df -h # 查看磁盘使用情况, 查看挂载点
cd /mnt/udisk #然后可以看见一个已经挂载了的U盘路径, 即可对文件进行拷贝, 但程序应该拷贝出去执行, 因U盘不属于Linux的
umount /mnt/udisk #操作完毕后安全卸载U盘
文件系统挂载与卸除
若将新磁盘挂载到workspace文件夹上, 则workspace内原来的文件及文件夹会被暂时屏蔽, 显示的是挂载后的新磁盘的文件及文件夹
mount UUID='' 挂载点
mount 装置文件名 挂载点
blkid /dev/vda4# 查看 vda4 的uuid
mount UUID="e0a6af55-26e7-4cb7-a515-826a8bd29e90" /data/xfs
mount /dev/sr0 /data/cdrom # 将sr0挂载到cdrom
umount (将装置文件卸除)
umount [-fn] 装置文件名或挂载点
-f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下;
-l :立刻卸除文件系统,比 -f 还强!
-n :不更新 /etc/mtab 情况下卸除。
umount /mnt/udisk #操作完毕后安全卸载U盘
系统/进程/其它
进程状态
ps命令,是英文process state的缩写,该命令用于获取Linux系统中各进程的当前状态参数
ps [选项]
系统时间
date命令,date中文具有日期的含义,利用该命令可以查看或者修改Linux系统日期和时间。
date
date -s 日期时间 // -s选项可以设置日期和时间
命令别名
alias命令,该命令用于创建和管理命令别名,可以简化日常的指令输入以及提高开发效率!
alias 别名=命令
alias l="ls -l"# 注意单次有效, 若要重复有效, 得写入启动文件
source .bashrc #写入配置后,让配置命令文件立即生效
注意:alias命令设置的别名只在当前终端中有效,如果需要永久生效,需要将其写入到用户家目录下的配置文件.bashrc中,然后使用source命令使配置文件立即生效。一定在尾部进行追加。
清除屏幕
clear命令,该命令用于清除终端的一面屏幕,为了提高终端的可读性以及提高开发的效率!
clear
系统开关机
reboot #重启电脑
poweroff #关机
suspend #进入休眠模式
交叉编译
编译程序
# 编译程序
gcc example.c -o example
arm-linux-gcc demo.c -o demo_arm
# 运行程序
./example
配置开发环境
更改服务器源
在setting-->about-->software&updates-->Ubuntu Software-->Download from
中修改为aliyun
修改完毕后
sudo apt update# 更新Ubuntu系统的服务器软件清单
sudo apt upgrade#检查软件更新
配置SSH
打开terminal终端
若之前有安装过则要把openssh干净卸载
sudo apt-get remove openssh-server openssh-client --purge -y #卸载SSH软件,同时清除openssh的配置文件(/etc/ssh目录下)
sudo apt-get install openssh-server openssh-client #安装SSH
sudo systemctl restart ssh #重启ssh
检查端口是否开放
sudo apt install net-tools # 安装网络工具
sudo netstat -anp |more #输入netstat查看是否有ssh的22号端口开放
例如:
查看服务状态
sudo service ssh status
修改默认ssh端口号(可选)
若要修改默认ssh端口号
要修改配置文件
sudo vim /etc/ssh/sshd_config
查看行号, 按ESC进入一般指令模式,按:进入指令列模式
:set nu
在一般指令模式下, 移动光标在port位置, 按i进入插入模式, 然后修改你的端口号, 并去掉注释#。
然后按ESC , :wq!
保存退出
然后重启SSH服务:
sudo /etc/init.d/ssh stop
sudo /etc/init.d/ssh start
开放防火墙端口(可选)
开放防火墙端口16899
sudo iptables -A INPUT -p tcp --dport 16899 -j ACCEPT
允许通过防火墙
sudo ufw allow ssh
安装vmware-tools[可选]
sudo apt install open-vm-tools open-vm-tools-desktop
安装man手册
在默认情况下,系统只安装第一册,其他的帮助信息一般需要用户自己手动安装,安装指令如下:
sudo apt-get install man-db manpages manpages-de manpages-de-dev manpages-dev glibc-doc manpages-posix manpages-posix-dev manpages-posix
安装Vim文本编辑器
sudo apt install vim#安装vim
安装gcc
sudo apt install gcc #安装gcc
gcc --version # 验证gcc是否成功安装: 将显示gcc的版本信息。
sudo apt install g++#支持C++编译,可以安装g++
sudo apt install make#安装编译和构建相关的工具,make
修改root密码
sudo passwd root
安装交叉编译环境arm
在 / 根目录创建 DevelopmentTool
文件夹, 然后将arm-linux-gnueabi-5.4.0.tar.xz
上传到其中
su - root#切换root用户
cd /
mkdir DevelopmentTool #创建存放工具的文件夹
chmod 777 arm-linux-gnueabi-5.4.0.tar.xz #改变权限
xz --decompress arm-linux-gnueabi-5.4.0.tar.xz #对压缩包进行解压
tar xf arm-linux-gnueabi-5.4.0.tar#对归档文件进行释放
cd /DevelopmentTool/usr/local/arm/5.4.0/usr/bin#进入可执行命令文件
#每个用户都要配置以下环境变量
echo "export PATH=/DevelopmentTool/usr/local/arm/5.4.0/usr/bin:$PATH" >> ~/.bashrc#配置环境变量 写入用户家目录shell 脚本
source ~/.bashrc#配置立即生效
arm-linux-gcc -v#查看配置是否生效
exit #退出root
若有多个用户则逐一创建账号
sudo adduser username #新建用户username并创建家目录
sudo usermod -aG sudo username #修改username账户, -a将用户添加到新组时保留用户在其他组的成员资格, 如果省略 -a,用户将被从除新指定组外的所有其他组中移除。-G 选项后面跟着的是用户要被添加进的一个或多个组。在这个例子中,组名是 sudo。让username有权限执行sudo命令
su - username #进入新用户
echo "export PATH=/DevelopmentTool/usr/local/arm/5.4.0/usr/bin:$PATH" >> ~/.bashrc
source ~/.bashrc
arm-linux-gcc -v