Linux基础知识
Linux目录结构
- /bin:是Binary的缩写,这个目录存放着最经常使用的命令
- /sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
- /home:普通用户的主目录。一般以用户名命名
- /root:系统管理员瞩主目录
- /lib:系统的共享库
- /etc:系统的配置文件和子目录
- /usr:用户的应用程序和文件
- /boot:LInux启动的核心文件
- /proc:虚拟的目录,是系统内存的映射,可以通过此目录来获取系统信息
- /srv:service缩写,目录存放服务启动后需要提取的数据
- /sys:安装llinux内核2.6后新出现的文件系统sysfs
- /tmp:存放临时文件
- /dev:此目录把所有硬件用文件的方式存储
- /mnt:挂在别的文件系统,外部存储挂载
- /opt:安装应用程序的目录
- /var:放不断扩充的东西,经常修改的文件放此目录,例如日志文件
Linux权限
10个槽位分别是:
-
第0为:第一个字符代表这个文件是目录、文件或链接文件等等
’-‘代表文件
d 代表目录
l 链接文档(link file);
- 第1-3位确定属主(该文件的所有者)拥有该文件的权限。—User
- 第4-6位确定属组(所有者的同组用户)拥有该文件的权限,—Group
- 第7-9位确定其他用户拥有该文件的权限—Other
0:无任何权限, 即 —
1:仅有x权限, 即 --x
2:仅有w权限 即 -w-
3:有w和x权限 即 -wx
4:仅有r权限 即 r–
5:有r和x权限 即 r-x
6:有r和w权限 即 rw-
7:有全部权限 即 rwx
Linux常用命令
查看常用系统信息
arch #显示机器的处理器架构(1)
uname -m #显示机器的处理器架构(2)
uname -r #显示正在使用的内核版本
dmidecode -q #显示硬件系统部件 - (SMBIOS / DMI)
hdparm -i /dev/hda #罗列一个磁盘的架构特性
cat /proc/cpuinfo #显示CPU info的信息
cat /proc/interrupts #显示中断
cat /proc/meminfo #校验内存使用
关机重启
sync # 将数据由内存同步到硬盘中
halt # 停机,关闭系统,但不断电
poweroff # 关机,断电
reboot # 重启
shutdown -h now #关闭系统 相当于poweroff
shutdown -h hours:minutes & #按预定时间关闭系统
shutdown -c #取消按预定时间关闭系统
shutdown -r now #立即重启等同于reboot
reboot #重启
logout #注销
系统管理
systemctl
start #启动
stop #关闭
status #查看状态
enable #开启开机自启
disable #关闭开机自启
list-unit-files #查看服务开机启动状态
ln -s 参1 参2
-s #创建软连接
参数1 #被链接的文件或文件夹
参数2 #要链接去的目的地
date #查看系统的时间
-d #按照给定的字符串显示日期,一般用于日期计算
%Y #年
%y #年份后两位数字 (00..99)
%m #月份 (01..12)
%d #日 (01..31)
%H #小时 (00..23)
%M #分钟 (00..59)
%S #秒 (00..60)
%s #自 1970-01-01 00:00:00 UTC 到现在的秒数
# 环境变量
export
env: #查看当前系统中记录的环境变量
source 文件名 #读取并执行文件中的命令,可以实用.来代替
文件操作
#目录操作
cd .. #返回上一级目录
cd ../.. #返回上两级目录
cd - #返回上次所在的目录
cd -P #返回实际物理路径
cd ~或 cd #返回home目录
pwd #显示当前工作路径
ls #查看目录中的文件
ls -F #查看目录中的文件
ls -l #显示文件和目录的详细资料,可以简写ll
ls -a #显示隐藏文件
ls -h #可以以合适的单位查看文件大小
ls *[0-9]* #显示包含数字的文件名和目录名
mkdir dir1 #创建一个叫做 'dir1' 的目录'
mkdir dir1 dir2 #同时创建两个目录
mkdir -p #递归创建多层目录,后面可以加多层目录
touch #创建新的文件
touch -t 0712250000 file1 #修改一个文件或目录的时间戳 - (YYMMDDhhmm)
rm -f 文件名 #删除一个叫做 'file1' 的文件'
rmdir dir1 #删除一个叫做 'dir1' 的目录'
-rf dir1 #删除一个叫做 'dir1' 的目录并同时删除其内容
-rf dir1 dir2 #同时删除两个目录及它们的内容
-r #递归删除目录中所有内容
mv dir1 new_dir #重命名/移动 一个目录/文件
cp 文件名 文件名 #复制一个文件
dir/* . #复制一个目录下的所有文件到当前工作目录
-a /tmp/dir1 . #复制一个目录到当前工作目录
-a dir1 dir2 #复制一个目录
-r #递归复制整个文件夹
ln -s 文件名 lnk1 #创建一个指向文件或目录的软链接
ln 文件名 lnk1 #创建一个指向文件或目录的物理链接
# 文件操作
cat 文件名 #从第一个字节开始正向查看文件的内容
-n #显示所有行的行号,包括空行。
tac 文件名 #从最后一行开始反向查看一个文件的内容
more 文件名 #查看一个长文件的内容
space空格 #向下翻页
Enter回车 #向下一行
q #离开more
Ctrl+F #向下滚动一屏
Ctrl+B #返回上一屏
= #输出当前行的行号
:f #输出文件名和当前行的行号
tail
-n #查看一个文件的最后n行
-f #实时查看被添加到一个文件中的内容
less #类似于 'more' 命令,但是它允许在文件中和正向操作一样的反向操作
head -n #查看一个文件的前n行
sort 文件1 文件2 #排序两个文件的内容
# 文件属性
- 使用 "+" 设置权限,使用 "-" 用于取消
chattr +a file1 #只允许以追加方式读写文件
+c file1 #允许这个文件能被内核自动压缩/解压
+d file1 #在进行文件系统备份时,dump程序将忽略这个文件
+i file1 #设置成不可变的文件,不能被删除、修改、重命名或者链接
+s file1 #允许一个文件被安全地删除
+S file1 #一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘
+u file1 #若文件被删除,系统会允许你在以后恢复这个被删除的文件
lsattr #显示特殊的属性
> result.txt #覆盖写入一个新文件中
>> result.txt #追加写入一个已有的文件中
echo #输出内容到控制台
#组合使用管道符grep、sed、awk、uniq等举例
grep
Aug /var/log/messages #在文件 '/var/log/messages'中查找关键词"Aug"
^Aug /var/log/messages #在文件 '/var/log/messages'中查找以"Aug"开始的词汇
[0-9] /var/log/messages #选择 '/var/log/messages' 文件中所有包含数字的行
Aug -R /var/log/* #在目录 '/var/log' 及随后的目录中搜索字符串"Aug"
sed 's/stringa1/stringa2/g' example.txt #将example.txt文件中的 "string1" 替换成 "string2"
sed '/^$/d' example.txt #从example.txt文件中删除所有空白行
sed '/ *#/d; /^$/d' example.txt #从example.txt文件中删除所有注释和空白行
echo 'esempio' | tr '[:lower:]' '[:upper:]' #合并上下单元格内容
sed -e '1d' result.txt #从文件example.txt 中排除第一行
sed -n '/stringa #查看只包含词汇 "string1"的行
sed -e 's/ *$//' example.txt #删除每一行最后的空白字符
sed -e 's/stringa1//g' example.txt #从文档中只删除词汇 "string1" 并保留剩余全部
sed -n '1,5p;5q' example.txt #查看从第一行到第5行内容
sed -n '5p;5q' example.txt #查看第5行
sed -e 's/00*/0/g' example.txt #用单个零替换多个零
sort file1 file2 | uniq #取出两个文件的并集(重复的行只保留一份)
sort file1 file2 | uniq -u #删除交集,留下其他的行
sort file1 file2 | uniq -d #取出两个文件的交集(只留下同时存在于两个文件中的文件)
cat example.txt | awk 'NR%2==1' #删除example.txt文件中的所有偶数行
echo a b c | awk '{print $1}' #查看一行第一栏
echo a b c | awk '{print $1,$3}' #查看一行的第一和第三栏
paste file1 file2 #合并两个文件或两栏的内容
paste -d '+' file1 file2 #合并两个文件或两栏的内容,中间用"+"区分
comm -1 文件1 文件2 #比较两个文件的内容只删除 '文件1' 所包含的内容
comm -2 文件1 文件2 #比较两个文件的内容只删除 '文件2' 所包含的内容
comm -3 文件1 文件2 #比较两个文件的内容只删除两个文件共有的部分
搜索查找
find 范围 -参数
-name #文件名查找
-user 用户名 #指定用户名所有文件
-size 文件大小 #按指定大小查找,+大于、-小于,无符号为等于
locate #基于数据库进行查询,不需要遍历整个文件系统,查询速度较快,必须使用updatedb建数据库
grep #过滤查找
-n #显示匹配行及行号。
whereis #显示一个二进制文件、源码或man的位置
which #显示一个二进制文件或可执行文件的完整路径
用户与权限
# 用户与用户组管理
passwd #修改口令
passwd 用户名 #修改一个用户的口令 (只允许root执行)
# 用户管理
useradd
-g -d 用户名 #-g 用户组名 -d 用户名
userdel
-r 用户名 #删除用户,-r排除主目录
id 用户名 #查看用户所属组
usermod -aG: #修改用户所属组
su - 用户名 #账户切换的系统命令
sudo #命令授权,临时以root身份执行
# 用户组管理
groupadd 用户组名 #添加用户组
groupdel 用户组名 #删除用户组
groupmod -n new_group_name old_group_name #重命名一个用户组
getent
getent passwd #查看当前系统中有哪些用户
getent group #查看当前系统中有哪些用户组
chmod #修改文件、文件夹的权限信息,只有文件、文件夹的所属用户或root用户可以修改
-R 权限 文件或文件夹 #对文件夹内的全部内容应用同样的操作
#示例
chmod 751 hello.txt,将hello.txt的权限修改为751
chmod -R u=rwx,g=rx,o=x test,将文件夹test以及文件夹内全部内容权限设置为:rwxr-x--x
chown #修改文件、文件夹的所属用户和用户组,此命令只适用于root用户执行
-R #同chmod,对文件夹内全部内容应用相同规则
软件安装(软件包管理)
#ubuntu发行版
apt [-y] [install | remove | search]
#CentOS发行版
#yum( Yellow dog Updater, Modified)Shell 前端软件包管理器。
yum [-y] [install | remove | search] 包名# 可以自动解决依赖问题
-y # 自动确认,无需手动确认安装或卸载过程
install # 安装
remove # 卸载
search # 搜索
list #列出当前系统中安装的所有包
check-update #列出所有可更新的软件
clean #清除软件包
网络与进程
#网络
ifconfig # 查看本机的ip地址
hostname # 查看主机名
ping -c num # ip或域名主机名
-c,检查的次数,不使用-c选项,将无限次数持续检查
参数:ip或主机名,被检查的服务器的ip地址或主机名地
rz #进行上传,语法:直接输入rz即可
sz #下载文件
wget
-b #可选,后台下载,会将日志写入到当前工作目录的wget-log文件
curl
-L URL -o 文件路径 #
#进程
top #监控查看CPU、内存使用情况
-d #刷新时间,默认3s
-i #不显示闲置和僵死进程
-p #通过指定监控进程ID 来仅仅监控某个进程的状态。
kill -9 进程id #杀掉进程
-9 #表示强制关闭进程。不使用此选项会向进程发送信号要求其关闭,但是否关闭看进程自身的处理机制。
netstat
-anp | grep 端口号:查看指定端口的占用情况
ps #查看输出命令当时进程信息
-a #列出带有终端的所有用户的进程
-x #列出当前用户的所有进程,包括没有终端的进程
-u #面向用户友好的显示风格
-e #列出所有进程
-f #显示完整格式的进程列表
#常用ps -aux和ps -ef
ps -aux #查看进程的CPU 占用率和内存占用率,可以使用aux
ps -ef #想查看进程的父进程ID 可以使用ef
#ps -aux从左到右分别是:
USER:该进程是由哪个用户产生的
PID:进程的ID 号
%CPU:该进程占用CPU 资源的百分比,占用越高,进程越耗费资源;
%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;
VSZ:该进程占用虚拟内存的大小,单位KB;
RSS:该进程占用实际物理内存的大小,单位KB;
TTY:该进程是在哪个终端中运行的。对于CentOS 来说,tty1 是图形化终端,
tty2-tty6 是本地的字符界面终端。pts/0-255 代表虚拟终端。
STAT:进程状态。常见的状态有:R:运行状态、S:睡眠状态、T:暂停状态、
Z:僵尸状态、s:包含子进程、l:多线程、+:前台显示
START:该进程的启动时间
#ps -ef从左到右分别是:
UID:进程所属的用户ID
PID:进程的进程号ID
PPID:进程的父ID(启动此进程的其它进程)
C:此进程的CPU占用率(百分比)
STIME:进程的启动时间
TTY:启动此进程的终端序号,如显示?,表示非终端启动
TIME:进程占用CPU的时间
CMD:进程对应的名称或启动路径或启动命令
文件压缩
tar #打包压缩tar包
-c #创建压缩文件,用于压缩模式
-v #显示压缩、解压过程,用于查看进度
-x #解压模式
-f #要创建的文件,或要解压的文件,-f选项必须在所有选项中位置处于最后一个
-z #gzip模式,不使用-z就是普通的tarball格式
-C #选择解压的目的地,用于解压模式
常用组合为
#压缩
tar -zcvf test.tar.gz 1.txt 2.txt 3.txt
#解压
tar -zxvf houma.tar.gz
zip
unzip
控制台实用操作
ctrl + c # 强制停止
ctrl + d # 退出或登出
history # 查看历史输入过的命令
!命令前缀 # 自动执行上一次匹配前缀的命令
ctrl + r, # 输入内容去匹配历史命令
# 回车键可以直接执行
# 键盘左右键,可以得到此命令(不执行)
ctrl + a | e,# 光标移动到命令开始或结束
ctrl + e, # 跳到命令结尾
ctrl + ← | →,# 左右跳单词
ctrl + l, # 可以清空终端内容
VIM编辑器
模式
- 一般模式
- 编辑模式
- 命令行模式
常用命令
普通模式常用命令
命令 | 效果 |
---|---|
dd | 删除整行 |
yw | 复制一个词 |
dw | 删除一个词 |
u | 撤销上一步 |
x | 剪切一个字母,相当于del |
X | 剪切一个字母,相当于Backspace |
shift+6(^) | 移动到行头 |
shift+4 ($) | 移动到行尾 |
数字+shift+g | 移动到目标行 |
gg | 游标移动到第一行 |
G | 游标移动到最后一行 |
编辑模式常用命令
命令 | 效果 |
---|---|
i | 在当前光标处进行编辑 |
I | 在行首插入 |
A | 在行末插入 |
a | 在光标后插入编辑 |
o | 在当前行后插入一个新行 |
O | 在当前行前插入一个新行 |
cw | 替换从光标所在位置到一个单词的结尾字符 |
命令行模式的命令
命令 | 效果 |
---|---|
:q! | 强制退出vim,不保存 |
:q | 退出vim |
:wq! | 强制保存并退出vim |
:w <文件路径> | 另存为 |
:saveas <文件路径> | 另存为 |
:x | 保存并退出vim |
:wq | 保存并退出vim |
:set nu | 显示行号 |
:set nonu | 关闭行号 |
/ | /后加要查找的词,n 查找下一个,N 往上查找 |
:%s/old/new/g | 替换内容,/g 替换匹配到的所有内容 |
参考
[肝货| 有了这个速查手册,还怕Linux命令记不住?][https://mp.weixin.qq.com/s/Kog6AfXYINIDwKMpJMkGFQ]
[菜鸟教程][https://www.runoob.com/linux/linux-yum.html]