本文以rhel为例说明:
一.基本文件目录含义:
/boot 目录:保存系统的引导相关的文件
内核文件 grub (不要去动他们)
/etc 目录:系统常用的配置文件
系统管理员经常需要修改的文件
决定系统行为的配置文件
/bin 目录:用户常用的命令
文件和目录的操作命令
所有用户都可以使用
/sbin 目录:保存系统维护所使用的命令文件
很多命令普通用户都不能使用,只有root使用
/lib 目录:系统运行所需要的库文件
静态库,.a文件
动态库,.so文件
/dev 系统设备文件
例如/dev/cdrom
/dev/hda
/dev/sdb
/var 保存变化的数据
如日志文件,脱机文件
/mnt 系统用来安装文件系统设备目录
光盘 /mnt/cdrom
u盘 /mnt/sdb2
/proc 系统内存/cpu的映射
/tmp 保存系统运行时产生的临时文件
/usr 系统中保存与用户相关的信息
/home 系统中普通用户主目录
/root 系统中超级用户的主目录
二.常用命令
cd /home/
切换到home目录
cd - 返回切换到home前的目录
cd ../
切换到上一级目录
cd ~ 切换当前用户的home目录
cd . 就是当前目录
clear命令或者ctrl+L可以清屏
linux 输入错误命令退不出来了,怎么办:按ctrl+c,或者ctrl+],或者ctrl+d,对于不同的情况不同命令来结束指令
ls 列出目录
ls -a
ls _A
ls -b
ls -B
find 查找目录和文件
find -name 按照文件名查找文件
find -perm 按照文件权限查找文件
find -prune 使find命令不在当前指定的目录中查找,如果同时还使用了 -depth选项,那么-prune 选项将被find命令忽略
find -user 按照文件属主来查找文件
find -group 按照文件所属的组来查找文件
find -mtimee -n +n 按照文件的更改时间来查找文件,-n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前,还有-atime和-ctime选项,但他们都和-mtime选项
find -nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在
find -nouser 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在
grep 文本搜索工具,并可以把匹配的行打印出来 一般格式:grep [选项] 基本正则式 [文件]
grep -c
grep -i
grep -h
grep -l
grep -n
grep -v
grep -?
mkdir 若指定目录不存在则创建目录
-m 设置权限模式,而不是rwxrwxrwx减umask
-p 需要时创建目标目录的上层目录,但即使这些目录已存在也不当作错误处理
-v 每次创建新目录都显示信息
-Z 将每个创建的目录的SELinux 安全环境设置为CTX
--help 显示此帮助信息并退出
--version 显示版本信息并退出
tar 用来压缩和解压文件,本身不由压缩功能,是调用压缩功能实现的
-c 创建一个新归档
-v 详细第列出处理的文件
-z 通过gzip过滤归档
-f 使用归档文件或ARCHIVE设备
-x 从归档中解出文件
-t 列出归档内容
-r 追加文件至归档结尾
-u 仅追加比归档中副本更新的文件
-j 通过bzip2过滤归档
-Z 通过compress过滤归档
sed 文件处理工具,以行为单位可以将数据行进行替换,删除,新增,选取等特定工作
一般格式:sed [-nefri] `command` 输入文本
sed -n 使用安静模式,一般sed的用法中会把所有来自STDIN的资料都列出到荧幕上,但如果加上-n参数后,则只有经过sed特殊处理的那一行才会被列出来
sed -e 添加“脚本”到程序的运行列表
sed -f 添加“脚本文件”到程序的运行列表
sed -r 在脚本中使用扩展正则表达式
sed -i 直接修改读取的档案内容,而不是有荧幕输出
sed -l 指定“l”命令的换行期望长度
sed -s 将输入文件视为各个独立的文件而不是一个长的连续输入
sed -u 从输入文件读取最少的数据,更频繁的刷新输出
ftp 是ARPANET标准文件传输协议的用户接口,程序允许用户从远端网络站点下载文件或者传输文件到远端网络站点
ftp -d 运行时显示详细的处理信息
ftp -e 不记录历史命令
ftp -i 关闭交互模式
ftp -g 关闭tab功能
ftp -n 关闭自动登录功能
ftp -p 传输文件模式为被动模式
ftp -v 程序运行时显示详细的处理信息
ftp -k 当使用Kerberos v4认证时,从realm中得到信息
gzip 解压文件
gzip -a 使用ASCII文字模式
gzip -c 把解压后的文件输出到标准输出设备
gzip -f 强行解开压缩文件,不理会文件名称或硬连接是否存在以及该文件是否为符号连接
gzip -l 列出压缩文件的相关信息
-L 显示版本与版权信息
-n 解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其忽略不予处理
-N 解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其回存到解开的文件上。
-q 不显示警告信息
-r 递归处理,将指定目录下的所有文件及子目录一并处理
-S<压缩字尾字符串>或--suffix<压缩字尾字符串> 更改压缩字尾字符串
-t 测试压缩文件是否正确无误
-v 显示指令执行过程
ps 终端机进程相关操作
-a
-A
-c
-e
chmod 将每个文件的模式更改为指定值
操作对象 u 文件属主权限
g 同组用户权限
o 其他用户权限
a 所有用户(包括以上三种)
权限设定
+ 增加权限
- 取消权限
= 唯一设定权限
权限类别
r 读权限
w 写权限
x 执行权限
X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
s 文件属主和组id
l 给文件加锁,使其它用户无法访问
r-->4
w-->2
x-->1
-c
-f
-v
-R
head
将每个指定文件的头10 行显示到标准输出。
如果指定了多于一个文件,在每一段输出前会给出文件名作为文件头。
如果不指定文件,或者文件为"-",则从标准输入读取数据。
长选项必须使用的参数对于短选项时也是必需使用的。
-c, --bytes=[-]K 显示每个文件的前K 字节内容;
如果附加"-"参数,则除了每个文件的最后K字节数据外
显示剩余全部内容
-n, --lines=[-]K 显示每个文件的前K 行内容;
如果附加"-"参数,则除了每个文件的最后K 行外显示
剩余全部内容
-q, --quiet, --silent 不显示包含给定文件名的文件头
-v, --verbose 总是显示包含给定文件名的文件头
--help 显示此帮助信息并退出
--version 显示版本信息并退出
top 可以显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等
参数
-b 批处理
-c 显示完整的治命令
-I 忽略失效过程
-s 保密模式
-S 累积模式
-i<时间> 设置间隔时间
-u<用户名> 指定用户名
-p<进程号> 指定进程
-n<次数> 循环显示的次数
tail 输出文件的末尾部分
在标准输出上显示每个FILE的最后10行. 如果多于一个FILE,会一个接一个地显示, 并在每个文件显示的首部给出文件名. 如果没有FILE,或者FILE是-,那么就从标准输入上读取.
du 报告磁盘空间使用情况,统计文件大小
-a
-b
-c
-D
rm 删除文件
-f 强制删除
-i 在删除前需要确认
-I 在删除超过三个文件或者递归删除前要求确认
-r 递归删除目录及其内容
-v 详细显示进行的步骤
请注意,如果使用rm 来删除文件,通常仍可以将该文件恢复原状。如果想保证
该文件的内容无法还原,请考虑使用shred。
df 报告文件系统磁盘空间的剩余情况
-a
-h
-H
-i
echo "hello world!" 类似于js的alert()输出字符串
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等。
如dr-xr-xr-x
当为[ d ]则是目录
当为[ - ]则是文件;
若是[ l ]则表示为链接文档(link file);
若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
Linux centos重启命令:
1、reboot
2、shutdown -r now 立刻重启(root用户使用)
3、shutdown -r 10 过10分钟自动重启(root用户使用)
4、shutdown -r 20:35 在时间为20:35时候重启(root用户使用)
如果是通过shutdown命令设置重启的话,可以用shutdown -c命令取消重启
Linux centos关机命令:
1、halt 立刻关机
2、poweroff 立刻关机
3、shutdown -h now 立刻关机(root用户使用)
4、shutdown -h 10 10分钟后自动关机
系统中用到的共有三类变量:环境变量,系统变量,用户变量
环境变量:shell在启动时会读取一些配置文件,实际上他们也是shell脚本
常用
$HOME 当前用户主目录
$PATH shell查找命令的路径(目录)列表,各个目录用冒号隔开
$PS1 命令提示符
$PS2 二级提示符,用来提示后续输入,通常为>
@LANG 操作系统的语言,地区,字符集的设置,对操作系统下的应用程序有效
$NLS_LANG 针对Oracle语言,地区,字符集的设置,对Oracle中的工具有效
$SHELL 当前使用的shell,通常它的值是/bin/bash
$TERM 终端类型
$PWD 当前工作目录的路径
系统变量:也称为位置参数,属于系统自定义的,有特殊意义的变量
$# 表示位置参数的数量
$* 表示所有位置参数的内容
$? 表示命令执行后返回的状态,用于检查上一个命令的执行是否正确;在Linux中,命令退出状态为0表示命令正确执行,任何非0值表示命令执行错误
$$ 表示当前进程的进程号
$! 表示后台运行的最后一个进程号
$0 表示当前执行的进程名
$1...$n 表示对应位置参数的值
基本上 vi/vim 共分为三种模式,分别是一般模式、编辑模式与指令列命令模式。 这三种模式的作用分别是:
一般模式:
以 vi 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、贴上』来处理你的文件数据。
编辑模式:
在一般模式中可以进行删除、复制、贴上等等的动作,但是却无法编辑文件内容的! 要等到你按下『i, I, o, O, a, A, r, R』等任何一个字母之后才会进入编辑模式。注意了!通常在 Linux 中,按下这些按键时,在画面的左下方会出现『INSERT 或 REPLACE 』的字样,此时才可以进行编辑。而如果要回到一般模式时, 则必须要按下『Esc』这个按键即可退出编辑模式。
指令列命令模式:
在一般模式当中,输入『 : / ? 』三个中的任何一个按钮,就可以将光标移动到最底下那一行。在这个模式当中, 可以提供你『搜寻资料』的动作,而读取、存盘、大量取代字符、离开 vi 、显示行号等等的动作则是在此模式中达成的!
yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器
基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
yum 常用命令:
1.列出所有可更新的软件清单命令:yum check-update
2.更新所有软件命令:yum update
3.仅安装指定的软件命令:yum install <package_name>
4.仅更新指定的软件命令:yum update <package_name>
5.列出所有可安裝的软件清单命令:yum list
6.删除软件包命令:yum remove <package_name>
7.查找软件包 命令:yum search <keyword>
8.清除缓存命令:
yum clean packages: 清除缓存目录下的软件包
yum clean headers: 清除缓存目录下的 headers
yum clean oldheaders: 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的headers
shell运行脚本的几种方法:
[/dwback/shell]$cat 1.sh
a=1
[/dwback/shell]$chmod a+x 1.sh ----增加执行权限,(须有可读和执行权限)
下面是执行1.sh的方法
方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本:
[/dwapp]$cd /dwback/shell
[/dwapp]$./hello.sh
[/dwapp]$echo $a ----验证执行结果
[/dwapp]$
注意:./的意思是说在当前的工作目录下执行1.sh,如果不加上./,sh可能会响应找不到1.sh的错误信息。
因为当前工作目录(/daback/shell)可能不在执行程序默认搜索路径(PATH)之列
方法二:以绝对路径的方式去执行shell脚本:
[/dwapp]$/dwback/shell/1.sh
[/dwapp]$echo $a ----验证执行结果
[/dwapp]$
方法三:直接使用sh 来执行shell脚本:
[/dwapp]$cd /dwback/shell/
[/dwback/shell]$sh 1.sh
[/dwapp]$echo $a ----验证执行结果
[/dwapp]$
方法四:在当前的shell环境中执行shell脚本:
[/dwapp]$cd /dwback/shell
[/dwback/shell]$. 1.sh
[/dwapp]$echo $a ----验证执行结果
1
[/dwapp]$
前三种方法a的值都是空,只有方法四a的值为1,why?
前三种方法都是在当前shell(称为父shell)开启一个子shell环境,
此shell脚本就在这个子shell环境中执行,执行完后子shell环境随即关闭,然后又回到父shell环境中。
子shell不能改变父shell的执行环境,所以在父shell环境下,a还是空值。
而方法四则是在当前shell中执行的,没有子shell,变量a的值是在当前shell中设置的,所以会打印出1。
注意,若是以方法三的方式来执行,那么,
1.sh是作为参数传给sh命令来执行的,是被调用执行,所以不需要执行权限。