step2 . day2 Linux基础命令和常用知识汇总
整理了一下,这个阶段虽然也算嵌入式学习,但是总归是Linux系统知识,这个文件夹是为RHCE考试而准备的知识点整理文件夹,正好也把学过的知识做了一个出版整理,放到里面。
从明天开始,要开始shell脚本编程知识的学习了,基本学完这个,RHCE考试的基础知识也应该差不多了吧
一、工具准备
1.了解Linux系统和Unix和Windows区别
2.Linux成立历史
3.GNU GPL协议,GCC编译器等关键名称
4.安装vmware,配置Linux配置,插入镜像,启动安装。
二、Linux文件系统介绍
Linux文件系统介绍:Linux一切皆文件,遵从FHS(filesystem hierarchy standard)
/ 根目录
/bin 用户命令和二进制目录
/sbin 系统二进制文件
/boot 系统启动相关文件
/etc 系统启动配置文件
/dev 设备文件
/home 用户家目录
/lib 库文件目录
/mnt/hgfs/share 共享目录
三、Linux使用shell的相关知识
1.开关机(开机需要从虚拟机出点击开启此虚拟机)
ctrl + alt + F1 进入到纯命令行
ctrl + alt + F7 回到图形界面
关机重启命令:
sudo shutdown -h now 立即关机
sudo poweroff 关机
sudo shutdown -h +n n 分钟后关机
sudo shutdown -r now 立即重启
sudoreboot 直接重启
sudo shutdown -c 取消关机或者重启
2.打开terminal(关闭terminal点×或者输入exit)
双击图标
Ctrl+alt +t 用户界面下打开terminal
ctrl+shift +n 用户界面再打开一个(相同路径)
chrl +shifr +t 用户界面左右分屏再打开一个(相同路径)
3.terminal开机界面
Linux @ Ubuntu : ~ $
用户名 间隔 主机名 间隔 家目录 普通用户(#为超级用户标志)
4.shell 相关命令(shell是命令行解释器,将用户解析为操作系统可以理解的指令,实现用户
和内核的交互操作多个shell命令可以用;隔开,如果一行写不完 用\表明未结束)
shell命令区分大小写
shell命令三要素(命令 参数 ?)用空格隔开
多个命令用;隔开
一条命令一行写不完用\连接符
whoami 查看用户名
hostname 查看主机名
ls 显示当前目录文件列表
ls -l 查看文件属性(数值表示:如果是目录则表示子目录个数,如果是文件则代表副本个数)
ls -a 查看所有文件包含. ..开头的隐藏文件
ls -lh 文件大小转换为相应数量级
ls -R 文件递归显示
ls -i 显示文件iNode号
注意ls -l后信息解释
bsp -lcd 文件类型 (块设备、套接字、管道、-普通文件、链接、字符设备、文档 )
rwx rwx r-x 文件权限 (r 4 读 w 2 写 x 1 执行)
用户 组 其他用户
u g o a(all)
cd 切换目录(相对路径和绝对路径)
cd cd ~ cd /home/linux 回家目录
cd - 回到上次操作目录
cd ../ 返回上级目录
cd../../ 上上级目录
cd /mnt/hgfs/share 共享目录
pwd 显示当前工作目录
clear 清屏 Ctrl+l
touch 创建文件 文件存在则是修改时间戳
tab 命令自动补全
mkdir 创建目录
mkdir -p 递归创建
mkdir -m 664 hello 创建文件并给权限
cp 拷贝 -arf 强制拷贝
mv 移动或者重命名(相同路径不允许相同文件或目录存在)
rm 文件名 删除,rm *.c 通配符删除许多文件
rm -rf 文件名 删除目录 -r是递归删除 -f是强制删除
echo 打印 默认是从屏幕输入打印到屏幕 >重定向符号 >>追加符
(有双引号为原样输出,没有双引号空格缩减为一个)
-n 转义字符不换行,-e 支持转义字符输出
cat 查看文件内容并在终端打印 -n 显示行号(空行不显示)
nl 1.c 带行号在终端显示,空行显示行号
nl -b a 1.c 空行也带行号
head -n 显示前n行,不带参数默认10行
tail -n 显示倒n行,不带默认10行
more 分页显示文件内容 空格翻页 回车换行 q退出
less 分页显示内容 功能同上,可以输入/查找字符 显示高亮
wc 对文件内容进行统计 -c 字符统计 -w字统计 -l行统计
cut 对字符串进行分割 -d 指定分隔符 -f指定要分割区域
cut -d ":" -f 1 filename 通常结合管道符合前面命令结合使用
| 管道符,将前一个命令的输出作为下一个命令的输入,管道符连接的第一个命令必须有输出才可以 没有输出则没有任何意义
file a.out 查看文件信息
find 查找文件所在路径 参数-name -0664
find ./ -name file.c 在当前目录及子目录中寻找制定文件
grep 搜文件中的字符串
grep "string" 文件 在指定文件中搜索
grep “string” * 在当前目录所有文件下搜索,不包含子目录
grep "string" * -nR 在当前目录所有文件中搜索,包含子目录
* 当前目录下所有文件,-R递归显示,-n显示行号
"^string”以string开头的行,
“string$”以string结尾的行
“^string$”以string开头且结尾的行
“string”所有包含string的行
history 将历史命令打印至终端
history 10 打印10个命令,可以在.bash_history下查看历史命令记录
修改配置文件后要source /.bashrc
`` (Esc键下的按钮)或 $() 命令置换,将一个命令的输出替换成另一个命令的参数
alias 列出当前系统中已经定义好的别名
alias listoft = 'ls /var/cache' 临时定义别名
取消别名的定义 unalias listsoft
修改配置文件.bashrc .profile 永久使用别名:
每次修改完成配置文件后需要执行 source .bashrc 更新配置
通配符
* 匹配任意长度字符
? 匹配一个字符长度
[123] 匹配特定的一个字符
[1-5] 匹配特定范围的一个字符
[][] 匹配两个字符
[^123] 匹配之外字符
输入输出重定向(>输出 <输入)
>file 将内容复制到文件中,清空文件之前内容
ls >file 将ls显示的内容以冲顶先输入到文件中
>>file 为追加
2>file 将出错信息加入的文件中
&> 不区分对错将信息加入到文件
Ctrl+d 结束键盘输入
whereis ls 查找命令所在目录及帮助文档
which ls 搜索命令所在目录及别名信息
info 查看开发软件包或者程序中的额外帮助文档
diff 比较两个文件成差别(只比较文件) diff 1.c 2.c
file 查看文件类型信息(包含架构等信息) file 1.c
date 显示系统时间
sudo date -s 修改系统时间
chmod 修改权限 chmod 0664 hello chmod a-x a.out
chown 修改文件用户名或者所在组
chown 用户名 file
chown 用户名:组名 file
chown root *-R 所有文件的所有者都改为root 包含子目录
chgrp 修改文件所在的组
chgrp 组名 file
su root 从普通用户切换到root超级用户 输入密码不会显示
exit 离开超级用户或者退出terminal
sudo paaswd root 修改超级用户密码
5.vim 编辑器常用命令(vi 文件名,创建并打开 或者打开文件)
vi -o name name 打开多个文件 分屏显示
底行模式
yy 拷贝1行
nyy 拷贝n行
dd 剪切1行
ndd 剪切n行
p 粘贴
u 撤销(反撤销Ctrl+r)
gg =G 对齐(选中后按=)
/要查找的字符 查找字符串
/^查找字符 查找字符并在每行第一次出现位置高亮 shift+# 选中的词高亮
/字符$ 查找字符串并在每行最后一次出现位置高亮
n 下一个
N 上一个
插入模式:
a 光标当前位置后插入
A 光标当前行位插入
i 光标当前位置插入
I 光标当前行首插入
o 当前位置下一行插入行
O 光标挡墙行上插入行
底行模式:
:w 保存
:wq 保存并退出
:x 保存并退出
:wqa 保存并退出所有
:q 退出未修改文件
:q! 强制退出
:n 跳转到n行
:nohl 取消高亮
:set nu 设置行号
:set nonu 设置取消行号
:set mouse = 可拷贝(安装shift鼠标中右键可拷贝)
:set mouse =a 取消拷贝
:60,65y 起止行号 底行模式下的拷贝 剪切等
:%s/旧/新/g, 字符串替换 %可以替换成起止行号(s保留),/g不加表示只替换行首出现位置
vsp 垂直打开另一个文件
vs 水平打开另一个文件
6. 压缩解压命令
gzip /gunzip + file
bzip2 /bunzip2 +file
xz / unxz +file 三种压缩格式
gzip 1.c 以上指令只能对文件进行操作,不能对目录进行操作
tar 对目录进行打包 生成格式位gz bz2 xz
-c 创建压缩
-x解压
-z gz格式
-j bz2格式
-J xz格式
-v 显示过程
-f 制定生产文件名 以上参数可以放在一起使用,f参数需要放到后面
tar -cvf filename.tar.gz filename
tar -czvf dir.tar.gz dir
tar -cjvf dir.tar.bz2 dir
tar -cJvf dir.tar.xz dir
解压 tar -xvf dir.tar 对所有格式解压
tar -xzvf dir.tar.gz
tar -xjvf dir.tar.bz2
tar -xJvf dir.tar.xz
7.软件包安装相关命令
背景:Debian Linux首先提出软件包管理机制 Deb包
Redhat Linux基于这个理念退出了自己的软件包管理机制 Rpm软件包
软件包的命名 rxvt_1%3a2.6.4-14_i386.deb
Filename_Version-Reversion_Architecture.deb
软件名 软件版本 修订版本 体系架构
通过 file a.out查看文件信息
dpkg命令 (离线安装,需要先准备好软件包,软件间的依赖关系要自己准备,需sudo权限)
sudo dpkg -i 软件包名 安装软件 sudo dpkg -i *.deb 多个安装包同事进行安装
sudo dpkg -r 软件名 卸载软件
sudo dpkg -P 软件名 彻底卸载软件 包含配置文件
sudo dpkg -p 软件名 查看软件具体信息
sudo dpkg -L 软件名 查看软件安装到具体目录信息
sudo dpkg -l 查看所有安装的Deb安装包,显示版本号及说明
sudo dpkg -s 查看软件包安装状态
apt-get命令 (在线安装,解决依赖关系,本质是先下载到本地,再安装)
sudo apt-get install 软件包名 软件安装
sudo apt-get remove 软件名 软件卸载
sudo apt-get --purge remove 软件名 彻底卸载包含配置文件
sudo apt-get -reinstall 软件包名 重新安装
sudo apt-get clean 清除下载软件包
sudo apt-get autoclean 自动清除下载软件包
sudo apt-get upgrade 更新所有软件包
sudo apt-get check
sudo apt-get -f install 修复软件依赖关系
sudo apt-cache show gcc 显示软件详细信息
sudo apt-cache policy gcc 查询软件包安装状态 和dpkg -s命令相似
sudo apt-cache depends gcc 显示软件包依赖关系
sudo apt-cache independs gcc 显示软件包被依赖关系
apt安装完的软件deb包存放在:
/var/cache/apt/archives$
文档一般在:/usr/share
可执行文件:/usr/bin
配置文件:/etc
lib文件:/usr/lib
如果软件包安装过程中出现depends...
1.sudo apt-get update 更新索引
2.sudo apt-get f install 更新依赖
3.重新安装软件
8. 文件链接命令(软连接、硬链接)
软链接:是一种文件类型,类似于快捷方式用来记录目标文件路径
ln -s 目标文件(文件或者路径) 链接文件
ln -s /home/linux/step2/day2 share
cd share就可以进入目录
硬链接:类似创建一个别名 iNode号一样,不占磁盘空间,(只能是文件)常用来备份
ln 目标文件 硬链接文件
注意
硬链接不能针对目录操作
在共享文件下 软硬链接不支持创建
在系统任意路径下拷贝链接到共享目录都可以,但是软连接可能失效(打包后传递)
9.设置环境变量命令
env 查看系统中的环境变量
设置临时环境变量
export PATH ="$PATH:/home/linux/step2/day2"
添加永久环境变量
a. 打开/etc/environment配置文件,将对应可执行文件路径添加到后面 用:隔开
b source /etc/environment文件,让文件生效
c.测试使用
echo $PATH 查看环境变量
8.磁盘管理
磁盘管理
sudo fdisk -l 查看系统中磁盘信息
sudo df -hT 查看分区使用情况
sudo mount /dev/设备文件名 挂载目录 手动挂载目录
sudo unmount 挂载目录 取消挂载
df
df -T
df -h
du -h -s
10.用户管理相关命令
35 fengjunhui:x:1000:1000:fengjunhui,,,:/home/fengjunhui:/bin/bash
用户名 密码 UID GID 描述性内容 家目录 shell
sudo adduser 用户名
sudo useradd 用户名 添加用户sudo adduser huiji
sudo deluser 用户名 删除用户
sudo deluser --remove-hoem 连同用户家目录一起删除
sudo userdel 用户名 删除用户
sudo userdel -r 用户名 连同用户家目录一起删除
sudo usermod -l 新名字 旧名字 修改用户名
sudo groupadd 组名 创建组
sudo groupdel 组名 删除组
sudo usermod -a -G 组名 用户名 将用户添加到指定组
sudo gpasswd -d 用户名 组名 删除最内成员
sudo passwd 用户名 修改用户密码
passwd 用户名 修改普通用户密码
su root 临时用户切换
exit 离开临时用户
关键文件
/etc/passwd 存放系统用户的信息
用户登陆时,系统查询这个文件,确定用户的UID并验证用户口令
/etc/shadow 用户密码
/etc/group 存放系统组的信息
74 bj1906:x:1005:linux
组名 密码 GID 所属的组
/etc/skel 创建新用户的时候,拷贝这个目录下的配置文件到用户主目录
11. 网络管理相关命令
1.网络基础
(1)IP : 在网络中主机的唯一标示 表示 : 点分十进制 示例IP地址: 192.168.2.100
(2)组成 : 网络号(主机所在的网络) 192.168.2.0 + 主机号(网络中主机编号) + 100
(3)IPv4(32bit,4byte) unsigned long ,IPv6(128bit,16byte) ::冒分十六进制 xxx
(4)分类
1100 0000
1101 1111
1100 0000
1101 1111
网络号 + 主机号 最高位规定 第一个字节范围
A 1 + 3 0 [0-127] 0000 0000 - 0111 1111
B 2 + 2 10 [128-191] 1000 0000 - 1011 1111
----------------------------------------------------------
C 3 + 1 110 [192,223] 110 0 0000 - 110 1 1111
容纳的主机数:1byte [0-255]
192.168.0.0(表示网络) 192.168.0.255(广播地址)
---------------------------------------------------------
D 组播(NBA) 1110 [224,239] 1110 0000 - 1110 1111
E 未使用(用于测试:)
问题:局域网内,主机间通信,遵从什么呢?
回答:网络号一样,主机号不一样
(5)端口号(vi /etc/services) unsigned short
为了区分一台主机接收到的数据包应该转交给哪个进程来进行处理,使用端口号来区别
TCP端口号与UDP端口号独立
端口号一般由IANA (Internet Assigned Numbers Authority) 管理
众所周知端口:1~1023(1~255之间为众所周知端口,256~1023端口通常由UNIX系统占用)
已登记端口 :1024~49151 (5001 --)
动态或私有端口:49152~65535
一般使用:5001 -- 6666 8888 7777 9999 10000 10001
(6)子网掩码
255.255.255.0 & 192.168.2.3 = 192.168.2.0(网络号)
子网掩码 & IP地址 == 网络号 来判定目标主机和当前主机是否在同一个网络
(~子网掩码) & IP地址 == 主机号
问:一个网络的子网掩码为255.255.255.192,那么该网络中最多能够连接多少台主机?
答:256-192=64,为地址块。
又因为首尾2个IP地址不能用于主机(一个是网络地址,一个是广播地址),所以减去2,等于62个可用主机地址。
(7)网关
192.168.1.1
可以和外网通信的主机ip地址都可以作为网关,习惯用路由器的IP地址作为网关
如果当前的主机判别目标主机不在同一个网络中,向目标主机发送的数据将发送到网关,由网关将数据包转发外网
(8)DNS
域名解析,将域名转换成IP地址 : 域名不变---获取IP
www.baidu.com -> ip --->mac
免费使用的域名服务器 这两个是公共域名解析服务。
8.8.8.8
114.114.114.114
192.168.1.1
(9)MAC地址:网卡的物理地址:唯一表示一个网卡
(10)ARP: rarp
地址解析协议,将IP地址转化为MAC地址
问? 从网页发送数据到对方收到数据都经过哪些协议?
域名--->DNS--->IP ---->TCP/UDP --->IP--->ARP--->MAC ===》xxxx
2.查看IP地址
ipconfig(windows)/ifconfig(linux)
临时修改ip地址
sudo ifconfig eth0 ip地址(192.168.2.200)
sudo ifconfig eth0 down 关闭
sudo ifconfig eth0 up 开启
service network restart
/etc/init.d/networking restart
查看当前的网卡:ifconfig -a
lo: 本地回环地址 , 软件层次的网卡,只能在本电脑上进行回环数据传输
网络适配器
-----------------------------------------------------------------------------------------------
桥接模式 --- 默认使用VMnet0,直接连接到物理网络 单独的IP 实际存在(当前局域网)
-----------------------------------------------------------------------------------------------
NAT模式 --- a. 默认使用VMnet8,提供DHCP服务(动态IP分配)
b. 虚拟机可以和物理主机互相访问,但不可访问主机所在网络的其他计算机,可访问外部网络
本质: window是路由器,Ubuntu是主机 --- (对外不可见)
-----------------------------------------------------------------------------------------------
仅主机模式-- a. 默认使用VMnet1,提DHCP服务 (对外不可见且不可联网,被隔离)
b. 虚拟机可以和物理主机互相访问,虚拟机和当前主机组成的网络下的虚拟机也可以通信,但虚拟机无法访问外部网络,
3.ping 测试网络是否连接
ping 目标主机IP地址 或 域名
ping 192.168.0.1
ping www.baidu.com
ping 192.168.0.42
通过ubuntu配置文件来设置网络方式
1. 修改/etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.1.223
netmask 255.255.255.0
gateway 192.168.1.1
2. 修改/etc/resolv.conf ameserver 8.8.8.8 (修改dns服务器)
3. /etc/rc.local echo "nameserver 8.8.8.8" >> /etc/resolv.conf
重启网络服务: sudo /etc/init.d/networking restart
重启网卡
sudo ifconfig eth0 down
sudo ifconfig eth0 up