kernel->运行期库->shell->实用工具程序
EXT3、EXT4是当今Linux操作系统默认使用的文件系统类型
SWAP类型的文件系统只是在Linux交换分区中被使用
Linux操作系统至少需要两个分区:跟分区(EXT4格式)和内存交换分区(SWAP格式)
/分区:容纳跟文件系统
SWAP分区:用于内存扩展
文件名:可由字母、数字、下划线、圆点等组成
文件类型包含:普通文件、目录文件、链接文件、设备文件等
文件类型属性:用字符体现 ls -l 命令查看
- 代表普通文件
d 代表目录文件
l 代表链接文件
b 代表块设备文件
c 代表字符设备文件
p 代表管道文件
Linux的根目录结构
/
/sbin /lib /etc /dev /root /usr /var 等
Linux的磁盘分区
磁盘分区的种类
主分区(小于3个)+ 扩展分区(扩展分区里有很多逻辑分区)<=4
磁盘分区的表达
/dev/sda1 代表第一个主分区
/dev/sda5 代表第一个逻辑分区
/*用文件来表示硬件设备*/
(/dev/sda5中的dev 所有硬件设备文件的目录)
(/dev/sda5中的sd 为硬件设备的代号,hd代表IDE并口设备,sd代表SCSI,SATA等的高速串口设备)
(/dev/sda5中的a 同类型设备的编号,a代表第一个硬盘,b则代表第二个硬盘,可类推)
(/dev/sda5中的5 分区号)
$ # command [option] [arguments] 回车提交
用户 命令名 选项 参数 回车提交
例子:
$ ls -l /home
man 手册页:
man db //安装命令帮助
man //阅读帮助手册页
man --help //获取快捷帮助信息
info //阅读帮助信息页
help //查看内部命令(子命令 内部命令 内建命令)的帮助信息
例子:
ls //缺省方式ls
ls /home //默认方式ls
ls -l /home //详细方式ls
man ls //查看ls
上下键翻页
/-l 回车 //查看-l的匹配
n //查看下一个匹配
q //退出帮助
ls -a //查看隐藏的文件
info ls //官方化查看ls帮助,如果man没有可以用info
type pwd //查看pwd命令是内部还是外部命令
help pwd //查看内部命令pwd
ls --help //ls的快捷帮助
路径是搜索到达文件所经历的目录途径
相对路径(从当前目录开始表达的路径)
绝对路径(从根目录‘/’开始表达的路径)
ls //目录内容显示
ls -l //列示文件和目录条目
ls -d //列示当前条目的自身信息
ls -ld
cd //切换目录~
pwd //当前目录显示
mkdir //目录新增
mkdir -p //递归创建多层目录
cp //将源目录拷贝到目标目录下,支持拷贝的同时改名
cp -a //全部拷贝
cp -f //强制拷贝
rmdir //空目录删除
rmdir -p //递归删除多层空目录
rm -rf //-r 递归删除目录,-f强制删除目录
例子:
mv a b //a文件改为b文件
mv a b/a //a文件移动到b下
mv a b/c //a文件移动到b下的同时改名为c
目录操作例子:iotek用户
ls -l
pwd //显示当前目录路径
ls -ld . //当前目录详细信息(相对路径)
ls -ld /home/iotek //当前目录详细信息(绝对路径)
cd ~ //回到home目录
cd //回到home目录
cd .. //回到上级目录
mkdir a b c //同时创建同一层的目录a b c
mkdir -p d/e //同时创建递归目录d/e
rmdir a //删除空目录
rmdir -p d/e //删除d/e空目录
mkdir b/f //b已经是存在的目录可以不用-p选项
cp test.txt b/f //把test.txt拷贝到b/f下
rm -rf b/f/test.txt //删除test.txt
rm -ri b //提示方式来删除文件
cp -a aa bb //把aa拷贝到bb下
cat //全屏显示 可以同时显示多个文件
more //显示一屏(空格键翻页)
less //显示一屏(上下键翻页)
head -n //指定显示前n行
tail -n //指定显示后n行
tail -f //查看尾部最新信息
grep -v //反向筛选不含指定关键词的行
grep //正向筛选包含指定关键词的行
例如:
cat
hell
Ctrl + d //退出
cat test.c //假设test.c文件存在
cat -t test.c //显示Tab特殊字符
more test.c
空格键下一屏 //只能向下看
q //退出
less test.c
上下键
q //退出
head -6 test.c //看前面的6行
tail -6 test.c
echo "hello" >>test.c //添加到test.c
tail -f test.c //查看最新的尾部(适合看日志文件)
grep iotek test.c //查看test.c中有iotek的行
grep -v iotek test.c //查看test.c中没有iotek的行
grep -i iotek test.c //大小写不明感查看test.c中有iotek的行
grep -r "iotek" a //在a目录下查找所有的写有iotek文件
touch //若文件不存在,则创建新文件
//若文件存在,则更新文件的时间戳到当前系统时间
cp //缺省只拷贝文件
cp -a //拷贝文件和目录
cp -i //提示拷贝时是否覆盖
例子:
touch test.c //创建空的文件
cat test.c
echo "hello">>test.c
cat test.c
ls -l test.c
touch test.c //文件存在,则更新文件的时间戳到当前系统时间
ls -l test.c
tail -f test.c
rm //缺省删除指定的文件
rm -i //提示确认的将要被删除的内容
rm -r //递归删除指定的文件或目录
rm -f //强制删除指定的文件或目录,无论其是否存在
例子:
rm test.c tes.c //同时删除test.c tes.c
rm -i exemples.c //提示方式删除
mkdir a/b
rm -ri a //递归+提示方式删除
mv //文件的移动改名
find //文件查找
which //查找系统命令文件
locate //系统文件的快速查找
例子:
mv test.c b/ //test.c移动到b目录下
ls b
mv b/test.c test1.c //b/test.c移动到当前目录下,并改名为test1.c
ls
ls b
find . -name "a" //在当前目录查找名为a的文件
find / -name "a" //从根目录查找a文件
which cc //查找系统命令文件cc
locate cc //索引方式查找系统文件
vim基础操作:
//命令模式
//可编辑模式
//末行模式
例子:
i //插入模式(当前插入)
o //插入模式(下面插入)
O //插入模式(上面插入)
insert //替换模式
:wq //保存退出
:w test.c //当前目录下创建新文件test.c并写入
:q //退出
2yy //复制2行
p //粘贴到下面
P //粘贴到上面
3dd //删掉3行
/io //查找io (n下一个 N上一个)
:s/io/IO/gc //当前行提示方式替换io为IO
:%s/io/IO/gc //全篇提示方式替换io为IO
vim高级操作:
vim ~/.vimrc //设置vim
例子:
:set nonu //不显示行号
:set nu //显示行号
:13 //跳转到13行
u //撤销
U //撤销10步
Ctrl + r //回做
:q! //不保存退出
/*多文件并发*/
vim t1.c t2.c t3.c //同时编辑多个文件
:args //显示已经打开的文件
:next //下一个文件
:prev //上一个文件
:last //最后一个文件
:first //第一个文件
tar //缺省仅仅打包归档,不进行文件压缩
tar -c //创建归档文件包
tar -x //释放归档文件包
tar -t //查看归档文件包
tar -v //显示归档包操作过程信息
tar -f //指定归档包文件名
例子:
tar cvf guidang.tar *.c *.h //当前目录下所有的.c和.h文件进行归档
tar tvf guidang.tar //查看guidang.tar有哪些文件
tar xvf guidang.tar -C aa/ //将guidang.tar释放到aa目录下
tar -z //*.tgz格式压缩
tar -j //*bz2格式压缩
zip //压缩zip
unzip //解压zip
7z -a //添加文件到压缩包
7z -e //释放压缩包中的文件到当前目录
7z -l //列示压缩包中的子文件列表
7z -d //删除压缩文件中的某个子文件
7z -t //测试压缩文件的完整性
7za //单独的可执行文件,负责实现7zip压缩和解压的双向操作
例子:
tar czvf ysb.tgz *.c *.h //压缩包
tar tzvf ysb.tgz //查看压缩包
tar xzvf ysb.tgz -C bb/ //压缩包解压到bb目录
tar cjvf YSB.bz2 *.dev *.c *.txt
tar tjvf YSB.bz2
tar xjvf YSB.bz2 -C cc/ //解压到cc目录
zip ys.zip *.deb *.c *.txt //压缩
cd dd/
unzip ys.zip //zip只能当前目录解压缩
sudo apt-get install p7zip-full //安装7z
7z -a ys.7z *.deb *.txt *.c //压缩
7z-l ys.7z //列显
7z -e ys.7z //解压到当前目录
7z -d ys.7z test.c //删除压缩包中的test.c
7z -l ys.7z
ar //归档程序的目标代码文*.o到静态库文件*.a
ar -r //添加目标代码文件到静态库文件中
ar -x //提取目标代码文件从静态库文件中
ar -t //查看静态库文件中的目标代码列表
ar -v //显示详细信息
ar -d //删除目标代码文件从静态库文件中
例子:
ar tv libsupp.a //详细查看libsupp.a的文件
ar xv libsupp.a //提取libsupp.a文件
ar rv libsupp.a add.o //将add.o添加到静态库libsupp.a中
ar dv libsupp.a add.o //将add.o从静态库libsupp.a中删除
盘符和设备挂载
设备挂载命令
设备卸载
例子:
ls /mddia //系统默认挂载设备目录
/*光盘手动挂载*/
mount -t iso9660 /dev/cdrom /mnt //将dev/cdrom设备挂载到/mnt目录下
/*光盘iso镜像文件挂载*/
//将mycd.iso放到loop回环设备,挂载到/media目录
mount -o loop -t iso9660 mycd.iso /media
例子:
sudo mount -t iso9660 /dev/cdrom /mnt //光盘手动挂载
ls /mnt
sudo mount -o loop -t iso9660 mycd.iso /home //光盘iso镜像挂载
/*FAT32文件系统的U盘手动挂载*/
mount -t vfat /dev/sdb1 /mnt
/*NTFS文件系统的U盘手动挂载*/
mount.ntfs /dev/sdb1 /mnt
例子:
sudo mount /dev/sdc1 /home/iotek/a
ls -l /home/iotek/a
mount.ntfs /dev/sdd1 /mnt/usb
umount -a //卸载当前所有的非启动挂载挂载项
umount /mnt //卸载/mnt目录
umount /dev/sdb1 //卸载/dev/sdb1设备
例子:
sudo umount /home/iotek/a //卸载某个目录
sudo umount /dev/cdrom //卸载光盘,挂载到某个目录的文件也被卸载
sudo umount -a //卸载所有设备
apt-get //APT软件包管理命令
apt-get download //软件包下载
apt-get install //软件包安装
例子:
sudo apt-get download vim //当前目录下载vim软件包
sudo apt-get install vim //安装vim
sudo apt-get update //更新软件列表
sudo apt-get upgrade vim //升级vim
dpkg -i //离线deb软件包安装
dpkg -r //离线deb软件包卸载
例子:
sudo dpkg -i minicom.deb //安装minicom.deb
sudo dpkg -r minicom //卸载minicom
ps //缺省仅显示当前shell进程本身
ps -aux //a 显示关联终端的所有进程信息
//u 显示所有有效用户的进程信息
//x 显示没有控制终端的进程信息
ps -ef //e 显示所有进程信息
//f 以完全格式来显示进程信息
例子:
ps
ps -aux
ps -ef
pstree //缺省显示由当前所有进程所构成的进程树信息
pstree -p //附加显示进程号的方式来显示进程树
top //缺省显示当前占用cpu资源最多的所有进程信息(动态更新)
top -p //仅显示指定进程号进程的资源占用情况
例子:
top
q //退出
top -p 5 //查看一个5号进程
q
top -p $$ //查看当前进程
kill //缺省发送TERM信号给指定进程
kill -l //选项"-l"表示查看所有系统支持的信号
sudo kill -9 //发送中止该进程的信号
sudo kill -9 $$ //发送中止该进程的信号
killall //缺省发送TERM信号给指定进程名的进程
例子:
kill -l
sudo kill -9 $$ //结束当前进程
killall -9 gedit //结束gedit(名称)的进程
gedit //打开gedit这个软件
pidof gedit //查看gedit(名称)进程号
clear //清屏命令
reboot //重启
halt //关机
shutdown //关机
例子:
clear //将当前行置顶
sudo reboot //重启
shutdown --help //查看文档,指定多少秒系统关机
cat /proc/meminfo //系统内存硬件信息查看
cat /proc/cpuinfo //系统CPU硬件信息查看
uname -a //操作系统信息查看
hostname //主机名查看
crontab //计划任务查看与设置
例子:
man cron //查看cron
crontab -e //编辑cron
sudo service cron restart //启动cron
crontab -h //查看cron
crontab -ri //结束计划任务
crontab -l //查看当前的计划任务
free //缺省以字节为单位显示内存信息
free -s //指定的间隔秒数显示内存信息
例子:
free
free --help
free -m //以M为单位显示内存
free -s 5 //每隔5秒显示内存
Ctrl C //结束
df //缺省以字节为单位显示磁盘文件系统的空间使用
df -h //以人性化方式显示
du //缺省以字节为单位显示文件空间占用的详细报告
du -s //概括描述文件空间占用情况
du -h //以人性化方式显示
例子:
df
df -h
df -h /home
du /home //查看home下的所有信息
du -s /home //概括显示显示home的信息(以字节为单位)
du -sh /home //概括显示显示home的信息(以M为单位显示)
sudo fdisk -l //查看磁盘分区
fdisk -help //查看磁盘分区设置
例子:
sudo fdisk -l
sudo fdisk /dev/sdb //进入/dev/sdb设置分区
ping 目标地址 //缺省持续测试当前主机至目标主机的网络连通性能
ping -c 目标地址 //指定发送ICMP_REQUEST的包计数
例子:
ping 127.0.0.1
ping -c 6 127.0.0.1 //6次ping
ping www.baidu.com //ping域名
ifconfig //查看网络接口详细信息
//临时设置网络接口相关参数
//缺省查看所有连接着 的网络接口地址信息
ifconfig -a eth0 //查看某块网络接口的地址信息(eth0表示第一块网卡)
sudo ifconfig etho 192.168.1.1 netmast 255.255.255.0 //获取特权设置网络接口地址
ip 子网掩码
例子:
ifconfig
nslookup //域名地址解析命令
例子:
nslookup www.iotek.com.cn //域名->地址
nslookup 8.8.8.8 //地址->域名(有些不支持)
route //查看当前主机的路由设置信息
//支持设置主机的静态路由信息
//缺省检测和显示路由信息
route -n //简单显示缓存于主机的路由信息
例子:
route //查看路由表
route -n //查看缓存中的路由表
sudo route add default gw 192.168.1.1 //添加一条网关
route -n
sudo route del default gw 192.168.1.1 //删除一条网关
route -n
netstat //查看当前网络统计
//缺省显示简单网络统计信息
netstat -a //显示包含监听信息的所有网络统计信息
netstat -t //仅显示与TCP协议相关的网络统计信息
例子:
netstat
netstat -a
netstat -t
netstat --help
例子:
sudo useradd -m wzy //添加wzy用户(-m 添加用户的家目录)
ls /home //查看home目录写的用户目录
sudo passwd wzy //设置wzy用户密码
su wzy //wzy用户登录
exit //用户退出
sudo userdel -r wzy //删除wzy用户(-r 删除用户所有目录)
whoami //查看当前用户
who //查看所有登录用户
id //用户id查看(-u 仅显示当前有效用户)
3.用户切换
su wzy //切换到wzy用户
sudo -i //切换到root用户
sudo //用户临时获取管理员权限
例子:
whoami //查看当前用户为iotek
sudo useradd -m wzy1 //添加wzy1用户(-m 添加用户的家目录)
sudo passwd wzy1 //设置wzy1用户密码
su wzy1 //切换到wzy1用户
sudo wzy //此时wzy1不在sudoers文件中(待解决)
exit //退出wzy1
sudo -i //切换到root用户
gpassd -a wzy1 //将用户wzy1加入到sudo组中(已解决)
exit //退出wzy用户
sudo -i //进入root用户
exit //退出root用户
sudo usermod -L 用户名 //用户加锁
sudo usermod -U 用户名 //用户解锁
例子:
sudo usermod -L wzy1 //锁定wzy1用户
whoami //假设查看当前用户为iotek
su wzy1 //切换到wzy1用户失败,因为wzy1用户已经被锁定
sudo -i //iotek切换到root用户
whoami //查看当前用户为root用户
su wzy1 //root用户切换到wzy1用户
whoami //查看当前用户为wzy1,因为root用户权限高
exit //退出wzy1用户回到root
passwd wzy1 //root修改wzy1密码
exit //退出root回到iotek
whoami //查看当前用户为iotek
su wzy1 //iotek切换到wzy1,此时成功,因为wzy1密码被root修改,自动解锁wzy1
sudo usermod -L wzy1 //锁定wzy1
whoami //查看当前用户为iotek
su wzy1 //切换到wzy1失败,因为wzy1已经被锁定
sudo usermod -U wzy1 //解锁wzy1
su wzy1 //切换到wzy1成功,因为wzy1已经解锁
exit //退出wzy1,回到iotek
/etc/passwd //用户证号文件
/etc/shadow //用户影子密码文件
例子:
less /etc/passwd //查看账号
sudo less /etc/shadow //查看密码(加密的密码)
groupadd -g 指定新用户组的gid 用户组名
groupdel 用户组名
例子:
sudo groupadd user01 //添加用户组user01
tail /etc/group //查看组的组号
sudo groupdel user01 //删除用户组user01
tail /etc/group //查看组的组号已经没有user01
sudo groupadd -g 1005 user02 //添加指定组号1005的用户组user02(注意指定的组号不能重复)
tail /etc/group //查看组的组号,有1005的user02
sudo groupdel user02 //删除用户组user02
tail /etc/group //查看用户组已经没user02
groups //缺省查看当前用户所在的所有用户组
//指定用户名时,查看指定用户所在的用户组
sudo gpasswd -a 用户名 用户组 //-a 用于将新增用户加入组群
sudo gpasswd -d 用户名 用户组 //-d 用于将用户从组群中删除
例子:
whoami //查看当前用户为iotek
groups //查看组群有bancai
sudo gpasswd -a iotek bancai //将iotek用户加入到bancai组中
newgrp bancai //将bancai成为有效组(bancai到了组群中的第一个位置)
whoami //查看当前用户为iotek
groups //查看当前组群可以看到bancai到了第一个位置
touch test.out
ls -l //可以看到test.out的用户为iotek 组名为bancai
sudo gpasswd -d iotek bancai //将iotek从bancai组中删除
/etc/group //用户组账号文件
/etc/gshadow //用户组影子文件
例子:假设有bancai组
less /etc/group //查看用户组账号
sudo less /etc/gshadow //查看用户组影子文件
sudo gpasswd -R bancai //限制bancai组的被访问权限
ls -l 文件名 //查看文件属性
ls -ld 文件目录 //查看文件目录属性
文件权限描述:
权限项 读 写 执行 读 写 执行 读 写 执行
字符表示 r w x r w x r w x
权限分配 4 2 1 4 2 1 4 2 1
权限分配 文件所有者 文件所属组用户 其他用户
u g o a 所有用户
chomd <+ - => 文件 //+ 加某个权限 - 减某个权限 = 只有某个权限
chomd <7 6 5 4 3 2 1><7 6 5 4 3 2 1><7 6 5 4 3 2 1> 文件 //正向设置权限
umask <0 1 2 3 4 5 6><0 1 2 3 4 5 6><0 1 2 3 4 5 6> 文件 //反向设置权限
例子:
chmod u+x test //test文件所有者增加执行权限
chmod o=wr test //test其他用户只有读写权限
chmod 644 test //test文件所有者(读写) 组用户(读) 其他用户(读)
umask //查看缺省权限
umask -S //具体查看缺省权限
/*对于目录*/
umask 022 //设置缺省的掩码(通常系统缺省掩码为022)
makdir mdir
ls -ld mdir //看到文件被权限设置为755,因为之前省掩码设置为022
/*对于普通文件*/
touch m.txt
ls -l m.txt //看到文件被权限设置为644,因为要在缺省掩码设置022,再减去可执行权限
chown //缺省设置当前文件的所有者用户
//-R 用于递归设置目录中所有文件的属主
chgrp //缺省设置当前所属组变更为目标用户组
//-R 用于递归设置目录中所有文件的数组
例子:newdir目录文件 iotek当前用户 bancai另一用户
//属主 属组
ls -ld newdir //iotek iotek
sudo chown bancai newdir //bancai iotek 改变属主
whoami //iotek
sudo chgrp bancai newdir //bancai bancai 改变属组
sudo chown iotek:iotek newdir //iotek iotek 改变属主、属组
sudo chown :bancai newdir //iotek bancai 改变属组
ls -l newdir //可以看到newdir里的数组没改还为iotek
sudo chgrp -R bancai newdir //递归设置目录中所有文件的数组都为bancai
ls -l newdir
sudo chown -R bancai newdir //递归设置目录中所有文件的数主都为ba
ls -l newdir //此时可能无法查看,因为newdir属主为bancai
su bancai
ls -l newdir
exit
sudo chown -R iotek newdir
例子:bancai用户
!为客户端的
fit 192.168.160 //fit 服务器ip
输入bancai
输入密码
bi //切换到2进制传输模式(binary mode)
ls //看服务器下的内容
!ls //看bancai客户端的内容
passive //主动模式连接失败用被动模式(passive mode 服务器等客户端
passive //第二次关闭被动模式切换回主动模式 服务器主动连接客户端
ascii //切换到文本传输模式(ASCII mode)
bi //用2进制比较好
mput test* //上传文件名为test 某某的所有文件(询问方式需要确定)
ls //服务器看到有test某某的文件
bi
mget ftp* //下载ftp某某的文件到客户端
!ls
bye //退出
服务器中安装ftp:
/*在线安装ftp*/
ping www.baidu.com //看看是否联网
sudo apt-get install vsftpd //在线安装
sudo apt-get remove vsftp //卸载
/*离线安装ftp*/
ls /var/cache/apt/archives/ //查看下载文件归档是否有vsftpd
cp /var/cache/apt/archives/vs* . //把vsftpd拷贝到当前目录
sudo dpkg -i vsftpd*.deb //离线安装
服务器中ftp:
sudo service vsftpd start //ftp服务的启动
sudo service vsftpd stop //ftp服务的停止
sudo service vsftpd status //查看ftp服务的状态
sudo vim /etc/vsftpd.conf //ftp服务的配置
/*打开上传和下载*/
local_enable=YES
write_enable=YES
sudo service vsftpd reload //重新加载配置
sudo service vsftpd restart //配置文件后要ftp服务的重启
(ssh 远程安全登录)
ssh是客户端命令
ssh仅提供远程安全登录的本地会话窗口
例子:iotek用户 test.out为服务器的文件
sudo apt-get install ssh //安装ssh
ssh --version //查看是否安装了ssh
ssh 192.168.1.80 //ssh 服务器ip
whoami //iotek
ifconfig //查看网卡地址
ls -l //看到test.out组为其他的
chown :bancai test.out //改变test.out组为bancai组
ls -l test.out //看到test.out组为bancai组
exit //退出ssh
ifconfig //查看网卡地址
服务器中安装ssh:
sudo apt-get install openssh-server //在线安装 openssh开源的ssh
sudo dpkg -i openssh-server*.deb //离线安装ssh
例子:
/*在线安装*/
sudo apt-get install openssh-server
/*离线安装*/
/var/cache/apt/archives/openssh* //查看ssh安装包
cp /var/cache/apt/archives/openssh*.deb .
sudo dpkg -i openssh-server
sudo service ssh star //ssh服务的启动
sudo service ssh stop //ssh服务的停止
sudo service ssh restart //ssh服务的重启
/etc/ssh/sshd_config(或sshd.config) //ssh服务的配置文件
例子:
sudo service ssh status //查看ssh服务的状态
sudo service ssh tar
sudo vim /etc/ssh/sshd_config
Port 22 //端口号