Linux学习笔记一(文件和目录操作)
1.基本shell操作
命令解析器--根据命令的名字,调用对应的可执行程序
shell--unix操作系统
bash--Linux操作系统(文件系统)
Linux文件系统的存储单元是块
在磁盘上存储的时候每个文件都有一个inode--i节点,保存了一些文件信息,通过iNode找到对应的文件
a.快捷键
b.虚拟终端
history--查询命令的历史记录
ctrl+p == 向上的箭头,查询上一个命令
ctrl+n == 向下的箭头,查询下一个命令
ctrl+b 向左移动back
ctrl+f 向右移动forward
ctrl+a 移动到行首
ctrl+e 移动到行尾
ctrl+h 刪除光标前面的字符
ctrl+d 刪除光标覆盖的字符
ctrl+u 刪除光标前面的所有字符
ctrl+k 删除光标位置到行尾的字符
ctrl+l或者clear命令 清理屏幕
c.命令和路径补齐
tab智能提示键,按一次没反应说明有很多符合条件的命令,再按一次出现符合条件的命令列表
cd 目录 + 连续两次tab,显示目录下一级的所有路径
d.centos7防火墙操作
systemctl start firewalld.service 启动
systemctl enable firewalld.service 开机启动
systemctl stop firewalld.service 停止
systemctl disable firewalld.service 禁止开机启动
systemctl status firewalld.service 查看状态
firewall-cmd --state 查看状态
2.Linux系统目录结构
ls 路径 (查询当前路径下的所有文件)
/根目录下的目录说明:
/bin bin是binary的缩写,这个目录存放着经常使用的命令可执行程序
/boot 存放的是启动Linux时的一些核心文件,包括一些连接文件以及镜像文件(开机启动项)
/dev 是Device(设备)的缩写,该目录存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的
(Linux奉行一切皆文件,它会把所有硬件外设抽象成设备文件存到dev目录之下,比如鼠标键盘)
/etc 用来存放所有系统管理所需要的配置文件和子目录
/home 用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名。
/lib 这个目录存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都要用到这些共享库。
/lost+found 这个目录一般情况下是空的,当系统非法关机后,这里存放了一些文件碎片。
/media Linux系统会自动识别一些设备,例如U盘和光驱等,当时别后,Linux会把识别的设备挂载到这个目录下。(自动)
/mnt 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以把光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。(手动)
/opt 这是主机给安装软件所摆放的目录,比如你安装一个ORACLE数据库就可以放到这个目录下,默认是空的
/proc 该目录是一个虚拟目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器;
例:echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
/root 该目录为系统管理员,也称作超级管理员的用户主目录
/sbin s就是super user 的意思,这里存放的是系统管理员使用的系统管理程序。
/selinux 这个目录是Redhat/CentOs所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关文件的
/srv 该目录存放一些服务启动之后需要提取的数据
/sys 这是linux2.6内核的一个很大的变化,该目录下安装了2.6内核中新出现的一个文件系统 sysfs.
sysfs文件系统集成了下面三种文件系统信息:
针对进程信息的proc文件系统、针对设备的devfs文件系统、针对伪终端的devpts文件系统
该文件系统是内核设备树的一个直观反映,当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
/tmp 临时文件目录
/usr (user soft resource )这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录
/usr/bin 系统用户使用的应用程序
/usr/sbin 超级用户使用的比较高级的管理程序和系统守护程序
/usr/src 内核源代码默认存放的目录
/var 这个目录存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下,包括各种日志文件
注意:在linux系统中,有几个目录是比较重要的,平时不要误删或者随意更改内部文件。
/etc:系统的配置文件,如果更改了该目录的某个文件可能导致系统不能启动。
/bin,/sbin,/usr/bin,/usr/sbin : 这是系统预设的执行文件的放置目录,比如ls就是在/bin/ls目录下
值得提出的是:/bin,/usr/bin是给系统用户使用的(root外的通用用户),而/sbin, /usr/sbin是给root使用的
/var 系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log目录下,另外mail的预设放置也是在这里
3.用户目录
a.绝对路径:从根目录开始写/home...
b.相对路径:相对于当前目录而言
. ->当前目录
.. ->当前目录的上一个目录
- ->在临近的两个目录之间进行切换 cd -
c.itcast@ubuntu:~$ 输入命令前的字符含义
itcast:当前登录用户
@:at 在
ubuntu:主机名
~:用户的家目录(宿主目录)
$:当前用户为普通用户
#:超级用户root
ubuntu中切换为超级用户命令:sudo su
2.文件和目录操作相关命令
文件或目录颜色一般情况:
白色--普通文件(su.java)
蓝色--目录
绿色--可执行文件
红色--压缩文件(su.tar.gz)
青色--链接文件(相当于windows快捷方式)
黄色--设备文件
block 块--硬盘被抽象成块设备文件
char 字符--键盘被抽象成字符设备
fifo 管道
例如:tty...
灰色--其他文件
pwd 查看当前目录
ls -a 查询所有文件,其中 .文件 代表隐藏文件
ls -R 同时列出所有的子目录层
ls -la 列举当前目录下所有文件信息,信息详解如下
例如:drwxr-xr-x. 2 root root 180 Nov 27 09:07 block
数据看的时候采用1333原则
字母含义:r--read,w--write,x--可执行权限
1-->d->文件类型:普通文件【-】
目录【d】
链接符号【l】
块设备【b】
字符设备【c】
socket文件【s】
管道【p】
3-->rwx->所有者权限
3-->r-x->同组用户权限
3-->r-x->其他人权限
2--文件的硬链接数
root--该文件或者目录的所有者
root--该文件或者目录所属的组
180--占用的存储空间
Nov 27 09:07--文件最后创建或修改时间
block--文件名
mkdir dirName 创建目录
mkdir -p dirName1/dirName2/dirName3 创建复合目录
rm -r dirName 彻底删除目录 -r表示递归删除
rm -ri dirName 带删除提示向导
touch fileName 创建文件,如果文件不存在就创建,存在则修改文件时间
rm fileName 删除文件
cp source.txt target.txt 复制文件,如果目标文件不存在则新建,存在则覆盖内容
cp -r dirName targetDirName 复制目录,如果目标目录不存在则创建目标目录并复制原目录下的文件到目标目录下
如果目标目录存在则复制原目录到目标目录下
cp dirName/* targetDirName/ 复制目录下的文件到指定目录下
more fileName 查看文件,回车显示下一行,空格显示下一页,b显示上一页,q退出
less fileName 查看文件,回车显示下一行,空格显示下一页,b显示上一页,q退出
cat fileName 查看文件
vi fileName 查看文件,可以编辑
head -5 fileName 查看文件文件前5行内容,不带-5默认显示前10行
tail -20 fileName 查看文件文件后20行内容,不带-20默认显示后20行
mv source.txt target.txt 给文件改名
mv source.txt dirName 移动文件到指定目录下
ln -s /home/a.txt【源文件+绝对路径】 a.txt【软链接名字】
软链接(符号链接)--相当于windows下快捷方式
注意事项:目录可以创建软链接
ln sourceFile targetFile 硬链接是对原文件的映射,不占据时间空间,硬链接通过inode找到原文件,每创建一个硬链接,硬链接基数都会+1,
修改硬链接对应的原文件和硬链接都会发生更改。硬链接相当于是对原文件的备份,只有文件才可以创建硬链接,目录不可以
wc fileName查看文件的信息
例如:wc aa.txt
结果:7 19 83 aa.txt
7--行数【wc -c fileName只显示字节数】
19--多少个单词,以空格为单位计数【wc -w fileName只显示单词数】
83--文件大小,多少个字节数【wc -l fileName只显示行数】
od fileName查看二进制文件信息
od -t 指定数据的现实格式
参数c-->ASCII字符
d-->有符号十进制数
f-->浮点数
o-->八进制数
u-->无符号十进制数
x-->十六进制数
使用方式 od -tc fileName
du 查看某个目录的大小 du【disk use】,一般加参数 -h【human】,以人类能看懂的方式显示
df 查看磁盘的使用情况 df【disk free】,一般加参数 -h【human】,以人类能看懂的方式显示
which 查看指定命令所在的路径 which ls
3.文件权限、用户、用户组相关命令
a.查看当前登录用户 whoami
b.修改文件权限:
1).文字设定法:chmod [who] [+|-|=] [mode]
who:
文件所有者:u
文件所属组:g
其他人: o
所有人: a([who]位置啥都不写默认是a),给以上三个身份同时赋权限
+:添加权限
-:减少权限
=:覆盖原来的权限
mode:
r:读
w:写
x:可执行
使用:chmod o-w lin.txt
chmod o=r lin.txt
2).数字设定法:
-:没有权限
r: 4
w:2
x: 1
765
7--rwx--文件所有者
6--rw --文件所属组
5--rx --其他人
使用:chmod 765 lin.txt
chmod -001 lin.txt 减少该文件其他人可执行权限,所有者和所属组权限不变
c.修改文件所有者和所属组
cd /home-->ls -la 查看用户-->dandan
chown 所有者 lin.txt【修改文件所有者】 例子:chown dandan lin.txt
chgrp 所属组 lin.txt【修改文件所属组】 例子:chgrp dandan lin.txt
chown 所有者:所属组 lin.txt【同时修改文件所有者和所属组】
没有执行权限的话加上 sudo【管理员权限】
4.查找和检索相关命令
1)按文件属性查找
a.按文件名查找:find 路径 -name "文件名"
通配符:可以加在文件名所在引号里使用
*:多个
?: 一个
b.按文件的大小:find 路径 -size +10k|-10k【+表示大于,-表示小于】【小写k,大写M】
范围搜索:find 路径 -size +10k -size -1M【查询大于10k,小于1M文件】
c.按文件类型:find 路径 -type f/d/b/c/s/p/l
普通文件【f】
目录【d】
链接符号【l】
块设备【b】
字符设备【c】
socket文件【s】
管道【p】
2)按文件内容查找
grep -r "查找的内容" 路径
5.软件安装和卸载
1)在线安装:
安装:sudo yum install tree--在线下载安装
移除:yum remove tree
更新:yum update--更新软件列表【软件名和地址】
清除所有软件安装包:yum clean all
安装tree命令:切换到超管:su
yum search tree检索tree文件
执行yum install tree -y
[Errno 256] No more mirrors to try.错误的解决方式:
1、yum clean all
2、yum makecache
2)deb包安装
3)源码安装:
a.解压缩源代码包
b.进入到安装目录:cd dir
c.检测文件是否缺失,创建Makefile,检测编译环境:/.configure
d.编译源码,生成库和可执行程序:make
e.把库和可执行程序,安装到系统目录下:sudo make install
f.删除和卸载软件:sudo make distclean
g.上述安装步骤并不是绝对的,应该查看README文件
6.磁盘管理
取消挂载 umount dirName【目录名称】--卸载的时候必须退出当前dirName目录,否则会出现设备忙提示
挂载 mount deviceName【设备名称】 /mnt【挂载的目录】
fdisk -l 查看设备
Linux中, 磁盘设备种类:设备都保存在/dev中
sd-->SCSI Device
hd-->Hard Disk
fd-->Floppy Disk软盘
硬盘命名:硬盘1:sda, 硬盘2:sdb, 硬盘3:sdc
主分区:最多允许4个
主分区1:sda1
主分区2:sda2
主分区3:sda3
主分区4:sda4
扩展分区:第一个逻辑分区从sda5开始
逻辑分区1:sda5
逻辑分区2:sda6
逻辑分区3:sda7...