Linux学习笔记(一)
基础概念:
1. 分区:把大的硬盘分为小的逻辑分区(把大柜子分成几个小柜子)
2. 格式化:写入文件系统(分成小柜子之后,在各个小柜子中打格)
3. 分区设备文件名:给每个分区定义设备文件名(Linux没有图形操作界面,因此每一个分区都需要有一个名字来指代它,这就是设备文件名)
3. 挂载:给每个分区分配挂载点(相当于将分区与盘符联系起来)
Linux命令格式:
[root@localhost ~]#
root代表当前登录用户,Linux中管理员账号是root
localhost主机名
~当前所在目录(家目录)
#超级用户提示符
$普通用户提示符
一般命令格式:
命令 [选项] [参数]
1. 个别命令使用不遵从此格式
2. 当有多个选项时,可以写在一起
3. 简化选项与完整选项 -a等于--all
1.查询目录中的内容:ls
ls [选项] [文件或目录]
选项:
-a 显示所有的文件,包括隐藏文件
-l 显示详细信息
-d 查看目录属性
-h 人性化显示文件大小
-i 显示inode
在显示详细信息的时候,界面上显示如下:
-rw-------. 1 root root 1208 2月 25 03:02 anaconda-ks.cfg
-rw-------. 表示什么呢?
第一个-表示文件的类型(常用的三种类型为:-文件、d目录、l软链接文件)
后面9位每3位为一组
第一组为所有者u、第二组为所属组g、第三组为其他人o
r读、w写、x执行
.表示ACL权限
1代表引用次数,前一个root代表所有者,后一个root代表所属组
1208是文件大小
2.建立目录:mkdir
格式:mkdir [-p] 目录名
-p是递归创建,一次性创建多层路径时调用
3.切换目录cd
格式:cd 目录
cd ~ 进入当前用户的家目录
cd 进入当前用户的家目录
cd - 进入上次目录(window的后退)
cd .. 进入上级目录
cd . 进入当前目录
相对路径:参照当前所在目录进行查找
如:[root@localhost abc]# cd ../def ../代表当前所在位置的上一次目录
如:[root@localhost abc]# cd ./def ./代表当前所在目录
绝对路径:从根目录开始指定,一级一级递归查找。在任何目录下都能进入指定位置
[root@localhost ~]# cd ect
[root@localhost ~]# cd ect/ 两者效果都一样(上一个是文件、下一个是目录,其实都一样,Linux中所有的东西都是文件)
4.打印当前目录位置:pwd
print working directory 输出当前所在目录
5.删除空目录:rmdir
rmdir 目录名
只能删除空的文件夹
6.删除文件或目录:rm
rm -rf 文件或目录
-r删除目录 -f强制
7.复制命令:cp
cp [选项] 源文件或者目录 目标目录
选项:
-r 复制目录
-p 连带文件属性复制
-d若源文件是链接文件,则复制链接属性
-a 相当于 -pdf 完全复制
8.剪切或改名命令:mv
mv 原文件或目录 目标目录
常见目录的作用:
/根目录
/bin 存放必要的命令
/boot 存放内核以及启动所需的文件等
/dev 存放设备文件,硬盘或挂载的移动设备都会显示在这
/etc 存放系统的配置文件
/home 用户文件的主目录,用户数据存放在其主目录中
/lib 存放必要的运行库
/mnt 存放临时的映射文件系统,我们常把软驱和光驱挂装在这里的floppy和cdrom子目录下
/proc 存放存储进程和系统信息
/root 超级用户的主目录
/sbin 存放系统管理程序
/tmp 存放临时文件的目录
/usr 包含了一般不需要修改的应用程序,命令程序文件、程序库、手册和其他文档
/usr/bin/系统命令(普通用户)
/usr/sbin/系统命令(超级用户)
/var 包含系统产生的经常变化的文件
9.链接命令(较难理解)
软链接:ln -s
1.可简单理解为快捷方式,可修改,但原文件删除后不可使用
2.它的权限取决于原文件
3.记录的是原文件的存储位置
4.使用绝对路径
硬链接:ln
1.针对同一文件,不适用于目录
2.是真实记录原文件,包括i节点,存储位置block等。修改原文件或硬链接对方也会改变。
3.相当于一间教室的两个门(其中一个文件被删除另一个文件还能用,就如:一个门被关了,另一个门还能进入)
4.对于文件路径无限制,相对绝对都可
10.文件搜索:locate
locate 文件名
//在后台数据库中按文件名搜索,搜索速度更快
/var/lib/mlocate
#locate命令所搜索的后台数据库
[root@localhost ~]# updatedb //更新数据库
[root@localhost ~]# vi /ect/updatedb.conf 这是搜索的配置文件
PRUNE_BIND_MOUNTS="yes" 开启搜索限制
PRUNEFS= 搜索时,不搜索的文件系统
PRUNENAMES= 搜索时,不搜索的文件类型
PRUNEPATHS= 搜索时,不搜索的路径
11.搜索命令的命令whereis
whereis 命令名
//搜索命令所在路径及帮助文档所在位置
如:
[root@localhost ~]# whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
选项:
-b 只查找可执行文件
-m 只查找帮助文件
12.搜索命令的命令which
which 命令名
//搜索命令所在路径,如果有别名会显示别名。
13.PATH环境变量
定义的是系统搜索命令的路径
[root@localhost ~]# echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
我们之所以可以直接使用系统的命名,如:ls,而不必加路径,就是因为有环境变量。
14.find命令
一、find 搜索范围 [选项] 搜索条件
#搜索条件
如:
find / -name install.log 查找名字为install.log的文件
避免大范围搜索,会非常耗费系统资源
find是在系统当中搜索符合条件的文件名。如果需要匹配,使用通配符匹配,通配符是完全匹配
find /root -iname install.log 不区分大小写
find /root -user root 按照所有者搜索
find /root -nouser 查找没有所有者的文件
二、Linux中的通配符
* 匹配任意内容
? 匹配任意一个字符
[] 匹配任意一个中括号内的字符
[root@localhost ~]# find /root -name "ab*"
三、find /var/log/ -mtime +10 //查找10天前修改的文件
-10 10天内修改的文件
10 10天当天修改的文件
+10 10天前修改的文件
atime 文件访问时间啊
ctime 改变文件属性
mtime 修改文件内容
四、find 路径 -size 大小
[root@localhost ~]# find /root -size -25k //查找文件大小是25KB的文件
-25k 小于25KB的文件
25k 等于25KB的文件
+25k 大于25KB的文件
k是小写,M是大写
五、find 路径 -inum i节点 //查找对应i节点的文件
[root@localhost ~]# find /root -inum 262170
六、find多条件查询:
-a 与操作
-o 或操作
find /ect -size +20k -a -size -50k 查找大于20KB小于50KB的文件
利用-a多条件查询,-o
-exec 操作 {} \; 对搜索结果执行后续操作
find /ect -size +20k -a -size -50k -exec ls-lh {} \;
15.grep命令
grep [选项] 字符串 文件名 //在文件中搜索符合条件的字符串
-i 忽略大小写
-v 排除指定字符串
[root@localhost ~]# grep "size" anaconda-ks.cfg 会输出文件中包含size的一行
#part /boot --fstype=ext4 --size=200
part /home --fstype=ext4 --size=2000
#part swap --size=1000
#part / --fstype=ext4 --grow --size=200
[root@localhost ~]# grep -v "size" anaconda-ks.cfg 会输出文件中不包含size的一行
16.帮助命令man
man 命令 //获取指定命令的帮助手册
man ls //查看ls的帮助
man -f 命令 相当于 whatis 命令 //查看命令拥有那个级别的帮助
man -k 命令 相当于 apropos 命令 //查看和命令相关的所有帮助
man的级别
1、查看命令的帮助
2、查看可被内核调用的函数的帮助
3、查看函数和函数库的帮助
4、查看特殊文件的帮助(主要是/dev目录下面的文件)
5、查看配置文件的帮助
6、查看游戏的帮助
7、查看其他杂项的帮助
8、查看系统管理员可用命令的帮助
9、查看和内核相关文件的帮助
[root@localhost ~]# man -5 password
17.选项帮助
命令 --help //获取命令选项的帮助
如:
ls --help
18.shell内部命令帮助
help shell 内部命令 //获取shell内部命令帮助
如:
whereis cd //确定是否是shell内部命令
help cd //获取内部命令帮助
19.详细命令帮助info
info 命令
-回车 //进入子帮助页面(带有*号标记)
-u //进入上层页面
-n //进入下一个帮助小节
-p //进入上一个帮助小节
-q //退出
20.zip格式压缩
zip 压缩文件名 源文件 //压缩文件
zip -r 压缩文件名 源目录 //压缩目录
21.zip格式解压缩
unzip 压缩文件 //解压缩.zip文件
22.gz格式压缩
gzip 源文件 //压缩为.gz格式的压缩文件,源文件会消失
gzip -c 源文件 > 压缩文件 //压缩为.gz格式,源文件保留
gzip -r 目录 //压缩目录下所有的子文件,但是不能压缩目录
23.gz格式解压缩
gzip -d 压缩文件 //解压缩文件
gunzip 压缩文件 //解压缩文件
24.bz2格式压缩
bzip2 源文件 //压缩为.bz2格式,不保留源文件
bzip2 -k 源文件 //压缩之后保留源文件
注意:bzip2命令不能压缩目录
25.bz2格式解压缩
bzip2 -d 压缩文件 //解压缩,-k保留压缩文件
bunzip2 压缩文件 //解压缩,-k保留压缩文件
26.打包命令tar
因为上面的压缩有限制,因此将文件先打包
tar -cvf 打包文件名 源文件
选项:
-c 打包
-v 显示过程
-f 指定打包后的文件名
tar -cvf abc.tar abc
27.解打包命令
tar -xvf 打包文件名
选项:
-x 解打包
-v 显示过程
-f 指定打包后的文件名
tar -xvf abc.tar
28.tar.gz压缩格式
其实.tar.gz格式是先打包为.tar格式,再压缩为.gz格式
tar -zcvf 压缩包名.tar.gz源文件
选项:
-z //压缩为.tar.gz格式
tar -zxvf 压缩包名.tar.gz
选项:
-x //解压缩.tar.gz格式
要解压到指定目录 在最后加 -C : tar -zxvf jp.tar.gz -C /tmp/
降压缩文件放到指定目录,在压缩文件前加绝对路径: tar -zcvf /tmp/jp.tar.gz jp
只查看压缩文件的内容 : tar -ztvf jp.tar.gz
29.tar.bz2压缩格式
tar -jcvf 压缩包名.tar.bz2 源文件
选项:
-z //压缩为.tar.bz2格式
tar -jxvf 压缩包名.tar.bz2
选项:
-x //解压缩.tar.bz2格式
30.关机命令shutdown命令
[root@localhost ~]# shutdown [选项] 时间
选项:
-c //取消前一个关机命令
-h //关机
-r //重启
[root@localhost ~]# shutdown now //直接关机
其他关机命令:
half
poweroff
init 0
其他重启命令
reboot
init 6
系统运行级别:
0 //关机
1 //单用户
2 //不完全多用户,不含NFS服务
3 //完全多用户
4 //未分配
5 //图形界面
6 //重启
31.退出登录命令
logout
32.查询与自动挂载
mount //查询系统中已经挂载的设备
mount -a //依赖配置文件/ect/fstab的内容,自动挂载
挂载命令格式
[root@localhost ~]# mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点
选项:
-t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660等文件系统
-o 特殊选项:可以指定挂载的额外选项
33.挂载光盘
[root@localhost ~]# mkdir /mnt/cdrom/ //建立挂载点
[root@localhost ~]# mount -t iso9660 /dev/cdrom /mnt/cdrom/ //挂载光盘
[root@localhost ~]#mount /dev/sr0 /mnt/cdrom //不加文件系统
34.卸载光盘/U盘命令
[root@localhost ~]# umount 设备文件名或挂载点
[root@localhost ~]# umount /mnt/cdrom
35.挂载U盘
[root@localhost ~]# fdisk -l //查看U盘设备文件名
[root@localhost ~]# mount -t vfat /dev/sdb1 /mnt/usb/
注意:Linux默认是不支持NTFS文件系统的
36.查看登陆用户信息
[root@localhost ~]# w
命令输出:
USER: 登陆的用户名
TTY: 登陆终端
FROM: 从哪个IP地址登陆
LOGIN@: 登陆时间
IDLE: 用户闲置时间
JCPU: 指的是该终端连接的所有进程占用的时间。这个时间里并不包括过去的后台作业时间,但包括当前正在运行的后台作业所占用的时间
PCPU: 是指当前进程所占用的时间
WHAT: 当前正在运行的命令
37.查看当前登录和过去登陆的用户信息
last
last命令默认是读取/var/log/wtmp文件数据
命令输出
-用户名
-登陆终端
-登陆IP
-登陆时间
-退出时间(在线时间)
38.查看所有用户的最后一次登录时间
lastlog
lastlog命令默认是读取/var/log/lastlog文件内容
命令输出
-用户名
-登陆终端
-登陆IP
-最后一次登录时间
39.查看登陆用户信息
who
命令输出:
-用户名
-登陆终端
-登陆时间(登陆来源IP地址)
40.echo输出命令
echo [选项] 输出内容
选项:
-e:支持反斜杠控制的字符转换
Shell基础
一、Shell概述
二、脚本执行方式
脚本编写:
[root@localhost ~]# vi hello.sh
#/bin/bash
#第一个shell程序
echo -e "\e[1;34m 你好世界 \e[0m"
脚本执行:
赋予执行权限,直接运行
chmod 755 hello.sh
./hello.sh
或:
通过Bash调用执行脚本
bash hello.sh
三、Bash的基本功能
1、命名别名与快捷键
alias //查看系统中所有的命令别名
alias 别名='原命令' //设定命令别名
命令生效顺序:
第一顺位执行用绝对路径或相对路径执行的命令。
第二顺位执行别名。
第三顺位执行Bash的内部命令
第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令。
快捷键:
Ctrl c 强制终止
Ctrl l 清屏
Ctrl u 删除到行首
Ctrl a 光标移动到行首
Ctrl e 移动到行尾
Ctrl z 把命令放到后台 (没有终止,仅仅是放入后台执行)
Ctrl r 在历史记录中搜索
2、历史命令
history [选项] [历史命令保存文件]
选项:
-c //清空历史命令
-w //把缓存中的历史命令写入历史命令保存~/.bash_history
历史命令默认会保存1000条,可以在环境变量配置文件/ect/profile中进行修改
3、输出重定向
1.标准输入输出
设备 设备文件名 文件描述符 类型
键盘 /dev/stdin 0 标准输入
显示器 /dev/sdtout 1 标准输出
显示器 /dev/sdterr 2 标准错误输出
2.输出重定向
类型 符合 作用
标准输出重定向 命令 > 文件 以覆盖的方式,把命令的正确输出输出到指定的文件或设备中。
命令 >> 文件 以追加的方式,把命令的正确输出输出到指定的文件或设备当中
标准错误输出重定向 错误命令 2>文件 以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中
错误命令 2>>文件 以追加的方式,把命令的错误输出输出到指定的文件或设备当中
正确输出和错误输出同时保存 命令 > 文件 2>&1 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中。
命令 >> 文件 2>&1 以追加的方式,把正确输出和错误输出都保存到同一个文件当中。
命令 &> 文件 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中。
命令 &>> 文件 以追加的方式,把正确输出和错误输出都保存到同一个文件当中。
命令>>文件1 2>>文件2 把正确的输出追加到文件1中,把错误的输出追加到文件2中
4、多命令顺序执行
多命令执行符 格式 作用
; 命令;命令 多个命令顺序执行,命令之间没有任何逻辑联系
&& 命令1&&命令2 逻辑与,当命令1正确执行,则命令2才会执行。当命令1执行不正确,则命令2不会执行
|| 命令1||命令2 逻辑或,当命令1执行不正确,则命令2才会执行;当命令1正确执行,则命令2不会执行
管道符
命令格式:
[root@localhost ~]# 命令1 | 命令2 //命令1的正确输出作为命令2的操作对象
例子:
[root@localhost ~]# netstat -an | grep "ESTABLISHED" | wc -l
netstat -an //查找出当前所有的链接
grep "ESTABLISHED" //查找出已建立的链接
wc -l 统计行数
5、Shell中特殊符号
通配符 作用
? 匹配一个任意字符
* 匹配0个或任意多个任意字符,即匹配任何内容
[] 匹配中括号中任意一个字符,例如[abc]
[-] 匹配中括号中任意一个字符,-代表一个范围。例如[a-z]
[^] 匹配不是中括号内的一个字符
其他特殊符号:
符号 作用
'' 单引号。在单引号中所有的特殊符号,如“$”和“`”(反引号)都没有特殊含义。
"" 双引号。在双引号中特殊符号都没有特殊含义,但是“$”、“`”和“\”是例外,拥有“调用变量的值”、“引用命令”和“转义符”的特殊含义。
`` 反引号。反引号括起来的内容是系统命令,在Bash中会先执行它。和$()作用一样。不过推荐使用$(),因为反引号非常容易看错
$() 用来引用系统命令
# 代表注释
$ 用户调用变量的值,如需要调用变量name的值时,需要用$name的方式得到变量的值。
\ 转义符,跟在\之后的特殊符号将失去特殊含义,变为普通字符。如\$将输出“$”符号,而不当作是变量引用
例子:
[root@localhost ~]# echo $(ls -a)