linux学习笔记



.xxx .开头的文件为隐藏文件。



文件处理命令==============================================


root: /sbin /usr/sbin

all users: /bin /usr/bin



(1)ls 显示目录文件


ls -a 显示所有文件

ls -l 显示详细信息

ls -d 查看当前目录



drwxr-xr-x


文件类型: d 目录directory

- 二进制文件

l 软链接文件link





(2) cd 切换目录


cd /

cd ..


(3) pwd 当前目录



demo:


pwd

cd/

pwd



(4) touch 创建空文件


touch 文件名


(5)mkdir 创建目录


mkdir 目录名


mkdir /test

mkdir samlee 在当前目录下创建目录




(6) cp 复制文件和目录


cp 源文件 目的目录


cp -R 复制目录 目的目录



demo:

cp /etc/inittal /etc/services /test 可以复制多个

cp -R /etc /test 加R为复制目录



中止命令 CTRL+C



(7) mv 剪切和改名

ls /test

mv services service 改名

mv /test/inittab /tmp/ 移动

mv /test/testfile /tmp/file.test 移动加改名



(8) rm 删除

rm -r 删除目录


demo:


ls /test

rm service 会询问

rm -f testfile 强制删除

rm -r samlee 删除目录(会询问)

rm -rf samlee 强制删除目录



(9) cat 查看文件内容(查看小点的文件)


cat /etc/issue


(10) more 可以分页查看文件内容


空格 或F 显示下一页

Enter 显示下一行

q 退出



(11)head 查看文件的前几行 tail 查看文件的后几行

head -5 /etc/services 查看文件前几行

tail -5 /etc/services 查看文件未尾的几行

tail -f /etc/services 查看文件未尾几行的动态内容





(12) ln -s 产生链接文件(软链接) ln (硬链接)


ln -s /etc/issue /issue.soft 创建软链接 (软链接相当于快捷方式)

ls -l /etc/issue /issue.soft


ln /etc/issue /issue.hard 创建硬链接(相当于cp+同步更新)

ls -l /etc/issue /issue.hard



cp /etc/issue /test/issue 复制时间值不同

ls -l /etc/issue /test/issue



cp -p /etc/issue /test/issue 复制的同时,时间值也复制过去。



查看同步更新

cat /etc/issue

cat /issue.soft

cat /issue.hard


echo "this is a test" >> /etc/issue

cat /etc/issue /issue.soft /issue.hard



如果删除原文件,软链接不能访问,硬链接可以访问

rm /etc/issue


cat /issue.soft

cat /issue.hard



为什么可以同步更新

touch a

ln -s a a.soft

ls a a.hard

ls -i i-inode 查看文件节点 硬链接和原文件的节点是相同的



软链接可以跨分区,,硬链接不能跨分区

touch

ln a /a.hard.2












权限管理命令=======================================



(1) chmod 改变文件或目录权限


u-所有者 g-用户组 0-其它人 + - =

chmod u+wx

chmod o-rx

chmod g=rwx


demo:


ls -l a

chmod u+x a

chmod 0-r a

chmod g=rx a



r-4 w-2 x-1


demo:

ls -l a

chmod 641 a


实验1:

mkdir /prem

ls -ld /prem

touch /prem/newfile

ls -l /prem/newfile

chmod 777 /prem/newfile

ls -ld /prem

ls -l /prem/newfile

su - pankui

rm /prem/newfile



实验2:

chmod 777 /prem

chmod 644 /prem/newfile

ls -ld /prem

ls -l /prem/newfile

su - pankui

rm /prem/newfile



(2) chown 改变文件或目录的所有者


chown pankui /etc/issue

chown pankui a

ls -l a

chown nobody a

ls -l a



添加用户

useradd pankui1

passwd itoldfff


(3) chgrp 改变文件或目录的所属组

ls -l a

chgrp adm a

ls -l a



(4) umask 查看和修改默认目录或文件权限


touch testfile

ls -l testfile


mkdir newdir

ls -ld newdir


umask

0022


0-特殊权限位 022-用户权限位,权限掩码值

777-022 = 755



umask -S



缺省创建文件不能授予可执行权限 644



umask 027










文件搜索命令======================================


(1)which 显示命令的绝对路径 提供别名信息


demo: which ls which chmod



(2)whereis 显示命令的绝对路径 提供帮助文件所在目录


demo: whereis ls whereis chmod


(3)find 查找文件或目录


-name 根据文件名查找


demo:


find /etc -name init 查找/etc下文件名为init的文件


find /etc -name init*

find /etc -name *init* *匹配任意个字符

find /etc -name init??? ?匹配单个字符




-size 根据文件大小查找 (数据块单位)512字节


finc /etc -size +204800


+ 大于

- 小于




-user 根据文件的所有者查找


find /home -user pankui



根据时间来查找

1.ctime atime mtime 以天为单位

2.cmin amin mmin 以分种为单位

c-change 改变,文件属性被修改

a-access 访问

m-modify 修改 文件内容被修改过


-之内 +超过


find /etc -mmin -120 两个不上时之内内容被修改的文件


1.连接符 -a and 与 -o or 或


demo:


find /etc -name init* -a -type f


-type f 二进制文件 l 软链接文件 d 目录


find /etc -name inittab -o -size +204800


2.连接符 find .... -exec 命令 {}\;

-ok(会询问)


{}-表示find查找的结果

\-转义符,符号命令使用本身的含义。

; -表示语句结束。


demo:


find /etc -name inittab -exec ls -l {} \;

find /etc -name testfile3 -exec rm {} \;

find /home -user pankui -exec rm -rf {} \;

find /etc -name init* -a -type f -exec ls -l {} \;


-inum i节点 根据I节点查找


find . -inum 16 -exec rm {} \;




(4) locate 查找文件,但必须数据库更新才能找到。



(5) updatedb 更新文件系统数据库


(6) grep 在文件中搜索字符串匹配的行并输出


grep ftp /etc/sevices







帮助命令====================================


(1) man 获得帮助信息(命令和配置文件)


man ls

man services

man 5 psswd 5是配置文件


(2) info 同上


(3) whatis 知道这个命令是做什么的

apropos 相当于man -k

(4) help 查看shell内置命令的帮助。













压缩解压命令=========================


.gz


(1)gzip 压缩文件

1.只能压缩文件,不能压缩目录,

2.不保留原文件


demo:

gzip newfile4


(2)gunzip 或 gzip -d 解压缩文件


gunzip newfile4.gz






(3) tar 打包目录


.tar.gz


-c 产生.tar打包文件 -x 解包.tar文件

-v 显示详细信息

-f 指定压缩后的文件名

-z 打包同时压缩 -z解压


demo:压缩


tar -zcf newdir.tar.gz newdir


tar -cf newdir.tar newdir

gzip newdir.tar


demo:解压


tar -zxf newdir.tar.gz



(4)file newdir 判断文件类型



.zip 默认win和linux通用格式


(5) zip 压缩保留原文件


zip new.zip new 压缩文件

zip -r test.zip /test 压缩目录


unzip test.zip 解压文件




(6) bzip2

.bz2


demo:

bzip2 -k newfile -k 保留原文件 压缩

bunzip2 newfile.bz2 解压





网络通信命令==============================




(1) write 向另一个用户发信息


write 用户名


write pankui


demo:

write pankui

.......内容........


ctrl + d 结束



(2) wall 向每一个用户发信息(write all)


wall ......内容.......


(3) ping 测试网络连通


ping -c 3 192.168.0.5 -c发送请求包数量


ping -s 60000 192.168.0.5 -s数据包的大小


(4) ifconfig 查看网络设置信息


(4)ifconfig


ifconfig eth0 192.168.0.6 改网卡ip




系统关机命令===============================


(1) shutdown -h now 立即关机



(2) reboot 重启


shell应用技巧=============================



cat /etc/shells



<tab> 命令补全

ctrl +l 清屏

ctrl+u 删除前面所有字符

hestory 上下箭头



命令别名

demo:

alias 查看别名

alias copy=cp 定义别名

unalias copy 删除别名

alias xrm="rm -r" 命令组合要加双引号



> >> 输出重定向

< 输入重定向

2> 2>> 错误输出重定向


demo:

ls -l /tmp > /tmp.msg

date > /tmp.msg 一个大于号会把原文件清空

cat /tmp.msg


ls -l /tmp >>/tmp.msg 两个大于号会追加到下面



wall < /tmp.msg

wall < /etc/issue

cp -R /usr /backup/usr.bak 2> /bak.error




管道


ls -l /etc | more

ls -l /etc | grep init

ls -l /etc | grep init | wc -l 统计行数



命令连接符


; 命令依次执行 pwd; ls; date;


&& 与 第一个成功第二个执行

|| 或 第一个成功第二个不执行



demo:

write mary < /home/pankui/love.txt && rm /home/pankui/love.txt



命令替换符


命令1 `命令2` 将命令2的输出作为命令1的参数


ls -l `which touch`






~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



二,文本编辑器 Vim/Vi



1,命令模式 2,插入模式 3,编辑模式


vi filename 进入命令模式

输入i a o 进入插入模式 esc返回命令模式

: 进入编辑模式




demo:


cp /etc/sevices /test

vi /test/services

vi /test/vi.test


输入i 进入插入模式 ESC 返回命令模式


输入:set nu 设置文件行号 回车直接回到命令模式


输入:wq 保存退出



插入命令: ============================


a 光标后

A 行未

i 光标前

I 行首

o 光标下插入行

O 光标上插入行




定位命令:==============================


h j k l 上 下 左 右 或 上下左右方向键


$ 行尾 0 行首


H M L 移至屏幕上端,中端,下端


: set nu 设置行号

: set nonu 取消行号

gg 到第一行

G 到最后一行


nG 到第n行

:n 到第n行





删除命令:=============================


x 删除光标处字符

nx 删除光标后n个字符


dd 删除光标所在行

ndd 删除光标下的n行


dG 删除光标所在行到未尾的内容

D 删除光标到行尾的内容


:n1,n2d 删除n1到n2的所有行



复制 剪切命令:=========================


yy,Y 复制当前行

nyy,nY 复制当前以下n行


dd ndd 剪切


p P 粘贴到到光标下和上



替换和取消命令:========================


r 替换光标所在处字符 修改

R 替换光标后的字符 一直修改 按esc结束

u 取消上一步操作




搜索和替换命令:==========================


/string s向前搜索指定字符串 按n会从前往后找 按N从后往前找。


:set ic 查找时忽略大小写

:set noic 取消忽略大小写


:%s %s全文替换 n1,n2s部分替换




demo:


:%s/ftp/lamp/g


:4,10s/lamp/ftp/g g不需要询问 c会询问




保存退出的命令:===========================


:wq 保存退出 或 ZZ 保存退出


demo:

ls -l /test/services

chmod u-w /test/services

vi /test/services

i

:wq


:wq! 强行保存退出



:q! 不保存退出

:w 保存不退出

:w /test/services.bak 另存为



应用实例:========================


:r /etc/issue 导入文件


:! ls /root 直接执行命令 esc退出


:r !date 将当前时间导入到当前文件



:map 定义快捷键



demo:


:map ^p I#<ESC> ctrl+P == 在行首加#

:map ^E [email protected]

:map ^B 0x 去掉行首的字母



:1,10s/^/#/g 前十行开头加#



:set nu

:4,8s/^/#/g:


:4,8s/^#//g 去掉4-8行前的#号


:1.5s/^/\/\//g 在开头前加上// 要用转义符


:ab pankui panzaikui 输入pankui直接会替换成panzaikui


:unab pankui 取消定义


unmap 取消快捷键



如果想保存对vi的配置 需要写入vi的配置文件.vimrc


vi ~/.vimrc

set nu

map ^P I#<ESC>

ab pankui panzaikui:





~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



三, linux软件包管理


1,二进制软件包管理 (RPM,YUM)


RPM================================

sudo-1.7.2pl-5.el5.i386.rpm

软件名 版本号 发行号 硬件平台



(1)缷载

rpm -e sudo


demo: 有依赖关系的软件包缷载

rpm -e samba

rpm -e --nodeps samba 强制缷载



(2)安装

rpm -ivh sudo-1.7.2pl-5.el5.i386.rpm


-i 安装

-v 详细信息

-h 安装进度


ls /mnt/cdrom

mkdir /mnt/cdrom

mount /dev/cdrom /mnt/cdromr

cd /mnt/cdrom

ls

cd CentOS

ls

ls | grep sudo

rpm -ivh sudo-1.7.2pl-5.el5.i386.rpm

rpm -q sudo 查看sudo是否安装

rpm -qa | grep samba




--excludedocs 不安装软件包中的文档文件


rpm -ivh --excludedocs sudo-1.7.2pl-5.el5.i386.rpm



--prefix PATH 指定安装的目录


rpm -ivh --prefix=/usr/local/x sudo-1.7.2pl-5.el5.i386.rpm



--test 测试安装,但不安装


--replacepkgs 覆盖安装


--replacefiles 覆盖冲突文件


--nodeps 忽略依赖关系,强行安装,一般不用



(3)升级

rpm -Uvh sudo-1.8.0pl-5.el5.i386.rpm




(查询)


-a 查询所有已安装的软件包

-f 查询文件所属软件包

-q 查询软件包

-i 显示软件包信息

-l 显示软件包中的文件列表

-d 显示被标为文档的文件列表

-c 显示被标注为配置文件的文件列表




rpm -qf /etc/services 查出所属软件包

rpm -qf /bin/ls


rpm -qi samba 查询软件包信息


rpm -qip sudo-1.8.0pl-5.el5.i386.rpm 查询未安装的软件包信息


rpm -ql sudo 软件包的文件列表

rpm -qlp sudo 未安装软件包的文件列表


rpm -qd 软件包的帮助文档列表

rpm -qc 软件包的配置文档列表


demo:

cd /etc/rc.d/init.d

ls

rpm -qf vncserver

rpm -qi vnc-server





(5)校验


rpm -V sudo


md5sum /etc/services md5校验值改变 5

echo "# this is a test " >> /etc/services

md5sum /etc/services

时间改变 T

chomd 777 /etc/sudoers 权限改变 M


大小改变 S

所有者改变 U

用户组改变 G

设备文件改变 D




软件包文件提取

rpm -qf /etc/inittab

rpm2cpio /mnt/cdrom/CentOS/........rpm | cpio -idv ./etc/inittab





YUM==========================


自动解决软件包依赖关系

方便软件包升级


yum install 安装


demo:

yum install sudo




yum check-update 检测升级


demo:

yum check-update sudo



yum update 升级


demo:

yum update sudo


yum list 软件包管理


demo: yum list | more

yum list |grep sudo


yum info 软件包信息


yum info sodu


yum remove 缷载



demo:

yum remove sudo

rpm -q sudo



yum -help , man yum 帮助




2,源代码包管理


proftpd-1.3.3d.tar.gz


demo:

tar -xzvf proftpd-1.3.3d.tar.gz

./configure --prefix=/usr/local/proftpd

rpm -q gcc

yum install gcc

./configure --prefix=/usr/local/proftpd

make

make install


缷载

kill 'pgrep proftpd' rm -rf /usr/local/proftpd


3,脚本安装管理



tar -xzvf webmin-1.530.tar.gz

cd webmin-1.530

vi README

./setup.sh











lamp 软件包


httpd-2.2.9.tar.gzhttp://www.apache.org/

mysql-5.0.41.tar.gzhttp://dev.mysql.com/downloads/

php-5.2.6.tar.gzhttp://www.php.net/downloads.php

phpMyAdmin-3.0.0-rc1-all-languages.tar.gzhttp://www.phpmyadmin.com/

libxml2-2.6.30.tar.gzftp://ftp.gnome.org/pub/GNOME/sources/libxml2/2.6/libxml2-2.6.30.tar.gz

libmcrypt-2.5.8.tar.gzhttp://prdownloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz?use_mirror=peterhost

zlib-1.2.3.tar.gzhttp://www.zlib.net/zlib-1.2.3.tar.gz

gd-2.0.35.tar.gzhttp://www.libgd.org/releases/gd-2.0.35.tar.gz

Autoconf-2.61.tar.gzftp://ftp.gnu.org/gnu/autoconf/autoconf-2.61.tar.gz

freetype-2.3.5.tar.gzhttp://download.savannah.gnu.org/releases/freetype/freetype-2.3.5.tar.gz

libpng-1.2.31.tar.gzftp://ftp.simplesystems.org/pub/libpng/png/src/libpng-1.2.31.tar.gz

jpegsrc.v6b.tar.gzhttp://www.ijg.org/files/jpegsrc.v6b.tar.gz

ZendOptimizer330a.tar.gzhttp://wt1.mycodes.net/soft/20071108/ZendOptimizer330a.tar.gz






放在 /usr/local/src


ls | wc -l //统计数量 13个

gcc -v //检查编译工具是否安装


缷载机器上的老版本

rpm -qa | grep httpd //查看httpd是否安装

netstat -tnl //查看端口号是否占用

rpm -e ...... //缷载

进入etc 删除以前的文件


rpm -qa | grep mysql //检查mysql,php是否安装

rpm -qa | grep php

rpm -e ............ --nodeps //缷载



tar -zxvf php....... //解包

rm -rf php....tar.gz //删除原压缩包


开始安装



1,libxml2


cd libxml2-2.222

./configure --help | grep prefix

clear

./configure --prefix=/usr/local/libxml2 //配置

make && make install //编译安装

cd /usr/local/libxml2/ //查看是否安装

ls



2,libmcrypt


cd ..

cd src/

cd libmcrypt-2.5.8

./configure --prefix=/usr/local/libmcrypt

make && make install




3,zlib


cd ..

cd zlib-1.2.3/

./configure --prefix=/usr/local/zlib

make && make install

cd /usr/local/zlib

ls



4,libpng


cd libpng-1.2.32

./configure --prefix=/usr/local/libpng

make && make install




5,jpeg6


mkdir /usr/local/jpeg6

mkdir /usr/local/jpeg6/bin

mkdir /usr/local/jpeg6/lib

mkdir /usr/local/jpeg6/include

mkdir -p /usr/local/jpeg6/man/man1


cd jpeg6-2-2

./configure \

--prefix=/usr/local/jpeg6/ \

--enable-shared \

--enable-statc


make && make install



6,freetype


cd freetype-2.3.5

./configure --prefix=/usr/local/freetype

make && make install



7,autoconf


cd autoconf-2.61/

.configure

make && make install



8,gd2


cd gd2....../

./configure \

--prefix=/usr/local/gd2/ \

--with-zlib=/usr/local/zlib/ \

--with-jpeg=/usr/local/jpeg6/ \

--with-png=/usr/local/libpng/ \

--with-freetype=/usr/local/freetype/


make && make install


9,apache


cd httpd-2.2.9/

./configure \

--prefix=/usr/local/apache2/ \

--sysconfdir=/etc/httpd \

--with-z=/usr/local/zlib/ \

--with-included-apr \

--enable-so \

--enable-deflate=shared \

--enable-expires=shared \

--enable-rewrite=shared \

--enable-staticc-support


make && make install




10,测试apache服务器


netstat -tnl | grep 80

ls /usr/local/apache2/

ls /usr/local/apache2/bin


/usr/local/apache2/bin/apachetl start

/usr/local/apache2/bin/apachetl stop

/usr/local/apache2/bin/apachetl start


netstat -tnl //查看端口

ifconfig

打开浏览器输入ip地址 如果显示it works!代表安装成功



ls /usr/local/apache2/

cd htdocs/

vi demo.html

<html>

<head><title>title</title></head>

<body>

aaaaaaaaaaaaaaaaaa

</body>

</html>


vi demo.php


<?php


echo "aaaaaaaaaaaaaaaaaaaaaa";


?>





11, mysql


创建mysql用户

cd /usr/local/mysql-5.0.41/

groupadd mysql

useradd -g mysql mysql

id mysql


安装

./configure --prefix=/usr/local/mysql \

--with-extra-charset=all


make && make install


拷倍配置文件模板

cp support-files/my-medium.cnf /etcc/my.cnf

cd /usr/local/mysql/

ls

//开启数据存储目录

bin/mysql_install_db --user=mysql

ls //多了一个var的文件

ll

chown -R root .

chown -R mysql var

chgrp -R mysql .

netstat -tnl


打开3306端口 & 在后台执行

/usr/local/mysql/bin/mysqld_safe --user=mysql &


bin/mysqladmin version //看是否成功


bin/mysql //直接可以登录,所以要改权限

select * from mysql.user \G

delete from mysql.user where host!='localhost';//只留一个root用户


flush privileges; //刷新下授权表

set password for 'root'@'localhost' = passwrod('123456'); //加密码


exit;


bin/mysql //现在登录不了


bin/mysql -u root -h localhost -p //登录(需要密码)

123456


create database cms;

show databases;

use cms

create table shop (id int, name varchar(30),price double);


netstat -tnl //查看端口


bin/mysqladmin -u root -p shutdown //关闭端口

123456


/usr/local/apache2/bin/apachetl start

/usr/local/mysql/bin/mysqld_safe --user=mysql &


ls /etc/rc.local //开机自启动文件


将自启动命令加入到开机自启动文件

echo "/usr/local/apache2/bin/apachetl start" >> /etc/rc.local


echo "/usr/local/mysql/bin/mysqld_safe --user=mysql &" >> /etc/rc.local






12,php


cd php2374.../

./configure \

--prefix=/usr/local/php \

--with-config-file-path=/usr/local/php/etc \

--with-apxs2=/usr/local/apache2/bin/apx2 \

--with-mysql=/usr/local/mysql/ \

--with-libxml-dir=/usr/local/libxml2/ \

--with-png-dir=/usr/local/libpng/ \

--with-jpeg-dir=/usr/local/jpeg6/ \

--with-freetype-dir=/usr/local/freetype/ \

--with-gd=/usr/local/gd2/ \

--with-zlib-dir=/usr/local/zlib/ \

--with-mcrypt=/usr/local/libmcrypt/ \

--with-mysqli=/usr/local/mysql/bin/mysql_config \

--enable-soap \

--enable-mbstring=all \

--enable-sockets


make && make install




13,lamp环境整合


cp php.ini-dist /usr/local/php/etc/php.ini 创建配置文件

vi /etc/httpd/httpd.conf

加一句

AddType application/x-httpd-php .php .phtml

/usr/local/apache2/bin/apachectl stop

/usr/local/apache2/bin/apachectl start


ps -aux|grep httpd

chown -R deamon.deamon cms_demo




14 Zendoptimizer



cd Zend...../

./install.sh




15, phpmyadmin


cd phpmyadmin...../

./configure




















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章