2.2.2 Linux目录结构
/:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入"/home",你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。
/bin: /usr/bin: 可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。
/boot:放置linux系统启动时用到的一些文件,如Linux的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub。
/dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱 mount /dev/cdrom /mnt。
/etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有 /etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d。
/home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,~表示当前用户的家目录,~edu 表示用户 edu 的家目录。
/lib: /usr/lib: /usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助。
/lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下。
/mnt: /media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载。
/opt:给主机额外安装软件所摆放的目录。
/proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有 /proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等。
/root:系统管理员root的家目录(宿主目录)。
/sbin: /usr/sbin: /usr/local/sbin:放置系统管理员使用的可执行命令,如fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root使用的命令,一般用户只能"查看"而不能设置和使用。
/tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下。
/srv:服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内。
/usr:应用程序存放目录,/usr/bin 存放应用程序,/usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local: 存放软件升级包。/usr/share/doc: 系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录。/usr/include:存放头文件。
/var:放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log,/var/log/message:所有的登录文件存放目录,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其PID存放在该目录下。
绝对路径: 从根目录开始,指定一个位置、文件
相对路径:从当前进程工作目录位置开始,指定一个位置、文件。
shell:命令解析器。默认运行在终端当中的程序(进程)。 ------ unix ------ born
bash:born again shell。 Linux版的shell。命令解析器。
文件:
在Linux操作系统中,所见皆文件。
用户:
Linux 是一款多用户多任务的分时复用操作系统。
家目录:宿主目录。
每个用户不同。------ cd 回车 所到的目录。
ls -l 命令:
文件属性 :10 个字符,分为 2组。
第一组: 第一个字符。 代表文件类型: 7种 ------ Linux下不以文件后缀名,作为区分文件类型的依据。
普通文件: -
目录文件:d
软链接文件:l ------ 相当于 windows 快捷方式。
字符设备文件:c ------ 伪文件(不占用磁盘存储)
块设备文件:b ------ 伪文件
套接字文件:s ------ 伪文件
管道文件:p ------ 伪文件
unknown 文件。
第一组: 9 个字符。分3组。------ 文件所有者、文件所属组、其他人 : r、w、x
硬链接计数: 有多少个 文件公用同一个 inode 编号
创建硬链接:ln 旧文件名 新硬链接文件。
特征:文件和硬链接文件之间,除文件名不一样以外,其他信息完全一致。并能实时同步。
文件所属用户: 谁创建默认属于谁
文件所属用户组: 谁创建默认属于该用户所在用户组。 用户------同名用户组
文件所占存储空间大小(字节):文件:实际大小。 目录文件:4k整数倍
文件创建、最后一次修改时间: 初创文件:实际创建时间。修改过的文件,修改时间。
文件名。
ls 常用参数:
-a :常隐藏文件。 ------ 以 "."开头的文件或目录
-d:查看目录本身属性。
--help:查看帮助信息。
TAB键:自动补齐。histroy:历史命令。man 帮助手册。
重定向:
> 重定向到指定文件,文件不存在自动创建。存在覆盖源文件。
>> 将内容追加到指定文件,文件不存在自动创建。存在不覆盖
分屏读取大文件:
more、 less、cat、tac
管道:
"|" 将 左边的命令执行结果,写给右边。再执行右边的命令。
ps aux | grep xxx ------ 筛选系统中,所有正在运行的 xxx 进程。
cd: change directory ------ 进入某个目录。
cd /bin 绝对路径
cd .. 上一级目录
cd ./ 当前目录
cd ~ 回用户宿主目录(家目录)
cd 回车 回用户宿主目录(家目录)
cd - : 切换到上一次工作过的目录中。
pwd: 查看当前进程工作目录位置
终端提示符的语法规则:
用户名@主机名:当前shell进程工作目录$/# ------ $:普通用户、#:管理员。
创建目录:
mkdir 目录名
-p: 递归一次性创建多个目录
删除文件和目录:
rm -r r: 递归删除目录子内容。
★ rm 命令删除的文件、目录不易恢复 !!!!!!!!!!
ln命令:
硬链接: ln 源文件 连接文件
不能给目录创建硬连接。
软连接: ln -s 源文件 连接文件
等同于windows下的快捷方式。建议使用"绝对路径创建软链接"
可以给目录创建软连接。
目录文件、拷贝:
-r: 递归拷贝目录内容。以执行命令时,创建新文件、目录
-a: 递归拷贝目录内容。保留文件原有属性。
mv命令:
移动文件: mv 待移动文件名 目录位置。
改名文件: mv 待改名文件名 不存在的文件、目录名
压缩命令:
gzip:
不能打包压缩!不能保留源文件。不能压缩目录
bzip2:
不能打包压缩!不能压缩目录
tar:
打包。
====结论:
压缩: tar -zcvf xxx.tar.gz 打包压缩材料。 tar -jcvf xxx.tar.bz2 打包压缩材料。
z: gzip格式压缩 j: bzip2 格式压缩
c: 创建压缩文件
v: 输出压缩详细
f: 指定压缩后的文件名
.tar.gz : .tar.bz2: 不具有语法强制性。但是推荐使用!
解压缩:tar -zxvf xxx.tar.gz tar -jxvf xxx.tar.bz2 。
zip:
压缩:zip -r 压缩包名(没有.zip后缀) 打包压缩材料。
解压缩: unzip -d 解压缩位置目录 xxxzip(待解压缩文件)
rar:
压缩:rar a -r 压缩包名.rar(后缀可加可不加) 打包压缩材料。
解压缩: rar x 待解压缩包名.rar
切换用户:
su 用户名: 切换到指定用户登录,不修改工作目录位置。
su - 用户名: 切换到指定用户登录,修改工作目录位置到 该用户的 宿主目录。
su - root:切换root用户登录,修改工作目录位置到 root 的 宿主目录。
su root:切换root用户登录,不改变工作目录位置 等价于( sudo su )
sudo关键字:临时获得一次root用户权限。执行完后续命令,该权限失效。
添加新用户:
sudo adduser 新用户名
删除新用户:
sudo deluser 用户名
修改文件所有者:
chown 新用户名 待修改用户的文件名
添加新用户组:
sudo addgroup 新组名
删除新用户组:
sudo delgroup 组名
修改文件所属组:
chgrp 新组名 待修改组名的文件名
chmod:
修改文件、目录访问权限。
r、w、x : 4/2/1
示例: r-x-w-r--: 5 2 4
chmod:
修改文件、目录访问权限。
r、w、x : 4/2/1
示例: r-x-w-r--: 5 2 4
r、w、x 对于目录、文件的含义是否相同??
文件 目录
r: 查看文件内容 目录的内容(目录项)可以被查看
cat、more、less、tac ls、vim(读)
vim(读) gedit(读)
w: 修改、删除 文件内容 目录的内容(目录项)可以被修改、删除、增加
cat> / can >> mv、cp、rm、rmdir、mkdir、touch。。。
vim(写、删) /gedit(写、删除)
x: 该文件可以运行。 该目录可以被进入
cd
进程信息查看:
ps aux | grep xxxx
top ------ Linux下的 任务管理器。
终止进程:
kill -9 欲终止的 进程ID (可以通过 ps aux | grep 获取) 9 ------ SIGKILL
前台、后台:
是否能与用户完成交互。
& : 将进程放置到后台执行。
jobs: 查看后台运行的进程
fg:恢复后台一个进程到前台执行。 + 优先级高。 指定 某一个进程恢复到前台来。 用 jobs查看的 "进程编号"
多终端热键:
Ctrl + Alt + ↓ 或 ↑ ------ 虚拟一块新桌面
Ctrl + Alt + T ------ 唤醒一个新终端(独立)
Ctrl + shift + T ------ 在一个终端里,创建多个shell标签。
ifconfig:
查看当前网卡相关信息: ------ IP地址。
临时设置IP地址:
sudo ifconfig ens33 新IP
系统重启失效。
sudo ifconfig ens33 up/down 使用命令 网卡启动、关闭
永久设置IP地址:
图形: 设置------网络------有线连接 + ------ IPv4 ------ 手动 ------ 填入地址、子网掩码 、网关 ------ "添加"
网址: 网段。IP里面倒数第二字段。
子网掩码: 255. 255.255. 0
网关:网段确定后,网关即为该网段的 第一个ip地址。192.168.xxx.1 ------ 192.168.xxx.255 (广播地址)
命令:------ 通过修改配置文件,达到永久修改IP的目的。
修改 /etc/network/interfaces 文件。 添加 网址、子网掩码、网关。 指定DNS服务器
ping :
发送一个测试数据包,到指定的 IP地址。测试是否 畅通。
Ctrl + c 终止。
-c 参数 指定发数据包的 次数。
虚拟机网络设置:
桥接模式:
路由器给 虚拟 Linux 单独分配一个 IP地址。与 windows 所在同一网段。
NAT模式:
Linux 虚拟机借助 windows 网卡,访问外网。linux 和 windows 公用 访问外网的iP。
find 命令:
格式: find 待搜索目录 参数 "关键字"/ '关键字'
-name:
find /home/itcast/go_1 -name "*.soft" ------ 在目录中找 .soft 结尾的文件。
-type:
f(普通文件)、d、l、c、b、p、s
find /run/ -type "s" ------ 在目录中找 socket 文件。
-size:
区范围时: 两个范围 之前都有加 -size 关键字。
+ : 大于、 - : 小于
单位:
M 只支持大写。
k 只支持小写。
无单位------默认单位是 512B。
-maxdepth:
指定搜索层级深度。 放置于其他参数之前。
find -maxdepth 1 -type 'f' -name "*.go" ------ 只在当前目录下,搜索 .go 文件、目录。
-exec:
对搜索结果执行命令
find -maxdepth 1 -type 'f' -name "*.go" -exec ls -l {} \;
-xargs:
对搜索结果执行命令
find -maxdepth 1 -type 'f' -name "*.go" | xargs ls -l
特例:如果文件名中含有空格, 如:文件名:'abc xyz'
find -maxdepth 1 -type 'f' -print0 | xargs -0 ls -l
grep:
grep -r/-R "love" 目标目录位置。
递归的在指定目录中,找寻包含某字符串的 文件。
结合find、xargs、grep:
find -maxdepth 1 -type 'f' -print0 | xargs -0 grep "love" -n
找寻当前目录下,包含 "love"的文件,并显示在 多少行出现 (-n 行号)。
vim(vi)编辑器: shell -- bash vi ------ vim
三种工作模式:
命令模式: 默认进入vim的工作模式。该种模式下,用户所有输入均被当成命令。
编辑模式: 编写模式。写代码、文本内容。。。
末行模式: 在 命令模式下, 按":"进入末行模式。该种模式下,用户所有输入均被当成 末行命令。
光标移动(命令模式);
h:左
j:下
k:上
L:右
转换编辑模式:
i:向光标所在位置的 "前面"插入数据!
a:向光标所在位置的 "后面"插入数据!
o:向光标所在位置的 "下一行"插入数据!
s:以删除光标位置一个字符为代价,修改工作模式 ------ 文本编辑模式。
O:向光标所在位置的 "上一行"插入数据!
I:向光标所在位置的 "行首"插入数据!
A:向光标所在位置的 "行尾"插入数据!
S:以删除光标位置一整行为代价,修改工作模式 ------ 文本编辑模式。
复制、粘贴:
yy:复制光标所在行。
Nyy:复制光标所在往后的N行(包含本行)。
p:粘贴至光标所在位置,下一行。
P(大写):粘贴至光标所在位置,上一行。
yw:将光标放置于单词的首字符上, 复制一个单词。
区域复制:将光标放置于待复制区域的首字符上, 按"v"(左下角出现 "可视"提示)使用 h,j,k,l 选择复制区域。
剪切、粘贴:
dd:剪切光标所在行。
Ndd:剪切光标所在往后的N行(包含本行)。
p:粘贴至光标所在位置,下一行。
P(大写):粘贴至光标所在位置,上一行。
dw:将光标放置于单词的首字符上, 剪切一个单词。
区域剪切:将光标放置于待剪切区域的首字符上, 按"v"(左下角出现 "可视"提示)使用 h,j,k,l 选择剪切区域。
d0:从光标所在位置,删除到 行首。
d$(D): 从光标所在位置,删除到 行尾。
删除:
同剪切。
字符操作:
x:删除光标选中字符
r:光标选中字符, 按"r", 按目标字符。 可以将 原字符,替换为 目标字符。
跳转到指定行:
命令模式:
gg:第一行
G:最后一行
gg=G 自动排版。
NG:跳转到 第 N 行
vim hello.go + 56 ------ 打开文件同时,跳转到 56 行
末行模式:
:N 回车。 ------ 跳转到 第 N 行
查找:
1. 想象一个单词查找。 输入"/"(显示在末行的位置), 再输入要查找的单词。
2. 查找一个已经看到的单词。将光标放在该单词任意一个字符,"*"向后找, "#"向前找。 "n"代表下一个。
撤销:"u"
反撤销:ctrl - r
替换:------ 末行模式。
1. 单行替换: :s/旧单词/新单词。
一行有多个"旧单词", 使用 "g"。否则只替换一行的首个。
2. 通篇替换: :%s/旧单词/新单词。
一行有多个"旧单词", 使用 "g"。否则只替换一行的首个。
3. 指定区域替换: :n,ms/旧单词/新单词。
替换从n行开始,到m行结束,出现的"旧单词", 一行有多个"旧单词", 使用 "g"。否则只替换一行的首个。
vim的配置:
用户配置: 用户宿主目录下,创建 .vimrc (隐藏文件),写入 配置项。
系统配置:sudo vi /etc/vim/vimrc (非隐藏文件)。写入 配置项。
测试某软件是否安装:
sudo aptitude show 软件名 ------ "未安装":根据提示安装。
------ "已安装"。
Linux 远程 登录 Linux:
ssh -l 目标主机用户名 目标主机 iP地址。 ( 或 ssh itcast@127.0.0.1 )
------ 输入目标主机 密码。
登录到,目标主机的 "家目录"
Linux 远程 发送文件给 Linux:
scp -r 目标用户名@目标主机名:目标存储的绝对路径 (例子: scp -r ./test123.mp3 zhangsan@192.168.35.221:/home/zhangsan/test )
------ 输入目标主机 密码。
文件 直接存在在目标主机的指定目录下。 ( test123.mp3 存储在 zhangsan用户的/home/zhangsan/test目录下。)