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




















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