https://www.cnblogs.com/wcwen1990/p/7630545.html
代码解读复制代码
[root@xiaoming ~]#
root 当前登录用户
localhost 主机名
~ 当前工作目录,默认是当前用户的家目录,root就是/root,普通用户是 /home/用户名
提示符 超级用户是 #,普通用户是$
命令 [选项] [参数]
当有多个选项时,可以写在一起
一般参数有简化和完整写法两种 -a 与 --all等效
查询目录中的内容
ls [选项] [文件或者目录]
选项
-a 显示所有文件,包括隐藏文件
-l 显示详细信息
-d 查看目录本身的属性而非子文件 ls /etc/
-h 人性化的方式显示文件大小
-i 显示inode,也就是i节点,每个节点都有ID号
默认当前目录下的文件列表
显示详细信息
代码解读复制代码
drwxr-xr-x . 1 root root 800 Sep 16 00:19 logs
代码解读复制代码
-rw-r--r--
文件类型 - 文件、d 目录、l 软链接文件
u(所有者)、g(所属组)、o(其他人)
r(read) 读取、w(write) 写入、x(execute) 执行
建立目录 make directory
mkdir -p [目录名]
-p 递归创建
切换所在目录 change directory
cd [目录]
~ 家目录
家目录
上次目录
. 当前目录
.. 上级目录
相对路径是参照当前所在目录
绝对路径是从根目录开始
按TAB键可以补全命令和目录
显示当前目录 pwd
删除目录 remove empty directory
rmdir [目录名]
删除文件或者目录 remove
rm [文件或者目录]
-r 删除目录
-f 强制删除
rm -rf 文件或者目录] 递归强制删除所有目录
copy 复制命令
copy [源文件或者目录] [目标文件]
-r 复制目录,默认是复制文件
-p 连带文件属性复制
-d 若源文件是链接文件,则复制连接属性
-a 相当于 -rpd
移动文件或者改名 move
mv [源文件或者目录] [目标文件]
链接命令,生成链接文件 link
拥有相同的i节点和存储block块,可以看作是同一个文件
可以通过i节点访问
不能跨分区
不能针对目录使用
一般不使用
ln -s [源文件] [目标文件]
-s 创建软链接
类似Windows快捷方式
软链接拥有自己的i节点和Block块,但是数据块中只保存源文件的文件名和i节点号,并没有实际的文件数据
lrwxrwxrwx l 软链接 软链接的文件权限都是 777
修改任意一个文件,另一个都会改变
删除源文件,软链接不能使用
软链接源文件必须写绝对路径
在后台数据库中按文件名搜索,速度比较快
数据保存在/var/lib/mlocate后台数据库,每天更新一次
可以updatedb命令立刻更新数据库
只能搜索文件名
/etc/updatedb.conf 建立索引的配置文件
PRUNE_BIND_MOUNTS = "yes" 全部生效,开启搜索限制
PRUNEFS 不搜索的文件系统
PRUNENAMES 忽略的文件类型
PRUNEPATHS 忽略的路径 /tmp
搜索命令所在路径以及帮助文档所在位置
whereis 命令名 whereis ls
-b 只查找可执行文件
-m 只查找帮助文件
可以看到别名 which ls
能看到的都是外部安装的命令
无法查看Shell自带的命令,如 which cd
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
定义的是系统搜索命令的路径
echo $PATH
文件搜索命令
find [搜索范围] [搜索条件]
避免大范围的搜索,会非常消耗系统资源
代码解读复制代码
find / -name aaa.log
find是在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配
通配符
* 匹配任意内容
? 匹配任意一个字符
[] 匹配任意一个中括号内的字符
代码解读复制代码
find . -name "ab[cdef]"
不区分大小写
代码解读复制代码
find / -iname A.log
按所有者进行搜索
代码解读复制代码
find /root -user root find /root -nouser
代码解读复制代码
find /nginx/access.log -mtime +5
k小写,M大写
代码解读复制代码
find . -size 100k
代码解读复制代码
find . -inum 123456
代码解读复制代码
find /tmp -size +10k -a -size -20k
查找/etc目录下,大于10KB并且小于20KB的文件
-a and 逻辑与,两个条件都满足
-o or 逻辑或,两个条件满足一个就可以
代码解读复制代码
find /tmp -size +10k -a -size -20k -exec ls -lh {} \;
exec 对上个命令的结果进行操作
在文件当中匹配符合条件的字符串
grep "10" access.log
-i 忽略大小写
-v 排除指定字符串
find命令,在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配
grep命令 在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式时包含匹配
man 命令 获取指定命令的帮助
man ls 查看ls的帮助
代码解读复制代码
man -f ls whatis ls man 1 ls man 1p ls
代码解读复制代码
- man -k passwd
whereis找到就是外部,找不到就是内部
代码解读复制代码
help cd
.zip .gz .bz2 .tar.gz .tar.bz2
压缩文件 zip 压缩文件名 源文件
压缩目录 zip -r 压缩文件名 源目录
解压 unzip 压缩文件名
代码解读复制代码
mkdir book touch book/1.txt touch book/2.txt zip -r book.zip book unzip book.zip
压缩是压缩目录下的文件
bzip2 不能压缩目录
打包命令
tar -cvf 打包文件名 源文件
-c 打包
-v 显示过程
-f 指定打包后的文件名
代码解读复制代码
tar -cvf book.tar book gzip book.tar bzip2 book.tar
x 解打包
代码解读复制代码
tar -xvf book.tar
压缩
tar –cvf jpg.tar .jpg //将目录里所有jpg文件打包成tar.jpg
tar –czf jpg.tar.gz .jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar –cjf jpg.tar.bz2 .jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar –cZf jpg.tar.Z .jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
rar a jpg.rar .jpg //rar格式的压缩,需要先下载rar for linux
zip jpg.zip .jpg //zip格式的压缩,需要先下载zip for linux
解压
tar –xvf file.tar //解压 tar包
tar -xzvf file.tar.gz //解压tar.gz
tar -xjvf file.tar.bz2 //解压 tar.bz2
tar –xZvf file.tar.Z //解压tar.Z
unrar e file.rar //解压rar
unzip file.zip //解压zip
shutdown 关机命令
-c 取消前一个关机命令
-h 关机
-r 重启
代码解读复制代码
shutdown -r 06:00 shutdown -c
关机
代码解读复制代码
init 0
重启
代码解读复制代码
init 6
系统的运行级别
0 关机
1 但用户
2 不 完全多用户,不包含NFS服务
3 完全多用户
4 未分配
5 图形界面
6 重启
退出登录
代码解读复制代码
logout
查看登录用户信息
USER 登录的用户名
TTY 登录的终端 tty1 本地终端 pts/0远程终端
FROM 登录的IP
LOGIN 登录时间
IDLE 用户闲置时间
JCPU 该终端所有进程占用的时间
PCPU 当前进程所占用的时间
WHAT 正在执行的命令
查看登录用户信息
USER 登录的用户名
TTY 登录的终端 tty1 本地终端 pts/0远程终端
LOGIN 登录时间(登录的IP)
查看当前登录和过去登录的用户信息 默认读取 /var/log/wtmp 文件
用户名
登录终端
登录IP
登录时间
退出时间(在线时间)
查看所有用户的最后一次登录时间
用户名
登录终端
登录IP
最后一次登录时间
shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序
用户可以用Shell来启动、挂起、停止或者编写一些程序
Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。
Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。
/etc/shells
输出命令
--e 支持反斜线控制的字符转换
代码解读复制代码
#!/bin/bash echo -e "\e[1;34m hello world \e[0m"
赋予执行权限,直接运行
代码解读复制代码
chmod 755 hello.sh ./hello.sh
通过Bash调用执行脚本
代码解读复制代码
bash hello.sh
命令别名 == 小名
临时生效
alias
alias rm="rm -i"
写入环境变量配置文件 vi ~/.bashrc
source ~/.bashrc
unalias 别名 删除别名
绝对路径或者相对路径
别名
bash内部命令
按照$PATH环境变量定义的目录查找顺序找到的第一个命令
history [选项] [历史命令保存文件]
选项
-c 清空历史命令
-w 把缓存中的历史命令写入历史命令保存文件 ~/.bash_history
默认保存1000条 /etc/profile HISSIZE=10000
使用上下箭头调用以前的历史命令
使用 !n 重复执行第n条历史命令
使用 !! 重复执行上一条命令
使用 !字符 重复执行最后一条以该字符串开头的命令
(1) ; 分号,没有任何逻辑关系的连接符。当多个命令用分号连接时,各命令之间的执行成功与否彼此没有任何影响,都会一条一条执行下去。
(2) || 逻辑或,当用此连接符连接多个命令时,前面的命令执行成功,则后面的命令不会执行。前面的命令执行失败,后面的命令才会执行。
(3) && 逻辑与,当用此连接符连接多个命令时,前面的命令执行成功,才会执行后面的命令,前面的命令执行失败,后面的命令不会执行,与 || 正好相反。
(4) | 管道符,当用此连接符连接多个命令时,前面命令执行的正确输出,会交给后面的命令继续处理。若前面的命令执行失败,则会报错,若后面的命令无法处理前面命令的输出,也会报错。
代码解读复制代码
- date;ls;date;ls - ls && echo yes || echo no
命令1的正确输出会作为命令2的操作对象
命令1|命令2
代码解读复制代码
ls /etc/ | more netstat -an | grep ESTABLISHED | wc -l
匹配文件名和目录名 |通配符|作用| |:----|:----| |?|匹配一个任意字符| |*|匹配0个或任意字符,也就是可以匹配任意内容| |[]|匹配中括号中任意一个字符| |[-]|匹配中括号中任意一个字符,-代表范围| |[^]|匹配不是中括号中的一个字符|
代码解读复制代码
- als - b=$(ls)
VI visual interface
可视化接口
类似与windows中的记事本
vim支持多级撤销
跨平台
语法高亮
支持图形界面
:w 保存
:q 退出
:! 强制保存
:ls 列出所有的文件
:n 下一个
:N 上一个
:15 跳转到指定行
/xxx 从光标位置开始向后搜索 xxx 字符串
?xxx 从光标位置开始向前搜索
使用操作系统的人都是用户
用户组是具有相同系统权限的一组用户
/etc/group 存储当前系统中所有用户组信息
group:x:123:abc,def
组名称:组密码占位符:组编号:组中用户名列表
root 组编号为0
1-499系统预留的编号 预留给安装的软件和服务的
用户手动创建的用户组从500开始
组密码占位符都是x
存放当前系统中用户组的密码信息
和group中的记录一一对应
Group: * : :abc
组名称 组密码 组管理者 组中用户名
存储当前系统中所有用户的信息
user:x:123:456:xxxxx:/home/user:/bin/bash
用户名:密码占位符:用户编号: 用户注释信息:用户主目录:shell类型
存放当前系统中所有用户的密码信息
user:xxx:::::::
用户名:密码:
添加组
代码解读复制代码
groupadd student
修改组名称
代码解读复制代码
groupmod -n stu student
修改组编号
代码解读复制代码
groupmod -g 111 stu
添加分组并指定编号
代码解读复制代码
groupadd -g 222 teacher
删除分组
代码解读复制代码
groupdel 222
添加分组
代码解读复制代码
groupadd teacher
为用户指定所属组
代码解读复制代码
useradd -g teacher zhangsan
为用户指定所属组
代码解读复制代码
useradd -g teacher lisi
为用户指定工作目录
代码解读复制代码
useradd -d /home/zhangsan zhangsan
指定注释
代码解读复制代码
usermod -c iamateacher zhangsan
修改用户名
代码解读复制代码
usermod -l zhangsan zhangsan2
指定文件夹
代码解读复制代码
usermod -d /home/zhangsan2 zhangsan2
修改用户所属组
代码解读复制代码
usermod -g stu zhangsan2
删除用户
代码解读复制代码
userdel zhangsan2
删除所属文件夹
代码解读复制代码
userdel -r lisi
显示登录的用户名
代码解读复制代码
whoami
显示指定用户信息,包括用户编号,用户名 主要组的编号及名称,附属组列表
代码解读复制代码
id zhangsan
显示zhangsan用户所在的所有组
代码解读复制代码
groups zhangsan
显示用户详细资料
代码解读复制代码
finger zhangsan
计算机通电后,第一件事就是读取刷入ROM芯片的开机程序,这个程序叫做(Basic Input/Output System)
BIOS程序首先检查,计算机硬件能否满足运行的基本条件,这叫做"硬件自检"(Power-On Self-Test)
如果硬件出现问题,主板会发出不同含义的蜂鸣,启动中止。如果没有问题,屏幕就会显示出CPU、内存、硬盘等信息。
硬件自检完成后,BIOS把控制权转交给下一阶段的启动程序。
这时,BIOS需要知道,"下一阶段的启动程序"具体存放在哪一个设备
BIOS需要有一个外部储存设备的排序,排在前面的设备就是优先转交控制权的设备。这种排序叫做"启动顺序"(Boot Sequence)
BIOS按照"启动顺序",把控制权转交给排在第一位的储存设备。
这时,计算机读取该设备的第一个扇区,也就是读取最前面的512个字节。如果这512个字节的最后两个字节是0x55和0xAA,表明这个设备可以用于启动;如果不是,表明设备不能用于启动,控制权于是被转交给"启动顺序"中的下一个设备。
这最前面的512个字节,就叫做"主引导记录"(Master boot record,缩写为MBR)
"主引导记录"只有512个字节,放不了太多东西。它的主要作用是,告诉计算机到硬盘的哪一个位置去找操作系统。
(1) 第1-446字节:是用来记录系统的启动信息的,调用操作系统的机器码
(2) 第447-510字节(64个字节):分区表(Partition table),分区表的作用,是将硬盘分成若干个区
(3) 第511-512字节:主引导记录签名(0x55和0xAA)
磁盘分区是使用分区编辑器在磁盘上划分几个逻辑部分
磁盘一旦划分成多个分区,不同类的目录与文件可以存储进不同的分区内
"主引导记录"因此必须知道将控制权转交给哪个区
分区表的长度只有64个字节,里面又分成四项,每项16个字节。所以,一个硬盘最多只能分四个一级分区,又叫做"主分区"
(1) 第1个字节:如果为0x80,就表示该主分区是激活分区,控制权要转交给这个分区。四个主分区里面只能有一个是激活的。
(2) 第2-4个字节:主分区第一个扇区的物理位置(柱面、磁头、扇区号等等)。
(3) 第5个字节:主分区类型,比如FAT32、NTFS等。
(4) 第6-8个字节:主分区最后一个扇区的物理位置。
(5) 第9-12字节:该主分区第一个扇区的逻辑地址。
(6) 第13-16字节:主分区的扇区总数。
计算机的控制权就要转交给硬盘的某个分区了
四个主分区里面,只有一个是激活的。计算机会读取激活分区的第一个扇区,叫做"卷引导记录"(Volume boot record,缩写为VBR)
控制权转交给操作系统后,操作系统的内核首先被载入内存。
以Linux系统为例,先载入/boot目录下面的kernel。内核加载成功后,第一个运行的程序是/sbin/init。它根据配置文件(Debian系统是/etc/initab)产生init进程。这是Linux启动后的第一个进程,pid进程编号为1,其他进程都是它的后代
然后,init线程加载系统的各个模块,比如窗口程序和网络程序,直至执行/bin/login程序,跳出登录界面,等待用户输入用户名和密码。