.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