Linux入门

Linux目录结构

在Linux的世界中,一切皆文件

所有目录均在根目录下,每个目录中存放对应文件

硬件也会映射为文件形式

/bin

存放最经常使用命令

/home

存放普通用户主目录,每个Linux用户有一个自己的目录

/root

该目录为系统管理员,超级权限者

/lib

动态链接共享库,几乎所有程序都需使用

/etc

所有系统管理所需要的配置文件和子目录

/usr

许多程序和文件都放在该目录下,类似于Windows的Program files目录

/boot

启动Linux时所需核心文件

/proc

系统内存映射

/srv

/sys

/tmo

临时文件

/dev

类似于Windows设备管理器,将所有硬件映射为文件

/media

自动识别一些设备,如U盘、光驱等,识别后,Linux会将这些设备挂载到该目录(其实挺奇怪的,硬盘和U盘不都属于外设吗,怎么还区别对待?感觉有些问题)

/mnt

用以临时挂载别的文件系统

/opt

安装软件所存放的目录(与usr区别?)安装包

/usr/local

软件存放目录

/var

经常修改内容,包括各种日志文件

/selinux

安全子系统

远程控制

Linux公网

远程登陆、文件传输

学习阶段使用Xshell 7以及Xftp 7

官网为https://www.xshell.com/zh/free-for-home-school/,不要找错了哦(差点踩坑被骗)

成功使用Xshell连接到Pine A64卡片电脑,实现远端控制

linux01.png

实现过程:来电自启Pine A64,连接网线,进入路由器管理界面,找到已连接设备IP地址,查询Pine A64地

址,启动Xshell,输入对应IP地址,依次输入用户名及密码,远端登录成功!

Vi及Vim的使用

vim具有程序编辑能力

三种模式

正常模式

默认模式,可移动光标,使用删除、复制、粘贴

插入模式

按下i、I、o、O等字母进入编辑模式

命令行模式

可以使用相关指令,完成读取、存盘、替换、离开等操作

例:使用vim编写hello.c

查看编辑器

linux03.png
armbian自带gcc和g++,没有python和Java,是有python3的,省事直接用gcc,编写hello.c

执行

linux02.png
输出hello world,文件已生成

模式切换

linux04.png
命令模式下:

:wq——保存并退出
:q!——强制退出不保存
:set nu——设置行号
:set nonu——取消行号设置

一般模式下:

yy:拷贝当前行
4yy:拷贝当前行向下4行
p:粘贴
dd:删除当前行
4dd:删除当前行向下4行
G:定位文档末行
gg:定位文档首行
u:撤销,类似于Windows下的CTRL+Z

还有许多其他快捷方式

常见Linux指令

关机&重启&登录&注销

指令 作用
shutdown -h now 立刻关机
shutdown -h 1 一分钟后关机
shutdown -r now 立刻重启
halt 关机
reboot 重启
sync 把内存数据同步到磁盘
su - 用户名 切换管理员身份
logout 注销用户

注意细节:
1.不管重启或是关机,首先运行sync,虽然会自动调用,小心驶得万年船
2.logout指令在图形运行级别无效

用户管理

Linux是一个多用户多任务的操作系统

只有一个root用户,可以创建许多普通用户

指令 作用
useradd 用户名 添加用户
passwd 用户名 指定、修改密码
userdel 用户名 删除用户,保留家目录
userdel -r 用户名 删除用户以及对应主目录
id 用户名 查询用户信息
su - 用户名 切换用户
whoami/who am i 查看当前用户/登录用户

whoami.png

注意细节:
1.创建用户成功后,自动创建与用户名同名家目录,使用该用户登录,自动切换至该用户目录下
2.useradd -d 指定目录 用户名,为新创建的用户指定家目录
3.从权限高用户切换至权限低用户,无需密码,反之需要
4.切换回原来用户时,使用exit/logout指令

用户组

类似于角色,系统可以对有共性/权限的多个用户进行统一的管理

指令 作用
groupadd 组名 新增组
groupdel 组名 删除组
useradd -g 用户组 用户名 增加用户时直接加上指定组
usermod -g 用户组 用户名 修改用户的组

通过分组方式,给组赋予权限,组内用户都拥有该权限
不指定组,创建同名组,并加入改组
一个用户只能属于一个组?

用户和组相关文件

/etc/passwd文件
user配置文件,记录用户各种信息
用户名:口令:用户标记号:组标记号:注释性描述:主目录:登录shell

oseasy:x:1000:1000:oseasy,,,:/home/oseasy:/bin/bash

/etc/shadow
口令配置文件
登录名:加密口令:……

/etc/group
组的配置文件,包含Linux组的信息

运行级别

0:关机
1:单用户
2:多用户无网络
3:多用户有网络服务
4:保留
5:图形界面
6:重启

常用为3和5

Ubuntu 18.04 LTS图形界面使用init 3后进入多用户有网络服务,但明显出现乱码问题,init 5试图回到图形界面,报错

Failed to open /dev/initctl:****
Failed to talk to init daemon.

似乎就无法调用相关操作和文件了

好在init 6仍然适用,重启进入默认运行级别回到图形界面

找回root密码

对着指令敲,实机操作

帮助指令

man 获得帮助信息

help 获得shell内置命令的帮助信息

man和help的区别?

可通过以下指令自行体会两者区别

man man
help help

拓展:
在Linux下,隐藏文件以.开头
查看目录下的文件使用ls
ls -a列出所有,包括隐藏文件
ls -l单行显示
选项可组合使用,如ls -al,ls -la

文件目录

指令 作用
pwd 显示当前工作目录绝对路径
ls [选项] 显示目录或文件
cd [目录] 切换到指定目录
mkdir [目录] 创建目录
mkdir -p [目录] 创建多级目录
rmdir [目录] 删除空目录
rm -rf [目录] 删除非空目录不提示(删除需谨慎)
rm -r [文件或目录] 递归删除整个文件夹
rm -f [文件或目录] 强制删除不提示
touch [文件] 创建空文件
cp [选项] source dest 拷贝文件到指定目录
mv 移动文件与目录或重命名
目录的创建与删除

linux-dir.png

拓:
绝对路径以根目录为起始目录
相对路径以当前目录为起始目录

cd ~或者cd :回到家目录
cd ..返回上一级目录

cp -r source dest递归拷贝目录
\cp 同名直接覆盖,不需要问讯