Linux基础笔记

1.安装系统(2个)
2.学会修改网卡配置文件
3.学会重启服务
4.能够使用Xshell连接Linux系统


设置IP地址
[root@biaozhi ~]# nano /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 //设备名称
ONBOOT=yes //开机启动
BOOTPROTO=static //静态地址引导
IPADDR=192.168.6.80 //IP地址
NETMASK=255.255.255.0 //子网掩码
GATEWAY=192.168.6.1 //网关
DNS1=222.222.222.222 //DNS,域名解析
[root@biaozhi ~]# service network restart
注意:如果网卡配置有问题,按照如下步骤处理
1>.CentOS6.X网卡配置时,需要删除下面文件:rm -rf /etc/udev/rules.d/70-persistent-net.rules
2>.重启 reboot
3>.如果重启服务报错,那么添加一块与现有网卡相同类型的网卡即可!
4>.再次重新启动服务 service network restart


20180306
1.关闭防火墙的两种方式
2.关闭Selinux和注意事项
3.配置网卡时不能打开怎么办?
1.vim /etc/sysconfig/network-scripts/ifcfg-eth0后,按ctrl+z
2.再次:vim /etc/sysconfig/network-scripts/ifcfg-eth0会发现有错误提示
3.删除对应的隐藏文件,形如:.文件名.swX
删除命令:rm /etc/sysconfig/network-scripts/.ifcfg-eth0.swp
4.root密码恢复
首先重新启动系统。待系统启动到引导菜单时,找到系统当前引导项
把光标定位在该选项上按下字母“e”键,进入这个引导的编辑状态
该选项有三行语句,请用光标选中第二行,也就是“Kernel”开头的那一行
在这一行再按下字母“e”键进入这一行的编辑状态
在该行行尾加个空格,写上数字1,类似这样: kernel /boot/vmlinuz-2.6.9-11.19 ro root=LABEL=/ 1
然后修改完以后,按下“回车”键回到原来的界面
按下字母“b”键开始引导。这样,就可以启动linux的单用户模式
单用户模式引导完成以后,会有#提示符,表示已拥有超级用户权限,然后请在#后执行命令: /usr/bin/passwd
最后,系统应该会提示输入口令,这个口令是不回显的,保证输入无误就可以了,回车后,系统会要求再输入一遍,输入要求一致,然后会看到口令修改成功的提示。
输入reboot重启系统即可
[root@ns1 ~]# service iptables stop 临时关闭防火墙^C
[root@ns1 ~]# Ctrl+C在XShell中是取消命令行的作用^C
[root@ns1 ~]# service iptables stop
iptables:将链设置为政策 ACCEPT:filter                    [确定]
iptables:清除防火墙规则:                                 [确定]
iptables:正在卸载模块:                                   [确定]
[root@ns1 ~]# service iptables status 查看当前防火墙的状态^C
[root@ns1 ~]# service iptables status
iptables:未运行防火墙。
[root@ns1 ~]# chkconfig iptables off 永久关闭防火墙^C
[root@ns1 ~]# chkconfig iptables off
[root@ns1 ~]# service iptables status
iptables:未运行防火墙。




[root@ns1 ~]# nano /etc/selinux/config


  GNU nano 2.0.9        文件: /etc/selinux/config            已更动  




# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled 
#SELINUX=disabled 关闭selinux安全选项(该选项非常严格)
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 
#配置完成后必须重启系统!








[root@ns1 ~]# 反斜杠“\”:强制换行
-bash: 反斜杠“”:强制换行: command not found
[root@ns1 ~]# 快捷键 Ctrl+U:清空至行首
-bash: 快捷键: command not found
[root@ns1 ~]# 快捷键 Ctrl+K:清空至行尾
-bash: 快捷键: command not found
[root@ns1 ~]# 快捷键 Ctrl+L:清屏
-bash: 快捷键: command not found
[root@ns1 ~]# 快捷键 Ctrl+C:取消本次命令编辑
-bash: 快捷键: command not found
[root@ns1 ~]# Linux命令的通用命令格式^C
[root@ns1 ~]# 命令字 【选项】 【参数】^C
[root@ns1 ~]# 举例^C
[root@ns1 ~]# ls -l /home
总用量 0
[root@ns1 ~]# man ls | col -b > lshelp.txt
[root@ns1 ~]# ls
anaconda-ks.cfg  install.log  install.log.syslog  lshelp.txt
[root@ns1 ~]# ls -a lshelp.txt
lshelp.txt
[root@ns1 ~]# ls -l
总用量 52
-rw-------. 1 root root  1250 3月   6 18:24 anaconda-ks.cfg
-rw-r--r--. 1 root root 28232 3月   6 18:24 install.log
-rw-r--r--. 1 root root  7570 3月   6 18:22 install.log.syslog
-rw-r--r--  1 root root  7580 3月   7 19:02 lshelp.txt
[root@ns1 ~]# ls -l lshelp.txt
-rw-r--r-- 1 root root 7580 3月   7 19:02 lshelp.txt


Linux命令的通用命令格式
命令字 【选项】 【参数】
例如:ls -l lshelp.txt
[root@ns1 ~]# ls -l lshelp.txt
-rw-r--r-- 1 root root 7580 3月   7 19:29 lshelp.txt
备注:权限文件类型 连接方式数目 文件的所有者 组 文件的大小 时间文件名
Linux 命令的分类
内部命令:属于 Shell 解释器的一部分
外部命令:独立于 Shell 解释器之外的程序文件
内部命令help
    查看Bash内部命令的帮助信息
例如:
[root@ns1 ~]# help cd
cd: cd [-L|-P] [dir]
Change the shell working directory.

Change the current directory to DIR.  The default DIR is the value of the
HOME shell variable.

The variable CDPATH defines the search path for the directory containing
DIR.  Alternative directory names in CDPATH are separated by a colon (:).
A null directory name is the same as the current directory.  If DIR begins
with a slash (/), then CDPATH is not used.

If the directory is not found, and the shell option `cdable_vars' is set,
the word is assumed to be  a variable name.  If that variable has a value,
its value is used for DIR.

Options:
-L force symbolic links to be followed
-P use the physical directory structure without following symbolic
links

The default is to follow symbolic links, as if `-L' were specified.

Exit Status:
Returns 0 if the directory is changed; non-zero otherwise.
备注:查看内部命令“cd”的帮助信息。

命令的“--help”选项
适用于大多数外部命令
例如:
[root@ns1 ~]# ls --help
用法:ls [选项]... [文件]...
......
备注:查看外部命令“ls”的帮助信息。




使用man命令阅读手册页
1.使用“↑”、“↓”方向键滚动文本
2.使用 Page Up 和 Page Down 键翻页
3.按 Q 或 q 键退出阅读环境、按“/” 键查找内容
例如:[root@ns1 ~]# man ls
备注:进入列表的手册页,可以看到关于ls的选项。

引申:[root@ns1 ~]# man ls | col -b > lshelp.txt
备注:”man ls“  进入列表的手册页
 ”|“       管道符:将前面命令的输出结果作为后面命令的处理对象(输入)。
 “col”     命令用于过滤文本中的一些特殊控制字符。
 ”-b“      过滤掉所有的控制字符。
 ”>“       重定向输出:将正常输出结果保存到“>”号后边指定的文件中
 ”>>“      追加重定向:在原有文件内容固定不变的情况下追加内容。
将列表的手册页信息,通过col过滤掉所有的控制字符,将结果重定向输出在大于号左边的文档中。


关于列表的相关命令
ls -l 以长格式显示文件内容
例如:[root@ns1 ~]# ls -l lshelp.txt
 -rw-r--r-- 1 root root 7580 3月   7 22:17 lshelp.txt
备注:文件内容格式:权限文件类型、连接方式数目、文件的所有者(用户)、用户所在的组、文件的
 大小(默认为字节)、时间、名字

ls -a 显示包括隐藏文件在内的所有内容
例如:[root@ns1 ~]# ls -a
 .                .bash_history  .bashrc      install.log.syslog
 ..               .bash_logout   .cshrc       lshelp.txt
 anaconda-ks.cfg  .bash_profile  install.log  .tcshrc


ls -lh 显示文件大小
ls -lh lshelp.txt
例如:[root@ns1 ~]# ls -lh lshelp.txt
 -rw-r--r-- 1 root root 7.5K 3月   7 22:17 lshelp.txt

ls -ld 显示目录属性
ls -ld /etc/
例如:[root@ns1 ~]# ls -ld /etc
 drwxr-xr-x. 107 root root 12288 3月   7 18:44 /etc


快捷键的学习
快捷键 Ctrl+L:清屏
快捷键 Ctrl+C:取消本次命令编辑

关于”查看“的学习

1.cat/tac -n 参数
例如:[root@ns1 ~]# cat -n /etc/sysconfig/network-scripts/ifcfg-eth0
1 DEVICE=eth0
2 HWADDR=00:0C:29:0C:21:B2
3 TYPE=Ethernet
4 UUID=7806038e-5789-4d50-a530-373ad1d5470b
5 ONBOOT=yes
6 NM_CONTROLLED=yes
7 BOOTPROTO=stctic
8 IPADDR=172.16.1.11
9 NETMASK=255.255.0.0
10 GATEWAY=172.16.0.1
11 DNS1=114.114.114.114
12
[root@ns1 ~]# 
备注:显示出文本的内容,并带有相应的行号。
 cat(正序)/tac(倒序)

2.more
注释:全屏方式分页显示文件内容。
交互操作方法
按Enter键向下逐行滚动。
按空格键向下翻一屏。
按q键退出。
例如:[root@ns1 ~]# more lshelp.txt
备注:在该显示方法下,会体现出展示内容的百分比。
    less
注释:与 more 命令相同,但扩展功能更多。
交互操作方法
Page Up 向上翻页,Page Down 向下翻页。
按“/”键查找内容,“n”下一个内容,“N”上一个内容。
其他功能与 more 命令基本类似。
例如:[root@ns1 ~]# less lshelp.txt
备注:不会出现百分比,会显示文件名。该操作可以上下翻页,”/内容回车有查找的功能。


查看文件内容 head、tail 命令
head命令
用途:查看文件开头的一部分内容(默认为10行)
命令格式
head -n 文件夹
例如:[root@ns1 ~]# head -3 /etc/passwd
 root:x:0:0:root:/root:/bin/bash
 bin:x:1:1:bin:/bin:/sbin/nologin
 daemon:x:2:2:daemon:/sbin:/sbin/nologin

tail命令
用途:查看文件结尾的少部分内容(默认为10行)
命令格式
tail -n 文件夹
例如:[root@ns1 ~]# tail -3 /etc/passwd
 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
 tcpdump:x:72:72::/:/sbin/nologin
 oprofile:x:16:16:Special user account to be used by OProfile:/home/oprofile:/sbin/nologin
例如:查看制定行的内容。
 [root@ns1 ~]# head /etc/passwd | tail -1
 uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
 备注:查看第10行的详细信息,通过管道符:将前面命令的输出结果作为后面命令的处理对象。


统计文件内容 wc 命令 
wc命令
用途:统计文件中的单词数量(Word Count)等信息。

常用命令选项
-l:统计行数
-w:统计单词个数
-c:统计字节数
命令格式
wc  [选项]...  目标文件...
例如:[root@ns1 ~]# wc /etc/hosts
  2  10 158 /etc/hosts
备注:统计文件的行数、单词个数、字节数。


检索和过滤文件内容 grep 命令
grep命令
用途:在文件中查找并显示包含指定字符串的行

常用命令选项
-i:查找时忽略大小写。
v: 反转查找,输出与查找条件不相符的行。
命令格式
grep [选项]... 查找条件 目标条件
例如:[root@ns1 ~]# cat /etc/passwd | grep -i "root"
 root:x:0:0:root:/root:/bin/bash
 operator:x:11:0:operator:/root:/sbin/nologin
备注:查看在passwd文件中的“root”并用颜色标出。

查找条件设置
要查找的字符串以双引号括起来
“^……”表示以……开头,“……$”表示以……结尾
“^$”表示空行
例如:[root@ns1 ~]# cat /etc/passwd | grep --color "^root"
 root:x:0:0:root:/root:/bin/bash
备注:查看在passwd文件中以“root”开头的行并用颜色标出。
例如:[root@ns1 ~]# cat /etc/passwd | grep --color "bash$"
 root:x:0:0:root:/root:/bin/bash
备注:查看在passwd文件中以“bash”结尾的行并用颜色标出。
例如:[root@ns1 ~]# cat /etc/passwd | grep "^$"
备注:查看在passwd文件中的空行。
例如:[root@ns1 ~]# cat /etc/passwd | grep -v "^$"
备注:查看在passwd文件中的非空行。

压缩命令 gzip、bzip2 命令
gzip命令、bzip2命令
用途:制作压缩文件、解开压缩文件。

常用的命令选项
-9:表示高压缩比,多在创建压缩包时用。
-d:用于解开已经压缩过的文件。


命令格式
gzip  [-9]  文件名…
bzip2  [-9]  文件名...
gzip  -d  .gz格式的压缩文件
bzip2  -d  .bz2格式的压缩文件
注释:gzip和bzip2命令使用的压缩算法各不相同,一般来说bzip2的压缩效率要好一些。

压缩命令 gunzip、bunzip2 命令
gunzip 命令
gunzip  等价于 gzip –d
gzip -d mkfile.gz = gunzip mkfile.gz
bunzip2 命令
bzip2和bunzip2命令的用法与gzip、gunzip命令基本相同。


归档命令  tar 命令
用途:制作归档文件、释放归档文件。
命令格式
tar [选项]... 归档文件名  源文件或目录
        tar [选项]... 归档文件名  [-C 目标目录]
常用命令选项
-c:创建 .tar 格式的包文件
-x:解开.tar格式的包文件
-v:输出详细信息
-f:表示使用归档文件
-p:打包时保留原始文件及目录的权限
-t:列表查看包内的文件
-C:解包时指定释放的目标文件夹
-z:调用gzip程序进行压缩或解压
-j:调用bzip2程序进行压缩或解压
引申:tar -zcvf -->打包-->.tar.gz
 tar -jcvf -->打包-->.tar.bz2
 tar -zxvf -->解压<--.tar.gz
 tar -jxvf -->解压<--.tar.bz2
例如:

vi编辑器
1、概述
主要用途:修改服务配置文件和脚本,因为Linux一切皆文件。
vi:Visual Interface(可视化接口),一款遵循GPL协定的一款开源软件,体积小功能强大。
vim:VI iMprove(VI的增强版),它是在vi的基础上添加了功能扩展的插件而形成的。
特点:
1、可以语法着色,是非常好用的
比如:在不同的模式中,变量是有颜色的,我们理解为,在shell脚本中没有颜色标识的变量是有语法错误的。
2、是全屏编辑器
3、是模式化编辑器
比如:在不同的模式中,我们敲的键盘,它所理解的意义是不同的。
a.vim模式
编辑模式(命令模式)----默认处于此模式
比如:复制(yy),删除(dd,进行多行连续删除时先打上要删除的行数在打dd,回车),粘贴(p向下粘贴一行,P向上粘贴一行)
输入模式
比如:敲键盘内容会被记录在文本中。
末行模式
比如:除了编辑模式以外的更多高级命令。
b.模式转换(演示下列内容):
编辑-->输入reboot重启系统即可
i:在当前光标所在的字符的前面,转为输入模式。
a:在当前光标所在的字符的后面,转为输入模式。
o:在当前光标所在行的下方,新建一行,并转为输入模式。

I:在当前光标所在行的行首,转为输入模式。
A:在当前光标所在行的行尾,转为输入模式。
O:在当前光标所在行的上方,新建一行,转换为输入模式。
输入-->编辑
敲ESC键
编辑-->行末
敲“:”键
举例:  行末模式下删除第10行
:10d
行末模式下删除第10到20行
:10,20
显示和取消行号
:set nu(number)
:set nonu
末行:当前vim进程有效
(1) 行号
显示:set number,简写为set nu
取消显示:set nonumber,简写为set nonu
(2) 括号匹配
匹配:set showmatch,简写为set sm
取消:set nosm
(3) 自动缩进
启用:set ai
禁用:set noai
(4) 高亮搜索
启用:set hlsearch
禁用:set nohlsearch
(5) 语法高亮
启用:syntax on
禁用:syntax off
(6) 忽略字符的大小写
启用:set ic
不忽略:set noic

实验:
1、利用vim编辑器配置默认运行级别
[root@ns1 ~]# vim /etc/inittab
2、将配置默认运行级别的信息复制到 /tmp/目录下,切换/tmp/目录下(除第一个“/”之外的所有“/”都是目录分割符)。
[root@ns1 ~]# cp /etc/inittab /tmp/
[root@ns1 ~]# cd /tmp/
[root@ns1 tmp]# 
3、显示当前工作目录
[root@ns1 tmp]# pwd
/tmp
4、返回上一切换目录
[root@ns1 tmp]# cd -
/root
[root@ns1 ~]# 
备注:已经回到根目录。


2、举例
1、打开文件
a.新建文件或者打开文件
格式: vim /pth/to/somefile
备注: 路径和文件名存在则打开已有文件,否则打开新文件
b.打开文件直接处于某行
格式: vim +# /path/to/somefile
解释: 打开文件后,光标处于第#行。
举例: [root@ns1 ~]# vim +12 inittab
"inittab" 26L, 884C                                    12,1 
备注:显示结果的最后一行分别代表总行数、总字节数和目录处于第几行,第几个字节。
c.打开文件直接处于全文的最后一行。
格式: vim + /path/to/somefile
举例: [root@ns1 ~]# vim + inittab
备注:查看最后一行。
d.打开文件,定位到最后一次被模式(PATTERN)匹配到的行的行首
格式: vim +/PATTERN /path/to/somefile
举例:
2.关闭文件
a.末行模式关闭文件
:q 退出
:wq 保存并退出
:q! 不保存并退出
:w 保存
:w! 强制保存(只有管理员有这个权限)
b.编辑模式下退出
ZZ(两个大写) 保存并退出
3.移动光标(编辑模式下操作)
h:向左移动 l:向右移动 j:向下移动 k:向上移动
#h:右移#个字符 #l:右移#个字符 #j:下移#行 #k:上移#航
4.以单词为单位移动
w:移至下一个单词的词首。
e:跳至当前或下一个单词的词尾。
b:跳至当前或前一个单词的词首。
#:代表数字,上述字母w,e,b可以数字组合使用。
5.行内跳转
0(数字):绝对行首。
^:行首的第一个飞空字符
&:绝对行尾
6.行间跳转
#G:跳转至第#行。
G:跳转至最后一行。
备注:末行模式下,直接给出行号就可以!
7.翻屏(编辑模式下操作)
Ctrl+f:向下翻一屏
Ctrl+b:向上翻一屏
Ctrl+d:向下翻半屏
Ctrl+b:向上翻半屏
8.删除单个字符
*:删除光标所在处的单个字符。
#x:删除光标所在处及向后的共#个字符。
9.删除命令:d
a.编辑模式下:
d命令跟跳转命令组合使用
#dw,#de,#db 删除对应单词个数
dd:删除当前光标所在行
#dd:删除包括当前光标所在行内的#行。
b.末行模式下:
StartADD,EndADDd
.:表示当前行
$:表示最后一行
+#:表示向下的#行
例如: 1.删除第10-20行的内容-->:10,20d
2.从当前行,再向下的5行-->:.,+5d
3.从当前行到第100行-->:.,100d
10.复制命令 y
用法同d命令
11.粘贴命令 p
注意:最近一次删除的内容会放置在缓冲区,所以能粘贴
p(小写): 如果删除或复制为整行内容,则贴至光标所在行的下方
如果删除或复制的内容为非整行,则贴至光标所在字符的后面
P(大写): 如果删除或复制为整行内容,则贴至光标所在行的上方
如果删除或复制的内容为非整行,则贴至光标所在字符的前面
12.修改:先删除内容,再转换为输入模式
用法提示:在编辑模式下,比如用ce,删除光标后的一个单词,直接添加新内容
c:用户同d命令
13.替换:r
用法提示:在编辑模式下,找到要替换的字符,输入r,之后替换的内容
注意:如果输入R,表示进入替换模式,找到要替换内容的开头,按下R键,写入要替换的内容
14.撤销编辑操作
u(undo):撤销前一次的编辑操作,可以连续使用u,撤销之前的n次操作(n<=50)
#u:直接撤销最近#次编辑操作
备注:如果不小心撤销多了,使用Ctrl+r,代表还原最近一次撤销操作
15.重复前一次的编辑操作
.:比如上一次运行的dd命令删除1行,此时按下.键,就会执行上一次命令
16.可视化模式
v:按字符选取
操作方法:按方向键控制光标划过一定区域,可以不是一整行,之后按d删除,也可以按y复制
V:按矩形选取
操作方法:按方向键控制光标划过一定区域,都是一整行,之后按d删除,也可以按y复制
17.查找
/PATTERN:自上而下查找
?PATTERN:自上而下查找
n:结果向下每个查找
N:结果向上每个查找
18.查找并替代
在末行模式下使用s命令
ADDR1,ADDR2s/PATTERN/string/gi
g:代表全局替代
i:不区分大小写
例如:末行模式下
:.,$-1s/to/TO/g
备注:当前到倒数第二行内,把所有to替换为TO
(1) 地址定界
:start_pos,end_pos
#:具体第#行,例如2表示第2行
#,#:从左侧#表示行起始,到右侧#表示行结尾
#,+#:从左侧#表示行起始,加上右侧#表示的行数
.:当前行
$:最后一行
.,$-1
%:全文,相当于1,$

/pat1/,/pat2/:
从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束;
#,/pat/
/pat/,$
(2) s:在末行模式下完成查找替换操作
s/要查找的内容/替换为的内容/修饰符
要查找的内容:可使用模式
替换为的内容:不能使用模式,但可以使用\1,\2,...等后向引用符号;还可以使用”&“引用前面查找时查找到的整个内容
修饰符:
i:忽略大小写
g:全局替换:默认情况下,每一行至替换一次出现;
查找替换中的分隔符/可替换为其他字符,例如
s@@@
s###
维护RPM数据库信息
1.查询 RPM 软件包信息
格式
rpm  -q[子选项]  [软件名]
用法:结合不同的子选项 完成不同查询
-qa:查看系统中已安装的所有RPM软件包列表
-qi:查看指定软件的详细信息
-ql:查询指定软件包所安装的目录、文件列表 
-qc:仅显示指定软件包安装的配置文件
-qd:仅显示指定软件包安装的文档文件
查询文件或目录属于哪个 RPM 软件
格式
rpm  - qf  文件或目录名
[root@node1 tmp]# cd /mnt/Packages/
[root@node1 Packages]# rpm -q lynx
显示结果:lynx-2.8.6-27.el6.x86_64

2.
(1)引申:
mount
挂载思路:放光盘(保证最上面2个勾是被选中的)-->在命令行下挂载
实例: [root@ns1 ~]# mount /dev/cdrom /mnt //挂在命令  硬件目录  挂在目录
mount: block device /dev/sr0 is write-protected, mounting read-only
挂载过程:1.将硬盘装入系统 2.识别设备目录(可执行、可操作的目录) 3.加入挂载目录(可挂载、可执行)
umount 取消挂载
命令: umount 挂载目录
注意: 不能在挂载目录中取消挂载...
实例: [root@ns1 ~]# umount /mnt
[root@ns1 ~]# ls /mnt


(2)查询未安装的 RPM 包文件
格式
rpm  - qp[子选项]  RPM包文件
用法:结合不同的子选项 完成不同查询
-qpi:未安装的软件包的详细信息
-qpl:即将要安装的软件包会安装到哪些目录
-qpc:查看.rpm安装包内包含的配置文件列表
-qpd:查看.rpm安装包内包含的文档文件列表
(3)在Linux系统中使用浏览器
[root@node1 ~]# cd /mnt/Packages/
[root@node1 Packages]# rpm -ivh lynx-2.8.6-27.el6.x86_64.rpm 
备注:lynx是文本模式下的网页浏览器,格式:lynx 网址(i、查看详细信息 v、查看安装过程 h、以#号表示安装进度)
举例:[root@node1 Packages]# lynx www.baidu.com
 
在Linux系统中从服务器下载文件
[root@node1 Packages]# rpm -ivh lrzsz-0.12.20-27.1.el6.x86_64.rpm 
备注:lrzsz是终端向服务器传输文件数据的软件
举例: [root@node1 Packages]# cd /tmp
[root@node1 tmp]# rz -y
备注:命令输入后会弹出对话框,之后选中要上传的文件,点击打开即可!
 
3.安装、升级、卸载 RPM 软件包
格式
rpm  [选项]  RPM包文件 ...
用法:不同选项适用于不同情况
-i:安装一个新的 rpm 软件包
-U:升级某个 rpm 软件,若原本未装,则进行安装
-F:更新某个 rpm 软件,若原本未装,则放弃安装
 
卸载指定的RPM软件
格式
rpm  -e  软件名
实例: [root@node1 Packages]# rpm -e lynx
[root@node1 Packages]# rpm -q lynx
显示结果:package lynx is not installed

辅助选项
--force:强制安装所指定的rpm软件包
--nodeps:安装、升级或卸载软件时,忽略依赖关系 
-h:以“#”号显示安装的进度
-v:显示安装过程中的详细信息
4.维护RPM数据库
重建RPM数据库
[root@localhost ~]# rpm --rebuilddb

[root@localhost ~]# rpm --initdb
备注:init初始化、重建
导入验证公钥
实例:
[root@localhost ~]# rpm --import /media/cdrom/RPM-GPG-KEY-redhat-release
5.解决软件包依赖关系
忽略依赖关系
结合“--nodeps”选项,但可能导致软件异常

YUM仓库的搭建
介绍:
a.本地YUM源
操作过程:
1.先挂载光盘
2.改变当前目录(/etc/yum.repos.d备注:/配置文件/YUM仓库搭建)
3.修改(中括号中的内容不要有空格、1代表验证、0代表不验证)
备注:pki...公钥基础结构
4.将base的名称改一下
备注:mv在同目录下使用,为重命名
实验过程:
[root@ns1 ~]# mount /dev/sr0 /mnt
[root@ns1 ~]# cd /etc/yum.repos.d
[root@ns1 yum.repos.d]# ls
CentOS-Base.repo       CentOS-Media.repo
CentOS-Debuginfo.repo  CentOS-Vault.repo
CentOS-fasttrack.repo
[root@ns1 yum.repos.d]# vim CentOS-Media.repo
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///mnt/ //YUM仓库的软件从什么地方提供
# file:///media/cdrom/
# file:///media/cdrecorder/
gpgcheck=0 //是否验证软件包。0不验证,1验证
enabled=1 //开启YUM,安装软件包时会自动解决依赖关系
# gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
[root@ns1 yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.
bak

验证YUM源
[root@ns1 yum.repos.d]# yum repolist //查看配置文件列表
已加载插件:fastestmirror, security
c6-media                              | 4.0 kB     00:00 ... 
c6-media/primary_db                   | 4.7 MB     00:00 ... 
仓库标识                仓库名称                        状态
c6-media                CentOS-6 - Media                6,706
repolist: 6,706

[root@ns1 yum.repos.d]# yum clean all //清空缓存
已加载插件:fastestmirror, security
Cleaning repos: c6-media
清理一切

[root@ns1 yum.repos.d]# yum makecache //重新生成缓存

[root@ns1 yum.repos.d]# yum update //系统更新


b.网络YUM源
只要保证Linux能上互联网就行(CentOS-Media.repo保持安装系统后时候默认)。
查看组列表: yum grouplist
安装相应的组文件: yum -y groupinstall "组文件名" "组文件名"

编译安装
步骤0:先将httpd-2.2.17.tar.gz文件rz -y到/root目录
步骤1. 解包,前提



[root@ns1 Packages]# rpm -ivh lrzsz-0.12.20-27.1.el6.x86_64.rpm 
Preparing...                ########################################### [100%]
  1:lrzsz                  ########################################### [100%]
[root@ns1 Packages]# cd /tmp
[root@ns1 tmp]# rz -y
[root@ns1 tmp]#


20180313
1. 编译安装
步骤0:先将httpd-2.2.17.tar.gz文件rz -y到/root目录
步骤1. 解包,前提
1>.mount /dev/cdrom /mnt(自行搭建本地YUM仓库)
2>.yum -y install gcc-*
习惯上将软件包释放到 /usr/src/目录
例如:
[root@localhost ~]# tar zxf  httpd-2.2.17.tar.gz -C /usr/src/
[root@localhost ~]# ls /usr/src/
 显示出:Debug httpd-2.2.17 kernels
步骤2. 配置
使用源码目录中的 configure 脚本
执行“./configure --help” 可以查看帮助
典型的配置选项:--prefix=软件安装目录
例如:
[root@localhost ~]# cd /usr/src/httpd-2.2.17/
[root@localhost httpd-2.2.17]#./configure --prefix=/usr/local/apache
步骤3. 编译 
执行 make 命令
[root@localhost httpd-2.2.17]# make
步骤4. 安装 
执行 make install 命令
[root@localhost httpd-2.2.17]# make install


注意:使用前修改配置文件
[root@localhost httpd-2.2.17]# vim /usr/local/apache/conf/httpd.conf
修改配置文件httpd.conf第97行,操作:在末行模式下输入冒号97,删掉‘#’
启动Apache
[root@localhost httpd-2.2.17]# /usr/local/apache/bin/apachectl start
安装lynx软件包
rpm -ivh /mnt/Packages/lynx-2.8.6-27.el6.i686.rpm
运行lynx 127.0.0.1查看本机Apache运行状态。
显示出It works!说明安装成功!!


2.vim编辑器最后部分
[root@node1 ~]# cp /etc/passwd /etc/inittab /tmp 将/etc/passwd和/etc/initab复制到/tmp之下
之后练习在末行模式下练习: :e 打开新的文件进行编辑
:r 在当前文件中读入其他内容
举例:
[root@ns1 tmp]# vim passwd
:e initab
:r initab

:s /old/new 将当前行中查找到的第一个字符“old” 串替换为“new”
:s /old/new/g 将当前行中查找到的所有字符串“old” 替换为“new”
:#,# s/old/new/g 在行号“#,#”范围内替换所有的字符串“old”为“new”
:% s/old/new/g 在整个文件范围内替换所有的字符串“old”为“new”
:.,$-1 s/old/new/g 当前行到倒数第二行范围内替换所有的字符串“old”为“new”
举例:
首先创建一个文件夹[root@ns1 tmp]# vim cyx.txt
在cyx.txt中进行编辑。
备注:分隔符可以是/,@,#


20180314
1.tail -f 监控某个文件的变化
1.创建用户zhg
useradd zhg
passwd zhg
2.tail -5f /var/log/btmp
3. a.打开另一个Xshell终端,输入:ssh zhg@192.168.6.185
b.之后会弹出输入密码的对话框,我们输入错误的密码
4.返回第一个Xshell终端查看结果:有提示
举例:实验条件先打开两个XShell终端
1.创建用户cyx
[root@ns1 ~]# useradd cyx
[root@ns1 ~]# passwd cyx
2.监控某个文件的变化
[root@ns1 ~]# tail -5f /var/log/btmp
3. a.打开另一个Xshell终端,输入 ssh cyx@172.16.1.10
[root@ns1 ~]# ssh cyx@172.16.1.10
Are you sure you want to continue connecting (yes/no)?yes
b.之后会弹出输入密码的对话框,我们输入错误的密码
cyx@172.16.1.10's password: 
Permission denied, please try again.
4.返回第一个Xshell终端查看结果(后5行):
提示:
[root@ns1 ~]# tail -5f /var/log/btmp
%ssh:nottycyx172.16.1.10m«Z¬ 
20180315
文件系统:
rootfs:根文件系统,对Linux而言每一个文件都是根文件系统下的某一个路径。
FHS:文件系统层级结构标准,规定某些目录必须存在,存储特定文件。例:ls / 查看根目录下的一级子目录
/boot: 存放系统启动相关文件,如内核,initramfs,grub(bootloader引导加载器)
initramfs-2.6.32-431.el6.x86_64.img---->暂时性的小Linux系统
vmlinuz-2.6.32-431.el6.x86_64---->系统启动时要用到的内核。
/dev: 设备文件
[root@zhg ~]# ls -l /dev/
备注:显示内容中浅蓝色的都是符号链接文件(Windows中的快捷方式)
分类: 块设备(b)---->可实现随机访问的设备,数据块,如磁盘
字符设备(c)-->线性设备,可以理解为有次序的访问,按字符为单位,如键盘,鼠标,显示器
特点:背景黑色,前景黄色
设备号:同一种类型下的不同设备,比如装了两个相同的硬盘
主设备号(major),次设备号(minor)
brw-rw---- 1 root disk 7, 0 Aug 29 17:47 loop0
brw-rw---- 1 root disk 7, 1 Aug 29 17:47 loop1
注意:一个硬件设备在Linux中有设备文件才能被Linux所访问,这个设备文件就是它的访问入口。
/etc: 配置文件。如: [root@zhg ~]# cat /etc/passwd
/home: 用户家目录,每一个用户的家目录默认为/home/USERNAME
例:[root@zhg ~]# ls /home/
显示结果:zhg
[root@zhg ~]# su - zhg
[zhg@zhg ~]$ pwd
显示结果:/home/zhg
/root: root用户家目录,在生产环境中不建议用root登录,在传统的Unix系统中没有它的家目录。
/lib: 库文件,库是被调用封装好的某些功能,程序开发时直接拿来用就不自己写了。
静态库:在Linux中以.a结尾,它作为程序的一部分运行在内存,如果迁移,能一直使用。
例:主机A有ls命令,依赖库文件ls.so,静态编译是将ls和kuls.so放在一起编译,复制ls时候会将ls.so一并复制。
动态库:即动态链接库。Windows中特征是以.dll结尾,Linux中以.so(shared object)结尾。
库调入内存中才能用,动态库是说多个软件同时需要一个库时候,库文件只需要在内存中存一份就行。
迁移时,目的端系统有相同的库才能运行。
例:主机A有ls命令,依赖库文件ls.so,此时如果把ls复制到主机B那么ls是不能用的,还必须将ls.so一同复制过去才可以。
注意:库文件显示为绿色,库文件不能单独执行,原因在于它没有程序的访问入口,所以只能被调用。
/lib/modules:内核模块文件
/lost+found: 任何一个新建的分区上都会有的目录,通常和文件系统相关。
用于机器突然断电,文件没有属主和属组,且尚未保存的文件,可以从这里找回。
/media和/mnt:挂载点目录
访问光盘数据的方式:
1.Windows中访问光盘数据,放入光盘到光驱,双击图标打开访问。
2.Linux中访问光盘数据,放入光盘到光驱后,必须要将这个设备关联到当前整个文件系统树上的某个节点上才可以访问。
而这个过程:把某个设备跟当前文件系统上的某一个目录建立关系或者说关联的过程,叫做挂载。
在这里我们不能直接访问/dev/cdrom,因为它只是访问数据的入口
注意: /media:主要挂载移动设备-->U盘,光盘
/mnt:主要挂载额外的临时文件系统-->第二块硬盘
以上是FHS的规定,实际上可以看用户心情滴!
/opt: 可选目录,早起用于安装第三方程序的目录,比如oracle。
/proc: 伪文件系统
1.在系统没有开机时是空的。
2.开机后里面会有文件,里面盛放的是内核映射文件,即内核工作的统计数据。
如网卡的接收和发送的数据包统计,内核是否支持IPv4,是否支持路由功能等等。
3.系统调优和系统性能监控都与这个目录有关系。
/sys: 伪文件系统
1.在系统没有开机时是空的。
2.跟硬件设备相关的属性映射,实际上与内核相关,只不过把它独立出来了。
3.修改磁盘IO调度队列会在这里更改。
4. [root@zhg ~]# ls /sys/
显示结果:block  bus  class  dev  devices  firmware  fs  hypervisor  kernel  module  power
/tmp: 临时文件(另一个是/var/tmp)
该目录中的文件,每个人都能创建内容,只是只能删除自己的内容,但是系统会自动删除一个月没有访问过的内容。
[root@zhg ~]# ls -ld /tmp/
显示结果:drwxrwxrwt. 3 root root 4096 Aug 29 19:15 /tmp/(背景色是绿色)
/var: 可变化的文件。
1.刚装完系统时候此目录很小,运行半年后会发现此目录数据量越来越大
例:[root@zhg ~]# ls /var/
显示部分结果:log cache lib lock mail run tmp(这是另一个临时文件目录)
备注: 在Linux系统中,每一个进程运行起来以后都会有一个进程号码。
某个进程会将这个号码存储于单独的文件中。
这个文件就在run这个目录下,而且通常是以.pid结尾的文件。
[root@zhg ~]# ls /var/run/
/bin: 可执行文件,用户名令
/sbin: 管理命令
注意:可执行文件保存在/bin和/sbin,它们运行会依赖库/lib,而且每个程序都有可能有配置文件,它保存在/etc目录下。
/usr: user shared read-only
1. /usr/bin
/usr/sbin
/usr/lib
解释: /bin和/sbin:系统自身启动相关命令或者可执行程序
/usr/bin和/usr/sbin:系统启动后,为了提供一些基本功能所应该具备的命令或者可执行程序
但不管怎样,在/usr/bin和/usr/sbin下程序所依赖的库,如果不是公共库(/lib),那就必须放在/usr/lib了。
2. /usr/local/bin
/usr/local/sbin
/usr/local/lib(etc,conf等等)
解释: 这是第三方软件安装路径。
注意: 这个部分是可有可无的,不小心将其格式化没有关系,不会影响系统正常使用,但是前面提到的就不行了。
3.文件命名规则:
1.长度不能超过255个字符
2.不能使用/当文件名
3.严格区分大小写
4.路径
目录:使用OS时,我们所在的任何位置都是目录,他被称作Working Directry或者Current Directory
绝对路径:从根开始查找的机制,例如:/a/cyx-->第一个/代表根,第二个/代表分隔符
相对路径:相对于当前所处位置的路径
Linux操作系统常用命令
1.命令执行原理
1).系统登陆后会看到一个界面--命令提示符prompt。在这里输入的一定是命令:可以是二进制程序,也可以是脚本文件。
2).一般的一个可执行文件,必须有一个程序的执行入口,这个二进制文件开头处有一个特殊字符或者是非常独特标识,这个标识叫做程序的魔数(Magic Number)。
3).它可以标识这个二进制程序的标识格式,大家要知道,在Windows上和在Linux上执行程序的魔数是不一样的,所以就算两者的库完全一样,跨平台是不能运行的。
4).我们以后在写脚本时候开头:#! /bin/bash这个就是魔数。
5).当一个程序被启动时,程序的执行入口会把它交给内核,接下来内核去找执行程序的魔数,看是不是可执行格式,如果是就执行,否则不运行。
6).命令程序能否执行还要看权限或者其他的外围机制。

2.命令格式(通常3个部分组成):
命令 选项 参数
解释:
命令:命令操作或者是命令的路径,例如:ls
选项:修改命令的执行方式,分为两种:
短选项:-后面跟字母,例如:ls -l;ls -a
注意:选项可以同时使用多个,如:ls -l -a,如果都是短格式的话还可以一起写,如:ls -al
长选项:--后面跟单词word
注意:长选项不能组合,必须分开来写。
参数:指的是命令的作用对象,参数之间要用空格隔开。
例如:ls -l /root /etc 和 ls -l /root
3.基本命令
1).clear
解释:清屏 也可以用组合键Ctrl+l
2).date
解释:显示系统时间。
Linux中的时间:Linux开机会有2个时钟
1>.硬件时间:晶体振荡器计时,需要电力。例如手机拆卸电池后的时间变化,早先的机械手表误差大,电子手表极为精准,万年误差不到1秒。
2>.系统时间:内核会通过软件的方式模拟振荡器,在系统内部维持一个时钟。在CPU工作繁忙的情况下有一定的误差。
例:[root@node1~]# date //显示系统时间
显示结果:2018年 03月 16日 星期五 19:14:47 CST
[root@ns1 ~]# hwclock //显示硬件时间,或用clock也行。
显示结果:2018年03月16日 星期五 19时16分40秒  -0.591080 seconds
hwclock
-w or --systohc:将系统时间写入硬件
-s or --hctosys:将硬件时间写入系统
[root@ns1 ~]# date 0824112916.50 //可以看帮助man date-->设置系统时间:
显示结果:2016年 08月 24日 星期三 11:29:50 CST
练习(讲解man之后):使用date单独获取系统当前的年份,月份,日,小时,分钟,秒
date +%Y---->2018 date +%y---->16
[root@ns1 ~]# date +"This year is %Y."
显示结果:This year is 2016.
[root@ns1 ~]# date +"This year is %Y.%nToday is %d." //%n代表换行
显示结果: This year is 2018.
Today is 16.
[root@ns1 ~]# date +"%T" //显示小时分钟秒
显示结果: 17:48:10
[root@ns1 ~]# date +"%F" 或者 date +%Y-%m-%d
显示结果: 2018-03-16
[root@ns1 ~]# date +%H:%M
显示结果: 15:18
3).cal:
全程:calender
解释:日历
例如: [root@ns1 ~]# cal
显示结果:      三月 2018     
日 一 二 三 四 五 六
1  2  3
4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31


[root@ns1 ~]# cal 2018 //显示2018年年历
[root@ns1 ~]# cal 3 2018 //显示2018年3月日历
4).type
解释:显示指定命令属于那种类型
备注:命令类型
内置命令(shell内置)
显示结果:cd is a shell builtin //表名该命令是Linux的内部命令

外部命令:在文件系统的某个路径下有一个与命令名称相应的可执行文件。
[root@ns1 ~]# type su
显示结果:su is /bin/su
[root@ns1 ~]# which su
显示结果: /bin/su
[root@ns1 ~]# which ls
显示结果:alias ls='ls --color=auto'
/bin/ls
题外话:以上可以看出使用的命令都是有路径的,为什么我们敲命令时候没有敲路径呢?

如果用每个命令都要加上路径的话,那就疯掉了!因此系统为了让用户便捷的让用户在命令提
.....
命令手册:man COMMAND
例:[root@ns1 ~]# man ls
显示结果解释:
NAME--名字
SYNOPSIS--语法格式
DESCRIPTION--命令功能的详细描述,包括每个选项的意义(备注:也有用option来定义选项和说明的)
EXAMPLES--使用实例,主要配合option使用
例:[root@ns1 ~]# man lvcreate
FILES:次命令的相关配置文件
AUTHOR--作者
REPORTING BUGS--如果命令有bug发送给谁
COPYRIGHT--版权。Free Software Foundation自由软件基金会,它属于GNU
SEE ALSO--另外请参照。
注意: man主要针对外部命令,部分内部命令在man时候显示的是bash信息(man cd)。
/usr/share/doc有重要文档,尤其是内核文档。
man详解:
[root@ns1 ~]# man ls
第一行显示:LS(1) User Commands,其中括号中的1代表章节
man是分章节的,共8个,从1到8,先匹配到哪个显示哪个:
1:用户命令( /bin, /usr/bin, /usr/local/bin):管理员和用户都能用的命令。
2:系统调用
例:[root@ns1 ~]# man read
显示第一行:BASH_BUILTINS(1) //显示在第1章节

[root@ns1 ~]# man 2 read //显示在第2章节
显示部分内容: READ(2)                    Linux Programmer’s Manual //Linux开发人员手册
SYNOPSIS #include <unistd.h> //系统调用
注意如果显示乱码可以使用export LANG=en

[root@ns1 ~]# man mount
显示部分结果:MOUNT(8)                   Linux Programmer’s Manual //显示在第8章节

如何知道一个命令在那些章节中有呢?
[root@ns1 ~]# whatis ls
显示结果: ls                   (1)  - list directory contents
ls                   (1p)  - list directory contents
[root@ns1 ~]# whatis read
显示结果: read                 (1p)  - read a line from standard input
read                 (2)  - read from a file descriptor
read                 (3p)  - read from a file
read [builtins]      (1)  - bash built-in commands, see
3.库调用(只有库才有库调用)
4.特殊文件(设备文件)
例:[root@ns1 ~]# man 4 tty
显示部分结果: TTY(4) Linux Programmer’s Manual TTY(4)
NAME tty - controlling terminal
DESCRIPTION
  The  file /dev/tty is a character file with
  major(主设备号) number 5 and minor(从设备) number 0
5.文件格式(解释某个命令的配置文件的语法)
例:我们都知道passwd修改用户密码的,实际上在Linux中用户名和密码分别放置在 /etc/passwd 和 /etc/shadow
[root@ns1 ~]# cat /etc/passwd
显示部分结果: root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
显示结果是什么意思呢?
[root@ns1 ~]# man 5 passwd //解释配置文件的语法结构
6.游戏
7.杂项(Miscellaneous):不便归类的命令。
8.管理命令(/sbin,/usr/sbin,/usr/local/sbin)
解释: 只有管理员才能用的命令。
这些命令可以修改硬件参数或者说硬件工作特性和系统级别的配置。
注意: 1.在man的结果中:
[]:代表可选
|:代表多选一
<>:代表必选
...:代表可以使用多次或者说出现多个选项
+:可以指定格式
例:[root@ns1 ~]# man date
显示部分结果:
SYNOPSIS date [OPTION]... [+FORMAT] 往下可以看见指定的格式
......
FORMAT  controls  the  output.  Interpretedsequences are:
%%     a literal %
%a     locale’s  abbreviated  weekday  name(e.g., Sun)
......
2.man的翻页
SPACE :向后翻一屏
b :向前翻一屏
ENTER :向后翻一屏
k :向前翻一屏
3.man的查找
/KEYWORD:向后搜索
n:下一个
N:前一个
?KEYWORD:向前搜索
n:下一个
N:前一个
4.man的退出:q

练习1:
1.echo是内部命令还是外部命令?
2.echo有什么作用?
3.如何显示“The year is 2016.Today is 24.”为两行?
答案:
1. [root@ns1 ~]# type echo
echo is a shell builtin //显示为内部命令
2. [root@ns1 ~]# man echo 或者 help echo
注意:echo后面什么都不写会默认打印空白行,会默认换行,如果不想看到空白行可以echo -n
3. [root@ns1 ~]# echo -e "The year is 2018.\nToday is 16."
The year is 2018.
Today is 16.
附加-->echo的选项
[root@ns1 ~]# man echo
-e-->转义字符
-n-->不显示换行
例:[root@ns1 ~]# echo -n "The year is 2018.Today is 16."
The year is 2018.Today is 16.[root@ns1 ~]# 
\t-->横向制表符(tab)
例:[root@ns1 ~]# echo -e "The year is 2018.\tToday is 16."
The year is 2018. Today is 16.
\v-->纵向制表符
例:[root@ns1 ~]# echo -e "The year is 2018.\vToday is 16."
The year is 2018.
Today is 16.
\b-->退格
例:[root@ns1 ~]# echo -e "The year is 2018.\bToday is 16."
The year is 2018Today is 16.

练习2:
1.printf是内部命令还是外部命令?---->type printf
2.printf有什么作用?---->man printf
3.如何显示“The year is 2018.Today is 16.”为两行?
命令:printf
解释:格式化并显示数据
演示: [root@ns1 ~]# printf "My name is cyx."
My name is cyx.[root@ns1 ~]# 
[root@ns1 ~]# printf "My name is zhg.\nI am a teacher.\n"
My name is zhg.
I am a teacher. //第三题要实现的效果。

文件目录管理命令
1).ls
全称:list
解释:列出指定目录下以及子目录下的所有内容
注释: 目录也是文件,是路径映射文件。
路径:从指定起始点到目录地所经过的位置。查看文件时Linux提供了一种层次化文件管理方式,方便查找。
回顾: 文件系统系统:File System
FHS:文件系统层级结构标准,规定某些目录必须存在,存储特定文件。例:ls
/
|
-----------------
|       |       |
a       b       c
|       |       |
---------
|   |   |
  qq  www  cyx
绝对路径:从根开始查找的机制,例如:/a/cyx---->第一个/代表根,第二个/代表分隔符
相对路径:相对于当前所处位置的路径
选项: -l:长格式显示完整信息

[root@ns1 ~]# ls -l /root
总用量 44
-rw-------. 1 root root  1250 3月  16 00:13 anaconda-ks.cfg
-rw-r--r--. 1 root root 28232 3月  16 00:13 install.log
-rw-r--r--. 1 root root  7570 3月  16 00:11 install.log.
结构讲解:
文件类型:
-:普通文件(f)
d:目录文件
b:块设备文件(block)
c:字符设备文件(character)
l:符号链接文件,又称作软连接文件(sysbolic link file)
p:命名管道文件(pipe)
s:套接宇文件(sockt)
例如: [root@ns1 ~]# ls -l /dev/
[root@ns1 ~]# ls -l /tmp/
文件权限:9位,每3位一组:rwx,如果没有权限则用“-”代替。
文件应链接的次数。
文件的属主(owner)
文件的属组(group)
文件的大小(size),单位字节
时间戳(timestamp):最近一次被修改的时间,时间戳有3类
访问:access
修改:modify,文件内容发生了改变。
改变:change,改变了文件的属性,或者叫元数据。
-h:做单位转换
[root@ns1 ~]# ls -lh /root/
总用量 44K
-rw-------. 1 root root 1.3K 3月  16 00:13 anaconda-ks.cfg
-rw-r--r--. 1 root root  28K 3月  16 00:13 install.log
-rw-r--r--. 1 root root 7.4K 3月  16 00:11 install.log.syslog
-a:显示以.开头的隐藏文件,即显示所有文件。
[root@ns1 ~]# ls -a /root
.                .bash_profile       .ssh
..               .bashrc             .tcshrc
anaconda-ks.cfg  .cshrc              .viminfo
.bash_history    install.log
.bash_logout     install.log.syslog
备注: . 标识当前目录
.. 标识父目录
-A:显示除了.和..开头的所有文件。
-d:显示目录的自身属性。
[root@ns1 ~]# ls -ld /root
dr-xr-x---. 3 root root 4096 3月  16 17:49 /root
-i:显示文件的索引节点号,备注:计算机在记录文件时候实际上是将文件编号和对应的区块,这个编号就是index node,简称inode。
[root@ns1 ~]# ls -i /root
146358 anaconda-ks.cfg  131076 install.log.syslog
131075 install.log
-r:逆序显示(由于正序是按字母排序)
[root@ns1 ~]# ls -r /root
install.log.syslog  install.log  anaconda-ks.cfg
-R:递归显示,显示包括子文件中的所有内容
[root@ns1 ~]# ls -R /root/
备注:这种操作对于子目录非常多的情况下会非常消耗资源。
2).pwd
全称:Print Working Directory打印工作目录
例如: [root@ns1 ~]# pwd
/root
3).cd
全称:change directory
注意:cd命令后面一定要跟着目录而不是文件,这样会
例:[root@ns1 ~]# cd /etc/issue
-bash: cd: /etc/issue: 不是目录
[root@ns1 ~]# cd /etc/sysconfig/
[root@ns1 sysconfig]# cd
[root@ns1 ~]# pwd
/root
备注: cd后面什么都不写,执行后是回到当前用户的家目录或者是主目录--Home Directory
当前用户对自己的家目录拥有所有权,你的地盘你做主。~代表是家目录

[root@ns1 ~]# cd ~cyx //进入指定用户的家目录
[root@ns1 cyx]# pwd
/home/cyx
[root@ns1 cyx]# cd
[root@ns1 ~]# cd /home
[root@ns1 home]# ls
cyx  xyc
[root@ns1 cyx]# cd - //在当前目录和前一次所在的目录之间来回切换。
/root
4).mkdir
解释:创建空目录
例:[root@ns1 ~]# mkdir /root/test
[root@ns1 ~]# mkdir -pv /root/cyx/test
mkdir: 已创建目录 "/root/cyx"
mkdir: 已创建目录 "/root/cyx/test"
备注:对于创建连续空目录时,需要使用-p,加上-v后显示创建过程,所以会把-pv一起使用。

花括号展开的例子
[root@ns1 ~]# mkdir -pv /tmp/test/{x/m,y}
mkdir: 已创建目录 "/tmp/test"
mkdir: 已创建目录 "/tmp/test/x"
mkdir: 已创建目录 "/tmp/test/x/m"
mkdir: 已创建目录 "/tmp/test/y"
[root@ns1 ~]# mkdir -pv /tmp/test1/x/{m/y}
mkdir: 已创建目录 "/tmp/test1"
mkdir: 已创建目录 "/tmp/test1/x"
mkdir: 已创建目录 "/tmp/test1/x/{m"
mkdir: 已创建目录 "/tmp/test1/x/{m/y}"
练习:要求创建a_b,a_c,d_b,d_c。--->(a+d)(b+c)=ab+ac+db+dc
[root@ns1 ~]# mkdir -pv /tmp/test2/{a,d}_{b,c}
mkdir: 已创建目录 "/tmp/test2"
mkdir: 已创建目录 "/tmp/test2/a_b"
mkdir: 已创建目录 "/tmp/test2/a_c"
mkdir: 已创建目录 "/tmp/test2/d_b"
mkdir: 已创建目录 "/tmp/test2/d_c"
5).tree 需要安装tree-1.5.3-3.el6.x86_64.rpm
[root@ns1 ~]# mount /dev/sr0 /mnt
[root@ns1 ~]# cd /mnt/Packages/
[root@ns1 Packages]# rpm -ivh tree-1.5.3-3.el6.x86_64.rpm 
解释:查看目录树
例: [root@ns1 ~]# tree /root
/root
├── anaconda-ks.cfg
├── cyx
│   └── test
├── install.log
├── install.log.syslog
├── test
└── test1


4 directories, 3 files
[root@ns1 ~]# tree /tmp/
/tmp/
├── chx.txt
├── test
│   ├── x
│   │   └── m
│   └── y
├── test1
│   └── x
│       └── {m
│           └── y}
├── test2
│   ├── a_b
│   ├── a_c
│   ├── d_b
│   └── d_c
└── yum.log


13 directories, 2 files
6).文件的创建和删除
1>. touch:
解释: 1.创建空文件
2.修改文件的时间戳(timestamp):最近一次被修改的时间,时间戳有3类
访问:access
修改:modify,文件内容发生了改变。
改变:change,改变文件的属性,或者叫元数据。
这三类时间戳可以用命令stat查看(man stat)
例: [root@ns1 ~]# touch a
[root@ns1 ~]# ls
a                cyx          install.log.syslog  test1
anaconda-ks.cfg  install.log  test
[root@ns1 ~]# file a
a: empty(空白)
[root@ns1 ~]# stat a //查看文件的状态
 File: "a"
 Size: 0         Blocks: 0          IO Block: 4096   普通空文件
Device: 803h/2051d Inode: 146365      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-08-24 14:29:38.812997756 +0800
Modify: 2016-08-24 14:29:38.812997756 +0800
Change: 2016-08-24 14:29:38.812997756 +0800
[root@ns1 ~]# touch a //备注:在原有的软件的基础上创建文件,只有改变时间戳的作用。
[root@ns1 ~]# stat a
演示man tough,查看选项,注意属性时间戳不能随意更改,它会随着前两者的改变而改变。
-a change only the access time
[root@ns1 ~]# date
2016年 08月 24日 星期三 14:42:48 CST

-c, --no-create do not create any files
touch -c HRcyx,HRcyx没有但是不创建。
-m change only the modification time
7).rmdir:
解释:删除非空目录
例:[root@ns1 ~]# rmdir /tmp/test2/a_b
[root@ns1 ~]# tree /tmp/test2/
/tmp/test2/
├── a_c
├── d_b
└── d_c
8).rm
解释:删除文件
注释:现在使用的rm是修改后的命令
[root@ns1 ~]# type rm
rm is aliased to `rm -i'
选项:
-i:交互式,删除时会询问你是否真的删除。默认只有管理员才有,普通用户没有。
-f:强制删除
-r:递归,删除目录时,删除目录下的所有文件。
注意:当命令有别名时,为了使用命令自身的意义,我们还可以用-->\
[root@ns1 ~]# alias //别名
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

[root@ns1 ~]# \rm a //这样就不会有提示了。
再看一个例子: [root@ns1 ~]# \ls
[root@ns1 ~]# type ls
ls is aliased to `ls --color=auto'
例:[root@ns1 ~]# rm -rf /tmp/test2
[root@ns1 ~]# rm -rf / //千万不能这样!!所有数据一缕青烟驾鹤西游,数据全失。
9).cp
全程:copy
解释:复制
格式:cp SRC DEST
注释: 通常SRC可有多个,DEST只有一个
我们可以把一个文件复制到一个文件,把多个文件复制到一个目录。
选项: -a:保留文件的所有的属性(即归档复制,通常用于备份)
-r:递归复制目录及子目录
-f:如果目标文件存在则强行覆盖
-p:复制时不改变属主和属组
例:[root@ns1 ~]# type cp
cp is aliased to `cp -i'
[root@ns1 ~]# cp /etc/passwd /tmp //复制到目的地名名称不变
[root@ns1 tmp]# cp /etc/passwd /tmp/test //复制到目的地名称改变
比较上述两个命令的结果。

例:[root@ns1 tmp]# cp /etc/passwd /etc/issue /etc/inittab /tmp/abc
cp: 目标"/tmp/abc" 不是目录
备注:当多个文件同时复制时,目标必须是存在的目录才可以。

例:[root@ns1 tmp]# cp -r /etc/init.d/ /tmp/abc
备注:复制目录时如果目标不存在,如目录abc没有,那么会自动创建,如果有则会复制到该目录下,名称保持不变。
[root@ns1 tmp]# mkdir /tmp/cyx
[root@ns1 tmp]# cp -r /etc/init.d/ /tmp/cyx/
[root@ns1 tmp]# ls /tmp/cyx/
init.d

-p选项的例子
[root@ns1 tmp]# useradd alice
[root@ns1 tmp]# passwd alice
[root@ns1 tmp]# su - alice
[alice@ns1 ~]$ cp /etc/passwd /tmp/alice.pass
[alice@ns1 ~]$ exit
[root@ns1 ~]# ll /tmp/alice.pass
-rw-r--r-- 1 alice alice 1478 8月  24 16:10 /tmp/alice.pass

[root@ns1 tmp]# cp -p /tmp/alice.pass /tmp/alice.pass1
[root@ns1 tmp]# cp /tmp/alice.pass /tmp/alice.pass1
[root@ns1 tmp]# ls -l /tmp/alice.pass*
-rw-r--r-- 1 alice alice 1478 8月  24 16:10 /tmp/alice.pass
-rw-r--r-- 1 alice alice 1478 8月  24 16:15 /tmp/alice.pass1
-rw-r--r-- 1 root  root  1478 8月  24 16:16 /tmp/alice.pass2

cp的花括号展开功能
[root@ns1 tmp]# cp /etc/{passwd,inittab,rc.d/rc.sysinit} /tmp
cp:是否覆盖"/tmp/passwd"? y
10).mv:
全称:move
解释:移动,重命名
格式:mv SRC DEST
格式: 1.移动文件
[root@ns1 tmp]# mv /tmp/alice.pass /root
11).install(rpm包制作会经常用到)
解释:复制文件(不能复制目录),设置属性创建目录
选项: -d DIRECTORY...:创建目录
-m:制定权限
-o:指定所有者
演示: [root@ns1 ~]# install -d /tmp/{aa,bb} //用于创建目录
[root@ns1 ~]# install /etc/passwd /root //复制文件passwd,是结果ls -l可以看出结果多了X权限,可以使用-m选项

12).head,tail
解释: head:默认显示前10行
tail:默认显示后10行
-f:实时更新
例:[root@ns1 tmp]# head -2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@ns1 tmp]# tail -2 /etc/passwd
xyc:x:502:502::/home/xyc:/bin/bash
alice:x:503:503::/home/alice:/bin/bash
-f用法:先打开两个终端1,2
在1中输入: [root@ns1 ~]# cp /etc/inittab /tmp/
cp:是否覆盖"/tmp/inittab"? y
[root@ns1 ~]# tail -f /tmp/inittab
在2中输入: [root@ns1 ~]# nano /tmp/inittab
查看文本
1).cat(tac与其显示结果相反)
解释:链接并显示
选项: -n:显示结果加行号
-E:显示行结束符
例:[root@ns1 ~]# cat /etc/issue
CentOS release 6.9 (Final)
Kernel \r on an \m
[root@ns1 ~]# cat /etc/fstab
[root@ns1 ~]# cat -n /etc/issue
1 CentOS release 6.9 (Final)
2 Kernel \r on an \m
3
[root@ns1 ~]# cat -E /etc/issue
CentOS release 6.9 (Final)$
Kernel \r on an \m$
$
注意: 对于Linux而言,文本的每行的结束符是$。
Windows的文本结束符是$+回车符。
文本处理
1).cut:
解释:主要用来截取某个字段
格式:cut -d '分隔字符' [-cf] n 这里的n是数字
选项: -d:后面跟分隔字符,默认不是空格
-c:后面接的是第几个字符
-f:后面接的是第几个区块
-f 1:表示选择第一个字段
-f 1,3:表示第一个和第三个字段
-f 1-3:表示选择第一到第三个字段
例如: [root@ns1 ~]# cut -d : -f 1-3 /etc/passwd | head -2
root:x:0
bin:x:1
[root@ns1 ~]# cut -d : -f 1,3 /etc/passwd | head -2
root:0
bin:1
[root@ns1 ~]# cut -d : -f 1 /etc/passwd | head -2
root
bin
[root@ns1 ~]# head -4 /etc/passwd | cut -c 1,6,9
rx:
b:1
dn:
a:4
练习: 1.显示变量PATH的第三个字段和第五个字段
[root@ns1 ~]# echo $PATH | cut -d ':' -f 3,5
/usr/local/bin:/bin
2.显示环境变量(export命令)前5行中从第12个字符到结尾的内容
[root@ns1 ~]# export | head -5 | cut -c 12-
CVS_RSH="ssh"
G_BROKEN_FILENAMES="1"
HISTCONTROL="ignoredups"
HISTSIZE="1000"
HOME="/root"
2).sort
解释:文本排序,仅仅是将输出的内容默认按照ASCII表按照升序排序(从左向右每位比较),不影响源文件
选项: -n:数值排序
-r:逆向排序
-t:指定字段的分隔符
-k:指定按照哪个字段进行排序
-u:排序后相同的行只显示一次
-f:排序时忽略字符的大小写
例1: [root@ns1 ~]# cd /tmp
[root@ns1 tmp]# nano sort.test //写入一些内容,比较cat和sort查看的结果
[root@ns1 tmp]# cat sort.test
456
621
796
52
[root@ns1 tmp]# sort sort.test
456
52
621
796
备注:每个数字都会从第一位开始进行比较。
[root@ns1 tmp]# sort -n sort.test
52
456
621
796
备注:按照数值进行排序。
[root@ns1 tmp]# sort -r -n sort.test
796
621
456
52
备注:按照数值进行降序排序。
例2: [root@ns1 ~]# sort -t : -k 3 -n /etc/passwd
备注:通过比较第三个字符数值的大小进行排序。
例3: [root@ns1 tmp]# cat sort.test //写入重复的行
456
621
796
521
621
796
[root@ns1 tmp]# sort -n -u sort.test
456
521
621
796
备注:按照数字的大小进行升序排序,重复的数字只显示一次。
3).uniq
解释: 过滤相邻的重复的行。
选项: -d:只显示重复的行。
-c:显示文件中重复的次数。
例1: [root@ns1 tmp]# cat sort.test //创建相关的数据并设置出相应的条件(拥有相同的行)。
456
621
621
796
796
521
[root@ns1 tmp]# uniq sort.test //连续重复的行只显示一次。
456
621
796
521
[root@ns1 tmp]# uniq -d sort.test //只显示连续重复的行(且只显示一次)。
621
796
[root@ns1 tmp]# uniq -c sort.test //显示连续重复的行(且显示行号)。
 1 456
 2 621
 2 796
 1 521
 1 
注意:sort和uniq可以结合使用,先排序后过滤重复的行。
文本统计
1).wc
全称: word count
解释: 用于统计文本中的行数,单词数,字符数(包括空格,也可以理解为字节数)。
man wc
选项: -l:行数
-w:单词数
-c:字节数
-m:字符数
-L:最长的一行有多少个字符
例: [root@ns1 ~]# wc /etc/fstab
15  78 805 /etc/fstab
备注: 15行,78个单词,805个字符
[root@ns1 ~]# wc -l /etc/fstab
15 /etc/fstab
备注: 15行,文本名
[root@ns1 ~]# wc -w /etc/fstab
78 /etc/fstab
[root@ns1 ~]# wc -c /etc/fstab
805 /etc/fstab
[root@ns1 ~]# wc -L /etc/fstab
93 /etc/fstab
字符处理命令
1).tr
解释: 转换或者删除字符
格式: tr
格式: tr






































































































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值