linux入门
简介



文件目录

目录结构
Bin:全称binary,含义是二进制。该目录中存储的都是一些二进制文件,文件都是可以被运行的
Dev:该目录主要存放的是外接设备,例如:U盘、光盘。其中的外接设备不能直接使用,需要先挂载。
Etc:该目录放一些配置文件
Home:存放除了root以外的其他用户的家目录
Root:该目录是root用户的家目录
Sbin:全程super binary,该目录存储一些可执行的二进制文件,但是必须要有super权限的用户才能执行
Tmp:表示“临时”的,当系统运行时候产生的临时文件会在这个目录存着。
Usr:存放用户自己安装的软件。类似于windows下的program file
Var:存放的程序/系统的日志文件的目录
Mnt:当外接设备需要挂载的时候,就需要挂载到mnt目录下。
账号管理
基本操作:
useradd [选项] 用户名 //创建用户
passwd [选项] 用户名 //用户口令
usermod 选项 用户名 //修改用户
userdel [选项] 用户名 //删除用户
用户组:
groupadd [选项] 用户组名
groupmod [选项] 用户组名
groups 用户名 //查询用户所属用户组名
groupdel 用户组名
gpasswd [选项] 组名//用于将一个用户添加或者从组中删除
选项:
-a:向组GROUP中添加用户USER
-d:从组GROUP中添加或删除用户
-h:显示此帮助信息并推出
-Q:要chroot进的目录
-r:remove the GROUP's password
-R:向其成员限制访问组GROUP
-M:向其成员限制访问组GROUP
-A:设置组的管理员列表
显示当前登录用户:

切换用户:

查看用户信息:

提高普通用户的操作权限:

进程管理
top //实时监控进程的信息
top -c //实时显示所有的进程信息(显示完整命令)
top -p PID//实时显示指定进程的信息

ps //显示当前正在运行的进程信息
ps -A//显示系统中所有的进程信息
ps -ef//显示系统中所有的进程信息(完整信息)
ps -u 用户名//显示指定用户的进程信息

kill [-s <信息名或编号>][程序] 中断执行中的程序
kill [-l <信息编号>]
-l <信息编号>:若不加信息编号选项,则-l参数会列出全部的信息名称
直接加程序的PID或者PGID,也可以是工作编号
-u 用户名:杀死这个用户中所有进程
kill 进程PID //杀死指定进程
kill -9 进程PID //彻底杀死指定进程
kill -9 $(ps-ef|grep 用户名) //杀死指定用户的所有进程
killall -u 用户名 //杀死指定用户所有进程
关机
shutdown //不同的版本会有所差异
shutdown -h now //立马关机
shutdown +1 "警告信息" //一分钟之后关机
shutdown -r +1 "警告信息" //一分钟之后重启
shutdown -c //取消当前关机操作
文件权限


目录管理

ls:
ls[参数选项] 目录名称 //列出目录里的内容
选项参数:
-a:显示所有文件或目录
-d:仅列出目录本身,而不是列出目录内的文件数据(常用)
-l:长数据串列出,包含文件的属性与权限等等数据(常用)
-h:列出路径下的所有文件/文件夹名称




例
ls -ls >a.txt
pwd:
pwd //显示当前所在的目录
pwd -P//查看当前所在目录
cd:
cd [相对路径或绝对路径] //切换目录
mkdir:
mkdir 文件夹名 //创建目录
mkdir -p 文件夹名/.../文件名 //创建多级目录
rmdir:
rmdir [-p] 文件夹名字 //删除空的文件夹
rmdir 文件夹名 //删除目录
rmdir -p 文件夹名/.../文件名 //删除文件,如果删除后目录为空也一块将目录删除
rm:
rm [选项] 文件/目录 //删除文件或者目录
选项参数:
-i 删除前逐一询问确认
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认
-r 将目录及以下之档案亦逐一删除
cp:
cp [选项] 数据源 目的地 //文件复制
选项参数:
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容
-d:复制时保留链接,这里所说的链接相当于Windows系统中的快捷方式
-f:覆盖已经存在的目标文件而不给出提示
-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答“y”时目标文件将被覆盖
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中
-r/R:若给出的源文件是一个目录文件,此时将复制该目录下的所有子目录和文件
-l:不复制文件,只是生成链接文件
例:
cp aaa/a.txt ccc //将aaa文件夹中的a.txt文件拷贝到ccc文件夹中
cp -r aaa/* ccc //将aaa文件夹中所有内容(包括文件和文件夹)拷贝到ccc文件夹中
mv:
mv [选项] 数据源 目的地
选项参数:
-i:若指定目录已有同名文件,则先询问是否覆盖旧文件
-f:若指定目录已有同名文件,则覆盖不显示

chgrp:
chgrp -v root aaa //将aaa的属组改为root
chown:
chown 属主名 文件名 //更改属主
chown [参数选项]属主名:属组名 文件名 //更改属主和属组
选项参数:
-R 处理指定目录以及其子目录下的所有文件
例:
chown root aaa //将aaa的所有者改成root
chown root:root bbb//把bbb的所有者和用户组改为都改为root
chown -R root:root aaa //将aaa文件夹和里面所有的属主和属组改为root
chmod:修改属主、属组、其他用户的权限
chmod [参数选项] 数字权限|符号权限 文件或目录
参数选项:
-c:若该档案权限确实已经更改,才显示其更改动作
-f:若该档案权限无法被更改也不要显示错误讯息
-v:显示权限更改的详细资料
-R:对目前目录下的所有档案与子目录进行相同的权限变更(即以递归的方式逐个变更)
--help:显示辅助说明
--version:显示版本
例:
chmod -R 770 aaa
chmod -R u=rwx,g=rwx aaa


文件操作练习

useradd java
useradd erlang
useradd golang
groupadd dev-group
gpasswd -a java dev-group
gpasswd -a erlang dev-group
gpasswd -a golang dev-group
grep 'dev-group' /etc/group
mkdir -p work
chgrp -R dev-group work
chmod -R 770 work
文件管理
touch:
touch [参数选项] 文件名 //如果文件不存在就创建文件,如果存在就修改时间属性
例:
touch a.txt //创建a.txt
touch a{1..10}.txt //批量创建,创建a1~a10.txt
stat a.txt //查看文件的详细属性
vi/vim编辑器:
1.只能是编辑文本内容,不能对字体、段落进行排版
2.不支持鼠标操作
3.没有菜单
4.只有命令
vim:是从vi发展出来的一个文本编辑器。
代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用
简单的来说:
vi是老式的文字处理器,不过功能已经很齐全了。但是还是有可以进步的地方。
vim则可以说是程序开发者的一项很好用的工具。
vim 文件名
如果文件已经存在,会直接打开该文件
如果文件不存在,打开一个临时文件,在保存且退出后,就会新建一个文件

vim 文件名+行数 //查看文件并定位到具体行数


文件查看:

cat:
cat a.txt //查看a.txt的内容
cat -n a.txt //查看a.txt的内容(加入行号)
文件合并:
cat 文件1 文件2 …… >保存的文件
less:
less [参数选项]文件
例:
less a.txt //查看a.txt的内容
less -N a.txt //查看a.txt的内容(加入行号)
对查询结果的操作:
1.全屏导航
ctrl+F - 向前移动一屏
ctrl+B - 向后移动一屏
ctrl+D - 向前移动半屏
ctrl+U - 向后移动半屏
2.单行导航
j - 向前移动一行
k - 向后移动一行
3.其他导航
G - 移动到最后一行
g - 移动到第一行
q/ZZ - 退出less命令
tail:
tail [参数选项]文件 //查看文件的最后部分
参数选项:
-数字:显示文件的最后几行
-f:循环读取文档最后10行
-n<行数>:显示文件的内容,从指定行至文件末尾
-c:显示最后指定的字节数
例:
tail -3 test.txt //显示文件最后3行
tail -f test.txt //动态显示最后10行
tail -4f test.txt //动态显示最后4行
tail -n +2 test.txt //显示文件test.txt的内容,从第2行至文件末尾
tail -c 45 test.txt //显示最后一些字符
wc:
wc [参数选项] 需要统计的文件路径
参数选项:
-l:表示lines,行数
-w:表示words,单词数 依照空格来判断单词数量
-c:表示bytes,字节数
grep:
grep [参数选项] 关键字 文件 //根据关键字,搜索文本文件内容
参数选项:
-n:把包含关键字的行展示出来
-i:把包含关键字的行展示出来,搜索时,忽略大小写
-v:把不包含关键字的行展示出来
与ps一块使用:
ps -ef|grep 关键字 //查找指定的进程信息,包含grep进程
ps -ef|grep 关键字|grep -v "grep" //查找指定的进程信息,不包含grep进程
ps -ef|grep -c sshd //查找进程个数
echo:
echo 字符串 //展示文本
echo 字符串>文件名 //将字符串写到文件中(覆盖文件中内容)
echo 字符串>>文件名 //将字符串写到文件中(不覆盖文件中内容)
cat 不存在的目录 &>> error.log //将命令的失败结果追加error.log文件的后面
awk:
awk是一种处理文本文件的语言,是一种强大的文本分析工具


例:
cat a.txt|awk '/zhang|li/' //查询a.txt中包含zhang和li字符串的行
cat a.txt|awk -F ' ' '{print $1,$2,$3,$4}' //将文件按照空格符分割后,打印1、2、3、4列
cat a.txt|awk -F ' ' '{OFS="==="}{print $1,$2,$3,$4}'//用===来间隔1、2、3、4列
cat a.txt|awk -F ' ' '{print toupper($1)}' //将第一段进行大写
cat a.txt|awk -F ' ' '{print tolower($1)}' //将第一段进行小写
cat a.txt|awk -F ' ' '{print len($1)}' //输出字符数
cat a.txt|awk -F ' ' 'BEGIN{}{total=total+$4}END{print total,NR}' //将每一行的第四列加起来打印,并打印总人数
sed:文档的快速增删改查
sed [选项] [sed内置命令字符] [输入文件]
选项:

内置命令字符:

匹配范围:

ln:软连接:
ln -s 目标文件路径 快捷方式路径
例:
ln -s aaa/bbb/ccc/ddd/eee/a.txt a.txt //创建快捷方式到当前文件夹
find:
find [参数选项]<指定目录><指定条件><指定内容> //在指定目录下查找文件
参数选项:
-name filename 查找名为filename的文件
-ctime -n或+n 按时间来查找文件,-n指n天以内,+n指n天以前
例:
find . -name "*.txt" //查找当前目录下的txt文件
find . -ctime -1//1天之内操作过的文件
find / -name "*.txt" //查找全盘中的txt文件
gzip:压缩文件
gzip[参数选项][文件] //压缩文件,压缩完源文件消失
例:
gzip a.txt //压缩文件
gzip * //压缩当前目录下所有文件
gzip -dv * //解压当前文件并列出详细信息
gunzip:解压文件
gunzip[参数][文件] //解压文件
tar:
本身不具有压缩功能,他是调用压缩功能实现的
tar [必要参数][选择参数][文件] //打包、压缩和解压(文件/文件夹)
tar -cvf 打包文件名 文件名 //打开文件并指定打包之后的文件名
tar -zcvf 压缩文件名 文件名/文件夹名 //压缩文件或者文件夹并指定压缩文件名
tar -ztvf 压缩文件名 //查看压缩文件中有哪些文件
tar -zxvf 压缩文件名 //解压
参数选项:
-c 建立新的压缩文件
-v 显示指令执行过程
-f<备份文件> 指定压缩文件
-z 通过gzip指定处理压缩文件
-t 列出压缩文件的内容
-x 表示解压
例:
tar -cvf a.tar a.txt //将a.txt打包为a.tar
tar -zcvf b.gz b.txt //将b.txt压缩打包成b.gz
tar -zxvf b.gz //将b.gz解压
zip:
zip是一个广泛的压缩程序,文件将它压缩后会产生具有“.zip”扩展名的压缩文件
zip [必要参数][选择参数][文件] //压缩
参数选项:
-q 不显示指令执行过程
-r 递归处理,将指定目录下的所有文件和子目录一并处理
例:
zip -q -r aaa.zip aaa //将aaa.zip压缩成aaa
unzip:
unzip [必要参数][选择参数][文件] //解压
参数选项:
-l显示压缩文件内所包含的文件
-d<目录>指定文件解压缩后所要存储的目录
例:
unzip -l aaa.zip //显示aaa.zip中的文件
unzip -d bbb aaa.zip //将aaa.zip解压到bbb文件夹
bzip2/bunzip2:
使用新的压缩算法,压缩后的文件比原来的要小,但是花费时间变长。
若没有加上任何参数,bzip2压缩完文件后会产生.bz2的压缩文件,并删除原始文件。
。
bzip2 [参数选项] 文件 //压缩
bunzip2[参数选项] 文件 //解压
dd:文件拷贝
dd if=输入文件名 of=输出文件名
if=文件名:输入文件名,缺省为标准输入。即指定源文件。
of=文件名:输出文件名,缺省为标准输出。即指定目的文件。
ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
bs=bytes:同时设置读入/输出的块大小为bytes个字节。
cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数
sed:根据正则表达式对文件进行操作
a 在当前行后添加一行或多行
c 用新文本修改(替换)当前行中的文本
d 删除行
i 在当前行之前插入文本
l 列出非打印字符
p 打印行
n 读入下一输入行,并从下一条命令而不是第一条命令处理
q 结束或退出sed
! 取反
s 用一个字符串替换另一个字符串
s 替换标识
g 全局替换
i 忽略大小写
r 从文件中读
w 将行写入文件
y 将字符转换成另一字符(不支持正则表达式)
h 把模式空间里的内容复制到暂存缓冲区
-e 允许多项编辑
-f 指定sed脚本文件名
-n 取消默认的输出
-i inplace 直接修改
-r 支持扩展元字符
示例:
# sed '' passwd (这里将passwd中的内容放到模式空间处理,因为没有执行任何命令,所以原封不动的返回值)
# sed 'd' passwd (读到每一行都执行删除的操作,所以不返回任何值)
# sed '1,9d' passwd (读1-9行的内容,然后删除,最后输出的就只剩第十行)
# sed -r 'p' passwd (内容会重复两次,因为到模式空间处来会打印一次。然后print会再打印一次)
# sed -rn 'p' passwd (以静默的方式显示,进入模式空间被命令处理过的可以输出,原先内容就不输出)
# sed -rn '/root/p' passwd (打印带root的行)
# sed -rn '/^[rot]/p' passwd (打印包含r,o,t开头的行)
# sed -rn '/^[^root}/p' passwd (打印不包含以r,o,t开头的行)
# sed -r 's/root/alice/' passwd (替换root为alice,只替换了每行第一个)
# sed -r ’s/root/alice/g‘ passwd (全局替换,都改)
# sed -r 's#/sbin/nologin#/bin/ok#' passwd (使用#号或者@也可以,一般是带有/的 替换目录之类的操作,看起来更清晰)
网络管理:
ifconfig:
ifconfig [参数选项] //显示或配置网络设备的命令
例:
ifconfig //显示激活网卡信息
ifconfig ens37 down //关闭网卡
ifconfig ens37 up //启动网卡
ifconfig ens37 192.168.23.199 //配置ip地址
ifconfig ens37 192.168.23.133 netmask 255.255.255.0 //配置ip地址和子网掩码
ping:
ping [参数选项] //检测是否与主机连通
参数选项:
-c<完成次数>设置完成要求回应的次数
netstat:
netstat [参数选项] //显示网络状态
参数选项:
-a 显示所有连线中的Socket
-i 显示网卡列表
磁盘管理
lsblk:
lsblk //列出磁盘的使用情况
lsblk -f //显示系统情况
df:
df[参数选项] //显示目前在linux系统上,硬盘的使用情况
参数选项:
--total 显示所有信息
-h 换算成KB,MB,GB等形式进行展示(方便阅读)
mount/unmount:
“挂载点”的目录需要以下几个要求:
目录事先存在,可以用mkdir命令新建目录;
挂载点目录不可被其他进程使用到;
挂载点下原有文件将被隐藏。
例:
mkdir 文件夹 //创建文件夹
mount -t auto /dev/cdrom 文件夹 //开始挂载
unmount 文件夹 //卸载
losetup:可以将文件或者block device与loop device关联、分离以及查询loop device的当前状态。循环设备可把文件虚拟成块设备(block device),借以模拟整个文件系统,让用户能使其为硬盘光驱或软盘等设备、并挂载(mount)来使用。losetup可用于文件块或者loop device的连接或者设置。
losetup [ -e encryption ] [ -o offset ] loop_device file
losetup [ -d ] loop_device
-a 显示所有循环设备的状态。
-d 卸除设备。
-e <加密选项> 启动加密编码 。
-f 寻找第一个未使用的循环设备。
-o <偏移量>设置数据偏移量,单位是字节。
mkfs:磁盘格式化
mkfs [tab] [tab]:按下两下tab键查看系统支持哪些文件系统的格式化功能
mkfs -t [文件系统格式名] 等同于mkfs.文件系统格式名
mkfs -t xfs 与 mkfs.xfs相同
mkfs.xfs:创建xfs文件系统
参考地址
下载软件
yum:

yum -y install tree
yum remove tree
yum list tom*//查找名字以tom开头所有的软件
yum源:
