目录
Linux的文件目录结构图
1.Linux一切皆为文件
2.只有一个顶级目录,不像windows分C盘、D盘、E盘
Linux | 含义 | windows |
/bin | 存放常用的命令(二进制可执行程序) | windows没有固定的命令存放目录 |
/boot | linux系统启动的时候需要加载和使用的文件 | |
/dev | 外设连接linux后,对应的文件存放的位置 | 类似Windows中的U盘,光盘的符号文件。 |
/etc | 存放系统或者安装的程序的配置文件,注册服务等 | 类似windows中的注册表, |
/home | 家目录,linux中每新建一个用户,会自动在home中为该用户分配一个文件夹 | 类似windows中的"我的文档",每个用户有自己的目录。 |
/lib | linux的命令和系统启动,需要使用一些公共的依赖,放在lib中,类似我们开发的代码执行需要引入的jdk的jar | |
/proc | 存放虚拟文件系统目录,保存进程在内存中的信息 | |
/usr | 很多系统软件的默认安装路径 | 类似windows中的C盘下的Program Files目录。 |
/var | 系统和程序运行产生的日志文件和缓存文件放在这里 | |
/sbin | 需要管理员权限才能使用的命令 | |
/root | root账户的家目录,仅供root账户使用 | 类似windows中的Administrator账户的"我的文档" |
/mnt | 临时挂载点 | |
/tmp | 存放临时文件,所有用户都可以访问 |
目录与文件(创建查看修改删除)
#文件内容查找
# 语法
grep -参数 要查找的目录范围
# 参数
-n 显示查找结果所在行号
-R 递归查找目录下的所有文件
# 例子
grep aries /etc
grep aries /etc/passwd
wegt文件下载
文件运行
关机、重启、登出
压缩解压
tar包和gz包是两个不同的文件包,有三种不同后缀。.tar .gz .tar.gz
tar包:使用tar命令,打包文件或者文件夹,只打包,不压缩
gz包:使用gzip命令,只压缩文件,不打包,所以gz包操作不能对文件夹直接操作,如果要对文件夹下所有文件进行压缩,使用-r参数,gzip -r 文件夹路径
tar.gz:使用tar加-z参数,tar -zcvf filename.tar.gz dir/file 打包压缩文件或者文件夹
tar
tar参数有 z,c,x,v,f
-z 表示压缩操作类型是 .tar.gz
-c 表示当前行为是打包
-x 表示当前行为是解压文件包
-v 参数要求显示命令执行过程
-f 指定打包后文件名
-C 解压到指定路径
#常用压缩打包命令:
tar -zcvf tarame.tar.gz dir/files
#常用解压缩命令:
tar -zxvf tarname.tar.gz -C 指定解压后文件存放地址
gzip
gzip常用参数有 d,c,t,v
-d 解压gz压缩包
-c 控制台窗口打印压缩后文件内容,源文件不变,执行后不生成压缩包
-v 显示压缩百分比
-t 测试已压缩文件是否正确,需要文件压缩成压缩文件后执行
直接压缩文件命令:gzip fileName
解压缩文件:gzip -d fileName.gz
注意:gzip命令默认是直接改变源文件,也就是执行gzip filename后,当前路径只有压缩后的文件,文件名是 原文件名.gz
要同时保留原文件和压缩文件,需要手动将写入压缩文件:gzip -c fileName > fileName.gz
解压操作保留原文件:gzip -dc fileName.gz > fileName
zip
从本地打包上传到服务器的压缩包,一般都是zip或者rar格式,而不是tar包格式。
zip包上传到服务器后,使用unzip命令解压,压缩成zip包使用zip命令
zip和unzip命令需要安装,使用yum直接安装:
yum install zip -y
yum install unzip -y
zip常用参数有 r,q,d
-r 压缩文件夹,递归执行,压缩文件夹下所有文件
-q 不显示压缩过程,默认会在控制台打印压缩文件过程
-d 压缩过程中剔除指定文件, -d参数后跟随的文件不打包到压缩包里
压缩文件夹且排除指定文件不压缩:zip -r dirpath/ -d a.txt b.text
unzip常用参数有 n,v,d
-n 解压后不覆盖已存在文件,如果压缩包文件中与解压路径有同名文件,跳过该文件
-v 控制台打印显示压缩包内容,但是不解压,-v参数只进行查看
-d 指定解压后文件存放路径
unzip常直接使用,解压到当前路径,覆盖同名文件:unzip file.zip
chmod、chown更改权限
- 权限:指某个特定的用户具有特定的系统资源使用权力。
- 三种基本文件权限:读(r表示),写(w表示),执行(x表示)
- 访问文件的三类用户:文件的所有者(u表示),所属组(g表示),其他人(o表示)
①chmod 改变文件或目录权限
语法:chmod [{ugoa}{+/- =}{rwx}] [文件或目录]
注:u:所有者 g:所属组 o:其他人 a:所有人
+:用户增加权限 -:用户减少权限 =:为用户赋予权限
②chmod -R [mode=421] [文件或目录](这种方法用的比较多)
备注:r:4 w:2 x:1
r为读权限,可以用4来表示,
w为写权限,可以用2来表示,
x为执行权限,可以用1来表示。
-R 递归修改(就是将嵌套在很多文件夹中的文件权限修改了,如果没有这个,只能到指定的文件夹下进行修改)
③chown 更改文件或目录属主和属组
语法:chown[可选项]user[:group]file
④chgrp 改变文件或目录所属组
语法:chgrp[选项]group file
ssh
最简单的用法就是不带参数.
> ssh rumenz.com
rumenz@rumenz.com's password:
这种形式登陆主机,会默认使用当前用户进行登录。第一次连接的时候,SSH 会确认目标主机的真实性,如果没有问题的话,输入yes即可。
指定用户名登录
#方法一
$ ssh -l rumenz rumenz.com
#方法二(常用)
$ ssh rumenz@rumenz.com
sed
当你将Dos系统中的文件复制到Unix/Linux后,这个文件每行都会以\r\n结尾,sed可以轻易将其转换为Unix格式的文件,使用\n结尾的文件
$ sed 's/.$//' filename
#反转文件内容并输出
$ sed -n '1!G; h; p' filename
#为非空行添加行号
$ sed '/./=' thegeekstuff.txt | sed 'N; s/\n/ /'
sort
#以升序对文件内容排序
$ sort names.txt
#以降序对文件内容排序
$ sort -r names.txt
#以第三个字段对/etc/passwd的内容排序
$ sort -t: -k 3n /etc/passwd | more
ftp
ftp命令和sftp命令的用法基本相似连接ftp服务器并下载多个文件
$ ftp IP/hostname
ftp> mget *.html
显示远程主机上文件列表
ftp> mls *.html -
service
service命令用于运行System V init脚本,这些脚本一般位于/etc/init.d文件下,这个命令可以直接运行这个文件夹里面的脚本,而不用加上路径
#查看服务状态
$ service ssh status
#查看所有服务状态
$ service --status-all
#重启服务
$ service ssh restart
ps、kill
ps命令用于显示正在运行中的进程的信息,ps命令有很多选项,这里只列出了几个
#查看当前正在运行的所有进程
$ ps -ef | more
#以树状结构显示当前正在运行的进程,H选项表示显示进程的层次结构
$ ps -efH | more
kill用于终止一个进程。一般我们会先用ps -ef
查找某个进程得到它的进程号,然后再使用kill -9 进程号
终止该进程。你还可以使用killall、pkill、xkill来终止进程
$ ps -ef | grep vim
ramesh 7243 7222 9 22:43 pts/2 00:00:00 vim
$ kill -9 7243
free
这个命令用于显示系统当前内存的使用情况,包括已用内存、可用内存和交换内存的情况
默认情况下free会以字节为单位输出内存的使用量
如果你想以其他单位输出内存的使用量,需要加一个选项,-g为GB,-m为MB,-k为KB,-b为字节
$ free -g
top
top命令会显示当前系统中占用资源最多的一些进程(默认以CPU占用率排序)如果你想改变排序方式,可以在结果列表中点击O(大写字母O)会显示所有可用于排序的列,这个时候你就可以选择你想排序的列
#如果只想显示某个特定用户的进程,可以使用-u选项
$ top -u oracle
df
显示文件系统的磁盘使用情况,默认情况下df -k
将以字节为单位输出磁盘的使用量
$ df -k
使用-h选项可以以更符合阅读习惯的方式显示磁盘使用量
$ df -h
使用-T选项显示文件系统类型
$ df -T
mount
mount命令是经常会使用到的命令,它用于挂载Linux系统外的文件。用来挂载硬盘或镜像等。
mount [-hV]
mount -a [-fFnrsvw] [-t vfstype]
mount [-fnrsvw] [-o options [,...]] device | dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir
#将 /dev/hda1 挂在 /mnt 之下。
$ mount /dev/hda1 /mnt
#将 /dev/hda1 用唯读模式挂在 /mnt 之下。
$ mount -o ro /dev/hda1 /mnt
#将 /tmp/image.iso 这个光碟的 image 档使用 loop 模式挂在 /mnt/cdrom之下。用这种方法可以将一般网络上可以找到的 Linux 光 碟 ISO 档在不烧录成光碟的情况下检视其内容。
$ mount -o loop /tmp/image.iso /mnt/cdrom
如果要挂载一个文件系统,需要先创建一个目录,然后将这个文件系统挂载到这个目录上
# mkdir /u01
# mount /dev/sdb1 /u01
也可以把它添加到fstab中进行自动挂载,这样任何时候系统重启的时候,文件系统都会被加载
/dev/sdb1 /u01 ext2 defaults 0 2
- -V:显示程序版本
- -h:显示辅助讯息
- -v:显示较讯息,通常和 -f 用来除错。
- -a:将 /etc/fstab 中定义的所有档案系统挂上。
- -F:这个命令通常和 -a 一起使用,它会为每一个 mount 的动作产生一个行程负责执行。在系统需要挂上大量 NFS 档案系统时可以加快挂上的动作。
- -f:通常用在除错的用途。它会使 mount 并不执行实际挂上的动作,而是模拟整个挂上的过程。通常会和 -v 一起使用。
- -n:一般而言,mount 在挂上后会在 /etc/mtab 中写入一笔资料。但在系统中没有可写入档案系统存在的情况下可以用这个选项取消这个动作。
- -s-r:等于 -o ro
- -w:等于 -o rw
- -L:将含有特定标签的硬盘分割挂上。
- -U:将档案分割序号为 的档案系统挂下。-L 和 -U 必须在/proc/partition 这种档案存在时才有意义。
- -t:指定档案系统的型态,通常不必指定。mount 会自动选择正确的型态。
- -o async:打开非同步模式,所有的档案读写动作都会用非同步模式执行。
- -o sync:在同步模式下执行。
- -o atime、-o noatime:当 atime 打开时,系统会在每次读取档案时更新档案的『上一次调用时间』。当我们使用 flash 档案系统时可能会选项把这个选项关闭以减少写入的次数。
- -o auto、-o noauto:打开/关闭自动挂上模式。
- -o defaults:使用预设的选项 rw, suid, dev, exec, auto, nouser, and async.
- -o dev、-o nodev-o exec、-o noexec允许执行档被执行。
- -o suid、-o nosuid:
- 允许执行档在 root 权限下执行。
- -o user、-o nouser:使用者可以执行 mount/umount 的动作。
- -o remount:将一个已经挂下的档案系统重新用不同的方式挂上。例如原先是唯读的系统,现在用可读写的模式重新挂上。
- -o ro:用唯读模式挂上。
- -o rw:用可读写模式挂上。
- -o loop=:使用 loop 模式用来将一个档案当成硬盘分割挂上系统。
passwd
passwd用于在命令行修改密码,使用这个命令会要求你先输入旧密码,然后输入新密码
#超级用户可以用这个命令修改其他用户的密码,这个时候不需要输入用户的密码
$ passwd USERNAME
#passwd还可以删除某个用户的密码,这个命令只有root用户才能操作,删除密码后,这个用户不需要输入密码就可以登录到系统
$ passwd -d USERNAME
ifconfig
ifconfig用于查看和配置Linux系统的网络接口
#查看所有网络接口及其状态
$ ifconfig -a
#使用up和down命令启动或停止某个接口
$ ifconfig eth0 up
$ ifconfig eth0 down
uname
uname可显示一些重要的系统信息,例如内核名称、主机名、内核版本号、处理器类型之类的信息
whereis、whatis
#查找某个命令的位置
$ whereis ls
#查找某个可执行程序的位置,但它又不在whereis的默认目录下,使用-B选项,并指定目录作为这个选项的参
数。下面的命令在/tmp目录下查找lsmk命令
$ whereis -u -B /tmp -f lsmk
#wathis显示某个命令的描述信息
$ whatis ls
locate
locate命名可以显示某个指定文件(或一组文件)的路径,它会使用由updatedb创建的数据库
下面的命令会显示系统中所有包含crontab字符串的文件
$ locate crontab
su
su命令用于切换用户账号,超级用户使用这个命令可以切换到任何其他用户而不用输入密码
#变更帐号为 root 并在执行 ls 指令后退出变回原使用者
$ su -c ls root
#变更帐号为 root 并传入 -f 参数给新执行的 shell
$ su root -f
#变更帐号为 clsung 并改变工作目录至 clsung 的家目录(home dir)
$ su - clsung
#切换用户
$ su root //切换到root用户
mysql
mysql可能是Linux上使用最广泛的数据库,即使你没有在你的服务器上安装mysql,你也可以使用mysql客户端连接到远程的mysql服务器
连接一个远程数据库,需要输入密码
$ mysql -u root -p -h 192.168.1.2
连接本地数据库
$ mysql -u root -p
你也可以在命令行中输入数据库密码,只需要在-p后面加上密码作为参数,可以直接写在p后面而不用加空格
yum、rpm
yum( Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。
基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
列出所有可更新的软件清单命令:yum check-update
更新所有软件命令:yum update
仅安装指定的软件命令:yum install <package_name>
仅更新指定的软件命令:yum update <package_name>
列出所有可安裝的软件清单命令:yum list
删除软件包命令:yum remove <package_name>
查找软件包命令:yum search <keyword>
清除缓存命令:
yum clean packages: 清除缓存目录下的软件包
yum clean headers: 清除缓存目录下的 headers
yum clean oldheaders: 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下
的软件包及旧的 headers
rpm命令是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装,升级,间接提升了Linux的适用度。
rpm -q 包名 查询软件包是否安装
rpm -qa | grep 包名 查询已安装的所有rpm包在过滤某个包是否安装
rpm -qf 文件名 查询系统文件所属哪个软件包,常用rpm -qf `which 命令`
rpm -qi 包名 查询已安装软件包的详细信息
rpm -ql 包名 查询已安装软件包中、文件安装的位置
rpm -qc 包名 查询已安装软件包中所有配置文件的路径
rpm -qR 包名 查询已安装软件包的依赖关系
-p 上面的命令加上-p参数则是查询未安装软件包的相关信息。
注意:-p参数需加上软件包的完整包名和位置信息例如rpm -qpR /mnt/cdrom/AppStream/Packages/whois-5.5.1-2.el8.x86_64.rpm
rpm -ivh x.rpm 安装软件,加 --force忽略报错,强制安装
rpm -Uvh x.rpm 升级软件
rpm -e x.rpm 卸载软件,加--nodeps忽略报错,强制卸载 ,建议在卸载时不要用rpm去卸载有依赖关系的包,应该用yum
查看软件包内容是否被修改。注: 检验时参考了 /var/lib/rpm 目录下的rpm数据库信息
rpm -V 软件包名、例如 rpm -V findutils
rpm -Vf 文件路径、例如 rpm -Vf /usr/bin/find
注:如果出现的全是点或者空,表示测试通过
出现下面的字符代表某测试的失败:
5 — MD5 校验和是否改变,你也看成文件内容是否改变
S — 文件长度,大小是否改变
L — 符号链接,文件路径是否改变
T — 文件修改日期是否改变
D — 设备
U — 用户,文件的属主
G — 用户组
M — 模式 (包含许可和文件类型)
? — 不可读文件