软件包安装的时候,会经常用到 tar -zxvf Japan.tar.gz
如果要做LAMP环境的编译,建立一个LAMP源代码包构建的PHP生产环境。下载的包都是 tar.gz 这样的源代码包
创建目录 mkdir 创建文件 touch
命令的基本格式:
[root@localhost ~]#
root: 当前登陆用户
localhost: 主机名
~: 当前所在目录(家目录)
#: 超级用户的提示符
普通用户的提示符是 $
- 表示一个文件
d 表示一个目录
l 小写的 L,表示一个软连接。
-rw-r--r--. (最后还有个点)
. 代表ACL权限 --- 从centos6才有的权限
- 文件类型 (-文件 -d目录 | (小写的L) 软链接文件)
文件 -----普通文件
目录
软链接 --- 其实就是个快捷方式
块设备文件
字符设备文件
套接字文件
管道文件
rw- u所有者
r-- g所属组
r-- o其他人
rm -rf *.zip --- 删除所有以 .zip 结尾的文件
常用目录的作用:
/ 根目录
/bin 命令保存目录(普通用户就可以读取的命令)
/boot 启动目录,启动相关文件
/dev 设备文件保存目录
/etc 配置文件保存目录
/home 普通用户的家目录
/lib 系统库保存目录
/mnt 系统挂载目录
/media 挂载目录
/root 超级用户的家目录
/tmp 临时目录
/sbin 命令保存目录(超级用户才能使用的目录)
/proc 直接写入内存的
/sys
/usr 系统软件资源目录
/usr/bin/ 系统命令(普通用户)
/usr/sbin/ 系统命令(超级用户)
/var 系统相关文档内容
注意:proc 和 sys 目录不能直接操作,这俩个目录保存的是内存的挂载点。不可以给这俩个里面写数据;(重启后内存中的数据就会丢失;如果内存满了容易造成系统崩溃)
所以:可以在家目录root 或 home ,以及tmp目录下随便放内容
2个bin目录普通用户可以执行的
2个sbin 只有超级用户可以执行。
boot 启动目录,如果写满系统将无法启动。
etc 系统配置文件目录。(学习服务时候会多次用到)
home 普通用户的家目录
root 超级用户的家目录
lib 函数库的保存位置
ls 显示该目录下所有
ls -l 显示该目录下所有文件及详情
ls -lh 以人性化大小显示文件
-a 显示所有文件,包括隐藏文件
ls -a
-l 显示详细信息
ls -l
-d 查看目录属性
ls -ld /etc/
-h 人性化显示文件大小
ls -lh
-i 显示inode i节点
ls -i
二、 文件处理命令;
1、目录处理命令(windows文件夹的概念)
mkdir -p [目录名]
mkdir test1
mkdir -p test2/mydir --- 其中:-p递归创建
切换目录:
cd [目录名]
cd ~ 进入当前用户的家目录
cd
cd - 进入上次目录
cd .. 进入上一级目录
cd . 进入当前目录
删除文件或目录: rm 本来就是删文件的 ,加上 -r 就可以删目录了
rm -rf [文件或目录]
-r 删除目录
-f 强制
rm -rf /tem/ 表示删除tem这个目录
rm -rf /tem/* 表示删除tem下的所有内容
复制命令:cp
-r 复制目录
cp -r japan/ /tmp/ ---- 将japan目录复制到 tmp下
-p 连带文件属性复制
-d 若源文件是链接文件,则复制链接属性
-a 相当于 -pdr
-f 强行复制文件或目录,不论目标文件或目录是否已存在。
剪切 或 改名命令:
mv 如果源文件 与 目标文件在同一目录 就是改名
如果源文件 与 目标文件没有在同一目录 ,就是剪切
mv [源文件或目录] [目标目录]
文件处理命令
文件处理命令: ln
ln -s [源文件] [目标文件]----
软连接
3、链接命令 ln
硬链接特征:
1、拥有相同的i节点和存储的 block块,可以看作是同一个文件
2、可以通过i节点识别
3、不能跨分区
4、不能针对目录使用
软链接特征:(推荐用:灵活,限制少,告诉这是个软连接)
1、类似windows快捷方式
2、软链接拥有自己的 i 节点 和 block块,但是数据块中只保存元文件的文件名和 i 节点号,并没有实际的问津数据
3、lrwxrwxrwx l --表示:软链接
软链接文件权限都为 : rwxrwxrwx
4、修改任意文件,另一个都改变
5、删除源文件,软连接不可用
软链接的读写权限,最终归于目标文件的权限;
echo 111 >> /root/blos 向目标文件中写入数据
cat /root/blos 查看目标文件中写入的数据
注意:在设置软连接的时候,只有在同一目录下不用写绝对路径,否则需要写绝对路径。不然在目标文件中的软连接会报错 。所以: 软连接 必须要写绝对路径。如果目标文件被移动,软连接会报错,找不到目标文件
4、 文件搜索命令:命令which whereis命令搜索
1、文件搜索命令
locate --- 搜索速度快,搜索不到新创建的文件 (即:touch cangls),只能搜索文件名。
缺点: 只可以按照文件名搜索;
locate 文件名 ----- 在后台数据库中按文件名收缩,搜索速度更快
/var/lib/mlocate ------locate命令所搜索的后台数据 ,默认1天一个更新
updatedb ---- 强制更新数据库
其中:whereis 和 which 都会遵守这个筛选规则
whereis: 只能搜索系统命令; 及帮助文档的位置
which选项:----可以查找到命令的别名;
-b: 只查找可执行文件
-m:只查找帮助文件
which ls ---表示 ls 命令是干嘛的。
which 文件名 搜索命令所在路径及别名;
PATH 环境变量: 定义的是系统搜索的命令的路径
[root@localhost ~]# echo $PATH ---- 显示环境变量 (路径);
注意: 平常输入的命令都在该 path 路径下,如果重新定义的命令需要使用绝对路径,要么就放到 path 路径
文件搜索命令
find --- 如果在根目录中使用,会遍历根下的所有数据遍历一边。 耗费资源--非常强大;
find [搜索范围] [搜索条件]
find / -name install.log ------按文件名搜索,搜索根下面,搜索install.log的文件
注意: 避免大范围搜索,会非常耗费系统资源
find 是在系统当中搜索符合条件的文件名。如果需要匹配,使用通配符匹配,通配符是完全匹配。
Linux中的通配符,
* 匹配任意内容
? 匹配任意一个字符
[] 匹配任意一个中括号内的字符
find /root/ -name "ab[cd]" --- 表示搜索以abc 或 abd 的文件。是的文件,不是所有。
find /root/ -name "*[bc]" --- 搜索所有以 b 或 c 结尾的文件。
find /root -iname install.log --- 不区分大消息
find /root -user root ---- 按照所有者搜索
find /root -nouser ---- 查找没有所有者的文件 在proc 和 sys 产生的文件可能没有所有者是正常的,内存的挂载点。第二种情况:外来文件也不会有所有者(光盘,u盘)。 除此之外在Linux中所有的文件都应该有所有者,否则就是垃圾文件
find /var/log/ -mtime +10
查找10天前修改的文件
-10 10天内修改文件
10 10天当前修改的文件
+10 10天前修改的文件
-atime 文件访问时间
-ctime 修改文件属性
-mtime 修改文件内容
怎么理解 10:往前数第十天,就是10, 第十天到现在的就是 -10. 第十天前的就是 +10
find . -size 25k
注意:这里的k必须是小写。如果不加单位k,查找的是扇区的大小 (25*512)
-25k 小于25kb的文件
25k 等于25kb的文件
+25k 大于25kb的文件
如果查找 兆 大小的文件 M M必须是大写。
find . -size 25M
find . -inum 262422 --- 查找 i 节点是 262422 的文件。
find /etc -size +20k -a -size -50k ---查找etc目录下 文件大小 大于 20k 并且 小于 50k 的文件。
-a and 逻辑与,俩个条件都满足
-o or 逻辑或,俩个条件满足一个即可。
-type: 根据文件类型查找;
f文件 d目录 l软连接文件
-inum :根据i节点查找
这样使用find查找到的文件,只显示文件,并不显示文件的详细信息。所以需要下面 组合 命令:
[root@localhost ~]#find /etc -size +20k -a -size -50k -exec ls -lh {}\;
查找 etc 目录下,大于20k,并且小于 50k的文件,并且显示详细信息。
-exec/-ok 命令2 {}\; 对搜索结果执行操作-------也就是前面的命令结果 交由 -exec中 命令2 处理。
切记: 如果有 -exec 后面必须有 {}\; (命令2的条件必须是能处理前面的命令才可以放在这里执行。)
du命令:
用于统计指定目录(或文件所占用磁盘空间的大小)
常用选项:
-a 统计磁盘空间占用时包括所有的文件,不仅仅统计目录
-s 只统计所占用空间总的大小(Summary),而不是统计每个子目录、文件的大小。
-h 以人性化方式显示(默认kb,不显示单位),显示统计结果
du -sh /var/log --- 统计log目录下所有文件总共占用的空间大小。
3、 字符串收缩命令 grep---常用命令。在制定的文件内容中查找指定的行,显示。
grep -v "sd" anaconda-ks.cfg
-v 取反,显示不包含sd的字符串;
-i 不区分大小写。
去掉以#开头的行;排除指定字符串所在的行。
4、find命令 与 grep 命令的区别
find命令: 在系统当中搜索符合条件的 文件名;
grep命令: 在 文件 当中搜索符合条件的 字符串;
man 的级别
1 : 查看命令的帮助
2 : 查看可被内核调用的函数的帮助
3 : 查看函数和函数库的邦族
4 : 查看特殊文件的帮助(主要是/dev 目录下的文件)
5 : 查看配置文件的帮助
6 : 查看游戏的帮助
7 : 查看其他杂项的帮助
8 : 查看系统管理员可用命令的帮助
9 : 查看和内核相关文件的帮助
如下图: 其实可以通过whereis passwd 可以查看到 passwd 命令的等级,以及文件的位置
查看命令拥有哪个级别的帮助
man -f 命令 相当于 whatis 命令
举例:调用相应的帮助文档
man -5 passwd
man -4 null
man -8 ifconfig
注意: 如果一个命令有多个等级,必须制定 等级,否则打开的是最低的那个等级
查看和命令相关的所有帮助:man
man -k 命令 相当于 apropos 命令
例如: apropos 查找的是所有包含 的帮助;模糊查找所有包含的 帮助
apropos passwd
man查看配置文件帮助时: man 配置文件名
命令 --help: 查找命令选项帮助,有中文注释;
shell 内部命令帮助:
help 查看shell内部命令的帮助
例如:
whereis cd --- 去顶是否是shell内部命令
help cd --- 转门获取内部命令帮助
man 获取命令的帮助 而 :help 获取内部命令的帮助 如:cd就是内部命令。
whereis 命令 ----- 如果找不到执行命令的位置就是内部命令;
更多的使用man 最主流的帮助文档 info 了解知道就行
如: man ls --help
详细命令帮助info
info 命令
- 回车 : 进入子帮助页面(带有*号标记)
- u : 进入上层页面
- n : 进入下一个帮助小节
- p : 进入上一个帮助小节
- q : 退出
whatis ls:查看命令简短的信息。
查看配置文件的简短信息:
格式:apropos 配置文件
例如: apropos services
多文件内容查看:
查看文件所有的内容:
less : 如:less /etc/services
备注:n: 下一页 N:上一页 page up :上一页 上箭头:上一行 搜索关键字:/service(在其打开直接输入)
查看文件前几行:
head:显示文件前几行。如:head - 11 /etc/services --显示前11行
查看文件后几行:
tail -3 /etc/services --- 查看最后3行。
tail -f /etc/services --- 动态显示文件末尾内容
注意:head 和 tail 如果不指定 -n 的话,默认都是显示10行
5、 压缩文件的命令:
最常用的5种,在Linux中还有其他格式。
常用压缩格式: .zip .gz .bz2
常用压缩格式: .tar.gz .tar.bz2
这种格式.zip 跟windows中的zip是通用的。
.zip格式 window中的.zip与 Linux中的 .zip是可以互相通用的
zip 压缩文件名 源文件 ----- 压缩文件
zip -r 压缩文件名 源目录 --- 压缩目录
.zip 格式解压缩
unzip 压缩文件 ---- 解压缩.zip文件
gz格式压缩
gzip 源文件 ----- 压缩为 .zg 格式的压缩文件,源文件会消失
gzip -c 源文件 > 压缩文件 ----- 压缩为 .gz 格式,源文件保留
例如: gzip -c cangls > cangls.gz
> --- 表示:把命令的结果写入指定文件
gzip -r 目录 ----- 压缩目录下所有的子文件,但是不能压缩目录
这里会压缩内部的所有的文件,包括该目录下的 子文件夹下的文件。(不能打包当前的目录)
.gz格式 解压缩 如果解压缩的是 目录 在 gzip 或 gunzip 后 加 -r 即可。
[root@localhost ~]# gzip -d 压缩文件 ---- 解压缩文件 压缩包不会保留
[root@local host ~]# gunzip 压缩文件 ---- 解压缩文件
.bz2 格式压缩
[root@localhost ~]# bzip2 源文件 ----- 压缩为 .bz2 格式,不保留源文件
[root@localhost ~]# bzip2 -k 源文件 --- 压缩之后保留源文件
注意: bzip2 命令不能压缩目录。
.bz2格式解压缩
[root@localhsot ~]# bzip2 -d 压缩文件 --- 解压缩, -k 保留压缩文件
[root@localhost ~]# bunzip2 压缩文件 ---- 解压缩, -k 保留压缩文件
注意:因为其压缩比比较惊人,所以,bzip2经常使用在压缩大文件时,使用。
总结: .zip .gz .bz2
.zip 压缩目录,压缩文件没有问题。
.gz 可以压缩文件;如果压缩目录的话(需要加-r),会压缩其内部 所有的 子文件。不能压缩目录
.bz2 如果压缩目录会直接报错。
3、常用命令 .tar.gz .tar.bz2 ----打包
打包后可使用上面3中压缩格式压缩。
打包命令 tar:
tar -cvf 打包文件名 源文件
选项:-c:打包
-v:显示过程
-f:指定打包后的文件名
-x:解开 .tar 格式的包文件
例如: tar -cvf longls.tar longls
解打包命令:
tar -xvf 打包文件名
选项 : -x: 解打包
例如: tar -xvf long.tar
常用选项:
-p:打包时保留原始文件及目录的权限
-t:列表查看包内的文件
-C:解包时指定释放的目标文件夹
-z:调用 gzip 程序进行压缩或解压
-j:调用 bzip2 程序进行压缩或解压
.tar.gz压缩格式:
其实 .tar.gz 格式是先打包为.tar格式,再压缩为 .gz 格式
tar -zcvf 压缩包名.tar.gz 源文件 ----- 进行压缩
选项: -z: 压缩为 .tar.gz 格式
tar -zxvf 压缩包名.tar.gz ---- 进行解压缩
选项: -x: 解压缩.tar.gz 格式
多文件压缩:
解压缩:
查看压缩的内容:(只查看,不解压)
常用:
.tar.bz2 压缩格式:
tar -jcvf 压缩包名.tar.bz2 源文件
选项: -z : 压缩为 .tar.bz2 格式
tar -jxvf 压缩包名.tar.bz2
选项: -x: 解压缩 .tar.bz2 格式
压缩为: .tar.bz2 并解压到指定目录
注意: windows当中的 .rar 格式是没办法在Linux中解压缩的。
压缩格式以及解压缩格式必须要掌握的压缩方式:
打包时,忽略指定的文件:
4、关机和重启命令
ctrl + c 终止命令
shutdown命令
[root@localhost ~]# shutdown [选项] 时间
选项: -c: 取消前一个关机命令 例如: [root@localhost ~]# shutdown -c
h: 关机
-r: 重启 例如:[root@localhsot ~]# shutdown -r now
将关机命令放入后台执行:[root@localhost ~]# shutdown -r05:30&
---加一个 &(代表后台运行) 符号
其他关机命令:--- 知道就好
[root@localhost ~]# halt
[root@localhost ~]# poweroff ---相当于直接断电
[root@localhost ~]# init 0
注意: 这3中命令都不安全,不会在关机的时候保存数据
其他重启命令:
[root@localhost ~]# reboot --- 相对安全;
[root@localhost ~]# init 6 --- 尽量不要用
备注: 上述出现的 init 0 init 6 :其中的数据 0 和 6 :称做系统运行级别:
系统运行级别:
0 关机
1 单用户 --- 相当于windows当中的安全模式,做系统修复,如忘记密码
2 不安全多用户,不含NFS服务 --- NFS是Linux当中一个文件共享服务。
3 安全多用户 --- 其实就是默认的界面。包含NFS服务。
4 未分配
5 图形界面 --- 前提是必须有图形界面才可以启动。如果安装了,则可以进入图形界面。
6 重启
查询当前系统运行的级别:
[root@localhost ~]# runlevel;
表示:在进入3级别界面前,是N N表示null 也就是空字符界面。
如果同时安装了 图形界面 默认启动,进入的是 字符界面,还是 图形界面;(这个可以设置)
[root@localhost ~]# cat /etc/inittab --- 修改系统默认运行级别---下面是显示的内容
id:3initdefault:
退出登陆命令:
[root@localhost ~]# logout ---- 就会释放远程登陆的终端号。
5、查询与自动挂载
[root@localhost ~]# mount ---查询系统中已经挂载的设备
[root@localhost ~]# mount -a ---依据配置文件 /etc/fstab 的内容,自动挂在
注意: 像,U盘,光盘,不推荐自动挂载,因为每次linux启动的时候都会去检查,如果有一次检查不到系统将crash
mount挂载命令格式
[root@localhost ~]# mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点 ---挂载点为空白目录
-t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660等文件系统:iso9660为光盘类型(硬记),
-o 特殊选项:可以指定挂载的额外选项
示例:mount -o remount,noexec /home/ 挂载选项无法访问,没有权限
特殊选项列表:
atime / noatime 更新访问时间/不更新访问的时间,访问分区文件时,是否更新新文件的访问时间,默认为更新
async / sync 异步/同步,默认为异步
auto / noauto 自动/手动,mount -a 命令执行时,是否会自动安装 /etc/fstab 文件内容挂载,默认为自动
defaults 定义默认值,相当于 rw, suid , dev , exec , auto , nouser , async 这七个选项
exec / noexec 执行/不执行 ,设定是否允许系统中执行可执行文件,默认 exec 允许
remount 重新挂载已经挂载的文件系统,一般用于指定 修改特殊权限。
rw / ro 读写/只读,文件系统挂载时,是否具有读写权限,默认 rw
suid / nosuid 具有/不具有SUID权限, 设定文件系统是否具有SUID和SGID的权限,默认是具有
user / nouser 允许/不允许普通用户挂载,设定文件系统是否允许普通用户挂载,默认是不允许,只有root可以挂在分区。
usrquota 写入代表文件系统支持用户磁盘配额,默认不支持。
grpquota 写入代表文件系统支持组磁盘配额,默认不支持。
6、Linux中 进入编写脚本文件
[root@localhost home]# vi hello.sh
[root@localhost ~]# chmod 755 hello.sh --- 赋予 hello.sh 执行权限
如果是纯linux脚本可以不写,但是有嵌套的时候必须写
7、 光盘挂载:
[root@localhost ~]# mkdir /mnt/cdrom/ --- 建立挂载点
[root@localhsot ~]# mount -t iso9660 /dev/sr0 /mnt/cdrom ---挂载光盘
[root@localhost ~]# mount /dev/sr0 /mnt/cdrom ---可以省略 -t iso9660 系统已知道
10、卸载命令 ----- 不可省略,用完之后,必须先卸载。
[root@localhost ~]# umount 设备文件或挂载点
[root@localhsot ~]# umount /mnt/cdrom
注意: 挂载光盘或其他盘,一定要卸载。否则弹不出来,如果强制,导致再读取时,数据不正确
11、 挂载U盘 fdisk 分区命令
[root@localhost ~]# fdisk -l ---------查看U盘设备文件名(查看系统当中已经识别的硬盘)
U盘对应的是多少,会在该命令执行后---对应显示出来。一般是 sdb1
[root@localhost ~]# mount -t vfat /dev/sdb1 /mnt/usb/ -----挂载
注意: Linux默认是不支持NTFS文件系统的。---也就是 移动硬盘 是不能在Linux中直接挂载的。
2种解决Linux支持NTFS文件的方案:
a、 重新编译Linux内核,但是种方法在工作中是不需要的;
b、 安装 ntfs-3g 的软件。会让Linux默认支持NTFS
但是:即使支持了NTFS,也只是只读模式,并不能写入数据 Linux默认的就是只读
如果用到windows当中的数据都是通过网络传输。
12、 用户信息命令
1、w 查询当前登陆的用户;
2、who 只显示当前登陆的用户信息。
3、查询当前登陆和过去登陆的用户信息-----所有用户登陆的信息。重要
last 其实访问的是:ls /var/log/wtmp ---wtmp是个:二进制文件,
可以检查是否有异常用户存在。
4、lastlog 查看所有用户的最后一次登陆时间 ,默认读取的是 /var/log/lastlog 文件内容
其中: tty1 表示登陆的终端-----本机终端。虚拟机本机登陆没有IP
pts/0 表示第一个远程终端
-bash ---- 等待操作
logout:注销当前用户。
Shell基础:命令解释器,也就是当前操作的界面。
查看当前的 shell [root@localhost ~]# echo $SHELL
分类:
1、Bourne Shell:从1979其Unix就开始使用Bourne Shell,Bourne Shell 的主文件名为 sh. 不支持上下箭头翻看。
2、当前的Shell ,C Shell :C Shell 主要在BSD 版的 Unix 系统中使用,其语法和 C 语言相类似 而得名。
1、查看当前支持的Shell :
界面输出及设置颜色: 开启颜色设置 \e[1;31m 结束颜色:\e[0m
查看调用系统的一些特殊文件:
[root@localhost ~]# vim /etc/passwd
2、 脚本执行方式:
1、echo 输出命令 --- 如果输出的内容有空格,必须加双引号,其中不可以有 感叹号。感叹号有特殊含义。
echo [选项] [输出内容]
选项: -e:支持反斜线控制的字符转换。
\a 输出警告音
\b 退格键,也就是向左删除键
\n 换行符
\r 回车符
\t 制表符,也就是tab 键
\v 垂直制表符。
\0nnn 按照八进制ASCII 码表输出字符。其中0位数字零,nnn 是三位八进制数
\xhh 按照十六进制ASCII码表输出字符,其中hh是俩位十六进制数
2、第一个脚本
[root@localhost sh]# vi hello.sh
#!/bin/bash 这一句必须有
# the first program 其中#表示注释,但是第一句必须的有。
echo -e "\e[1;34m 这是输出语句 \d[0m"
2-1、脚本运行
赋予执行权限,直接运行。chmod 755 hello.sh
./hello.sh --- 或 绝对路径 执行。
通过Bash调用执行脚本bash hello.sh
chmod 755 hello.sh ---- 赋予脚本执行权限
[root@localhost zk]# vi hello.sh
3、Bash的基本功能---别名、快捷键
1、命令别名 与 快捷键
1、设定
2、查看
alias ---- 查看系统中所有的命令别名
alias 别名=‘元命令’ --- 设定命令别名,这样设置重启计算机就会失效。
2-1、别名永久性生效
vi ~/.bashrc ---写入环境变量配置文件
vi /root/.bashrc ---打开后将需要的别名写入,保存即可;并不会立即生效
不会立即生效: 可执行:source .bashrc 即可立即生效。
3、删除 ---- 只是临时删除,除非在 .bashrc 配置文件中修改。
unalias 别名
命令生效顺序:
1、第一顺位执行用绝对路径或相对路径执行的命令。
2、第二顺位执行别名。
3、第三顺位执行Bash的内部命令;
4、第四顺位执行按照 $PATH 环境变量定义的目录查找顺序找到的第一个命令
常用快捷键:
ctrl + c 强制终止当前命令
ctrl + l 清屏
ctrl + a 光标移动到命令行首
ctrl + e 光标移动到命令行尾
ctrl + u 从光标所在位置删除到行首
ctrl + z 把命令放入后台
ctrl + r 在历史命令中搜索
2、历史命令 ---- 指把用户操作过的命令保存到系统当中,当需要的时候可重新调用
history [选项] [历史命令保存文件]
选项: -c : 清空历史命令。
-w:把缓存中的历史命令写入历史命令保存文件 ~/.bash_history
查看历史记录文件 [root@localhost ~]# cat .bash_histroy
注意: 。bash_histroy中保存的命令只有在用户正常推出后才会存入。logout 命令。如果需要强制写入 :[root@localhost ~]# history -w(包括当前的 history
-w 命令)
历史命令默认会保存 1000 条,可以在环境变量配置文件 /etc/profile 中进行修改。
历史命令的调用:
常用 1、使用上、下箭头调用以前的历史命令
2、使用 “!n” 重复执行第n条历史命令 --- n是 history对应的号 例如:[root@localhost ~]# !2 执行历史第二条命令
3、使用 “!!” 重复执行上一条命令 --- 例如:[root@localhost ~]# !! 执行上一次命令
常用 4、使用 “!字符串” 重复执行最后一条以该字符串开头的命令 --- 例如: [root@localhost ~]# !ls 最后一次ls命令
3、输出重定向-----常用的还是输出重定向,输入重定向了解就好。
标准输入输出:
键盘 /dev/stdin 0 标准输入
显示器 /dev/sdtout 1 标准输出
显示器 /dev/sdterr 2 标准错误输出
其中:dev 是继 Linux保存硬件特殊文件的标准目录,键盘就是这个文件下的。
1正确,2错误
类型 符号 作用
标准输出重定向 命令 > 文件 以覆盖的方式,把命令的正确输出,输出到指定的文件或设备当中。
命令 >> 文件 以追加的方式,把命令的正确输出,输出到指定的文件或设备当中。
标准错误输出重定向 错误命令 2> 文件 以覆盖的方式,把命令的错误输出,输出到指定的文件或设备当中
错误命令 2>> 文件 以追加的方式,把命令的错误输出,输出到指定的文件或设备当中。
标准输出 命令 > 文件 >与文件之间有空格。而 错误命令 2>文件 >与文件之间 没有空格。
正确输出和错误输出同时保存
命令 > 文件 2>&1 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中
命令 >> 文件 2>&1 以追加的方式,把正确输出和错误输出都保存到同一个文件当中。
命令 &>文件 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中。
命令 &>>文件 以追加的方式,把正确输出和错误输出都保存到同一个文件当中。
命令>>文件1 2>>文件2 把正确的输出追加到文件1中,把错误的输出追加到文件2中。
2,4,5最常用。
输入重定向: 直接在界面 输入----wc 随意输入 最后按 ctrl+d 统计 行 单词 字符
[root@localhost ~]# wc [选项] [文件名]
选项: -c: 统计字节数
-w: 统计单词书
-l : L 统计行数
注意:一般用不到输入重定向, 会在软件安装打补丁的时候会用到输入重定向,但一般不会用到。
[root@localhost ~]# wc < access.log --- 会统计处这个sccess.log中 有几行,几个单词,几个字符。
这种用到的很少,了解就好。
多命令顺序执行
1、管道符:
多命令执行符 格式 作用
; 分号 命令1;命令2 多个命令顺序执行,命令之间没有任何逻辑联系
&& 命令1&&命令2 逻辑与 当命令1正确执行,则命令2才会执行 当命令1执行不正确,则命令2不会执行
|| 命令1|| 命令2 逻辑或 当命令1执行不正确,命令2才会执行 当命令1正确执行,则命令2不会执行
表示 :先查询当前链接到的数量,然后查询正在链接的,之后统计正在链接的行数。
例子:
[root@localhost ~]# ll -a /etc/ | more ----先查询etc目录下的内容,然后分屏幕显示
[root@localhost ~]# netstat -an | grep ESTABLISHED ---- 先查询当前的链接状态,然后显示正在链接的。
5、Shell中特殊符号
通配符:文件名 或 目录名称 如果是内容:需要用正则表达式
? 匹配一个任意字符 ---常用
* 匹配0个或任意多个任意字符,也就是可以匹配任何内容 --- 常用
[] 匹配中括号中任意一个字符。例如:[abc] 代表一定匹配一个字符,或者是a,或则是b,或则是c。---- 常用
[-] 匹配中括号中任意一个字符,- 代表一个范围。例如:[a-z] 代表匹配一个小写字符。
[^] 逻辑非,表示匹配不是中括号内的一个字符。例如: [^0-9] 代表匹配一个不是数字的字符。
Bash中其他特殊符号:
'' 单引号。在单引号中所有的特殊符号,如”$“ 和 ”`“ (反引号 引文状态下 1)都没有特殊含义---
"" 双引号。在双引号中特殊符号都没有特殊意义,但是 "$"、 "`"、 和"\" 是例外,拥有"调用变量的值"、"引用命令" 和 "转义符"的特殊含义
`` 反引号。反引号括起来的内容是系统命令,在Bash中会执行它。它和 $() 作用一样。不过推荐使用 $() ,因为反引号非常容易看错 ---反引号是用来包含系统命令的。先执行命令,再把值赋给变量。
$() 和反引号作用一样,用来引用系统命令。
# 在shell脚本红,#开头的行代表注释。
$ 在调用变量的值,如需要调用变量name的值时,需要用 $name 的方式得到变量的值。
\ 转义符,跟在 \ 之后的特殊符号将失去特殊含义,变为普通字符。 如 \$ 将输出 "$"符号。而不当做是变量引用。
权限管理命令:chmod
语法:chmod [{ugoa}{+-=}{rwx}] [文件或目录]
[mode=421] [文件或目录]
-R 递归修改
功能:修改文件或目录的权限
其中=号的用法
权限的数字:
例如:
-R:
表示:当修改这个目录的权限的时候,这个目录中所有的子文件都将会改成同样的权限。
总结:
一个File : r:意味着:如果要查看一个文件的内容,必须要对这个文件有r权限。才可以执行这样的命令:cat more head tail less 才可以看这个文件内的内容。
w: 意味着:可以修改这个文件。可以执行命令: vim
x:意味着:可以执行这个文件,可执行的文件必须是:script(脚本)、command(命令)
删除一个文件的前提是:用户必须对当前文件所在目录有w的权限,才可以删除这个文件。
一个目录:directory,rwx对目录的含义是不一样的。
r:目录意味着:可以列出目录中的内容。可以执行的命令:ls
w:目录意味着: 可以做 创建/删除文件。可以执行的命令:touch/ mkdir/ rmdir/ rm
x:目录意味着:可以进入这个目录。可执行的命令:cd
在Linux里面目录的rx是同时存在的。不可能只查看目录中的东西,而进不去。或则只能进入,而不能查看里面的东西。 所以:有r权限,肯定有x权限。
重点:w权限,可以在目录中创建,删除文件。
添加普通用户:
用户管理命令: