最近一段时间负责的系统频频出现各种诡异的问题,也给了自己一个偷懒的借口没有更新博客。说来惭愧,入行以来,对于Linux的基本操作是知之甚少,抽空学习了下基本的一些概念和指令。废话不多说,记录下在慕课网学习的一些总结。Linux达人养成计划
第3章 命令基本格式及文件处理命令
Linux命令格式
[root@VM_0_17_centos ~]#
root
代表当前登录用户(Linux当中管理员账号是root)
@
无意义
VM_0_17_centos
主机名
~
当前目录 (~也表示家目录)
#
表示超级用户(普通用户提示符是”$”)
Linux命令格式
命令 [选项] [参数]
注意:个别命令使用不遵循此格式,当有多个选项时,可以写在一起,简化选项与完整选项 -a 等于 –all
ls [选项] [文件或目录]
-a
显示所有文件,包括隐藏文件
-l
显示详细信息
-d
查看目录属性
-h
人性化显示文件大小
-i
显示inode
-rw-r--r-- 1 root root 605 Mar 18 20:28 .jp1.tar.gz
-rw-r--r--
-
文件类型(-
文件d
目录l
软链接文件)
root
u所有者 权限为rw-
root
g所属组 权限为r--
o其他人 权限为r--
r读 w写 x执行
1
引用计数,代表这个文件被调用的次数
605
文件大小 Bit
Mar 18 20:28
最后修改时间
.
隐藏文件
jp1.tar.gz
文件名
pwd
显示当前目录
Linux目录处理命令
mkdir -p [目录名]
-p
递归创建
cd [目录]
cd ~
进入家目录
cd
进入家目录
cd -
返回上次的目录
cd ..
进入上一级目录
cd .
进入当前目录
rmdir [目录]
删除空白目录,若包含文件则不能删除
rm -rf [目录]
强制删除
cp [选项] [原文件或目录] [目标目录]
选项
-r
复制目录
-p
连带文件属性复制
-d
若原文件是链接文件,则复制链接属性
-a
相当于都复制 同-pdr
mv [原文件或目录] [目标目录]
用于改名或剪切
Linux常见目录作用
/bin
用于保存命令的目录
/sbin
用于保存命令的目录(只有root能用)
/usr/bin
用于保存命令的目录
/usr/sbin
用于保存命令的目录(只有root能用)
/boot
启动目录,系统启动的文件都放这里,一般不动该目录
/dev
该目录下存放的都是设备相关的文件,一般也不要去动
/etc
主要存放配置文件的目录
/home
是普通用户目录 (普通用户对应目录下可以随便放文件)
/root
是超级用户目录(root用户对应目录下可以随便放文件)
/lib
存放linux系统函数库
/mnt
空目录,用于挂在外接存储设备
/media
空目录,用于挂在外接存储设备(在原来的linux系统中没有)
/misc
空目录,用于挂在外接存储设备(在原来的linux系统中没有)
/proc
是内存过载点;这两个目录的内容直接写在内存,因此不能直接操作
/sys
是内存过载点;这两个目录的内容直接写在内存,因此不能直接操作
/temp
临时目录(随便放文件)
/usr
系统软件资源目录
/var
系统相关文档内容
Linux链接命令
ln -s [原文件] [目标文件]
生成链接文件
-s
创建软链接(目录要写绝对路径)
搜索文件步骤
硬链接可以看成是一个教室的两个门,对应到的目标文件都是同一个;
不能跨分区;
不能针对目录;
修改任意文件,原文件都改变
软链接相当于一个快捷方式
特征:
1、类似Windows快捷方式;
2、软链接拥有自己的I节点和Block块,但是数据块中只保存原文件的文件名和I节点号,并没有实际的文件数据;
3、lrwxrwxrwx 软链接文件的权限都是rwxrwxrwx
4、修改任意文件,另一个都改变
5、删除原文件,软链接不能使用
6、做软链接,修改原文件一定要写绝对路径,否则会报错;
软链接读取文件过程:
第4章 文件搜索命令
Linux中文件搜索命令locate
locate 文件名
在后台数据库中按文件名搜索,搜索速度更快;
搜索的数据库为/var/lib/mlocate
;
updatedb
该命令更新数据库(正常情况下数据库一天更新一次);
搜索配置文件:/etc/updatedb.conf
PRUNE_BIND_MOUNTS="yes"
开启搜索限制
PRUNEFS=
搜索时,不搜索的文件系统
PRUNENAMES=
搜索时不搜索的文件类型
PRUNEPATHS=
搜索时不搜索的路径
Linux中命令搜索命令
whereis 命令
搜索命令所在的路径及帮助文档所在位置;
不能操作linux自带的shell命令,如 cd
选项:
-b
只查找可执行文件
-m
只查找帮助文档
which 命令
能查看命令的可执行文件路径以及别名
不能操作linux自带的shell命令,如 cd
echo $PATH
环境变量都用
:
分隔
PATH定义系统搜索命令的路径(或绝对路径执行)
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/java/jdk1.7.0_75/bin:/root/.local/bin:/root/bin
Linux中 find命令
find [搜索范围] [搜索条件]
find / - name install.log
从根目录开始,搜索文件名为install.log的文件;
尽可能避免大范围搜索,会非常消耗系统资源;
可以使用通配符:
*
匹配任意内容
?
匹配任意一个字符
[]
匹配任意一个中括号内的字符
-iname
不区分大小写
-user
按照所有者搜索
-nouser
查找所有没有所有者的文件
根据时间查找:
-mtime +10
查找10天之前的修改文件(也可以是创建时间)
-mtime 10
查找10天前当天的修改文件
-mtime -10
查找10天内的修改文件
-atime 天数
文件访问时间(天数同上)
-ctime 天数
改变文件属性时间(天数同上)
根据文件大小查找:
-size +10k
查找大于10k的文件(小写k)
-size 10M
查找等于10M的文件(大写M)
-size -10G
查找小于10G的文件(大写G)
-size 10
不加单位表示搜索10个扇区,一个扇区512B(不推荐使用)
根据i节点号查询:
ls -i
可以查看i节点
-inum 262422
查找i节点是162422的文件
组合查询:
-a
逻辑与
-o
逻辑或
-exec/-ok 命令 {} \;
对搜索结果进行操作
例:
find /etc -size +20k -a -mtime -10 -exec ls -lh {} \;
查找大于20k并且在10天之内操作过的文件,将结果展示出来;
Linux中 grep命令
grep [选项] 字符串 文件名
在文件当中匹配符合条件的字符串
选项:
-i
忽略大小写
-v
排除制定字符串
与find的区别:
find命令:在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符能完全匹配;
grep命令:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达是进行匹配;
第5章 帮助命令
Linux中 帮助命令
man 命令
获取制定命令的帮助,如:
man ls
打开帮助文档之后,快速查找可以先输入/
再输入要查找的内容;
查到之后n
表示 往下查找,p
或shift + n
往上查找
man -k passwd
查看所有包含该命令的帮助文档 等同于apropos passwd
可认为在帮助文档中用字符串搜索
man的级别
1. 查看命令的帮助
2. 查看可悲内核调用的函数的帮助
3. 查看函数和函数库的帮助
4. 查看特殊文件的帮助(主要是/dev目录下的文件)
5. 查看配置文件的帮助
6. 查看游戏的帮助
7. 查看其它杂项的帮助
8. 查看系统管理员可用命令的帮助
9. 查看内核相关文件的帮助
例: man passwd -5
man -f 命令
等同于 whatis 命令
whatis 能查看命令拥有哪个级别的帮助
Linux中 其他帮助命令
命令 --help
获取选项的帮助
help 命令
help 专门获取内部命令,若help ls 将报错,因为ls非内部命令
info 命令
回车
进入子帮助页面(带有*号标记)
u
进入上层页面
n
进入下一个帮助小节
p
进入上一个帮助小节
q
退出
第6章 压缩命令
Linux 中的压缩命令
常用的压缩格式
.zip .gz .bz2
.tar.gz .tar.bz2
实际情况下更加常用
.zip格式压缩
zip 压缩文件名 源文件
压缩文件
zip -r 压缩文件名 源目录
压缩目录
.zip格式解压
unzip 压缩文件
.gz格式压缩
gzip 源文件
压缩为.gz格式的压缩文件,源文件会消失
gzip -c 源文件 > 压缩文件
压缩为.gz格式,源文件保留
gzip -r 目录
压缩目录小所有的子文件,但是不能压缩目录
.gz格式解压
gzip -d 压缩文件
gunzip 压缩文件
.bz2格式压缩
bzip2 源文件
压缩为.bz2格式,不保留源文件
bzip2 -k 源文件
压缩之后保留源文件
注意:bzip2命令不能压缩目录
.bz2格式解压
bzip2 -d 压缩文件
-k 选项可保留源文件
bunzip2 压缩文件
-k 选项可保留源文件
打包命令tar
tar -cvf 打包文件名 源文件
选项:
-c
打包
-v
显示过程
-f
指定打包后的文件名
例:
tar -cvf longzls.tar longzls
解打包命令tar
tar -xvf 打包文件名
选项:
-x
解打包
例:
tar -xvf longzls.tar
.tar.gz压缩格式
.tar.gz格式是先打包为.tar格式,再压缩为.gz格式
压缩:
tar -zcvf 压缩包名.tar.gz 源文件
-zc
压缩为.tar.gz格式
解压:
tar -zxvf 压缩包名.tar.gz
-zx
解压缩.tar.gz格式
.tar.bz2压缩格式
压缩:
tar -jcvf 压缩包名.tar.bz2 源文件
-jc
压缩为.tar.bz2格式
解压:
tar -jxvf 压缩包名.tar.bz2 源文件
-jx
解压.tar.bz2格式
注意:
- 解压到指定目录需要加上
-C 指定目录
- 多个文件压缩到一起只需要把用空格隔开多个文件即可
-t
选项可以只查看压缩文件而不打开
第7章 关机与重启命令
Linux中关机与重启命令
shutdown [选项] 时间 &
&
表示后台执行
选项:
-c
取消
-h
关机
-r
重启
例:
shutdown -r 05:30 &
5:30分重启
其他关机命令(不常用也不建议用)
halt
poweroff
init 0
其他重启命令
reboot
相对较安全
init 6
系统运行级别
0
关机1
单用户2
不完全多用户,不含NFS服务3
完全多用户4
未分配5
图形界面6
重启
cat /etc/inittab
查看运行级别配置文件
id:3:initdefault
修改系统默认运行级别
runlevel
查询系统运行级别
logout
退出登录命令
第8章 其他常用命令
Linux中挂载命令
mount
查询系统同已经挂载设备
mount -a
依据配置文件/etc/fstab
的内容自动挂载
注:因为光盘或U盘不能保证每次都能开机挂载,因此不建议自动挂载,否则可能导致系统由于找不到挂载目录而启动崩溃
mount [-t 文件系统] [-o特殊选项] 设备文件名 挂载点
选项:
-t
文件系统:假如文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660(光盘的文件系统)等文件系统
-o
特殊选项:可以指定挂载的额外选线
参数 | 说明 |
---|---|
atime/noatime | 更新访问时间/不更新访问时间。访问分区文件时,是否更新文件的访问时间,默认为更新 |
async/sync | 异步/同步,默认为异步 |
auto/noauto | 自动/手动,mount -a命令执行时,是否会自动安装/etc/fstab文件内容挂载,默认为自动 |
defaults | 定义默认值,相当于rw,suid,dev,exec,auto,nouser,async这七个选项 |
exec/noexec | 执行/不执行,设定是否允许在文件系统中执行可执行文件,默认是exec允许 |
remount | 重新挂载已经挂载的文件系统,一般用于指定修改特殊权限 |
rw/ro | 读写/只读,文件系统挂载时,是否具有读写权限,默认是rw |
suid/nosuid | 具有/不具有SUID权限,设定文件系统是否具有SUID和SGID的权限,默认是具有 |
user/nouser | 允许/不允许普通用户挂载,设定文件系统是否允许普通用户挂载,默认是不允许,只有root可以挂载分区 |
usrquota | 写入代表文件系统支持用户磁盘配额,默认不支持 |
grpquota | 写入代表文件系统支持组磁盘配额,默认不支持 |
例:
mount -o remount,noexec /home
重新挂载/boot分区,并使用noexec权限,会导致/home目录下无法执行可执行文件
mount -o remount,exec /home
改回来
例:
/dev/sda5 on / type ext4 (rw)
/dev
保存所有硬件设备的目录
sd
SATA接口或scars接口
a
表示第一块硬盘
5
表示第1逻辑分区
/
根目录
ext4
文件系统
rw
权限
挂载光盘
mkdir /mnt/cdrom/
建立挂载点
mount -t iso9660 /dev/cdrom /mnt/cdrom
挂载光盘
mount /dev/sr0 /mnt/cdrom
sr0是Linux指定的CD目录
卸载命令
unmount 设备文件名或挂载点
例:
umount /mnt/cdrom
挂载U盘
fdisk -l
查看U盘设备文件名
mount -t vfat /dev/sdb1 /mnt/usb/
Linux默认不支持NTFS文件系统,此处的vfat指的是Windows中的fat32
/proc
/sys
都是内存目录,系统会自动挂载,使用者不要去操作它
我们一般能用到的是 根分区/
,/boot
,/home
Linux中用户登录查看命令
查看登录用户信息
w 用户名
命令输出:
USER
:登录的用户名
TTY
:登录终端
FROM
:从哪个IP地址登录
LOGIN@
: 登录时间
IDLE
:用户闲置时间
`JCPU
: 指的是和该终端连接的所有进程占用的时间。这个时间里并不包括过去的后台作业时间,但却包括当前正在运行的后台作业所占用的时间;
PCPU
:是指当前进程所占用的时间
WHAT
: 当前正在运行的命令
who 用户名
命令输出 :
用户名
登录终端
登录时间(登录来源IP地址)
查询当前登录和过去登录的用户信息
last
last
命令默认是读取/var/log/wtmp
文件数据
命令输出:
用户名
登录终端
登录IP
登录时间
退出时间(在线时间)
查看所有用户的最后一次登录时间
lastlog
lastlog
命令默认是读取/var/log/lastlog
文件内容
命令输出:
用户名
登录终端
登录IP
最后一次登录时间
第9章 Shell基础
shell概述
什么是shell
shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell来启动,挂起,停止甚至是编写一些程序;
shell还是一个功能强大的编程语言,易编写,易调试,灵活性较强。shell是解释执行的脚本语言,在shell中可以直接调用Linux系统命令.
shell分类
Bourne:sh、ksh、Bash、psh、zsh
C:csh、tcsh
两种语法彼此不兼容
echo $SHELL
查看当前shell
当前linux中的标准shell是bash
vi /etc/shells
查看支持的shell类型
脚本执行方式
echo输出命令
echo [选项] [输出内容]
选项:
-e
支持反斜线控制的字符转换
控制字符 | 作 用 |
---|---|
\a | 输出警告音 |
\b | 退格键,也就是向左删除键 |
\n | 换行符 |
\r | 回车键 |
\t | 制表符,也就是Tab键 |
\v | 垂直制表符 |
\0nnn | 按照八进制ASCII码表输出字符。其中0为数字零,nnn是三位八进制数 |
\xhh | 按照十六进制ASCII码表输出字符。其中hh是两位十六进制数 |
常规用法 : echo -e \ "\x68"
输出颜色
echo -e "\e[1;31m 家人就要加凤姐 \e[0m"
30m=黑色,31m=红色,32m=绿色,33m=黄色
34m=蓝色,35m=洋红,36m=青色,37m=白色
第一个脚本
vi helloworld.sh
#!/bin/bash
echo -e "\e[1;34m hello world! \e[0m"
脚本执行
赋予执行权限,直接运行
chmod 755 helloworld.sh
./helloworld.sh
通过Bash调用执行脚本
bash helloworld.sh
别名与快捷键
别名永久生效与删除别名
vi ~/.bashrc
写入环境变量配置文件
source 环境变量文件
环境变量直接生效
alias
查看系统中所有的命令别名
alias 别名= '原命令'
设定命令别名
unalias 别名
删除别名
命令生效顺序
1. 执行用绝对路径或相对路径执行的命令
2. 执行别名
3. 执行Bash的内部命令
4. 执行按照$PATH环境变量定义的目录查找顺序找到第一个命令
常用快捷键
ctrl+c
强制终止当前命令
ctrl+l
清屏 同命令clear
ctrl+a
光标移动到命令行首
ctrl+e
光标移动到命令行尾
ctrl+u
从光标所在位置删除到首行
ctrl+z
把命令放入后台
ctrl+r
在历史命令中搜索 上下滚动
历史命令
历史命令
history [选项] [历史命令保存文件]
选项:
-c
清空历史命令
-w
把缓存中的历史命令写入历史命令保存文件~/.bash_history
/etc/profile
HISTSIZE属性可设置保存历史命令条数,默认1000条
历史命令的调用
↑↓
调用以前的历史命令
!n
重复执行第n条历史命令
!!
重复执行上一条命令
!字串
重复执行最后一条以该字串开头的命令
输出重定向
标准输入输出
设备 | 设备文件名 | 文件描述符 | 类型 |
---|---|---|---|
键盘 | /dev/stdin | 0 | 标准输入 |
显示器 | /dev/sdtout | 1 | 标准输出 |
显示器 | /dev/sdterr | 2 | 标准错误输出 |
输出重定向
类型 | 符号 | 作用 |
---|---|---|
标准输出重定向 | 命令>文件 | 以覆盖的方式,把命令的正确输出到制定的文件或设备当中 |
标准输出重定向 | 命令>>文件 | 以追加的方式,把命令的正确输出到制定的文件或设备当中 |
标准错误输出重定向 | 命令2>文件 | 以覆盖的方式,把命令的错误输出到制定的文件或设备当中 |
标准错误输出重定向 | 命令2>>文件 | 以追加的方式,把命令的错误输出到制定的文件或设备当中 |
正确输出和错误输出同时保存
符号 | 作用 |
---|---|
命令>文件 2>&1 | 以覆盖的方式,把正确输出和错误输出都保存到一个文件当中 |
命令>>文件 2>&1 | 以追加的方式,把正确输出和错误输出都保存到一个文件当中 |
命令 &> 文件 | 以覆盖的方式,把正确输出和错误输出都保存在同一个文件当中 |
命令 &>> 文件 | 以追加的方式,把正确输出和错误输出都保存在同一个文件当中 |
命令>>文件1 2>>文件2 | 把正确的输出追加到文件1中,吧错误的输出追加到文件2中 |
ls &>/dev/null
把输出结果直接丢了
输入重定向
wc
直接输入字符 ctrl + d
停止输入
wc [选项][文件名]
-c
统计字节数
-w
共计单词书
-l
统计行数
管道符
多命令顺序执行
多命令执行符 | 格式 | 作用 |
---|---|---|
; | 命令1;命令2 | 多个命令顺序执行,命令之间没有任何逻辑联系 |
&& | 命令1&&命令2 | 逻辑与。当命令1正确执行,则命令2才会执行;当命令1执行不正确,则命令2不会执行 |
|| | 命令1||命令2 | 逻辑或。当命令1执行不正确,则命令2才会执行;当命令1正确执行,则命令2不会执行 |
管道符
命令1 | 命令2
命令1的整除输出作为命令2的操作对象
more
分页显示
ls -l /etc | more
查询结果翻页:
空格
表示向下翻一页
回车
表示向下滚动一行
/字符串
表示查询字符串
q
离开more界面
通配符
通配符 | 作用 |
---|---|
? | 匹配一个任意字符 |
* | 匹配0个或人一多个任意字符,也就是可以匹配任何内容 |
[] | 匹配括号中任意一个字符。例如:[abc] 代表一定匹配a,b,c中的一个字符 |
[-] | 匹配中括号中任意一个字符,-代表一个范围。例如:[a-z] 代表匹配一个小写字母。 |
[^] | 逻辑非,表示匹配不是中括号内的一个字符。例如:[^0-9] 代表匹配一个不是数字的字符 |
Bash中其他特殊符号
符号 | 作用 |
---|---|
” | 单引号。在单引号中所有的特殊符号,如“$”和 “`”(反引号)没有特殊含义 |
“” | 双引号。在双引号中特殊符号都没有特殊含义,但是 “$”、“`”和“\”是例外,拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义 |
` | 反引号。反引号括起来的内容是系统命令,在Bash中会先执行它。和$()作用一样,不过推荐使用$(),因为反引号非常容易看错。 |
$() | 和反引号作用一样,用来引用系统命令。 |
# | 在Shell脚本中,#开头的行代表注释 |
$ | 用户调用变量的值,如果需要调用变量name的值时,需要用$named 的方式得到变量的值。 |
\ | 转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如\$将输出“$”符号,而不当做是变量引用。 |
真的应该是一条幸福的分割线。吐槽一下,写这个东西花的时间比学习的时间还要久,不过这样过后也回顾了一遍基础知识,一字一句呕心沥血打出来的,希望能帮到一些人。另外,此次笔记也加深了对markdown语法的了解,以后要多加勤快才是了。