Linux

179 阅读12分钟

虚拟机网络连接的三种模式

  1. 桥接模式:像一台真实的计算机一样,和主机在同一网段下,但是容易造成IP冲突
  2. NAT模式:使用主机的IP地址和外部通信
  3. 主机模式:不和外部通信,独立的系统

虚拟机共享文件夹

可以设置虚拟机的文件共享模式,让Linux和Windows共享一个文件夹,但是实际开发中文件的上传和下载是通过远程的方式完成的

Linux基本

输入命令没提示说明成功了

隐藏的文件以 . 开头

cal 显示当前日历信息

ip addr 查看ip地址

目录结构

在Linux中一切皆文件,甚至会将计算机硬件映射成一个文件来管理,远程登录后无界面只有控制台,所以大脑中要有它的目录结构

Linux的文件系统是采用层级式的树状目录结构,在此结构中的最上层是根目录 / ,然后在此目录下再创建其他的目录

bin 存放常用指令

sbin 存放系统管理员使用的指令

home 存放普通用户的主目录

root 存放系统管理员用到的文件

lib 存放最基本的动态连接共享库,类似于Windows里的DLL文件,几乎所有应用程序都需要用到这些共享库

lost+found 存放当系统非法关机后生成的文件,一般情况下时空的

etc 存放系统管理所需要的配置文件,比如装了MySQL后会有个my.conf放在里面

usr 存放用户安装的程序文件,类似于Windows里的Program files目录

boot 存放启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件

proc 这是一个虚拟目录,是系统内存的映射,访问这个目录来获取系统信息

srv service的缩写,存放一些服务启动之后需要提取的数据

sys 这时Linux2.6内核的一个很大的变化,该目录下安装了2.6内核中新出现的一个文件系统sysfs

tmp 存放一些临时文件

dev device的简写,类似Windows的设备管理器,把所有硬件用文件形式存储

media Linux会自动识别一些设备,如U盘光驱等,识别后会把设备挂在到这个目录下

mnt 该目录是用来让用户挂载别的文件系统的,可以将外部存储挂载到mnt上

opt 给主机额外安装软件所存放的目录,如数据库的安装包就可以放到该目录下,默认为空

user/local 这是将软件真正安装到的目录

var 用来存放不断扩充着的东西,习惯将经常修改的目录放在这个目录下,包括日志文件

selinux 是一种安全子系统,他能控制程序只访问特定文件,有三种工作模式,可以自行设置

run 是一个临时文件系统,存储系统启动以来的信息,当系统重启时,这个目录下的文件应该被删掉或清除

远程连接

xshell 连接到Linux,命令操作

xftp 文件传输

Vim

Linux会内置vi文本编辑器,Vim是vi的增强版,可以主动以颜色辨别语法的正确性,有代码补全,编译及错误跳转等功能

模式

  • 正常模式

    • 以vim打开一个文档默认就是正常模式,在这个模式里,可以上下左右控制光标,可以删除字符,或者删除整行,也可以复制粘贴

    • 拷贝当前行 yy ,拷贝当前向下的5行 5yy ,粘贴 p

      删除当前行 dd ,删除当前向下的5行 5dd

    • G 定位到文档 最末尾行, gg 定位到首行

    • 想将光标定位到指定的行 数字+shift+g

    • u 撤销

  • 插入模式

    • 正常模式下按下 I i O o A a R r 中任意字符进入编辑模式,按esc返回正常模式
  • 命令行模式

    • 正常模式下输入 : 或 / 进入命令行模式,这个模式可以提供相关指令,完成读取,存盘,替换,离开vim,显示行号等动作,wq 保存并退出,q 退出,q! 强制退出,并且不保存,按esc回到正常模式
    • / 关键词 即可查询
    • : set nu 和 : set nonu 开启和关闭行号

如何用vim写一个Hello.java?

  1. vim Hello.java
  2. 按下字母 i 进入插入模式
  3. 写代码
  4. 按下esc回到正常模式,再输入冒号 : 进入命令行模式,输入 wq 按enter,保存并退出

关机和重启

shutdown -h now 立刻关机

shutdown -h 1 1分钟后关机

shutdown -r now 立即重启

halt 关机,作用和 shutdown 一样

reboot 立即重启

sync 把内存中的数据同步到磁盘,重启和关机前最好执行一次 sync

用户登录和注销

登录时尽量少用root登录,有最大权限防止误操作,可以先用普通用户登录,再用 su - root 切换成管理员身份

logout 注销登录,注意该指令在图形化Linux系统下无效

用户管理

创建用户

在root用户下输入 useradd 用户名 创建用户,创建成功后会在home目录下创建一个同名目录,也可以自己指定一个目录 useradd -d 指定目录 用户名 创建用户

设置密码

在root权限下, passwd 用户名 给用户设置密码

删除用户

root权限下 userdel 用户名 删除用户,保留home目录里的用户目录

userdel -r 用户名 删除用户和用户目录

查询用户信息

id 用户名

切换用户

su - 用户名 切换到指定用户,高权限切换到低权限用户不需要密码,反之需要

exitlogout 返回到原来的用户时

查看当前用户

whoami 查看当前用户是谁

who am i 显示的是第一次登录的用户是谁

用户组

假如一组用户有共性,可以将他们拉到同一个组中,给组赋权限,这时他们权限都被设置了

若添加了一个用户,没有指定组,系统默认会创建一个和用户名同名的组,组里就他一个

groupadd 组名 添加组

groupdel 组名 删除组

useradd -g 组名 用户名 添加一名用户并将其添加到指定组

usermod -g 组名 用户名 将现有的用户添加到指定组中

和用户组相关的文件

  1. /etc/passwd 文件 记录用户的各种信息
  2. /etc/shadow 文件 口令的配置文件
  3. /etc/group 文件 组的配置文件

指定运行级别

Linux分几种运行级别,常用的是3和5,开发中都是3级别

  1. 关机
  2. 单用户(找回丢失密码)
  3. 多用户状态没有网络服务
  4. 多用户状态有网络服务
  5. 系统未使用保留给用户
  6. 图形界面
  7. 系统重启

init 数字 切换不同的级别

systemctl get-default 查看当前的运行级别

systemctl set-default multi-user.target 设置默认运行级别为3(不常用)

systemctl set-default graphical.target 设置默认运行级别为5(不常用)

帮助指令

man 命令或配置文件 获取帮助信息

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

文件目录指令

pwd 显示当前所在的绝对路径

ls 显示当前目录下的所有目录和文件

ls -a 显示当前目录下的所有目录和文件,包括隐藏文件

ls -l 显示当前目录下的所有目录和文件,以列表形式显示

cd 切换到指定目录

cd ~ 回到自己的家目录

cd / 回到根目录

cd .. 回到上一级目录

mkdir 创建目录

mkdir -p 创建多级目录

rmdir 删除空目录

rm -rf 删除非空目录

touch 创建空文件

cp 拷贝文件cp 选项 文件 目录

cp -r 递归拷贝文件夹里所有的内容,如cp -r /aa/bb/ /cc/dd/表示将bb目录和里面所有内容拷贝到dd目录

\cp -r 覆盖相同的文件且不提示

rm 删除文件或者目录

rm -r 递归删除整个文件夹

rm -f 强制删除不提示

mv 移动文件(目录)或者重命名文件,重命名文件mv a.txt b.txt,移动文件mv b.txt b/c/,移动文件夹mv a/b c/d

cat 查看文件内容,只读,比vim查看更安全

cat -n 查看文件内容,并且显示行号,为了浏览方便,一般会在文件后面加上| more (|是管道符)

more 一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容,more指令中内置了若干快捷键,详见操作说明

操作说明
空格代表向下翻一页
Enter代表向下翻一行
q代表立刻离开more,不再显示该文件内容
ctrl + F向下滚动一屏
ctrl + B返回上一屏
=输出当前行的行号
:f输出文件名和当前行的行号

less 用来分屏查看文件内容,功能与more类似,但是比more更强大,支持各种显示终端,less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据需要加载内容,对于显示大型文件具有较高的效率

操作说明
空格代表向下翻一页
pagedown向下翻动一页
pageup向上翻动一页
/字串向下搜寻字串的功能,有结果后按n:向下查找,N:向上查找
?字串向上搜寻字串的功能,有结果后按n:向上查找 N:向下查找
q离开less这个程序

echo 输出内容到控制台,如echo $HOSTNAME输出主机名

head 用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容,head -n 5 文件为查看文件头5行内容,5可以是任意行数

tail 用于显示文件的尾部分内容,默认情况下tail指令显示文件的前10行内容,tail -n 5 文件为查看文件尾5行内容,5可以是任意行数

tail -f 表示实时追踪文档的所有更新,如tail -f a.txt就可以监控a.txt的变化

> 覆盖,ls -l > 文件的作用是将列表的内容写入文件中(覆盖写),cat 文件1 > 文件2的作用是将文件1的内容覆盖到文件2

>> 追加,ls-al >> 文件的作用是将列表的内容追加到文件的末尾,如echo "内容" >> 文件的作用是将"内容"追加到文件的末尾

ln -s 软链接也成为符号链接,类似于Windows里的快捷方式,ls -s /aa/bb cc/dd 将bb目录的快捷方式创建到dd目录

history 查看已经执行过的命令,history 10查看最近执行的10条指令,!5表示执行曾经执行过的第5条指令

时间指令

date 显示当前时间

date +%Y 显示年

date +%m 显示月

date +%d 显示日

date "+%Y-%m-%d %H:%M:%S" 显示年月日时分秒

date -s "1999-02-08 00:00:00" 设置系统时间

cal 显示本月日历

cal 年份 显示指定年的所有日历

查找

find 范围 选项 从指定目录下向下递归扫描遍历子目录,将满足条件的文件或者目录显示在终端

选项: -name 查询方式 按照指定的文件名查找模式查找文件

​ -user 用户名 查找属于指定用户名所有文件

​ -size 文件大小 按照指定的文件大小查找文件,+n为大于n,-n为小于n,n为等于n,单位有k,M,G

find /home/pan/下载 -name a.txt为查找下载目录下的名为a.txt的文件

find /home/pan/下载 -size -200M为查找下载目录下小于200M的文件

locate 快速定位文件路径,无需遍历整个系统,速度较快,但是第一次查询需要执行updatedb创建locate数据库

locate a.txt表示查找a.txt所在路径

which 用来查看某个指令在哪个目录下,如which ls

grep 过滤查找,往往和管道符 | 结合使用,表示将前一个命令的输出结果传递给后面的命令处理

cat a.txt | grep "3zzz"查找a.txt文件里"3zzz"所在的行,也可写成grep "3zzz" a.txt

cat a.txt | grep -n "3zzz"查找a.txt文件里"3zzz"所在的行及行号,也可写成grep -n "3zzz" a.txt

带上-i可以忽略大小写

压缩解压

gzip 压缩文件,只能压缩成xx.gz的文件

gunzip 解压文件,解压xx.gz的文件

zip 压缩文件或目录

zip -r表示递归压缩,压缩目录

zip -r pan.zip /home/pan表示将/home下的pan目录递归压缩成pan.zip

unzip 解压文件或目录

unzip -d指定解压后文件的存放目录

unzip -d /home/pan/temp /home/pan.zip表示将/home下的pan.zip解压到/home/pan/temp文件夹中去

tar 既可以用来压缩也能用来解压,压缩后的文件是 XXX.tar.gz 的文件 -c 产生.tar打包文件 -v 显示详细信息 -f 指定压缩后的文件名 -z 打包同时压缩 -x 解包.tar文件

tar -zcvf nb.tar.gz a.txt b.txt表示将a.txt和b.txt压缩成nb.tar.gz

tar -zcvf pan.tar.gz /home/pan表示将home下的pan目录压缩成pan.tar.gz文件

tar -zxvf nb.tar.gz表示将nb.tar.gz解压到当前文件夹

tar -zxvf nb.tar.gz -C /home表示将nb.tar.gz解压到/home下面,注意是-C

40