Linux基础学习笔记
文章目录
1.基本命令
1.命令提示符
[root@localhost ~]#
root
当前登录用户
localhost
主机名
~
当前所在目录(~表示家目录)
#
超级管理员的提示符
$
普通用户的提示符
2.命令格式
命令 [选项] [参数]
注意:个别命令使用不遵循此格式;当有多个选项时,可以写在一起;简化选项与完整选项 -a
等于 --all
3.查看目录
ls [选项] [文件或目录]
选项:
- -a 显示所有文件,包括隐藏文件
- -l 显示详细信息
- -d 查看目录属性
- -h 人性化显示文件大小
- -i 显示incode
-rw-r–r--
- 第一位 文件类型(
-
表示文件d
表示目录l
表示软链接文件) - 之后的分成三组权限(1~3 u所有者权限, 4~6 g所属组权限, 7~9 o其他人,其他组用户权限)
- r 读 w写 x执行
- 为当前用户增加读写权限:chmod u+rw a.txt
- 为某个用户组增加读写权限:chmod g+rw a.txt
- 把当前用户的权限更改为读和执行:chmod u=rx a.txt
语法:chmod [who] [+ | - | =] [mode] 文件名
命令中各选项的含义为
u 表示“用户(user)”,即文件或目录的所有者。
g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
o 表示“其他(others)用户”。
a 表示“所有(all)用户”。它是系统默认值。
操作符号可以是:
+ 添加某个权限。
- 取消某个权限。
= 赋予给定权限并取消其他所有权限(如果有的话)。
设置mode所表示的权限可用下述字母的任意组合:
r 可读。
w 可写。
x 可执行。
X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。
s 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。
t 保存程序的文本到交换设备上。
u 与文件属主拥有一样的权限。
g 与和文件属主同组的用户拥有一样的权限。
o 与其他用户拥有一样的权限。
实例
修改文件可读写属性的方法
例如:把index.html 文件修改为可写可读可执行:
chmod 777 index.html
要修改目录下所有文件属性可写可读可执行:
chmod 777 *.*
把文件夹名称与后缀名用*来代替就可以了。
比如:修改所有htm文件的属性:
chmod 777 *.htm
修改文件夹属性的方法
把目录 /images/small 修改为可写可读可执行
chmod 777 /images/small
修改目录下所有的文件夹属性
chmod 777 *
把文件夹名称用*来代替就可以了
要修改文件夹内所有的文件和文件夹及子文件夹属性为可写可读可执行
chmod -R 777 /upload
总结linux下目录和文件的权限区别
文件:读文件内容(r)、写数据到文件(w)、作为命令执行文件(x)。
目录:读包含在目录中的文件名称(r)、写信息到目录中去(增加和删除索引点的连结)、搜索目录(能用该目录名称作为路径名去访问它所包含的文件和子目录)
具体说就是:
(1)有只读权限的用户不能用cd进入该目录:还必须有执行权限才能进入。
(2)有执行权限的用户只有在知道文件名,并拥有读权利的情况下才可以访问目录下的文件。
(3)必须有读和执行权限才可以ls列出目录清单,或使用cd命令进入目录。
(4)有目录的写权限,可以创建、删除或修改目录下的任何文件或子目录,即使使该文件或子目录属于其他用户也是如此。
查看目录权限
查看文件权限的语句:
在终端输入:
ls -l xxx.xxx (xxx.xxx是文件名)
那么就会出现相类似的信息,主要都是这些:
-rw-rw-r--
一共有10位数
其中: 最前面那个 - 代表的是类型
中间那三个 rw- 代表的是所有者(user)
然后那三个 rw- 代表的是组群(group)
最后那三个 r-- 代表的是其他人(other)
然后我再解释一下后面那9位数:
r 表示文件可以被读(read)
w 表示文件可以被写(write)
x 表示文件可以被执行(如果它是程序的话)
- 表示相应的权限还没有被授予
现在该说说修改文件权限了
在终端输入:
chmod o w xxx.xxx
表示给其他人授予写xxx.xxx这个文件的权限
chmod go-rw xxx.xxx
表示删除xxx.xxx中组群和其他人的读和写的权限
其中:
u 代表所有者(user)
g 代表所有者所在的组群(group)
o 代表其他人,但不是u和g (other)
a 代表全部的人,也就是包括u,g和o
r 表示文件可以被读(read)
w 表示文件可以被写(write)
x 表示文件可以被执行(如果它是程序的话)
其中:rwx也可以用数字来代替
r ------------4
w -----------2
x ------------1
- ------------0
行动:
表示添加权限
- 表示删除权限
= 表示使之成为唯一的权限
当大家都明白了上面的东西之后,那么我们常见的以下的一些权限就很容易都明白了:
-rw------- (600) 只有所有者才有读和写的权限
-rw-r--r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
-rwx------ (700) 只有所有者才有读,写,执行的权限
-rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
-rwx--x--x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限
-rw-rw-rw- (666) 每个人都有读写的权限
-rwxrwxrwx (777) 每个人都有读写和执行的权限
4.系统命令
切换用户:su 用户名
查看系统进程:ps
查看主机名称:hostname
查看系统内核:uname -r、uname -a、uname -p、uname -m
2.文件处理命令
1.目录处理命令
1.建立目录
mkdir -p [目录名]
-p
表示递归创建
2.切换目录
cd [目录]
- cd ~或cd 进入当前用户的家目录(root用户在/root,其他用户在/home)
- cd - 进入上次目录
- cd … 进入上一级目录
- cd . 进入当前目录
相对路径:参照当前所在目录,进行查找,如:
[root@imooc ~]# cd ../usr/local/src/
绝对路径:从根目录开始指定,一级一级递归查找.在任何目录下,都能进入指定位置,如:
[root@imooc ~]# cd /etc/
3.查询目录所在位置
pwd :print working directory
4.常用目录的作用
- / 根目录
- /bin 命令保存目录(普通用户就可以读取的命令)
- /boot 启动目录,启动相关文件
- /dev 设备文件保存目录
- /etc 配置文件保存目录
- /home 普通用户的家目录
- /lib 系统库保存目录
- /mnt 系统挂载目录
- /media 挂载目录
- /root 超级用户的家目录
- /tmp 临时目录
- /sbin 命令保存目录(超级用户才能使用的目录)
- /proc 直接写入内存
- /sys
- /usr 系统软件资源目录
- /usr/bin 系统命令(普通用户)
- /usr/sbin 系统命令(超级管理员)
- /var 系统相关文档内容
注意1:根目录下的bin和sbin,usr目录下的bin和sbin目录,这四个目录都是用来保存系统命令的,但是bin目录下的是所有用户都能访问的命令,但是sbin目录下的是只有管理员才能访问的命令.
注意2:proc和sys目录不能直接操作,这两个目录保存的是内存的过载点.
5.删除空目录
rmdir [目录名]
6.删除文件或目录
rm -rf [文件或目录]
选项:
- -r 删除目录
- -f 强制执行
7.复制命令
cp [选项] [原文件或目录] [目标目录]
选项:
- -f 复制目录
- -p 连带文件属性复制
- -d 若源文件是链接文件,则复制链接属性
- -a 相当于 -pdr
8.剪切或改名命令
mv [原文件或目录] [目标目录]
如果将文件剪切到相同目录,名字改变,就是改名命令
2.文件处理命令
1.创建文件
touch 创建空文件
2.复制文件
cp 源文件名 新文件名
3.查看文件全部内容
cat 文件路径
4.分页查看文件内容
more 文件路径
5.查看文件的前n行
head -n 数字 文件名
6.查看文件的后n行
tail -n 数字 文件名
3.链接命令
1.链接命令 ln
ln -s [原文件] [目标文件]
功能描述:生成链接文件
选项: -s
创建软链接
注意:直接ln也可以使用,创建的是硬链接
硬链接特征:
- 拥有相同的i节点和存储block块,可以看做是同一个文件
- 可通过i节点识别
- 不能跨分区
- 不能针对目录使用
软链接特征:
- 类似Windows快捷方式
- 软链接拥有自己的i节点和block块,但是数据块中只保存原文件的文件名和i节点号,并没有实际的文件数据
- lrwxrwxrwx 第一位的l表示软链接(注意:软连接的文件权限都为rwxrwxrwx)
- 修改任意文件,另一个都改变
- 删除原文件,软链接不能使用
注意:创建软链接的时候一定要写绝对路径
文件修改
- 通过
vi [文件名]
打开并编辑 - 通过
echo [内容] >> [文件名]
,将内容直接写入文件
3.文件搜索命令
1.文件搜索命令locate
locate
命令比find命令搜索速度快
格式:locate [文件名]
在后台数据库中按文件名搜索,搜索速度最快
locate
命令所搜索的后台数据库是/var/lib/mlocate
但是这个数据库并非实时更新的,如果是新建的文件,会出现查找不到的情况,说明没有更新后台数据库,可以通过updatedb
命令更新
缺点:只能按照文件名搜索
搜索规则:根据/etc/updatedb.conf中的配置进行搜索
- PRUNE_BIND_MOUNTS=“yes” 是否开始搜索限制(如果yes表示启用下边的搜索限制,如果是no表示不启用)
- PRUNEFS ="" 引号中写的是搜索时不需要搜索的文件系统
- PRUNENAMES="" 引号中写的是搜索时不搜索的文件类型
- PRUNEPATHS="" 引号中写的是搜索时不搜索的路径
2.命令搜索命令whereis与which
whereis [选项] [命令名]
主要用于搜索命令所在路径及帮助文档所在位置
选项:
- -b 只查找可执行文件
- -m 只查找帮助文件
这里另外提一句,想要知道当前用户是哪个可以用whoami
命令
[root@localhost ~]# whoami
root
想要知道命令是做什么的可以用whatis
命令
[root@localhost ~]# whatis ls
ls (1) - list directory contents
which [文件名]
搜索命令所在路径及别名
与whereis
的主要区别是显示路径的同时还会显示别名
注意:whereis
和which
命令都无法找到shell自带的命令
配置PATH
echo $PATH
与windows中的path环境变量类似.自己定义的脚本也需要添加到PATH
3.文件搜索命令find
find [搜索范围] [搜索条件]
主要用于搜索文件
示例:find / -name install.log
实际操作应避免这么写,避免大范围搜索,会非常消耗系统资源
find是在系统当中搜索符合条件的文件名.如果需要匹配,使用通配符匹配,通配符是完全匹配.
Linux中的通配符
*
匹配任意内容?
匹配任意一个字符[]
匹配任意个亿中括号内的字符
搜索条件
-iname
搜索条件不区分大小写-user
按照所有者搜索-nouser
查找没有所有者的文件
find /root -iname install.log
find /root -user root
find /root -nouser
-mtime
文件访问时间-ctime
改变文件属性-mtime
修改文件内容
find /var/log/ -mtime +10
#-mtime +10 查找10天前修改的文件
#-mtime -10 查找10天内修改的文件
#-mtime 10 查找10天当天修改的文件
-size
按照文件大小 (这里k需要小写,M是大写)-inum
按照i节点
find . -size 25k
# -25k 小于25KB的文件
# 25k 等于25KB的文件
# +25k 大于25KB的文件
find . -inum 262422
# 查找i节点是262422的文件
# 这里的.代表当前目录
-a
and 逻辑与,两个条件都满足-o
or 逻辑或,两个条件满足一个即可-exec
/-ok
[命令]{}\;
命令,对搜索结果执行命令
注意 这里加的命令必须是查询出来的文件能够执行的命令
find /etc -size +20k -a -size -50k
这条命令的意思是查找etc目录下,大于20KB且小于50KB的文件
find /etc -size +20k -a -size -50k -exec ls -lh {} \;
这条命令代表查找etc目录下,大于20KB且小于50KB的文件并且显示详细信息
4.字符串搜索命令grep
grep [选项] 字符串 文件名1 文件名2
在文件中搜索匹配符合条件的字符串
选项
-i
忽略大小写-v
排除指定字符串
这个功能异常强大,同时还可以和管道结合使用
这里先简单说一下管道:
管道就是|
这个操作符,可以同时执行多个命令
命令1 | 命令2 | 命令3
:同时命令1的结果是命令2的输入,依次类推.
例如:head a.txt | grep java | grep tomcat
这个命令是在前十行中包含java和tomcat的字符串
5.find命令与grep命令的区别
find命令:在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配.
grep命令:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式是包含匹配.
4.帮助命令
1.帮助命令man
man 命令
获取指定命令的帮助
示例:man ls
查看ls的帮助
注意:进入man之后,可以输入/ 查找内容
查找到对应内容,然后按N
查找下一个.按shift+N
查找上一个.按q
退出.
man的级别
- 查看命令的帮助
- 查看可被内核调用的函数的帮助
- 查看函数和函数库的帮助
- 查看特殊文件的帮助(主要是/dev目录下的文件)
- 查看配置文件的帮助
- 查看游戏的帮助
- 查看其它杂项的帮助
- 查看系统管理员可用命令的帮助
- 查看和内核相关文件的帮助
man -f 命令
查看命令用友哪个级别的帮助
也可以使用whatis 命令
,可以查看有几个等级的帮助文档
示例:man 5 passwd
man -k 命令
查看和命令相关的所有帮助
相当于apropos 命令
示例:apropos passwd
2.其他帮助命令
命令 --help
获取命令选项的帮助
help shell内部命令
获取shell内部命令的帮助
示例:
whereis cd
#确定是否是shell内部命令
help cd
#获取内部命令帮助
info 命令
-回车
:进入子帮助页面(带有*号标记)-u
:进入上层页面-n
:进入下一个帮助小节-p
:进入上一个帮助小节-q
:退出
5.压缩与解压缩命令
1. .zip
.gz
.bz2
.zip格式压缩
zip 压缩文件名 源文件
压缩文件
zip -r 压缩文件名 源目录
压缩文件夹
注意:这里的zip格式是可以与windows中的zip通用的
unzip 压缩文件
解压缩文件
.gz格式压缩
gzip 源文件
压缩为.gz格式的压缩文件,压缩完成源文件会消失
gzip -c 源文件 > 压缩文件
压缩为.gz格式,源文件保留
gzip -r 目录
压缩目录下所有的子文件,但是不能压缩目录
gzip -d 压缩文件
解压缩文件
gunzip 压缩文件
解压缩文件
gunzip -r 包含压缩文件的目录
将目录中的压缩文件全部解压
.bz2格式压缩
bzip2 源文件
压缩为.bz2格式,不保留源文件
bzip2 -k 源文件
压缩之后保留源文件
bzip2命令不能压缩目录
bzip2 -d 压缩文件
解压缩,-k保留压缩文件
bunzip2 压缩文件
解压缩,-k保留压缩文件
2. tar.gz
tar.bz2
打包命令tar
tar -cvf 打包文件名 源文件
选项:
-c
打包-v
显示过程-f
指定打包后的文件名-t
查看压缩文件内容,但不解压缩
示例:tar -cvf abc.tar abc
解打包命令
tar -xvf 打包文件名
选项:
-x
解打包-v
显示过程-f
指定打包后的文件名-C
指定解打包后的文件位置
.tar.gz压缩格式
其实.tar.gz格式是先打包为.tar格式,再压缩为.gz格式.同时linux也支持将这两步合并完成的操作
tar -zcvf 压缩包名.tar.gz 源文件
压缩为.tar.gz文件
tar -zxvf 压缩包名.tar.gz
解压缩.tar.gz文件
选项:-z
压缩或解压缩为tar.gz文件
.tar.bz2压缩格式
tar -jcvf 压缩包名.tar.bz2 源文件
压缩为.tar.bz2文件
tar -jxvf 压缩包名.tar.bz2
解压缩.tar.bz2文件
选项:-j
压缩或解压缩为tar.bz2文件
查看压缩包中的文件内容(这里起关键的就是-t
,只查看不解压)
tar -ztvf test.tar.gz
解压缩到自定义的文件位置(-C关键字是设置解压缩位置)
tar -zxvf test.tar.gz -C /tmp/
同时压缩多个文件,只需要将多个文件放在后边,空格隔开
tar -zcvf test.tar.gz a b c
6.关机和重启命令
1.shutdown命令
shutdown [选项] 时间
选项:
-c
取消前一个关机命令-h
关机-r
重启
这个命令执行之后,就不能进行其他操作,这个时候可以在命令后边加一个&,表示将这条命令加入后天执行.
shutdown -r 05:30 &
2.其他关机命令
- halt
- poweroff
- init 0
不建议使用
3.其他重启命令
- reboot (可以使用)
- init 6 (不要使用)
4.系统运行级别
- 关机
- 单用户
- 不完全多用户,不含NFS服务
- 完全多用户
- 未分配
- 图形界面
- 重启
runlevle
查看系统运行级别
[root@localhost tmp]# runlevel
N 3
# N代表之前的运行级别是关机,3代表当前的运行级别是3
# 如果是从图形界面切换到多用户这里会显示为"5 3"
cat /etc/inittab
查看系统默认运行级别
cat /etc/inittab
....
id:3:initdefault:
....
5.退出登录命令
logout
这里需要注意,每次用xshell这种远程工具操作完后,都需要执行这条命令退出登录,切记不要直接关掉xshell,否则每次登录都相当于是新的用户操作,多次操作后会超出linux支持的用户数,无法登陆,只能重启服务器.
7.其他常用命令
1.挂载命令
1.查询与自动挂载
mount
查询系统中已经挂载的设备
mount -a
依据配置文件/etc/fstab的内容,自动挂载
2.挂载命令格式
mount [-t 文件系统] [-o 特殊选项] 设备 文件名 挂载点
选项:
-t 文件系统
:加入文件系统类型来指定挂载的类型,可以ext3,ext4,iso9660等文件系统-o 特殊选项
:可以指定挂载的额外选项
2.用户登录查看和用户交互命令
查看登录用户信息
w 用户名
命令输出:
- USER:登录的用户名
- TTY:登录终端
- FROM:从哪个IP地址登录
- LOGIN@:登录时间
- IDLE:用户闲置时间
- JCPU:指的是和该终端连接的所有进程占用的时间.这个时间里并不包括过去的后台作业试驾,但却包括当前正在运行的后台作业所占用的时间
- WHAT:当前正在运行的命令
who 用户名
和w
作用相同
命令输出:
- 用户名
- 登录终端
- 登录时间(登录来源IP地址)
查询当前登录和过去登录的用户信息
last
last命令默认是读取/var/log/wtmp文件数据
命令输出
- 用户名
- 登录终端
- 登录IP
- 登录时间
- 退出时间(在线时间)
查询所有用户的最后一次登录时间
lastlog
lastlog命令默认是读取/var/log/lastlog文件内容
命令输出:
- 用户名
- 登录终端
- 登录IP
- 最后一次登录时间
8.shell基础
1.Shell概述
Shell是一个命令行解释器,同时也是一门功能强大的编程语言
其中主要语法类型有Bourne Shell和C Shell两种
Bourne包括sh,ksh,Bash,psh,zsh
C包括:csh,tsch
2.脚本执行方式
1.echo输出命令
echo [选项] [输出内容]
选项:
-e
支持反斜线控制的字符转换