Linux 达人计划
1.Linux 应用领域
企业服务器方面
www.netcraft.com 检测网站后台服务相关信息 (国外站点)
嵌入式应用方面
Android XXXSSHd 远程安全管理 (QuickSSHd)
Linux 与 Windows 的不同
- Linux 严格区分大小写
- Linux 所有内容以文件形式保存, 包括硬件 永久存在
- 不依靠扩展名区分文件 依靠权限
文件类型 | 扩展名 |
---|---|
压缩文件 | .gz .bz2 .tar.bz2 .tgz |
二进制软件包 | .rpm |
脚本文件 | .sh |
配置文件 | .conf |
- 应用程序不同环境
2. 系统分区类型
- 主分区 : 最多只能有四个
- 扩展分区 :
最多只能有一个
主分区加扩展分区最多有四个
不能写入数据, 只能包含逻辑分区 - 逻辑分区 :
格式化 在磁盘的特定区域写入特定数据, 在分区中划出一片用于存放文件分配表、目录表等用于文件管理的磁盘空间
分区设备文件名与挂载
Linux 树形结构
/ 根目录 dev 硬件设备
hd[a-d]: IDE
sd[a-p]: SCSI/SATA/USB 磁盘
cdrom 或 hdc: 光驱
fd[0-1]: 软盘
lp[0-2]: 打印机 (25 针)
/usb/lp[0-15]: 打印机 (USB)
mouse: 鼠标
挂载
** 把盘符和分区连在一起的过程, 目录称为挂载点 (相当于 Windows 的盘符)** 目录作为盘符 / 根分区 swap 交换分区CentOS 6.3
手动分区 home boot swap /
安装方式 Basic Server
推荐分区 /boot 启动分区(200M)
**Xshell**
- 首先在 Linux 中使用 ifconfig eth0 down 关闭网卡
- 再使用 ifconfig eth0 192.168.1.2 netmask 255.255.255.0 up 重启网卡 手动配置 IP
- 或使用 setup 工具来配置 IP 地址
在 Xshell 中配置连接信息
vi /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes // 是否随着开机启动
3. 常用命令
命令基本格式
root 超级管理员
localhost 主机名
~ 当前所在目录
# 管理员用户
$ 普通用户
/root /home/other
命令 [选项] [参数]
... vi'''
1. 查询目录中内容
ls [选项]
-a 显示所有文件 *(包括隐藏文件 .开头文件)*
-l 显示详细信息
>- 第一列 权限*(10位基本权限)*
-文件类型 *(-文件 d目录 l软连接(快捷方式) )*
后九位分三组代表权限
所有者 u
所属组 g *相同身份或相同权限的一类用户*
其他人 o
r 读 w 写 x 执行
. 代表 ACL权限
>- 第二列 引用计数(被调用 链接)
>- 第三列 所属者用户
>- 第四列 所属组
>- 第五列 大小
>- 第六列 最后一次修改时间
>- 第七列 文件名
-d 查看目录属性
-h 显示文件大小
-i 显示 inode
2. 文件处理命令
目录处理命令
建立目录 mkdir mkdir 目录名 -p 递归创建 mkdir -p abc/def/ggg
切换所在目录 cd
cd 目录 cd ~ / cd 切换家目录 cd - 上次目录 cd .. 上一级目录 cd . 当前目录
相对路径: 参照当前所在目录
绝对路径: 从根目录开始指定, 一级一级递归查找
目录 / 命令补全 Tab 键
查询所在目录 pwd (打印当前位置)
删除空目录 rmdir rmdir 目录名 删除文件或目录 rm rm -rf 文件或目录 -r 删除目录 -f 强制
复制命令 cp
cp [选项] [原文件或目录] [目标目录] 目标目录后加文件名改名复制 不加名 原名复制 -r 复制目录 -p 连带文件属性复制 -d 若原文件是链接文件 则复制链接属性 -a 相当于 -pdr
剪切命令 mv
mv [原文件或目录] [目标目录] 同目录下可以改名 常见目录作用 / 根目录 /bin /sbin /usr/bin /usr/sbin 保存系统命令 (s* root用户打开) /boot 启动目录保存启动数据 /dev 硬件文件 /etc 配置文件 /lib 函数库 /media /mnt /misc 三个空目录 作为外接存放设备的挂载 (mnt) /proc /sys 内存的挂载点 /tmp 临时目录 /usr 系统软件资源目录 /var 系统相关文档目录
链接命令
链接命令 ln ln -s [原文件] [目标文件] 生成链接文件 (引用计数加1) -s 创建软链接 硬链接 (具有相同的i节点和存储block块,可以看成是同一个文件) 一个文件的不同接入点 通过i节点访问 不能跨分区 不能针对目录使用 软链接 (类似Windows快捷方式) 拥有自己的i节点和block块 但数据块中只保存原文件的文件名和j节点号,没有实际的文件数据 lrwxrwxrwx l软链接 软链接权限都为 rwxrwxrwx 修改任意文件,另一个都改变 删除原文件,软链接不能使用 软链接非当前目录,原文件要写绝对路径
文件搜索命令
locate 文件名 在后台数据库中按文件名搜索,搜索速度快 /var/lib/mlocate 后台数据库 updatedb 强制更新数据库 /etc/updatedb.conf 配置文件 PRUNE_BIND_MOUNTS = "yes" 筛选规则是否生效 PRUNEFS = "" 筛选规则 (不搜索以下文件系统) PRUNENAMES = "" 筛选规则 (不搜索以下后缀名文件) PRUNEPATHS = "" 筛选规则 (不搜索以下目录中)
命令搜索命令
- whereis 命令名
搜索系统命令所在路径 (及帮助文档)
-b 只查看命令位置
-m 只查看帮助文档位置 which 命令名
除了命令所在位置还可以查看别名
内置命令 (shell) 没有独立的执行文件 例如: cd
环境变量 ($PATH) 内没有所搜索的命令文件, 就会报错 (未发现)find 命令
find [搜索范围] [搜索条件]
find / -name install.log 根目录下按文件名搜索
避免大范围搜索
通配符匹配, 通配符是完全匹配 (双引号括起来)
* 任意内容
? 任意一个字符
[] 中括号内的任意一个字符 (或)
find -iname #不区分大小写
find -user #按所有者 -nouser 没有所有者的文件 (垃圾文件) 内核产生的文件find -mtime +10 (查找十天前修改的文件) -10 10天内修改的文件 10 10天当天修改的文件 +10 10天前修改的文件 atime 文件访问时间 ctime 改变文件属性 mtime 修改文件内容 find . -size 25k (查找大小为25K的文件) -25k 小于25K 25k 大小为25K +25k 大于25K 10M 大小为10M 默认类型为扇区块(512K) \ find . -inum 262421 (查找i节点为262421) find /etc -size +20k -a -size -50k (查找/etc/目录下,大于20K并小于50K的文件) -a and 逻辑与 -o or 逻辑或 find /etc -size +20k -a -size -50k -exec ls -lh {} \; (将查找的结果用后面的命令来执行处理 -exec {} \; 固定格式)
grep 命令 字符串搜索
grep [选项] 字符串 文件名 gerp "size" anaconda-ks.cfg -v 取反 -i 忽略大小写
find 在系统当中搜索符合条件的文件名, 可以使用通配符来实现完全匹配
grep 在文件当中搜索符合条件的字符串, 可以使用正则表达式来实现包含匹配
文件名称 通配符 (完全匹配)
文件数据 正则表达式 (包含匹配)帮助命令
帮助命令 man
(获取指定命令的帮助)
man ls
name 命令用途
synopsis 格式
description 选项 (简化)
/d 可自动跳转到第一个 - d 选项上
n 向下跳转 shift+n 向上跳转man -f 命令 (查看命令级别) (相当于 whatis 命令) man -5 passwd man -4 null man -8 ifconfig 默认打开最小等级的命令
man -k 命令
#找到和命令相关的所有相关信息
#相当于 apropos 命令
其他帮助命令
- whereis 命令名
命令名 –help
获取命令选项的帮助help shell内部命令 (获取shell内部命令的帮助) whereis cd #查看是否是shell内部命令 (无可执行文件) help cd #获取内部命令帮助 (内部命令无法使用man单独获取帮助) info (获取详细帮助文档) -回车 进入帮助子页面 (带*) -u 返回 -n 下一个帮助小节 -p 上一个帮助小节
压缩与解压缩命令
常用压缩格式 .zip .gz .bz2 | .tar.gz .tar.bz2.zip格式压缩 zip 压缩文件名 源文件 (压缩文件) 不要求,但要使用扩展名,便于区分 zip -r 压缩文件名 目录 (压缩目录) .zip格式解压 unzip 压缩文件 (解压缩.zip文件) .gz格式压缩 gzip 源文件 (压缩为.gz格式的压缩文件,源文件会消失) gzip -c 源文件 > 压缩文件 (压缩为.gz文件,源文件保留) gzip -r 压缩目录 (把目录当中的所有子文件压缩,但是不能压缩目录) .gz格式解压缩 gzip -d 压缩包名 (解压缩文件) gunzip 压缩包名 gunzip -r 解压目录 .bz2格式压缩 bzip2 源文件 (压缩为.bz2格式的压缩文件,不保留原文件) bzip2 -k 源文件 (保留源文件) (不能压缩目录) .bz2格式解压缩 bzip2 -d 压缩包名 bunzip 压缩包名 (-k 保留源文件) .tar 打包文件(解决目录压缩与解压缩) tar -cvf 打包文件名 源文件 -c 打包文件 -v 显示过程 -f 指定打包后的打包文件名 tar -xvf 打包文件名 (解压缩)
打包后压缩与解压缩
tar -zcvf 压缩包名. tar.gz 源文件
tar -zxvf 解压缩包名. tar.gz
tar -jcvf 压缩包名. tar.bz2 源文件
压缩多个文件后用空格分隔
在压缩文件名前加路径可指定压缩位置
tar -jxvf 解压缩包名. tar.bz2
-C 指定解压位置tar -ztvf 压缩包名 tar -jtvf 压缩包名 可查看压缩包
关机和重启命令
shutdown命令 shutdown [选项] 时间 -c 取消前一个命令 -h 关机 -r 重启 (可以正确保存服务与文件 ) shutdown -r 05:30 & 放在后台运行 其他关机命令 halt poweroff init 0 其他重启命令 reboot init 6
系统运行级别
0 关机
1 单用户
2 不完全多用户, 不含 NFS 服务 (文件共享服务)
3 完全多用户 (字符界面)
4 未分配
5 图形界面 (X)
6 重启
runlevel #查看之前级别和当前级别
cat /etc/inittab
id:3:initdefault: // 定义系统默认的运行级别退出登录命令 logout #注销
其他常用命令
挂载命令
mount #查看系统中已经挂载的设备 mount -a (根据配置文件 /etc/fstab (自动挂载) ) (如果将光驱和U盘写入文件 光驱内没有光盘,U盘没有插入系统 启动就会不成功) mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点 -t 文件系统:加入文件系统来指定挂载的类型 ext3 ext4 iso9660(光盘)等文件系统 -o 特殊选项:可以指定挂载的额外选项 exec/noexec 是否可以执行可执行文件 默认允许 remount 重新挂载已经挂载的文件系统 一般用于指定修改特殊权限 默认已经挂载好的分区 可以省略 设备文件名 挂载光盘 mkdir /mnt/cdrom (建立挂载点) mount [-t iso9660] /dev/sr0 /mnt/cdrom (挂载光盘 将设备文件挂载到盘符) (默认读写权限,光盘不可写 提示权限被迫改变) 卸载光盘 (必须卸载才可取出光盘) umount 设备文件名或挂载点 umount /mnt/cdrom/ 挂载U盘 fdisk -l (查看设备文件名) mount -t vfat /dev/sdb1 /mnt/usb/ (vfat (fat32)文件系统 Linux默认是不支持NTFS文件系统) 用户登录查看命令 w (查看用户登录信息 (系统资源情况) ) who (查看当前登录用户) last (查看系统中所有已登录的信息 (历史记录) ) (日志文件 /var/log/wtmp (二进制文件) 不可用vi查看 ) lastlog (系统当中的用户最后登录时间 ) (日志文件 /var/log/lastlog )
4.shell基础
shell概述
系统命令行解释器(二进制语言) | 接受输入命令 编译二进制传输给内核
还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强.分类
- Bourne Shell : 从1979起Unix就开始使用 主文件名为 sh ksh Bash psh zsh Linux中标准版为 Bash
- C Shell : 主要在BSD版的Unix系统中使用,与C语言类似 csh tcsh
Bash兼容 /etc/shells
脚本执行方式
echo输出命令
echo [选项] [输出内容]
空格需要加入双引号
-e 控制字符(转义字符) \a 警告音 \b 退格键
可输入十六进制制表符ASCII \x
#输出颜色 “\e[1;31m ……. \e[0m”
31m 红色 35m 杨红 32m 绿色 33m 黄色
echo -e “\e[1;31m 哈哈哈 \e[0m”第一个脚本 hello.sh #!/bin/bash echo -e "\e[1;36m 天上掉下个林妹妹 \e[0m" 执行权限 通过Bash调用执行脚本 bash hello.sh 赋予权限,直接执行 chmod 755 hello.sh ./hello.sh
Bash的基本功能
命令别名与快捷键
( 操作简化,便于记忆 )alias
(查看系统中默认生效的别名 )
alias ls=’ls –color=never’
(设定别名(临时生效) alias 别名=’原命令’ )
vi ~/.bashrc
(永久生效 写入环境变量配置文件 )
source ~/.bashrc 重新调用配置文件,使设置生效unalias 别名
(删除别名 (临时生效) )生效顺序
1. 用绝对路径或相对路径执行的命令
2. 执行别名
3. 执行Bash的内部命令
4. 按照$PATH环境变量定义的目录查找顺序找到的第一个命令常用快捷命令
ctrl+c 强制终止当前命令
ctrl+l 清屏
ctrl+a 光标移到行首
ctrl+e 光标移到行尾
ctrl+u 从光标所在位置删除到行尾
ctrl+z 把命令放入后台
ctrl+r 在历史命令中搜索历史命令
history 历史命令 history [选项] [历史命令保存文件] -c 清空历史命令 -w 把缓存中的历史命令写入历史命令保存文件 ~/.bash_history #默认保存1000条 HISTSIZE=1000 #vi /etc/profile 环境变量配置文件 基本调用 上下箭头来重复调用 !n 来执行第n条历史命令 !! 重复执行上一条命令 !字符串 重复执行后一个该串开头的命令 Tab键 进行命令(环境变量)和目录补全(操作路径)
输出重定向
(显示电脑处理的结果)
标准输入输出
键盘 /dev/stdin 0 标准输入
显示器 /dev/sdtout 1 标准输出
显示器 /dev/sdterr 2 标准错误输入输出重定向
标准输出重定向
命令 > 文件
以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中.
命令 >> 文件
以追加的方式标准错误输出重定向
错误命令 2>文件
以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中.
错误命令 2>>文件
以追加的方式正确输出和错误输出同时保存
命令 > 文件 2>&1
命令 &> 文件
以覆盖的方式,把正确的输出和错误输出都保存到一个文件当中
命令 >> 文件 2>&1
命令 &>> 文件
以追加的方式
ls &> /dev/null (回收站)
命令 >> 文件1 2>> 文件2
正确的追加到文件1,错误的追加到文件2
输入重定向
wc [选项] [文件名]
-c 统计字节数
-w 统计单词数
-l 统计行数
ctrl+d 中断统计命令 < 文件
(把文件作为命令的输入)
命令 << 标识符
(标识符其中的内容作为该命令执行的内容)
管道符
多命令顺序执行
; 命令1;命令2 多个命令顺序执行(无论中间是否保存)
&& 命令1&&命令2 逻辑与 当命令1正确执行,则命令2才会执行
|| 命令1||命令2 逻辑或 当命令1正确执行,则命令2不执行
# ls && echo yes || echo no管道符
命令1 | 命令2
#将命令1的正确输出作为命令2的操作对象
# ll /etc | more
# netstat -an | grep ESTABLISHED (服务器显示连接人数)
# netstat -an | grep ESTABLISHED | wc -l (处理行号)通配符
? 匹配一个任意字符
* 0个或任意多个
[] 匹配中括号内其中一个字符
[-] -代表一个范围 [a-z]代表匹配一个字母
[^] 逻辑非 表示匹配不上中括号内的一个字符 [^0-9]代表匹配一个不是数字的字符其他特殊符号
'' 特殊符号都没有特殊意义,原样输出 "" $ ` \ 都具有特殊意义 `` 包含系统命令 执行后赋值给变量 等同于 $() $ 用于调用变量的值 (变量名=变量值) # shell脚本中,#开头的行代表注释 \ 转义符 跟在\之后的特殊符号失去意义,变为普通字符
- 来源 慕课学习笔记 ↩