Linux第一天
Linux各文件夹的作用
bin 二进制可执行命令
dev 设备特殊文件
etc 系统管理和配置文件
etc/rc.d 系统启动的配置文件和脚本
home 用户文件夹
lib 标准程序设计库 作用类似于Windows中的 .dll
sbin 系统管理命令
tmp 公用的临时文件储存点
root 特权阶级
mnt 临时挂载其他的文件系统
var 可编数据
opt 第三方软件(非应用 支持系统)
usr 应用软件
boot 启动文件
————————
基本命令
ls 显示目录(d表示文件夹、-表示文件、l 表示软链接、红色表示压缩文件、蓝色表示文件夹、绿色表示可执行文件)
-a 显示所有文件,包括隐藏文件
-l 显示详细信息
-d 查看目录属性
chmod 766 文件名 或者 chmod u+rwx 文件名/*给user添加rwx权限*/
rwx rwx rwx root root
所有者 所属组 其他人 所有者 所属组
user group others
r = 4 w = 2 x = 1
——————————————————————————————————————
| 代表字符 | 权限 | 对文件的含义 | 对目录的含义 |
——————————————————————————————————————
| r | 读权限 | 可以查看文件内容 | 可以列出目录中的内容 |
——————————————————————————————————————
| w | 写权限 | 可以修改文件内容 | 可以在目录中创建、删除文件 |
——————————————————————————————————————
| x | 执行权限 | 可以执行文件 | 可以进入目录 |
——————————————————————————————————————
rwx 对文件的权限
r - cat、more、head、tail
w - echo、vi
x - 命令、脚本
rwx 对目录的权限
r - ls
w - touch、mkdir、rm
x - cd
chown 用户名
改变文件或目录的所有者
chgrp 用户名
改变文件所属组
su - 用户名
切换当前用户
touch 文件名
创建空文件
cp -R 源文件或目录 目的目录
复制文件
which 命令名称
显示系统命令所在目录
例子:$which ls
find查找
find 搜索路径 搜寻关键字
功能描述:查找文件或目录
find -name 文件名
* 匹配任意字符 init*
? 匹配单个字符 init??
find -size 文件大小
数据块 512字节 block
大于 +
小于 -
find -user 所有者
find -time
1、天 ctime、atime、mtime
2、分钟 cmin、amin、mmin
c = change 改变 表示文件的属性被修改过,文件的所有者
a = access 访问
m = modify 修改 表示文件的内容被修改过
- 之内
+ 超过
例:
find /etc -mmin -120 /*查找120分钟内被修改过的文件*/
gzip压缩:
gzip 文件名
gzip 只能压缩文件 不能压缩目录
gzip 压缩后不保留源文件
解压缩:
gunzip -d 或者 gzip -d
tar压缩:
tar 选项 目录
-c 产生.tar打包文件
-v 显示详细信息
-f 制定压缩后的文件名
-z 打包同时压缩
功能描述:
打包目录
压缩后文件格式.tar.gz
例子:
$tar -zcvf dir1.tar.gz dir1 /*打包后产生的文件名在后*/
将目录 dir1压缩成一个打包并压缩的文件
解压缩:
$tar -xfz 文件名
-x 是解压
当文件名后缀没有.tar.gz 可以用 file xxx 来查看文件
bzip2压缩:
bzip2 选项 文件
-k 产生压缩文件后保留源文件
功能描述
压缩文件
压缩后文件格式:
.bz2
例子:
$bzip2 -k file1
解压缩:
bunzip2 -k 压缩文件
-k 解压缩后保留原文件
功能描述:
解压缩
例子:
$bunzip2 -k file.bz2
bc 计算器
cal 日历
date 时间
exit 退出
reboot 重启
vi/gedit 编辑器
gcc 123.c -o 32.c 重命名 123.c文件为321.c
./123.c 运行123.c程序
whereis 123.c 寻找123.c文件的位置
pwd 显示当前文件位置
cp 复制
mv 移动/剪切
rm 删除
rmdir 删除空目录/*只能删除空目录*/
cat 查看文件内容
more 文件名/*分页显示文件内容*/
空格 或 f 显示下一页
Enter 显示下一行
Q 或 q 退出
head -5 文件名 /*显示文件前5行内容*/
tail -5 文件名 /*显示文件后5行内容*/
mkdir 创建文件夹
ctrl + c 终止命令
双击tab 补全命令
cd + 文件名 下层目录
cd(空格).. 退到上层目录
cd(空格)/ 退到根目录
————————
VI编辑器
y:复制
a:编辑
w:保存
q:退出
————————
用VI创建一个名为“hello.sh”的shell文件
vi hello.sh
输入语句
#!/bin/sh
echo "hello world!"
修改权限
chmod 766 hello.sh
运行“hello.sh”
./hello.sh
变量赋值
var1= 1 var2= “aaa” /*Linux中没有数据类型,所以直接定义变量*/
输入输出
read 输入 相当于C语言中的 scanf
read var 属于一个数据存储到var当中
echo 输出 相当于C语言中的printf
调用变量时要用$引用变量 $var /*当变量为右值使用时必须使用$*/
数学运算命令
expr $var+1 或 (($var + 1))
简单运算
#!/bin/sh
echo "input a number"
read var1
var= `expr $var1 + 1`
echo $var
/*
输入一个数字 将该数字赋值给var1
输出var
————————
条件执行
命令1;命令2 /*命令1执行完毕,无条件执行命令2*/
命令1&&命令2 /*当命令1执行成功则执行命令2,命令2执行完毕返回“成功”,否则返回“失败”*/
命令1 || 命令2 /*当命令1执行失败则执行命令2,命令1执行成功则不执行命令2*/
例句
ls~/abc || mkdir~/abc && touch~/abc/aa
touch的作用是修改文件 时间戳
-a && 逻辑与 -and
-o || 逻辑或 -or
————————
Linux流程控制结构
if语句结构[if/then/elif/else/fi]
if 条件
/*
[chengmo@centos5 ~]$ a=5;if [[ a -gt 4 ]] ;then echo 'ok';fi;
ok
*/
实例:
(test.sh)#!/bin/shscores=40;
if [[ $scores -gt 90 ]]; then
echo "very good!";
elif [[ $scores -gt 80 ]]; then
echo "good!";
elif [[ $scores -gt 60 ]]; then
echo "pass!";
else
echo "no pass!";
fi;
条件测试有:[[]],[],test 这几种,注意:[[]] 与变量之间用空格分开。
————
实例
(testfor.sh):
#!/bin/sh
for i in $(seq 10); do
echo $i;
done;
seq 10 产生 1 2 3 。。。。10空格分隔字符串
[user@bogon ~]$sh xxx.sh 相当于 . / 运行shell文件
————
echo $i;
done;
————
实例1:
i=10;
while [[ $i -gt 5 ]];do
echo $i;
((i--));
done;
========================
10
9
8
7
6
echo $line;
done < /etc/hosts;
===================
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 centos5 localhost.localdomain localhost
————
语法结构:
实例
(testuntil.sh):
9
8
7
6
5
4
3
2
1
0
————
case选择语句使用(case/esac)
语法结构
pattern | sample) # arg in pattern or sample
;;
pattern1) # arg in pattern1
;;
*) #default
;;
esac
? 任意字元
[abc] a, b, 或c三字元其中之一
[a-n] 从a到n的任一字元
| 多重选择
start | begin)
echo "start something"
;;
stop | end)
echo "stop something"
;;
*)
echo "Ignorant"
;;
esac
======================
start something
————
select语句使用方法(产生菜单选择)
do
case $ch in
"begin")
echo "start something"
;;
"end")
echo "stop something"
;;
"exit")
echo "exit"
break;
;;
*)
echo "Ignorant"
;;
esac
done;运行结果:
说明:select是循环选择,一般与case语句使用。
标准输入 命令<文件(覆盖) <<(追加)
标准输出 命令>文件(覆盖) >>(追加)
标准错误输出 错误命令 2>文件(覆盖) 2>>(追加)
例句
ls -l > aa.txt /**/
vi bb.txt < aa.txt
简单的说,正则表达式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表达式通过一些特殊符号的辅助,
可以,让用户轻易达到查找、删除、替换某特定字符串的处理程序。
正则表达式主要分为两类:基本正则表达式和扩展正则表达式。
特殊符号
符号 | 含义 | 举例 |
^ | 开始标记 | "^abc"满足的例子abc、abcd |
^ | 非(在[]内) | "[^abc]"满足的例子:ddd、mpd |
$ | 结束标记 | ”abc$”满足的例子abc、mmabc |
. | 任意字符 | "a.c"满足的例子abc、fapcc |
\< | 匹配单词开始 | "\<abc"满足的例子abc、abcd |
\> | 匹配单词结束 | "abc\>"满足的例子abc、pmrabc |
| | 或 | "AAA|BBB"满足的例子AAA、BBBpp |
& 行尾锚定符
grep ‘wang’ file /*筛选文件名为'wang’的文件*/
grep 'wang[12]' file /*筛选出“wang1”,“wang2”*/
grep 'wang[^2]' file /*筛选出不包括2的所有文件名为“wang”的文件*/
grep 'wang[1-5]' file /*筛选出包含“1—5”的所有文件名为"wang"的文件*/
grep '^a' file /*筛选出以a开头的所有文件*/
grep 'g$' file /*筛选出以g结尾的所有文件*/
grep 'a\{2\}' file /*表示精确匹配2次*/
grep 'a\{2,5\}' file /*表示其前面的字符a最少出现2次,最多出现五次*/
grep 'wa*' file /*匹配其前面的字符零到多次,例如 waaang,wngg*/
grep 'w..g' file /*匹配任意单个字符,一个 . 一个字符,例如love,line*/
grep ‘^[a-z]' file /*筛选除指定字符外的其它任意字符*/
————————
管道命令 |
1)把前面的命令结果作为后面命令的输入数据
2)后面的命令必须是管道命令(以文件为输入,可以处理文件内容)
筛选 grep 'xx'文件 /*xx是文件名*/
切行 cut -d'分隔符' -f 字段
排序 sort -r(反向)
合并行 uniq 计数 wc -l 行 -w 词
例句
ls -l | grep 'wang' | cut -f 3,5 | sort
————————
awk命令
awk '条件{动作}条件{动作}......'文件名
awk '{print $1"\t" $3}' aa.txt
awk '{print $1"\t" NR "\t" NF}' aa.txt /*NR 行号 NF 字段号*/
awk 'BEGIN{FS="\t"}$3>10{print $}' aa.txt /*FS 分隔符*/
awk 'NR=1{} NR >= 2{}' aa.txt
例句(删除存储大小为0的文件)
#!/bin/sh
for filename in 'ls'
do
if test -d $filename;then
b=0
else
a= $(ls -l $filename | awk '{print$5}')
if test $a -eq 0; then
rm $filename
fi
fi
done
————————
Linux中字符比较的写法
-eq 相等
-ne 不等
-lt 小于
-le 小于等于
-gt 大于
-ge 大于等于
-f xxx 文件存在
-d xxx 目录存在
-x xxx 文件可执行
-n xxx 变量有数据
-a && 逻辑与
-o || 逻辑或
————————
软件安装
1、源码安装
下载 wget http://www.xxx.com/xxx.tar.bz2
解压 tar -jxvf xxx.tar.bz2
编译和安装 make make install
2、yum安装
yum info xxx /*information 显示安装文件信息*/
yum install xxx /*install 安装文件*/
yum remove xxx /*remove 删除安装文件*/
yum list xxx /*list 显示安装文件列表*/
yum search xxx /*search 查找安装文件*/
————————
网络命令和配置文件
IP地址 ifconfig /*查看网卡信息*/
ifconfig etho 192.168.111.128 netmask 255.255.255.0
防火墙 /etc/sysconfig/iptables
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
————————
SSH
安装服务端
yum install openssh-server
启动
/etc/init.d/sshd start (stop or restart)
连接
yum install ssh
ssh xxx.xxx.xxx.xxx /*输入IP地址*/
Windows平台
下载安装putty(远程登录)
————————
LAMP(Linux+Apache+MySQL+PHP)
安装
yun install httpd mysql mysql-server php php-mysql
启动
/etc/init.d/mysql start
/etc init.d/httpd start /*d代表服务端*/
测试
在/var/www/html/下创建phpinfo.php文件 /*创建php脚本文件*/
在phpinfo.php文件中输入<?php phpinfo();?>
用浏览器打开 http://xxx.xxx.xxx.xxx/phpinfo.php
————————
1、安装
yum install xxx
2、查看IP地址
ifconfig
3、设置防火墙端口
/etc/sysconfig/iptables
4、安装远程登录服务端
yum install openssh-server
5、启动/重启/关闭
/etc/init.d/xxxd start/restart/stop(d 服务端,相当于server,ssh-server、mysql-server)