Linux命令大全
一、系統管理與設置;
二、用戶和用戶組管理;
三、磁盤管理;
四、文件和目錄管理;
五、備份與壓縮;
六、網絡管理與相關應用;
七、vi/vim編輯器;
八、Shell編程
一、系統管理與設置
1、信息顯示命令
# man & info //幫助手冊
# man 命令 //顯示相應命令的幫助內容
# arch //顯示當前系統體系結構
# cal //顯示當前月份
# cal 2012 //顯示2012年的月曆
# cal 10 2012 //顯示2012年10月的月曆
# cal -y //顯示整年日曆
# cat /etc/issue //看當前系統發行版本
# cat /etc/redhat-release //看操作系統版本(redhat和centos)
# cat /etc/shells //查看shell版本
# cat /etc/services | more //查看各種服務的port
# cat /proc/cpuinfo //顯示CPU信息
# cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l //結果大於0, 說明支持64位計算。lm指long mode, 支持lm則是64位
# getconf LONG_BIT //查看CPU位數(32 or 64)
# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c //查看CPU型號
# cat /proc/cpuinfo | grep physical | uniq -c //查看實際有幾顆CPU
# getconf LONG_BIT //顯示當前CPU運行在什麼模式下
# cat /proc/devices //列出字符和塊設備的主設備號,以及分配到這些設備號的設備名稱
# cat /proc/filesystems //看文件系統
# cat /proc/interrupts //顯示中斷
# cat /proc/ioports //看設備io端口
# cat /proc/loadavg // 看系統負載
# cat /proc/meminfo //看內存信息
# cat /proc/mounts //顯示當前系統所安裝的文件系統信息
# free //看內存信息
# dmidecode //查看內存型號
# /usr/platform/sun4u/sbin/prtdiag -v //查看內存信息(unix)
# cat /proc/modules //看當前系統模塊
# cat /proc/net/dev 顯示網絡適配器及統計
# cat /proc/partitions //看當前系統分區
# cat /proc/scsi/scsi //查看scsi硬盤信息
# cat /proc/swaps //看所有swap分區
# cat /proc/version //查看Linux內核版本
# cat /etc/security/limits.conf //查看打開最大文件數等設置
# cd /proc/pid號;ls -l exe //查看進程的完整路徑
# date //顯示當前時間
# date +'%Y/%m/%d' //以yyyy/mm/dd格式顯示日期
# date +'%Y-%m-%d' //以yyyy-mm-dd格式顯示日期
# date +%H:%M //顯示時、分
# date -r test //顯示test文件最後一次的修改時間
# dmesg //看啓動信息
# dmidecode | grep "Product Name" //查看機器型號
# dmidecode | more //查看硬件(如內存型號、生產廠家等)信息
# dmidecode |grep 'Serial Number' //查看主板的序列號
# dmidecode -q //顯示硬件系統部件 (SMBIOS / DMI)
# dmidecode -s system-serial-number //查看系統序列號
# dmidecode -t 11 //查看OEM信息
# dmidecode -t memory //查看內存信息
# dmidecode -t processor //查看CPU詳細信息
# echo //顯示文本行
# echo $LANG //顯示系統語言
# echo $PATH //顯示系統的環境變量
# env //顯示所有環境變量
# export //查看環境變量(在bash下)
# fgconsole //顯示活動的虛擬終端數目
# file -s /dev/sd* //查看設備信息
# file /sbin/init //查看系統是32位還是64位:
64位系統輸出信息如下:
sbin/init: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
32位系統輸出信息如下:
/sbin/init: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), stripped
# free -m //以M爲單位顯示內存狀態
# free -m -s5 //以M爲單位,每隔5秒刷新一次內存狀態
# gcc -v //查看GCC版本
# getconf LONG_BIT //查看系統是32位還是64位
# glxinfo //顯示有關GXL擴展和OpenGL渲染器的信息
# grep -i '10.52' /etc/hosts //查找/etc/hosts文件中包含10.52的行,不區分大小寫
# hdparm -i /dev/hda 羅列一個磁盤的架構特性
# hdparm -tT /dev/sda 在磁盤上執行測試性讀取操作
# head -5 /etc/passwd //看文件passwd的前5行
# tail -10 /etc/passwd //看文件passwd的後10行
# sed -n '5,10p' /etc/passwd //查看文件passwd的第5行到第10行
# history //顯示歷史記錄
# history 5 //顯示最近執行的5個歷史記錄
# history -c //清除歷史記錄
# sysdef -h //查看主機ID(Unix)
# hostname //顯示主機名
# hostname -a //顯示主機別名
# hostname -d //顯示主機域名
# hostname -i //顯示主機IP地址
# hostname 主機名 //設置主機名稱
# hwclock //獲取當前硬件時間
# hwclock --show //查看硬件時間
# clock --show //查看硬件時間
# hwclock –version //顯示hwclock命令的版本信息
# info 命令 //顯示相應命令info內容
# iostat -d 2 3 //評估磁盤性能,每隔2s刷新一次信息,且刷新3次
# lastlog //最近登入的時間
# locale //顯示系統當前的語言設置
# locale -a //顯示所有可用字體
# /etc/sysconfig/i18n //語言配置文件
# lsb_release -a //查看系統發行版本,該命令適合所有的linux發行版本
# lsmod //顯示所有已加載的模塊
# lspci | more //顯示當前系統的硬件配置
# lspci -v //查看系統硬件配置詳細信息
# lspci -vv |more //查看系統硬件配置更爲詳細的信息
# lspci| grep Ethernet //查看網卡信息
# lspci -tv //列出所有PCI設備
# lsusb //輸出所有的usb設備
# ls /etc/rc3.d/S* |cut -c 15- //顯示運行3級別開啓的服務
# ls -l /lib/modules/$(uname -r)/kernel/fs //查看Linux支持哪些文件系統
# cat /proc/filesystems //查看當前已加載到內存中支持的文件系統
# mount //列出系統的所有分區
# mpstat //多處理器使用率
# netstat -pan|grep 177 //查看177端口情況
# netstat -nlap //查詢進程佔用哪些端口
# ps aux //顯示所有進程狀態和進程的基本信息
# ps -e //查看當前所有進程
# ps -u root –N //顯示所有不是以root身份運行的進程
# ps -U ow2003 //顯示ow2003用戶進程
# ps -ef |grep ow2003 //顯示ow2003用戶進程
# pstree -h //高亮顯示當前正在執行的進程
# pstree -p //以樹狀圖方式顯示進程及進程號
# pwd //顯示當前目錄
# rpm -qa redhat-release //看操作系統版本(只適用RH系列)
# rpm -qa | xargs rpm -V //查看系統中所有被修改過的文件,這對新安裝的系統比較有效
# rpm -qa vsftpd | xargs rpm -V //查看系統中某個rpm包中的文件是否被修改
# runlevel //顯示系統運行級別
# set //顯示所有本地定義的Shell變量
# stat -f filename //顯示文件系統狀態
# stat filename //顯示文件詳細內容
# tac /etc/hosts //與cat相反,是將hosts內容從最後一行到第一行反向顯示在屏幕上
# time ls //查看執行ls命令所需的時間
# top n 2 //顯示進程信息,刷新兩次後退出
# top -d 2 -n 3 -b >test.txt //將top的結果輸出到文件test.txt中(每隔2秒,打印3次)
# top -bn1 //top命令列出所有進程
# top -bn1 > 1.txt //將進程輸出到文件1.txt裏
# touch --help //顯示touch幫助信息
# tty //顯示當前終端的名稱
# uname -a //顯示全部信息
64位系統輸出如下信息:
Linux server141.guodu.net 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:48 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux
32位系統輸出如下信息:
Linux bank.guodu.net 2.6.9-5.ELsmp #1 SMP Wed Jan 5 19:30:39 EST 2005 i686 i686 i386 GNU/Linux
# uname -i //顯示硬件平臺
# uname -m //顯示機器硬件名
# uname -n //顯示網絡節點主機名
# uname -o //顯示操作系統
# uname -p //顯示處理器類型
# uname -r //顯示內核版次
# uname -s //顯示內核名
Linux內核版本信息:
Redhat 9.0———————————————2.4.20-8
RHEL 3 Update 8————————————2.4.21-47
RHEL 4 ————————————————2.6.9-5
RHEL 4 Update 1————————————2.6.9-11
RHEL 4 Update 2————————————2.6.9-22
RHEL 4 Update 3————————————2.6.9-34
RHEL 4 Update 4————————————2.6.9-42
RHEL 4 Update 5————————————2.6.9-55
RHEL 4 Update 6————————————2.6.9-67
RHEL 4 Update 7————————————2.6.9-78
CENTOS 5/RHEL 5 ———————————2.6.18-8
CENTOS 5.1/RHEL 5 Update 1——————2.6.18-53
CENTOS 5.2/RHEL 5 Update 2——————2.6.18-92
CENTOS 5.3/RHEL 5 Update 3——————2.6.18-128
CENTOS 5.4/RHEL 5 Update 4——————2.6.18-164
CENTOS 5.5/RHEL 5 Update 5——————2.6.18-194
CENTOS 5.6/RHEL 5 Update 6——————2.6.18-238
# uptime //查詢系統自啓動到現在總的運行時間及負載情況
# vmstat //顯示虛擬內存的使用信息
# vmstat 2 3 //顯示虛擬內存每隔2s刷新一次信息,且刷新3次
# whatis [命令或數據] //相當於man -f [命令或數據]
# yes string //設定重複顯示的字符串
2、系統管理命令
# bc //調用計算器(如果要輸出小數,則要執行 scale=number,這個number就是小數點後的位數),輸入quit退出bc
# chkconfig rlogin on //開啓rlogin服務
# chkconfig rsh on //開啓遠端服務器rsh
# chsh //shell設置
# chsh -l //列出當前所有可用的shell
# chsh -s /bin/bash //改變當前的shell設置爲/bin/bash
# /bin/sh //切換shell
# exit //退出shell
# clear //清除終端屏幕
# cp /dev/cdrom mycd.iso & //後臺運行製作鏡像(加&)
# Ctrl + L //清除終端屏幕
# dos2unix filedos.txt fileunix.txt //將一個文本文件的格式從MSDOS轉換成UNIX
# unix2dos fileunix.txt filedos.txt //將一個文本文件的格式從UNIX轉換成MSDOS
# recode ..HTML page.html //將一個文本文件轉換成html
# recode -l | more //顯示所有允許的轉換格式
# badblocks -v /dev/hda1 //檢查磁盤hda1上的壞磁塊
# fsck /dev/hda1 //修復/檢查hda1磁盤上linux文件系統的完整性
# fsck.ext2 /dev/hda1 //修復/檢查hda1磁盤上ext2文件系統的完整性
# e2fsck /dev/hda1 //修復/檢查hda1磁盤上ext2文件系統的完整性
# e2fsck -j /dev/hda1 //修復/檢查hda1磁盤上ext3文件系統的完整性
# fsck.ext3 /dev/hda1 //修復/檢查hda1磁盤上ext3文件系統的完整性
# fsck.vfat /dev/hda1 //修復/檢查hda1磁盤上fat文件系統的完整性
# fsck.msdos /dev/hda1 //修復/檢查hda1磁盤上dos文件系統的完整性
# dosfsck /dev/hda1 //修復/檢查hda1磁盤上dos文件系統的完整性
# echo $shell //顯示當前用戶的默認shell
# fg 2178 //將後臺進程編號爲2178調到前臺
# ftp 10.52.19.189 & //讓ftp進程在後臺執行
# init 0 //關閉系統(停止)
# telinit 0 //關閉系統(3)
# init 1 //單用戶模式(root)
# init 2 //多用戶文本模式(不能使用NFS)
# init 3 //多用戶文本模式(能使用網絡共享)
# init 5 //圖形登錄模式
# init 6 //重新啓動系統
# shutdown -h now //關閉系統(1)
# shutdown -h hours:minutes & //按預定時間關閉系統
# shutdown -c //取消按預定時間關閉系統
# shutdown -r now //重啓(1)
# reboot //重啓(2)
# logout //註銷
# jobs 查看後臺運行的進程
# kill -9 2178 //強制終止ID爲2178的進程(強制法可能導致系統資源無法正常釋放,一般不推薦使用,除非其他辦法都無效)
# mc //對當前目錄文件進行可視化管理
# ntsysv //設置系統開機時啓動的各種服務
# system-config-services //圖形界面的設置系統開機時啓動的各種服務
# pgrep nslookup //顯示與指定字符串相關的進程
# pgrep -u root -l //查找由root用戶創建的進程
# pgrep -u root -l -v //查找不是由root用戶創建的進程
# ps -aux //顯示當前運行的進程(靜態)
# ps -ef // 查看所有進程
# pstree //查看當前進程樹
# pwck /etc/passwd //檢測passwd文件的正確性
# pwck /etc/shadow //檢測shadow文件的正確性
# rlogin -l ow2003 10.52.19.200 //以用戶ow2003登錄遠端主機
# rmmod 未使用的模塊名 //卸載unused模塊
# rsh 10.52.19.189 //登錄遠端主機10.52.19.189
# rsh -l ow2003 10.52.19.189 //以用戶ow2003登錄遠端主機
# runlevel //顯示系統當前運行級別
# sleep 2m //讓系統休眠2分鐘
# ssh 10.52.19.189 //登錄遠端主機10.52.19.189
# ssh -l ow2003 10.52.19.189 //以用戶ow2003登錄遠端主機
# sudo -L //顯示sudo命令可以使用的參數及相關描述信息
# sudo -u ow2003 ls -l /home //以用戶ow2003身份執行命令
# suspend //暫停正在使用的shell
# suspend -f //強制暫停正在使用的shell
# symlinks -v / //顯示根目錄下的所有符號鏈接
# testparm //測試samba配置,回車後繼續
# top //顯示當前運行的進程(動態)
# top (Ctrl+Z) // 將當前top進程調到後臺並停止
# vlock //鎖定虛擬終端
# watch -n 10 --difference=cumulative who //以高亮字符顯示累加差異
# watch -n 10 who //每隔10秒執行一次who命令
# whereis //找到指定文件的源、二進制文件和手冊等各部分
# xkill //鼠標點死掉的圖形即可終止,如果想終止xkill ,按右鍵取消
bash 快捷鍵:
常用:
Ctrl+a 開始位置
Ctrl+e 最後位置
Ctrl+k 刪除此處至末尾所有內容
Ctrl+u 刪除此處至開始所有內容
Ctrl-C 殺死當前任務
Ctrl-L 刷新屏幕
Ctrl-shift-c 複製
Ctrl-shift-v 粘貼
tab 補全
terminal窗口操作:
Alt+1 切換到標籤頁1
Alt+2 切換到標籤頁2
Alt+3 切換到標籤頁3
Ctrl+PageDown 後一標籤頁
Ctrl+PageUp 前一標籤頁
Shift+Ctrl+N 新建窗口
Shift+Ctrl+PageDown 標籤頁右移
Shift+Ctrl+PageUp 標籤頁左移
Shift+Ctrl+Q 關閉終端
Shift+Ctrl+T 新建標籤頁
Shift+Ctrl+W 關閉標籤頁
terminal窗口中的複製/粘貼:
Shift+Ctrl+C 複製
Shift+Ctrl+V 粘貼
改變terminal窗口大小:
!! 執行上一條命令
!?string? 執行含有string字符串的最新命令
!num 執行命令歷史列表的第num條命令
↑(Ctrl+p) 顯示上一條命令
↓(Ctrl+n) 顯示下一條命令
Alt+< 歷史列表第一項
Alt+> 歷史列表最後一項
Ctrl - 減小
Ctrl+Shift + 放大
Ctrl 0 原始大小
Ctrl+r 然後輸入若干字符,開始向上搜索包含該字符的命令,繼續按Ctrl+r,搜索上一條匹配的命令
Ctrl+s 與Ctrl+r類似,只是正向檢索
F11:全屏
history 顯示命令歷史列表
ls !$ 執行命令ls,並以上一條命令的參數爲其參數
光標移動:
Alt+b 光標向後移動一個單詞
Alt+c 把當前詞彙變成首字符大寫
Alt+d 剪切光標之後的詞
Alt+f 光標向前移動一個單詞
Alt+l 把當前詞轉化爲小寫
Alt+t 交換當前與以前單詞的位置
Alt+u 把當前詞轉化爲大寫
Ctrl+(x u) 按住Ctrl的同時再先後按x和u,撤銷剛纔的操作
Ctrl+a 光標移到行首。
Ctrl+b 光標左移一個字母
Ctrl+c 刪除整行
Ctrl+d 刪除光標所在字母(注意與backspace以及Ctrl+h的區別,這兩個是刪除光標前的字符)
Ctrl+d 退出當前 Shell(當前行無字符時)
Ctrl+e 光標移到行尾。
Ctrl+f 光標右移。
Ctrl+h 刪除光標前一個字符,相當於按 backspace 鍵。
Ctrl+k 清除光標後至行尾的內容。
Ctrl+l 清屏,相當於clear
Ctrl+q 重新啓用掛起的shell
Ctrl+r 搜索以前輸入過的命令。將有提示,根據輸入的關鍵字搜索bash的history
Ctrl+s 掛起當前shell
Ctrl+t 交換光標位置前的兩個字符。
Ctrl+u 清除光標前至行首間的所有內容。
Ctrl+v 插入特殊字符,如Ctrl+v+Tab加入Tab字符鍵
Ctrl+w 清除光標所在處之前的一個詞(以空格、標點等爲分隔符)
Ctrl+y 粘貼或恢復上次的刪除。
Ctrl+z 把當前進程轉到後臺運行,使用 fg 命令恢復。
Esc+b 移動到當前單詞的開頭
Esc+f 移動到當前單詞的結尾
Esc+t 顛倒光標所在處及其相鄰單詞的位置
Esc+w 刪除光標所在處之前的字符至其單詞尾(以空格、標點等爲分隔符)
3、系統維護命令
# alias //列出已設置的別名
# alias rm 'rm -i' //設置別名
# authconfig //設置系統的認證信息
# bind -l //顯示按鍵組合的內容
# bind -q abort //查詢abort上綁定的鍵
# chattr +i filename //禁止刪除
# chattr -i filename //取消禁止
# chattr +i /etc/fstab //禁止修改fstab文件
# chattr -i /etc/fstab //取消禁止修改fstab文件
# chmod 4755 test //使test文件具有SUID權限(4爲SUID)。SUID對目錄是無效的
# chmod 2755 test //使test文件具有SGID權限(2爲SGID)。SGID可用於文件或目錄
# chmod 1755 /test //使/test目錄具有SBIT權限(1爲Sticky bit即SBIT)。SBIT只對當前目錄有效
# chmod 7666 test //test文件擁有者無執行權限,設置後的大寫S、T表示“空的”,即沒有執行權限
# lsattr -a test //顯示文件test的隱藏屬性
# lsattr -a //顯示當前目錄下所有的目錄和文件,包括隱藏文件或目錄
# lsattr -R //遞歸顯示指定目錄及子目錄的內容
# lsattr //顯示當前目錄下的文件屬性
# chkconfig --list //列出chkconfig所知道的所有服務
# chkconfig telnet off //關閉telnet服務
# chkconfig telnet on //開啓telnet服務
# cat /etc/sysconfig/clock //查看所屬時區和是否使用UTC時間
# date -s 2007-08-03 //只修改日期
# date -s "2007-08-03 14:15:00" //同時修改日期和時間,加雙引號
# date -s 02/16/2012 //修改日期(按月日年格式)
# date -s 13:56:00 //修改時間(按時分秒格式)
# clock -r //查詢BIOS時間
# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime //修改時區
修改/etc/sysconfig/clock文件的內容爲:
ZONE=”Asia/Shanghai”
UTC=false
ARC=false
# hwclock –w //同步BIOS時間
# hwclock -set -date="07/07/06 10:19:00'' //設置硬件時間(月/日/年 時:分:秒)
# clock -set -date="07/07/06 10:19:00'' //設置硬件時間(月/日/年 時:分:秒)
# hwclock -hctosys //硬件時鐘與系統時鐘同步(hc代表硬件時間,sys代表系統時間)
# clock -hctosys //硬件時鐘與系統時鐘同步(hc代表硬件時間,sys代表系統時間)
# hwclock -systohc //系統時鐘與硬件時鐘同步
# clock -systohc //系統時鐘與硬件時鐘同步
# tzselect //時區設置
# DEB 包 (Debian, Ubuntu 以及類似系統)
# dpkg -i package.deb //安裝/更新一個 deb 包
# dpkg -r package_name //從系統刪除一個 deb 包
# dpkg -l //顯示系統中所有已經安裝的 deb 包
# dpkg -l | grep httpd //顯示所有名稱中包含 "httpd" 字樣的deb包
# dpkg -s package_name //獲得已經安裝在系統中一個特殊包的信息
# dpkg -L package_name //顯示系統中已經安裝的一個deb包所提供的文件列表
# dpkg --contents package.deb //顯示尚未安裝的一個包所提供的文件列表
# dpkg -S /bin/ping //確認所給的文件由哪個deb包提供
# declare BASH=/bin/csh //修改變量BASH的值爲/bin/csh
# declare -p //顯示shell的所有變量及值
# declare -x //顯示所有環境變量的值
# dircolors -b //顯示Bourne Shell顏色代碼設置
# dircolors -c //顯示C Shell顏色代碼設置
# dircolors -p //顯示ls命令默認顏色值
# enable -a //顯示shell的所有內置指令
# enable alias //加載內部命令alias
# enable -n alias //關閉alias
# eval pwd;df -h;ls //連接多個命令pwd,df -h和ls
# export MYENVIRON //自定義一個環境變量MYENVIRON
# export MYNAME= " Wang Xuri" //定義環境變量並賦值
# export -p //列出當前的環境變量值
# unset MYNAME //清除環境變量MYNAME
(注:以上命令使用的shell是bash)
# fdisk /mbr //刪除GRUB
# hostid //顯示當前主機的數字標識
# ldd /bin/ls //顯示/bin/ls命令所使用的共享函數庫
# ldd -v /bin/ls //以冗餘模式顯示的/bin/ls所使用的共享函數庫
# losetup /dev/loop0 //顯示設備/dev/loop0的狀態
# depmod //分析可載入模塊的相依性
# insmod //載入模塊
# lsmod //顯示所有已加載的模塊
# lsmod -v usb-uhci //使用insmod命令安裝模塊"usb-uhci"
# modinfo //顯示kernel模塊的信息
# modprobe //自動處理可載入模塊
# modprobe -c //顯示當前自動處理可載入模塊的默認配置
# rmmod //刪除模塊
# modprobe -v 8139too //安裝網卡8139too
# mouseconfig --device psaux //指定鼠標端口爲PS/2,鼠標爲psaux
# mouseconfig --noui genericusb //以命令形式指定鼠標類型爲genericusb
# mouseconfig --text //在圖形界面方式下配置鼠標
# resize -c //使用C shell表示當前終端窗口大小
# resize -s 30 100 //設置虛擬終端大小,高爲30列,長爲100個字符
# resize -u //使用Bourne shell表示當前終端窗口大小
# rpm --checksig package.rpm //確認一個rpm包的完整性
# rpm -e package-name //卸載具體的軟件包
# rpm -ev RealPlayer //卸載軟件RealPlay
# rpm -hiv RealPlayer10GOLD.rpm //安裝RealPlayer10GOLD.rpm包
# rpm -i mplay.rpm //安裝mplay軟件包(不顯示信息)
# rpm -ivh --force mplay.rpm //強制安裝mplay軟件包(顯示信息)
# rpm -ivh package-name //安裝軟件包並顯示過程
# rpm -oldpackge mplay.rpm //降級mplay軟件包
# rpm -q http //查詢指定的包http是否安裝
# rpm -q installed-package-name //查看是否安裝
# rpm -q telnet-server //查看telnet服務器包
# rpm -qa //查看系統中已安裝的所有rpm包(不分屏)
# rpm -qa|grep ftp //查詢指定RPM
# rpm -qa|less //查詢已安裝RPM(分屏)
# rpm -qf luo //查詢文件luo所屬的軟件包
# rpm -qf package-name //查詢某個文件所屬的軟件包
# rpm -qi http //查詢指定的包http詳細信息(已安裝)
# rpm -qi package-name //查看軟件的描述信息
# rpm -qi Realplayer //查詢RealPlay的安裝信息
# rpm -ql http //查詢指定的包http文件列表(已安裝)
# rpm -ql package-name //查詢軟件包的文件列表
# rpm -qp package-name //查詢未安裝的軟件包信息
# rpm -qpi http //查詢指定的包http詳細信息(未安裝)
# rpm -qpl http //查詢指定的包http文件列表(未安裝)
# rpm -U mplay.rpm //升級mplay軟件包
# rpm -Uvh package-name //升級軟件包並顯示過程
# rpm -V package-name //驗證軟件包的大小,類型等等
# which mount //獲得mount所屬包可執行文件路徑
# for i in ‘rpm -qa |grep -i php’
>do rpm -e $i -nodeps
>done //刪除系統中與軟件php相關的所有已安裝的軟件包
# alias td //顯示別名信息
# alias td=tcpdump //tcpdump命令設置別名td
# runlevel //顯示當前系統運行等級
# runlevel 2 //設置執行級別
# set //顯示當前的環境變量設置
# set SHELL “/bin/sh” //設置環境變更SHELL的值爲/bin/sh
# setserial -a /dev/ttyS1 //顯示串口/dev/ttyS1的詳細配置信息
# setserial -v /dev/ttyS1 //顯示串口/dev/ttyS1的配置信息
# setup //用來設置認證、防火牆、鼠標、網絡配置、系統服務等公用程序
# fdisk -l //顯示分區信息
# startx & init 5 //進入圖形界面
# swapoff /dev/sda3 //卸載交換區/dev/sda3
# swapon /dev/sda3 //加載交換區/dev/sda3
# sync //將內存信息同步寫入磁盤(在一些“危險”操作前使用)
# system-config- //連續按兩下tab鍵,調出配製命令列表,以備選用
# tmpwatch -t 100 /tmp/ //查看100小時內未被使用的文件(不刪除文件,僅進行測試)
# tmpwatch 100 /tmp/ //刪除/tmp目錄下100小時內未被使用的文件
# tmpwathc -s 100 /tmp/ //在刪除文件之前,使用fuser命令檢測該文件是否正被使用
# ulimit -a //顯示系統資源配置
# ulimit -n 1000 //設置同一時間可打開的文件數目
# ulimit -u 500 //設置單用戶創建進程上限爲500
# ulimit -v 1024 //設置最大虛擬內存數
# unalias td //刪除別名
# unset pwd //刪除環境變量
# up2date //升級Red Hat Linux系統
# up2date -l //列出所有可用的升級包
釋放linux系統的內存(在RHEL4.0及以上版本測試通過。注:在應用程序未退出時不能使用該命令):
# free -m
# sync
# echo 3 > /proc/sys/vm/drop_caches
# cat /proc/sys/vm/drop_caches
# free -m
# ./configure;make;make install //編譯安裝過程(cd到安裝目錄執行)
# sh ./file_name //安裝.run後綴文件
# system-config-packages //啓動圖形界面包管理程序
# nvidia-settings //設置nvidia顯卡
爲內核打補丁
# bunzip2 patch-2.6.0-rmk2.bz2 //將包解壓成patch-2.6.0-rmk2
# mv patch-2.6.0-rmk2 ./linux-2.6.0 //將補丁移到大內核目錄
# cd linux-2.6.0 //進入內核目錄
# patch -p1 < patch-2.6.0-rmk2 //“<”前後各有一個空格,-p1中的1是數字1。若補丁文件非bz2格式,如gz,則可用以下命令爲內核打補丁:
# zcat ./patch-2.6.0-rmk2.gz | patch -p1
# YUM 軟件包升級器 - (Fedora, RedHat及類似系統)
# yum install package_name //下載並安裝一個rpm包
# yum localinstall package_name.rpm //將安裝一個rpm包,使用你自己的軟件倉庫爲你解決所有依賴關係
# yum update package_name.rpm //更新當前系統中所有安裝的rpm包
# yum update package_name //更新一個rpm包
# yum remove package_name //刪除一個rpm包
# yum list //列出當前系統中安裝的所有包
# yum search package_name //在rpm倉庫中搜尋軟件包
# yum clean packages //清理rpm緩存刪除下載的包
# yum clean headers //刪除所有頭文件
# yum clean all //刪除所有緩存的包和頭文件
# iconv -f big5 -t utf8 vi.big5 -o vi.utf8 //把用big5編碼的文件vi.big5轉成utf8編碼文件vi.utf8
# iconv -f utf8 -t big5 vi.utf8 | \
> iconv -f big5 -t gb2312 | iconv -f gb2312 -t utf8 -o vi.gb.utf8 //把用繁體編碼的utf8文件vi.utf8轉成簡體的utf8文件vi.gb.utf8
4、自動作業處理
# /sbin/service anacron restart //重啓anacron服務
# /sbin/service anacron start //啓動anacron服務
# /sbin/service anacron stop //停止anacron服務
# /usr/sbin/atd //啓動atd守護進程
# at -c 6 //顯示已經設置的任務6的內容
# at -l //查詢已設置的任務
# atd -d //以輸出調試信息的方式運行隊列中的任務
# atq //查詢當前已設置的任務
# atrm 3 //刪除當前任務隊列中的第3個任務
# atrun //執行已排隊的任務
# cat /var/spool/cron/root //查看任務內容
# chkconfig --level 35 crond off //關閉crond服務(在3,5級別)
# chkconfig --level 35 crond on //啓動crond服務(在3,5級別)
# chkconfig --level級別列表 服務名稱 [on|off|reset]
# chkconfig --level 24 syslog off //設置syslog 2,4級別的啓動狀爲off
# chkconfig --list 服務名稱
# chkconfig --list //顯示已運行所有服務的啓動狀態
# chkconfig --list syslog //顯示指定syslog服務的啓動狀態
# chkconfig服務名 [on,off,reset]
# chkconfig rsync on //設置rsync服務狀態爲啓動
# chkconfig --list crond //查詢crond在各運行級別的啓動狀態
# chkconfig --list|grep iptables //查看防火牆狀態
# crontab -e //編輯cron任務(編完後,系統默認保存位置是/tmp)
# crontab -l //查看當前的cron任務列表
# crontab -r //刪除cron任務
# rpm -qa anacron //查看系統中是否已安裝anacron服務
# rpm -qa crontabs //檢查系統中是否已安裝crond服務
# service crond restart //重啓cron服務
# service crond start //啓動crond服務
# service crond status //查看cron服務啓動狀態
# service crond stop //停止crond服務
# pgrep crond //判斷crond 是否在運行
# pkill crond //殺掉正在運行中的crond
# pgrep crond //查看是否被殺掉了
# /usr/sbin/crond //運行crond
# /etc/init.d/crond stop //停止cron服務
# /etc/init.d/crond restart //重啓cron服務
5、系統日誌
# /sbin/syslogd //啓動syslog日誌守護進程
# /sbin/syslogd -r //守護進程可以接收來自網絡的syslog信息
# killall -HUP syslogd //重新修改配置文件後,重啓syslog進程使其生效
# echo > /user/local/apache/logs/error_log //清空Apache服務日誌
二、用戶和用戶組管理
# ac //查看系統總的連接時間
# ac -d //按天對連接進行彙總
# ac -p //列出所有用戶的連接時間
# cat /etc/shadow //查看/etc/shadow文件
# chage //改變用戶變更密碼的期限,要求用戶必須在幾天之內變更密碼
# chage -l ow2003 //查看ow2003用戶密碼的有效期
# chfn //用來改變一個用戶的完整用戶名和其他信息
# chpasswd //一次性更新一組現有用戶的密碼
# chroot /tmp/empty /ls –Rl / //以/tmp/empty爲根運行ls命令
# chsh //改變用戶的缺省登陸shell
# cut -d: -f 1 /etc/group // 查看系統所有組
# cut -d: -f 1 /etc/passwd // 查看系統所有用戶
# dpasswd //刪除或者更新用戶登錄shell的撥號密碼
# expiry //檢查並強制執行密碼失效策略
# faillog //檢查登錄失敗日誌/var/log/faillog,設置允許登錄失敗的次數或重置失敗次數
# finger -l //列出當前登錄用戶的相關信息
# finger ow2003 //查看ow2003用戶描述信息
# gpasswd //用來管理/etc/group文件
# grep ow2003 /etc/shadow //查看ow2003是否禁用(用戶名後緊跟!號)
# grep ow2003 /etc/shadow //查看ow2003是否啓用(用戶名後無!號)
# groupadd //建立新的用戶組
# groupadd benet //添加benet組
# groupadd -g 502 student //添加用戶組student,GID爲502
# groupadd -g benet st03 //添加st03用戶並指定屬於benet組
# groupdel //刪除用戶組
# groupdel benet //刪除benet組
# groupmod //修改用戶組
# groupmod -n new_group_name old_group_name //重命名一個用戶組
# groupmod -g 503 teacher //修改teacher用戶的組標識爲503
# groupmod -g 550 -n dirctor teacher //將teacher用戶組標識號改爲550,用戶組名改爲director
# groups //顯示當前用戶所屬的用戶組
# grpck //校驗用戶組文件的完整性,/etc/group 和 /etc/gshadow
# grpconv //根據/etc/group文件建立/etc/gshadow文件
# grpunconv //根據/etc/group和/etc/gshadow文件建立新的/etc/group文件,並刪除/etc/gshadow文件
# id //顯示當前用戶的UID、GID和用戶所屬的組列表
# id 用戶名 // 查看指定用戶信息
# id -g //顯示當前用戶的用戶組GID
# id -G //顯示所有的用戶組GID
# id -G -n //顯示所有的羣組名稱
# id ow2003 //顯示指定用戶ow2003的用戶信息
# id root //顯示root用戶的用戶信息
# last //顯示最近用戶的登錄信息(last命令查找/var/log/wtmp文件)
# last -n 10 //僅顯示10行記錄
# last -x //查詢最近用戶登錄情況,同時顯示系統關機及系統運行等級變化
# lastb //顯示最近登錄失敗用戶信息(lastb命令查找/var/log/btmp文件)
# lastlog //格式化並輸出最後一個登錄日誌的內容,或者是某個用戶的最近一次登陸內容
# ln /usr/sbin/groupadd /usr/sbin/addgroup //創建名爲addgroup的鏈接命令,鏈接到groupadd命令
# login //系統用它來允許用戶登陸
# logname //顯示登錄用戶的用戶名
# logoutd //用/etc/porttime中的設置強制限制登錄時間和端口
# mkpasswd //讀取參數設定的某格式文件並轉化至相應的數據庫文件格式
# newgrp //不指定轉換的用戶組時,系統默認轉換爲登錄時的用戶組
# newgrp [-] [groupname] //選項“-”用於重新加載用戶工作環境。如果不帶“-”選項,則在切換用戶組時,用戶的工作環境(包括當前工作目錄等)不會改變
# newgrp bin //改變當前用戶的主用戶組爲bin
# newusers //批量加入新的用戶
# passwd //修改當前用戶的密碼
# passwd -d ow2003 //快速刪除ow2003用戶的密碼
# passwd -l ow2003 //鎖定ow2003用戶使其不能登錄
# passwd ow2003 //根用戶修改普通用戶ow2003的密碼
# passwd -u ow2003 //解鎖ow2003用戶使其可以登錄
# pwck //校驗密碼文件的完整性,/etc/passwd 和 /etc/shadow
# pwconv //根據/etc/passwd文件建立/etc/shadow文件(解決兩者不匹配時的問題,如用戶ow203在passwd中有記錄而在shadow中無記錄的現象;解決無法進入圖形界面的用戶和組管理器現象)
# pwunconv //根據/etc/shadow和/etc/passwd文件建立新的/etc/passwd文件,並刪除/etc/shadow文件
# rwho -a //顯示局域網內所有用戶
# sg //設置用戶的GID到指定組,或者以指定組的身分執行一個命令
# su - //切換爲根用戶
# touch /etc/nologin //在系統維護期間禁止用戶登錄(但不限於SSH登錄)
# useradd //添加新的用戶或者改變新用戶的默認信息
# useradd -D //顯示當前的默認值
# useradd -D -s /bin/csh //修改該命令所用shell的默認值爲/bin/csh
# useradd wxr2 -u 502 -d /home/wxr -s /bin/bash -e 10/30/11 -g 100 //添加一新用戶wxr2,UID爲502,用戶組ID爲100,用戶目錄爲/home/wxr,用戶的默認shell爲/bin/bash,賬號的失效期爲2011年10月30日
# userdel /刪除用戶
# userdel ow2003 //刪除 ow2003用戶(僅刪帳號)
# userdel -r ow2003 //刪除 ow2003用戶(連同主目錄刪除)
# usermod //修改用戶信息
# usermod -d /home/wxr2 -s /bin/ksh -g users wxr //用戶登錄目錄改爲/home/wxr2,用戶登錄shell改爲ksh,用戶所在組改爲users和wxr
# usermod -g benet st03 //設置st03用戶新的組名爲benet
# usermod -G szxs st03 //添加st03用戶到其它組szxs(多組)
# usermod -L ow2003 //禁用ow2003用戶
# usermod -U ow2003 //啓用ow2003用戶
# usermod -u0 -o ow2003 //提升ow2003用戶管理員權限
# users //顯示所有登錄的用戶
# vigr //能用來編輯 /etc/group 或 /etc/gshadow文件
# vigr /etc/group //編輯group時自動對該文件加鎖,編輯結束時自動解鎖
# vipw //編輯passwd時將自動對該文件加鎖,編輯結束時自動解鎖
# vipw //能用來編輯 /etc/passwd 或 /etc/shadow文件
# w -f //顯示登錄用戶信息,但不顯示登錄位置(即from字段)
# w -h //在顯示登錄用戶信息時,不顯示標題欄
# w root //只查詢指定用戶root的信息
# w -s //以精簡模式顯示登錄用戶信息
# w // 查看當前登陸用戶及所進行的操作
# who -H //顯示登錄系統的用戶信息時,顯示標題欄
# who -H -m //只顯示使用當前標準輸入設備的用戶
# who -H -p //顯示由init進程創建的活動進程
# who -H -u //顯示空閒時間段
# who -q //顯示所有登錄的用戶名以及登錄用戶的數目
# who -T -H //顯示用戶狀態信息
# who // 顯示當前登陸系統的用戶
# whoami //顯示當前登錄用戶名稱
# skill -9 pts/2 //殺掉從pts/2虛擬終端登錄的用戶
# write wang
EOF //向登錄用戶wang發送即將關機的信息
System will shutdown soon!
三、磁盤管理
# blkid //列出當前系統中所有已掛載文件系統的類型
# blkid -s LABEL //僅顯示每個(指定)設備相匹配的標籤
# blkid /dev/sda1 //查看/dev/sda1設備所採用的文件系統類型
# e2label device [newlabel] //改變本地設備文件系統的label名稱
# dd if=/dev/zero of=f1 bs=10MB count=2 //用虛擬文件f1檢查配額情況
# dd if=/dev/sda of=/home/backup/boot_MBR bs=446 count=1 //備份MBR。解決Linux和Windows雙系統的引導問題(IED硬盤爲hda)
# dd if=/home/backup/boot_MBR of=/dev/sda bs=446 count=1 //恢復MBR
# dd if=/dev/zero of=/home/loopdev bs=1M count=512 //創建一個空的文件在/home/loopdev
# mkfs -t ext3 /home/loopdev //對/home/loopdev進行格式化
# mount -o loop /home/loopdev /media/cdrom //掛載/home/loopdev這個loop設備到/media/cdrom目錄
# df //用於報告文件系統的總容量,使用量,剩餘容量
# df -ah //查詢所有分區使用量,以可被識別的方式展現
# df -h //以用戶容易識別的方式顯示磁盤空間使用情況
# df -i //以inode模式顯示磁盤的使用情況
# df -T //查看磁盤格式掛載後的信息
# df -t ext3 //只顯示ext3類型磁盤的信息
# df -x ext3 //不顯示指定磁盤類型的磁盤使用信息
# dmesg | grep IDE // 查看啓動時IDE設備檢測狀況
# dmesg | grep DMA //查看硬盤是否運行在DMA模式
# du -a DirPath //顯示所有文件及其子目錄佔用的數據塊數
# du -a | sort -n > /home/disk_used & //將顯示結果儲存到/home/disk_used文件中
# du -b /home //查看目前/HOME目錄的容量(k)及子目錄的容量(k)
# du -sh DirPath //以用戶易讀格式顯示目錄大小
# du -sk DirPath //查看目錄的容量(k)
# du -sm DirPath //查看目錄的容量(m)
# fdisk /dev/sda //對磁盤sda進行分區
# fdisk -l //查看磁盤及分區信息
# sfdisk -l //查看磁盤及分區信息
# sfdisk -s //查看系統中所有磁盤的大小
# fdisk -s /dev/sdb //顯示/dev/sdb設備中所有分區大小總和
# fdisk -s /dev/sdb2 //顯示/dev/sdb2分區大小
# fdisk -v //顯示fdisk版本號
# hdparm -i /dev/hda // 查看磁盤參數(僅適用於IDE設備)
# mkfs.ext2 /dev/sda1 //格式化sda1爲ext2格式
# mkfs.ext3 /dev/sda2 //格式化sda2爲ext3格式
# mount //顯示當前已掛載的文件系統
# mount -a //搜索/etc/fstab文件中滿足條件的文件系統,進行掛載操作。只有root用戶可以操作。
# mount -l //列出所有已經掛載的文件系統列表
# mount /dev/sda1 /bbb //掛載sda1到/bbb目錄下
# mount | column -t // 查看掛接的分區狀態
# mount -t 文件系統類型 設備路經 訪問路經
# mount -t iso9600 /dev/cdrom /mnt/cdrom //在/mnt/cdrom目錄下掛載光驅(iso9600爲光盤的標準文件系統類型)
# mount /dev/cdrom /aaa/ //掛載設備CDROM到/aaa/目錄下
# mount -t ntfs-3g /dev/sdb* /mnt/aaa //不編譯內核,mount ntfs分區
# cp /dev/cdrom 123.iso //將cdrom內容製作成123.iso鏡像
# mount -t iso9660 -o loop xxx.iso /path //掛載ISO文件
# mount -o loop 123.iso /bbb/ //將123.iso鏡像文件掛載到/bbb/下
# mount -t isoDVD /dev/cdrom /mnt/cdrom //掛載光驅
# mount -t iso9660 /dev/cdrom /mnt/cdrom //掛載光盤
# mount -t vfat -o iocharset=utf8,umask=000 /dev/hda2 /mnt/hda2 //掛載fat32分區
# mount -t ntfs -o nls=utf8,umask=000 /dev/hda3 /mnt/hda3 //掛載ntfs分區
# mount -t vfat /dev/hda6 /mnt/cdrom //掛第一個ide的第六個邏輯分區
# mount -no remount, ro / //以只讀模式重新掛載/分區
# mount -n -o remount, rw / //以讀寫模式重新掛載/分區(單用戶維護模式時有用)
# umount /aaa/ //卸載目錄/aaa
# umount /dev/cdrom //卸載設備 cdrom
# showmount -e 10.52.19.4 //顯示對方服務器nfs共享目錄
==========================
參考:
mount遠程目錄並讓本地非root用戶可讀可寫
http://blog.chinaunix.net/uid-20680966-id-4153081.html
==========================
# fuser -km /mnt //當設備繁忙時強制卸載
# eject -n //查看系統默認的彈出設備
# eject //彈出默認的設備
# quotastats //顯示系統磁盤空間限制的當前狀態
# repquota -a //顯示文件系統的磁盤使用情況
# edquota -u ccnp //對組ccnp設置配額
# edquota -u st26 //對用戶設置配額
# quota -g ccnp //查看組ccnp配額情況
# quota -u st26 //查看用戶st26配額情況
# quotacheck -cmug / //創建配額文件
# quotacheck -mfvug / //對文件系統的配額進行一致性檢測
# quotaon -a //啓用所有的磁盤配額限制
# quotaon /home //啓用/home的磁盤空間配額
# quotaon -aguv //不指定分區,使用自動搜索啓用磁盤配額
# quotaoff -a //關閉所有配額限制
# quotaoff /home //關閉/home的磁盤配額
# quotaoff -aguv //不指定分區,使用自動搜索關閉磁盤配額
# quotaoff -aguv //不指定分區,使用自動搜索關閉磁盤配額
# reboot //重啓系統
# swapon /dev/sdb2 //開啓交換分區/dev/sdb2
# swapoff /dev/sdb2 //關閉交換分區/dev/sdb2
# swapon -s // 查看所有交換分區
# grep SwapTotal /proc/meminfo //查看swap空間大小
# swapoff -a //關閉所有交換區
# swapon -a //開啓所有交換區(與上面成對使用後可使swap還原到初始狀態)
# fdisk /dev/sdb //由設備分區(sdb1)來創建SWAP分區,注意分區類型82
# mkswap /dev/sdb1 //格式化分區並創建文件系統
# vi /etc/fstab //添加:/dev/sdb1 swap swap defaults 0 0
# dd if=/dev/zero of=/data1/image/swap bs=1024 count=2048000 //添加交換文件並設置其大小爲2G
# mkswap /data1/image/swap //創建交換空間
# swapon /data1/image/swap //啓動新增加的2G的交換空間
# vi /etc/fstab //在文件最後加入:/data1/image/swap swap swap defaults 0 0 使得新加的2G交換空間在系統重新啓動後自動生效
# vi /etc/fstab //自動掛載磁盤分區,添加: /dev/sdb5 dd ext3 defauls 0 0
# vi /etc/fstab //修改fstab文件中分區裝載設置在defaults後加入usrquota,grpquota 重新掛載文件系統(對根分區設置配額重啓)
# sync --version //顯示sync命令版本信息
# sync --help //顯示sync命令的幫助信息
# sync //將內存數據寫入磁盤
# rsync -av -e ssh /home/share/*.doc [email protected]:/usr/local/share //將一臺名爲student.example.com主機上的/home/share目錄中的所有doc文件備份到主機teacher.example.com的/usr/local/share目錄下
# pvdisplay //查看組成LVM卷的物理卷(PV)
# pvcreate /dev/sdd //在二級SCSI控制器的從屬驅動器上創建一個新物理卷
# vgcreate myvolume /dev/sdd1 /dev/sdc2 //創建一個名爲myvolume的VG
# lvextend -L 2000M /dev/myvolume/mylogical //對dev/myvolume/mylogical的容量進行添加
# smartctl -H /dev/sdb //對sdb盤做一下健康自檢(PASSED爲合格)
# tune2fs -l /dev/sdc1 |grep "Block size" //查看ext3文件系統的block size(bytes)
Block size: 4096
四、文件和目錄管理
# cat /home/333 //查看/home下文件333的內容(不停頓)
# cd //進入當前帳戶所在目錄
# cd 配合通配符*會更方便些
# cd /home/ccc //進入/home/ccc目錄
# cd - //可以回到你之前所在的那個目錄
# cd ../.. //返回上兩級目錄
cp [-adfilprsu] 源文件(source) 目標文件(destination)
cp [options] source1 source2 source3 … directory
參數:
-a:相當於-pdr的意思,見後文(常用);
-d:若源文件爲連接文件屬性,則複製連接文件屬性而非文件本身;
-f:若目標文件已存在且無法開啓,則刪除後再嘗試一次;
-i:若目標文件已存在時,在覆蓋時會先詢問操作的進行(常用);
-l:進行硬連接的連接文件創建,而非複製文件本身;
-p:連同文件的屬性一起復制過去,而非使用默認屬性(備份常用);
-r:遞歸持續複製,用於目錄的複製行爲(常用);
-s: 複製成爲符號鏈接文件,即“快捷方式”文件;
-u:若destination比source舊才更新destination。最後需注意的是,如果源文件有兩個以上,則最後一個目的文件一定要是“目錄”才行。
# cp 333 /home/ccc //複製文件333到/home/ccc下
# cp 333 444 //複製文件333爲444(同目錄下)
# cp -fr test/ /data1/wxr/ //複製當前路徑下的目錄test到指定路徑/data1/wxr/
# cp .bashrc bashrc //將 .bashrc 拷貝成 bashrc 這個文件
# cp -a /etc /tmp //將目錄/etc以完整權限複製到/tmp目錄
# dos2unix a.txt b.txt //將dos格式的a.txt轉換成unix格式的b.txt
# dos2unix a.txt //直接將a.txt中的^M符號刪除(也可用vi命令(:%s/^m//g)刪除)
# scp -rp /path/filename username@remoteIP:/path //從A機複製到B機
# scp -rp username@remoteIP:/path/filename /path //從B機複製到A機
# cp /dev/cdrom mycdrom.iso //將光盤中的內容製成鏡像文件,文件名爲mycdrom.iso
# cp /dev/cdrom mycdrom.iso & //將光盤中的內容製成鏡像文件,文件名爲mycdrom.iso(後臺運行,加&)
# dd if=/dev/cdrom of=file.iso //把 CD/DVD 作成 ISO 文件
# mkisofs -r -o mybackup.iso /home/backup //將/home/backup目錄下的所有文件製成鏡像文件,文件名爲mybackup.iso
# mount -o loop mybackup.iso /mnt //將鏡像文件mybackup.iso掛接到/mnt目錄下
# file 222 //顯示文件222的文件類型
# file * //顯示當前目錄下所有文件的文件類型
# find /etc -name "host*" -print //在/etc目錄中查找文件名以host開頭的文件
# find //顯示當前目錄下所有內容(無參數)
# find $HOME -print //查找當前用戶主目錄下的所有文件
# find . -group root -exec ls -l { } \; //查找系統中所有屬於root組的文件
# find . -maxdepth 1 -size +1000000c //查找當前目錄下的大於1M的文件
# find . -name "[A-Z]*" -print //在當前目錄及子目錄中查找文件名以大寫字母開頭的文件
# find . -perm -7 -print | xargs chmod o-w //在當前目錄下查找所有用戶具有讀、寫和執行權限的文件,並取消others用戶的寫權限
# find . -perm 755 -print //當前目錄下查找文件權限位爲755的文件,即文件屬主可以讀、寫、執行,其他用戶可以讀、執行的文件
# find . -type d | sort //查找當前文件系統中的所有目錄並排序
# find . -type d -exec tree {} \; | more //顯示當前目錄的目錄結構並以樹形結構分頁顯示
# find . -type f -exec ls -l {} \; | more //查當前目錄下的所有普通文件,並用ls -l命令將它們分頁列出
# find . -type f -perm 644 -exec ls -l { } \; //讓當前目錄中文件屬主具有讀、寫權限,且文件所屬組的用戶和其他用戶具有讀權限的文件
# find . -type f -print | xargs file //查找當前目錄下的文件屬於哪類文件
# find / -name "file*" -print | xargs echo "" > /temp/core.log //在整個系統中查找內存信息轉儲文件(core dump) ,然後把結果保存到/tmp/core.log 文件中
# find / -type f -size 0 -exec ls -l { } \; //查找系統中所有文件長度爲0的普通文件,並列出它們的完整路徑
# find /apps -path "/apps/bin" -prune -o -print //在/apps目錄下(排除/apps/bin目錄)查找文件
# find /home -name “*.sgy” –print //查找/home下所有sgy文件
# find /usr/sam -path "/usr/sam/dir1" -prune -o -print //在/usr/sam目錄下查找不在dir1子目錄之內的所有文件
# find /var/log -type f -mtime +7 -ok rm { } \; //查找/var/log目錄中更改時間在7日以前的普通文件,並在刪除之前詢問它們
# find /data/pa/xyz/ -name "*.cgm" -atime +8 -exec rm -f {} \; //查找並刪除8晝夜(不含8晝夜本身)前被訪問過的cgm文件
# find ~ -print //查找當前用戶主目錄下的所有文件
# find DirPath -type f | wc -l //查看某目錄下有多少個文件
# find -name 11* //查找文件名包含11的所有文件
# find -user luo //查找屬於用戶luo的所有文件
# mv 333 /home/ccc //移動文件333到/home/ccc下
# mv 333 444 //移動文件333爲444(同目錄下改名)
# mv 目錄名 目錄名 //目標目錄已存在,源目錄移到目標目錄,目標目錄不存在,改名
# rm 333 //刪除文件333
# touch 333 //創建333空文件
chmod ---=0 -w-=2 r--=4 rw-=6 --x=1 -wx=3 r-x=5 rwx=7 s,S,t,T=特殊權限
# chmod [ugoa][+-=][rwx] file
u=屬主 g=屬組 o=其它用戶 a=所有用戶 rwx=讀,寫,執行
+-=:加權限,減權限,賦權限
# chown -R ow2003 wxr //更改目錄wxr屬於用戶ow2003
# chgrp -R ow2003 wxr //更改目錄wxr屬於組ow2003
# chgrp root * //把當前目錄中所有文件的組屬性設置成root
# chmod 765 111 //爲111文件的屬主設爲完全權限,屬組設成讀寫權,其它用戶具有讀和執行權限
# chmod a-r 111 //將111文件所有用戶撤消讀取權限
# chmod g+x 111 //將111文件屬組增加執行權限
# chmod o+r 111 //將111文件其它用戶增加讀取權限
# chmod u+w 111 //將111文件屬主增加可寫權限
# chmod g-r,o-r 111 //去掉文件111的同組和其他用戶的讀權限
# chmod o=rwx 111 //重設文件111的其他用戶權限爲讀、寫執行
# chown :benet 222 //更改文件222屬於組benet
# chown st03 222 //更改文件222屬於用戶st03
# chown st03:benet 222 //更改文件222屬於用戶st03組benet
# find / -perm -u+s //羅列一個系統中所有使用了SUID控制的文件
# chmod u+s /bin/file1 //設置一個二進制文件的 SUID 位 - 運行該文件的用戶也被賦予和所有者同樣的權限
# chmod u-s /bin/file1 //禁用一個二進制文件的 SUID位
# chmod g+s /home/public //設置一個目錄的SGID 位 - 類似SUID ,不過這是針對目錄的
# chmod g-s /home/public //禁用一個目錄的 SGID 位
# chmod o+t /home/public //設置一個文件的 STIKY 位 - 只允許合法所有人刪除文件
# chmod o-t /home/public //禁用一個目錄的 STIKY 位
# cut -d ":" -f 1,7 /etc/passwd //只顯示第一列(user ID)和第 7 列(user shell) 內容
# file //查看文件類型
# grep 字符 文件名 //根據字符匹配來查看文件部分內容
# head 10 /home/333 //查看/home下文件333的頭部10行內容
# less用法:
空格鍵:向下翻動一頁;
[PageDown]:向下翻動一頁;
[PageUp]:向上翻動一頁;
/字符串:向下查詢“字符串”的功能;
?字符串:向上查詢“字符串”的功能;
n:重複前一個查詢(與/或?有關);
N:反向重複前一個查詢(與/或?有關);
q:離開less這個程序。
# less /home/333 //查看/home下文件333的內容(分屏,可以往前翻頁)
# ln -s source_dir destination_dir //將目標目錄鏈接到源目錄。用絕對路徑。在與源目錄的同級目錄處創建。文件鏈接同理。用ls -l查看,會看到destination_dir -> source_dir 如:
# ln -s /home /disk1
# ls -l
lrwxrwxrwx 1 root root 4 Apr 7 2010 disk1 -> home/
# unlink destination_dir //取消目標目錄與源目錄的鏈接
# ll -h //以用戶容易識別的方式的長格式顯示當前目錄的內容
# lsattr -a //顯示所有文件和內容,包括現行目錄“.”與上層目錄“..”
# lsattr -R //遞歸顯示目錄下的所有文件和子目錄
# lsattr test //顯示文件test有屬性
# ls //以短格式顯示當前目錄的內容
# ls * //顯示當前目錄下的所有文件
# ls -l //以長格式顯示當前目錄的內容
# ls -l /home/bbb/ //顯示指定目錄/home/bbb的內容
# ls -l 111 //只顯示當前目錄下文件111的信息
# ls c* //列出當前目錄下以字母“c”開頭的文件
# ls ??n* //列出當前目錄下所有第3個字母是“n”的文件
# ls [b,c]* //顯示所有以字母b或c開頭的文件名
# ls -F | grep /$ //只列子目錄(短格式)
# ls -l | grep "^d" //只列子目錄(長格式)
# ls -l |grep "^-"|wc -l //計算當前目錄下的文件數
# ls -l |grep "^d"|wc -l //計算當前目錄下的目錄數
# ls -lSr |more //以尺寸大小排列文件和目錄
# ls --color=never //不要根據文件特性給予顏色
# ls --color=always //顯示顏色
# ls --color=auto //讓系統自行依據設置來判斷是否給予顏色
# ls --full-time //以完整時間模式(包含年、月、日、時、分)輸出
# lsof |grep 文件系統的掛接點 //查看是否有任何程序正在使用掛接點的文件系統
# man -t ls | ps2pdf - ls.pdf //創建ls命令的pdf格式文件
# man -t manpage | ps2pdf - filename.pdf //創建man的pdf格式文件
# mkdir ddd //在當前目錄下創建ddd目錄
# mkdir -p /a/b/c //創建/a/b/c目錄(多層目錄)
# mkdir -m a=r wxr //創建一個目錄wxr且指定該目錄的屬性爲對所有用戶可讀
# mkdir -m 700 /data1/wxr/test //創建新目錄/data1/wxr/test,且指定權限爲700
# more /home/333 //查看/home下文件333的內容(僅分屏)
# nl filename //顯示文件內容時,同時輸出行號
# od filename //以二進制方式讀取文件內容
# pwd //顯示當前所在目錄
# rmdir ddd //刪除ddd目錄(空)
# rm -r ddd //刪除ddd目錄(非空,先詢問)
# rm -rf ddd //直接刪除ddd目錄(非空,不詢問)
# rm -f /data/*.cgm //超級用戶下刪除/data目錄下所有.cgm文件(不再詢問)
# rm -i -r ddd //交互模式刪除ddd目錄(刪除前先詢問)
# \rm -r ddd/* //刪除ddd目錄下文件(不詢問)
# sed -n '5,10p' /etc/passwd //只查看passwd的第5行到第10行內容
# setfacl -m u:ow2003:rwx /home/hoework //對用戶ow2003設置對/homework目錄的讀、寫和執行權限
# setfacl -m u:ow2003:rw /home/hoework //對用戶ow2003設置對/homework目錄的讀、寫權限
# setfacl -m u:dba:r /home/hoework //對用戶組dba設置對/homework目錄的讀權限
# setfacl l -x u:dba /home/hoework //刪除用戶組dba的權限
# setfacl -d g:rw /home/ftp //對/home/ftp目錄的用戶組設定默認的權限爲讀、寫(若組中用戶重新指定了權限,則默認的組權限將被覆蓋,即具體指定的ACL權限優先於默認ACL權限)
# sort /home/ow2003/dk //顯示文檔dk內容並排序
# split -b 900m file file_part //把文件file以900m增量來分割
# cat file_part* >file //將分割後的文件重新組裝
# tac /home/ow2003/dk //以逆序顯示文檔dk內容(注:與cat相反)
# tail 10 /home/333 //查看/home下文件333的尾部10行內
# touch aa //使用touch命令創建aa文件(aa文件不存在)
# touch aa //使用touch命令更新文件aa的時間爲當前時間(aa文件存在)
# touch aa -t 200808081500.00 //更新文件aa的存取時間爲指定時間2008年8月8日15點
# tree //顯示文件和目錄由根目錄開始的樹形結構
# wc /home/ow2003/dk //顯示文檔dk的行數、詞數和字數
# which ssh //通過命令which,查找文件ssh(其查找範圍由環境變量$PATH設置)
# yes |rm *.cgm //自動回答rm提出的問題,無需用戶再連續輸入yes
五、備份與壓縮
# dd if=/dev/sda | gzip -c | ssh user@ip 'dd of=/mnt/backups/sda.dd' //通過ssh複製整個硬盤到遠程目錄(帶壓縮)
# tar -c 創建包;-x 釋放包;-v 顯示命令過程;-z 代表壓縮包;-t 列出包文件(打包時應儘量採用相對路徑,而不用絕對路徑)
# tar -cvf wxr.tar wxr //把當前wxr目錄打包
# tar -cvf wxr.tar wxr --exclude '*.3dv' --exclude '*.3dh' --exclude '*.cgm' --exclude '*.inp' //把當前wxr目錄打包,並排除.3dv、.3dh、.cgm、.inp文件
# tar -zcvf apache.tar.gz --exclude=c --exclude=d apache //若/opt/apache/目錄下有 a,b,c,d目錄,只打包a 、b目錄,不打包c 、d目錄
# tar -zcvf wxr.tar.gz wxr //把當前wxr目錄打包壓縮
# tar -hcvf wxr.tar wxr //對目錄wxr中鏈接文件也一併打包
# tar -rvf wxr.tar file1 //向wxr.tar包添加文件file1
# tar -tf wxr.tar //查看包wxr.tar內容
# tar -tzf wxr.tar.gz //查看壓縮包wxr.tar.gz的內容
# tar -jtv -f wxr.tar.bz2 //查看壓縮包wxr.tar.bz2的內容
# tar -jcv -f wxr.tar.bz2 bar/ //將目錄bar打包並壓縮爲wxr.tar.bz2
# tar -jxv -f wxr.tar.bz2 //對壓縮包wxr.tar.bz2解壓恢復
# tar -jxv -f wxr.tar.bz2 -C bar/ //將壓縮包解壓到目錄bar/
# tar -xvf wxr.tar -C /home //恢復包wxr.tar到指定目錄/home
# tar -xvf wxr.tar //解壓縮包wxr.tar
# tar -xzf wxr.tar.gz -C /home //恢復壓縮包wxr.tar.gz到指定目錄/home(不帶-C則恢復到原目錄)
# tar -xzf wxr.tar.gz //解壓縮包wxr.tar.gz
# tar -xzf wxr.tar.gz blah.txt //從壓縮包wxr.tar.bz2解壓出文件blah.txt
# tar -zcvf wxr.tar.gz /project //把目錄project打包並壓縮
# tar -zxvf wxr.tar.gz //壓縮包的文件解壓恢復
# tar cvf - dir1 dir2 | (cd /dir3; tar xvf - ) //將當前目錄dir1 dir2邊打包邊釋放到/dir3目錄下
# for ARK in ./*.tar.gz; do tar xvf $ARK; done //解壓當前目錄下的所有 .tar.gz 結尾的文件(把當前目錄下所有的 .tar.gz 文件的文件名逐一賦給變量 ARK,讓 tar 來引用 ARK 變量)
# dump -0f home.dump /home //將/home目錄備份到文件home.dump
# dump -0j -f /root/etc.dump.bz2 /etc //備份/etc目錄並含壓縮功能
# restore -rvf home.dump //恢復home目錄
# restore -tf home.dump //查看備份文件home.dump的文件列表
# dump -w //查看有無任何文件系統被dump過的數據
# zip -r data.zip data //將data文件夾壓縮成了data.zip格式
# unzip data.zip //將data.zip文件解壓到當前文件夾
# zip -r yasuo.zip abc.txt dir1 //把一個文件abc.txt和一個目錄dir1壓縮成爲yasuo.zip
# unzip yasuo.zip //解壓縮yasuo.zip文件
# unzip abc\?.zip //將當前目錄下的abc1.zip,abc2.zip和abc3.zip一起解壓縮(?表示一個字符,如果用*表示任意多個字符)
# unzip -v large.zip //不解壓,只想查看壓縮文件large.zip的內容
# unzip -t large.zip //檢驗壓縮文件large.zip是否下載完全了
# unzip -j music.zip //用-v選項發現music.zip裏有多級目錄,且子目錄中均爲mp3文件,若想把這些文件都下載到第一級目錄,而非一層一層建目錄
六、網絡管理與相關應用
# arp -a | awk '{print $4}' //得到網卡的 MAC地址
# dd if=/dev/zero bs=4096 count=1048576 | ssh user@ip 'cat > /dev/null' //不浪費磁盤的情況下測試網絡速度(通過 ssh 發送 4 GB 數據到遠程主機,但不會佔用任何磁盤空間)
# dmesg | grep eth //顯示每個網卡的硬件配置信息
# echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all //關閉ping
# echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all //重啓ping
# ethtool eth0 //顯示或改變網卡設置(參考:man ethtool)
# ifconfig //查看當前有效網絡接口信息
# ifconfig -a //查看當前所有網絡接口信息
# ifconfig eth0 //查看指定網絡接口eth0信息
# ifconfig eth0 192.168.1.11 //設置eth0接口IP地址(標準掩碼)(相當於動態修改IP)
# ifconfig eth0 192.168.1.11 netmask 255.255.255.128 //設置eth0接口IP地址及子網掩碼
# ifconfig eth0 hw ether 000C1254D321 //更改網卡物理地址
# ifconfig lo //查看lo狀態
# ifdown eth0 //禁用eth0網絡接口
# ifdown lo //關閉本地迴環網絡接口
# ifup eth0 //啓用eth0網絡接口
# ifup lo //啓動本地迴環網絡接口
# ip ad sh //顯示IP地址等信息
# iptables -L // 查看防火牆設置
# iptraf //可交互式IP網絡監控工具
# mii-tool -v //查看網卡有關信息
# netconfig //設置網絡環境
# netstat -antp // 查看所有已經建立的連接
# netstat -apt //顯示所有TCP應用程序所使用的端口號,並顯示使用此端口號的進程
# netstat -lntp // 查看所有監聽端口
# netstat -s // 查看網絡統計信息
# netstat -tulnp //目前系統上已在監聽的網絡連接及其PID
# ping 10.52.19.187 //檢測到10.52.19.187之間是否連通
# ping -c 5 10.52.19.187 //向10.52.19.187發送5個分組報文
# ping -s 6553 -c 5 10.52.19.187 //向10.52.19.187發送5個分組、每組大小爲6553字節的報文(注:最大分組報文不能超過65507字節)
# ping -c 8 -i 3 -s 1024 -t 25 10.52.19.187 //向10.52.19.187以3秒間隔、包大小1024字節、IP生存期25、8個包發送報文
# route -n // 查看路由表
# tracepath 10.52.19.189 //顯示連接到10.52.19.189的路由
# traceroute -n 10.52.19.190 //對到達10.52.19.190的路由進行跟蹤,且使用IP地址表示每一跳主機
# ss //顯示網絡套接字信息,它允許顯示類似netstat一樣的信息
# wget 192.168.20.148 //從網站192.168.20.148下載資料
動態增加IP
# traceroute 211.148.192.136 //檢測到目的IP經過的路由信息
# hostname //查看主機名稱
# hostname luo //設置主機名稱爲 luo
# ping 192.168.1.10 //Ping主機192.168.1.10
# ifconfig eth0 add 10.52.19.147
# ifconfig eth0:0 broadcast 10.52.19.255
DNS域名
# nslookup 待解析域名(或IP)
# nslookup 211.148.192.136 //反向解析IP---域名
# nslookup www.163.com //解析指定的域名---IP
# route add default gw 192.168.1.1 //添加默認網關爲192.168.1.1
# route del default gw 192.168.1.1 //刪除默認網關爲192.168.1.1
NFS服務
# exportfs -auv //停止輸出所有共享目錄
# exportfs -av //輸出啓用所有共享目錄
# exportfs -rv //重新輸出共享目錄
# mount -t nfs 192.168.2.10:/luo /wei //在客戶機上掛載共享目錄到/wei
# service iptables stop //關閉防火牆
# service nfs start //啓動nfs服務
# service portmap start //啓動portmap服務
# showmount -a //顯示NFS服務器的客戶與被掛載目錄
# showmount -d //顯示NFS服務器被掛載的目錄
# vi /etc/exports //修改共享配置文件(加共享目錄)
showmount -e 192.168.2.10 6 //在客戶上查看服務器共享目錄
配置文件
vi /etc/hosts vi /etc/network //修改主機名稱配置文件
vi /etc/rc.local //修改mac地址配置文件
vi /etc/resolv.conf //修改DNS配置文件
vi /etc/sysconfig/network-scripts/ifcfg-eth0 //修改網卡配置文件
vi /var/spool/cron/username //修改cron任務配置文件
vi /var/spool/mail //修改郵件配置文件
七、vi/vim編輯器
也可建立vi到vim的符號連接(即實際調用的是vim)
# mv /bin/vi /bin/vi.bak
# ln -s /usr/bin/vim /bin/vi
進入vi的命令:
vi 直接進入編輯並創建新文件
vi filename 編輯文件(不存在則創建文件),並將光標置於第一行首
vi +n filename 打開文件,並將光標置於第n行首
vi + filename 打開文件,並將光標置於最後一行首
vi +/pattern filename 打開文件,並將光標置於第一個與pattern匹配的串處
vi -r filename 在上次正用vi編輯時發生系統崩潰,恢復文件
vi file1....filen 打開多個文件,依次進行編輯
vi -o aaa bbb 水平窗口打開aaa,bbb兩個文件
vi -O aaa bbb 垂直窗口打開aaa,bbb兩個文件(Ctrl+W兩次可在多個文件間切換)
多文本編輯的按鍵:
:n 編輯下一個文件
:N 編輯上一個文件
:files 列出目前這個vi的打開的所有文件
多窗口情況下的按鍵功能:
:sp [filename] 打開一個新窗口,如果有加filename,表示在新窗口打開一個新文件,否則表示兩個窗口爲同一個文件內容(同步顯示)
[ctrl]+w+j
[ctrl]+w+↓ 按鍵的按法是:先按下[ctrl]不放,再按下w後放開所有的按鍵,然後再按下j(或向下箭頭鍵),則光標可移動到下方的窗口
[ctrl]+w+k
[ctrl]+w+↑ 同上,不過光標移動到上面的窗口
[ctrl]+w+q 其實就是:q結束離開。例如,想要結束下方的窗口,那麼利用[ctrl]+w+↓移動到下方窗口後,按下:q即可離開,也可以按下[ctrl]+w+q
塊選擇的按鍵意義:
v 字符選擇,將光標經過的地方反白選擇
V 行選擇,將光標經過的行反白選擇
Ctrl + v 塊選擇,可以用長方形的方式選擇數據
y 將反白的地方複製起來
d 將反白的地方刪除
恢復命令:
u 恢復最後一個指令之前的結果
. 繼續最後一個指令的執行結果
ctrl+r 撤銷恢復
U 恢復光標該行之所有改變
移動光標命令:
h 光標左移一個字符
l 光標右移一個字符
space 光標右移一個字符
Backspace 光標左移一個字符
k或Ctrl+p 光標上移一行
j或Ctrl+n 光標下移一行
Enter 光標下移一行
w或W 光標右移一個字至字首
b或B 光標左移一個字至字首
e或E 光標右移一個字至字尾
) 光標移至句尾
( 光標移至句首
} 光標移至段落開頭
{ 光標移至段落結尾
nG 光標移至第n行首
n+ 光標下移n行
n- 光標上移n行
n$ 光標移至第n行尾
H 光標移至屏幕頂行
M 光標移至屏幕中間行
L 光標移至屏幕最後行
0 (注意是數字零)光標移至當前行首
$ 光標移至當前行尾
翻屏命令:
Ctrl+u 向文件首翻半屏
Ctrl+d 向文件尾翻半屏
Ctrl+f 向文件尾翻一屏
Ctrl+b 向文件首翻一屏
nz 將第n行滾至屏幕頂部,不指定n時將當前行滾至屏幕頂部
插入文本、複製與粘貼:
i 在光標前插入
I 在當前行首插入
a 在光標後插入
A 在當前行尾插入
o 在當前行之下新開一行
O 在當前行之上新開一行
r 替換當前字符
R 替換當前字符及其後的字符,直至按ESC鍵
s 從當前光標位置處開始,以輸入的文本替代指定數目的字符
S 刪除指定數目的行,並以所輸入文本代替之
ncw或nCW 修改指定數目的字
nCC 修改指定數目的行
yy p 複製當前行,並粘貼到下一行
nyy n爲數字。複製光標所在的向下n行,例如20yy,則是複製20行
y1G 複製光標所在行到第一行的所有數據
yG 複製光標所在行到最後一行的所有數據
y0 複製光標所在的那個字符到該行行首的所有數據
y$ 複製光標所在的那個字符到該行行尾的所有數據
shift + i 在該行之首插入字符
shift + a 在該行末尾輸入字符
shift + r 改寫自光標位置及後面的所有內容
shift +o 在光標之上新增一行輸入字符
刪除命令:
ndw或ndW 刪除光標處開始及其後的n-1個字
d0 刪至行首(爲數字0)
d$ 刪至行尾
shift + d 剪切至行尾
dd 刪除一行
ndd 刪除自光標開始的n行
s 刪除光標所在之字符,並進入輸入模式直到《ESC》
S 刪除光標所在之該行資料,並進入輸入模式直到《ESC》
x或X 刪除一個字符,x刪除光標後的,而X刪除光標前的
nx n爲數字,連續向後刪除n個字符。如,要連續刪除10個字符,則:“10x”
Ctrl+u 刪除輸入方式下所輸入的文本
搜索及替換命令:
/pattern 從光標開始處向文件尾搜索pattern
?pattern 從光標開始處向文件首搜索pattern
n 在同一方向重複上一次搜索命令
N 在反方向上重複上一次搜索命令
:s/p1/p2/ 替換當前行第一個p1爲p2
:s/p1/p2/g 將當前行中所有p1均用p2替代
:n1,n2s/p1/p2/g 將第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g 將文件中所有p1均用p2替換
: 1,$s/old/new/g 將文件中所有的『old』改成『new』
: 1,$s/old/new/gc 將文件中所有的『old』改成『new』,並在改前提示用戶確認
: 10,20s/^/ / 將第10行至第20行資料的最前面插入5個空格
: %s/^m//g 刪除文件中所有的^M符號
選項設置:
all 列出所有選項設置情況
term 設置終端類型
ignorance 在搜索中忽略大小寫
list 顯示製表位(Ctrl+I)和行尾標誌($)
number 顯示行號
report 顯示由面向行的命令修改過的數目
terse 顯示簡短的警告信息
warn 在轉到別的文件時若沒保存當前文件則顯示NO write信息
nomagic 允許在搜索模式中,使用前面不帶“\”的特殊字符
nowrapscan 禁止vi在搜索到達文件兩端時,又從另一端開始
mesg 允許vi顯示其他用戶用write寫到自己終端上的信息
最後行方式命令:
:n1,n2 co n3 將n1行到n2行之間的內容拷貝到第n3行下
:n1,n2 m n3 將n1行到n2行之間的內容移至到第n3行下
:n1,n2 d 將n1行到n2行之間的內容刪除
:e filename 打開文件filename進行編輯
:e! dd 強制關閉當前文件(不保存)打開新文件dd
: e! 放棄修改重新編輯
:q! 不保存文件並退出vi
:r fff 在當前位置讀入fff文件
:set nonu 不顯示行號
:set nu 顯示行號
:w 保存輸入的內容到當前文件
:w eee 另存爲eee文件
:wq 保存並退出
:x 保存當前文件並退出
:n1,n2 w eee 將文件中n1行至n2行的內容保存成eee文件
:!command 暫時離開vi到命令行模式下執行command的顯示結果。例如,“:! ls /home”即可在vi當中查看/home下面以ls輸出的文件信息
寄存器操作:
"?nyy 將當前行及其下n行的內容保存到寄存器?中,其中?爲一個字母,n爲一個數字
"?nyw 將當前行及其下n個字保存到寄存器?中,其中?爲一個字母,n爲一個數字
"?nyl 將當前行及其下n個字符保存到寄存器?中,其中?爲一個字母,n爲一個數字
"?p 取出寄存器?中的內容並將其放到光標位置處。這裏?可以是一個字母,也可以是一個數字
ndd 將當前行及其下共n行文本刪除,並將所刪內容放到1號刪除寄存器中
vim操作環境(不建議修改/etc/vimrc文件;建議手動修改~/.vimrc文件)
vim常用指令示意圖
八、shell編程
# grep $LOGNAME /etc/passwd //顯示當前登錄用戶使用的shell
# sh //啓動bsh(爲Bourne Shell的簡稱---伯恩shell)
# bash //啓動bash(爲Bourne Again Shell的簡稱)
# csh //啓動C Shell
# type [-tpa] name //bash shell的內置命令。
type:不加任何參數時,type會顯示出name是外部命令還是bash內置命令
-t :當加入-t參數時,type會將name以下面這些字眼顯示出它的意義:
file:表示爲外部命令
alias:表示該命令爲命令別名所設置的名稱;
builtin:表示該命令爲bash內置的命令功能。
-p :如果後面接的name爲外部命令時,纔會顯示完整文件名;
-a :會由PATH變量定義的路徑中,將所有含name的命令都列出來,包含alias
# cp /var/spool/mail/root /etc/crontab \
> /etc/fstab /root //將三個文件複製到root目錄下(如果命令串太長的話,可以用兩行來輸出)。“\[Enter]”爲轉義符,“>”爲系統自動出現的,不需要輸入。
# source ~/.bashrc //將主文件夾的~/.bashrc的設置讀入目前的bash環境中
# . ~/.bashrc //將主文件夾的~/.bashrc的設置讀入目前的bash環境中
# ll -d /etc/cron* //找出/etc/下面以cron爲開頭的文件名
# ll -d /etc/????? //找出/etc/下面文件名剛好是五個字母的文件名
# ll -d /etc/*[0-9]* //找出/etc/下面文件名含有數字的文件名
# ll -d /etc/[^a-z]* //找出/etc/下面文件名開頭非爲小寫字母的文件名
# cp -a /etc/[^a-z]* /tmp //將上例找到的文件複製到 /tmp中
# last | cut -d ' ' -f1 | sort //將輸出的數據僅取賬號,並加以排序
# last | cut -d ' ' -f1 | sort | uniq //將輸出的數據僅取賬號,排序後僅取出一位
# last | cut -d ' ' -f1 | sort | uniq -c //將輸出的數據僅取賬號,排序後僅取出一位並顯示每個賬號登錄的總次數
# last | grep [a-zA-Z] | grep -v ‘wtmp’| wc -l //顯示登錄系統的總人數
# last | tee last.list | cut -d “ “ -f1 //將last的輸出存一份到last.list文件中
# ls -l /home | tee ~/homefile | more //將ls的數據存一份到~/homefile,同時屏幕也有輸出信息
# ls -l / | tee -a ~/homefile | more //加上-a參數則能將信息累加
# cp /etc/passwd /root/passwd && unix2dos /root/passwd
# file /etc/passwd /root/passwd
# cat /root/passwd | tr -d ‘\r’ > /root/passwd.linux
# ll /etc/passwd /root/passwd* //將/etc/passwd轉存成dos斷行到/root/passwd中,再將^M 符號刪除。\r指的是dos的斷行字符 ^M
# cat -A /etc/man.config
# cat /etc/man.config | col -x | cat -A | more //利用cat -A 顯示所有特殊按鍵,最後以 col將[tab]轉成空白。上面看到的^I符號就是tab,如此一來,[tab]按鍵會被替換成爲空格鍵,輸出就美觀多了
# man col > /root/col.man
# vi /root/col.man
# man col | col -b > /root/col.man //將col的man page轉存成爲/root/col.man的純文本文件
#############################################
通配符與特殊符號
符號 意義
* 代表『 0 個到無窮多個』任意字符
? 代表『一定有一個』任意字符
[ ] 同樣代表『一定有一個在括號內』的字符(非任意字符)。例如 [abcd] 代表『一定有一個字符, 可能是 a, b, c, d 這四個任何一個』
[ - ] 若有減號在中括號內時,代表『在編碼順序內的所有字符』。例如 [0-9] 代表 0 到 9 之間的所有數字,因爲數字的語系編碼是連續的!
[^ ] 若中括號內的第一個字符爲指數符號 (^) ,那表示『反向選擇』,例如 [^abc] 代表 一定有一個字符,只要是非 a, b, c 的其他字符就接受的意思。
bash 環境中的特殊符號
符號 內容
# 批註符號:這個最常被使用在 script 當中,視爲說明!在後的數據均不運行
\ 跳脫符號:將『特殊字符或通配符』還原成一般字符
| 管線 (pipe):分隔兩個管線命令的界定(後兩節介紹);
; 連續命令下達分隔符:連續性命令的界定 (注意!與管線命令並不相同)
~ 用戶的家目錄
$ 取用變量前導符:亦即是變量之前需要加的變量取代值
& 工作控制 (job control):將命令變成背景下工作
! 邏輯運算意義上的『非』 not 的意思!
/ 目錄符號:路徑分隔的符號
>, >> 數據流重導向:輸出導向,分別是『取代』與『累加』
<, << 數據流重導向:輸入導向
' ' 單引號,不具有變量置換的功能
" " 具有變量置換的功能!
` ` 兩個『 ` 』中間爲可以先運行的命令,亦可使用 $( )
( ) 在中間爲子 shell 的起始與結束
{ } 在中間爲命令區塊的組合!
#############################################
# dmesg | grep -n -color=auto ‘eth’ //用dmesg列出內核信息,再以grep找出內含eth的那些行,並顯色、加上行號
# dmesg | grep -n -A3 -B2 -color=auto ‘eth’ //承上,在關鍵字所在行的前兩行與後三行也一起找出來顯示
#############################################
基礎正則表達式字符 (characters)
^word
意義:待查找的字符串(word)在行首
範例:查找行首爲 # 開始的那一行,並列出行號
grep -n '^#' regular_express.txt
word$
意義:待查找的字符串(word)在行尾
範例:將行尾爲 ! 的那一行列印出來,並列出行號
grep -n '!$' regular_express.txt
.
意義:代表一定有一個任意字符的字符
範例:查找的字符串可以是 (eve) (eae) (eee) (e e), 但不能僅有 (ee),亦即 e 與 e 中間“一定”僅有一個字符,而空格符也是字符
grep -n 'e.e' regular_express.txt
\
意義:轉義字符,將特殊符號的特殊意義去除
範例:查找含有單引號 ' 的那一行
grep -n \' regular_express.txt
*
意義:重複零個到無窮多個的前一個 RE(regular)字符
範例:找出含有 (es) (ess) (esss) 等等的字符串,注意,因爲 * 可以是 0 個,所以 es 也是符合帶查找字符串。另外,因爲 * 爲重複“前一個 RE 字符”的符號, 因此,在 * 之前必須要緊接著一個 RE 字符喔。例如任意字符則爲 “.*”
grep -n 'ess*' regular_express.txt
[list]
意義:從字符集合的 RE 字符裏面找出想要選取的字符
範例:查找含有 (gl) 或 (gd) 的那一行,需要特別留意的是,在 [] 當中代表一個待查找的字符, 例如“ a[afl]y ”代表查找的字符串可以是 aay, afy, aly 即 [afl] 代表 a 或 f 或 l 的意思
grep -n 'g[ld]' regular_express.txt
[n1-n2]
意義:從字符集合的 RE 字符裏面找出想要選取的字符範圍
範例:查找含有任意數字的那一行。需特別留意,在字符集合 [] 中的減號 - 是有特殊意義的,他代表兩個字符之間的所有連續字符。但這個連續與否與 ASCII 編碼有關,因此,你的編碼需要配置正確(在 bash 當中,需要確定 LANG 與 LANGUAGE 的變量是否正確)。例如所有大寫字符則爲 [A-Z]
grep -n '[A-Z]' regular_express.txt
[^list]
意義:從字符集合的 RE 字符裏面找出不要的字符串或範圍
範例:查找的字符串可以是 (oog) (ood) 但不能是 (oot) ,那個 ^ 在 [] 內時,代表的意義是“反向選擇”的意思。例如,我不要大寫字符,則爲 [^A-Z]。但是,需要特別注意的是,如果以 grep -n [^A-Z] regular_express.txt 來查找,卻發現該文件內的所有行都被列出,爲什麼?因爲這個 [^A-Z] 是“非大寫字符”的意思, 因爲每一行均有非大寫字符,例如第一行的 "Open Source" 就有 p,e,n,o等小寫字符
grep -n 'oo[^t]' regular_express.txt
\{n,m\}
意義:連續 n 到 m 個的前一個 RE 字符,若爲 \{n\} 則是連續 n 個的前一個 RE 字符,若是 \{n,\} 則是連續 n 個以上的前一個 RE 字符
範例:在 g 與 g 之間有2個到3個的o存在的字符串,亦即 (goog)(gooog)
grep -n 'go\{2,3\}g' regular_express.txt
======================================
# test -e /pa/lamprj && echo "exist" || echo "Not exist" //檢查/pa/lamprj目錄是否存在
======================================
文件測試的標誌與意義:
關於某個文件名的“文件類型”判斷,如 test -e filename 表示存在否
-e 該文件名是否存在?(常用)
-f 該文件名是否存在且爲文件(file)(常用)
-d 該文件名是否存在且爲目錄(directory)(常用)
-b 該文件名是否存在且爲一個 block device 設備
-c 該文件名是否存在且爲一個 character device 設備
-S 該文件名是否存在且爲一個 Socket 文件
-p 該文件名是否存在且爲一個 FIFO (pipe) 文件
-L 該文件名是否存在且爲一個連結文件
關於文件的權限檢測,如 test -r filename 表示可讀否 (但 root 權限常有例外)
-r 檢測該文件名是否存在且具有“可讀”的權限
-w 檢測該文件名是否存在且具有“可寫”的權限
-x 檢測該文件名是否存在且具有“可執行”的權限
-u 檢測該文件名是否存在且具有“SUID”的屬性
-g 檢測該文件名是否存在且具有“SGID”的屬性
-k 檢測該文件名是否存在且具有“Sticky bit”的屬性
-s 檢測該文件名是否存在且爲“非空白文件”
兩個文件之間的比較,如:test file1 -nt file2
-nt (newer than)判斷 file1 是否比 file2 新
-ot (older than)判斷 file1 是否比 file2 舊
-ef 判斷 file1 與 file2 是否爲同一文件,可用在判斷 hard link 的判定上。 主要意義在判定兩個文件是否均指向同一個 inode
關於兩個整數之間的判定,例如 test n1 -eq n2
-eq 兩數值相等 (equal)
-ne 兩數值不等 (not equal)
-gt n1 大於 n2 (greater than)
-lt n1 小於 n2 (less than)
-ge n1 大於等於 n2 (greater than or equal)
-le n1 小於等於 n2 (less than or equal)
判定字串的數據
test -z string 判定字串是否爲 0,若 string 爲空字串,則爲 true
test -n string 判定字串是否非爲0,若 string 爲空字串,則爲 false
注:-n 亦可省略
test str1 = str2 判定 str1 是否等於 str2 ,若相等,則回傳 true
test str1 != str2 判定 str1 是否不等於 str2 ,若相等,則回傳 false
多重條件判定,例如:test -r filename -a -x filename
-a 兩個條件同時成立!例如 test -r file -a -x file,則 file 同時具有 r 與 x 權限時,纔回傳 true
-o 任何一個條件成立!例如 test -r file -o -x file,則 file 具有 r 或 x 權限時,就可回傳 true
! 反相狀態,如 test ! -x file ,當 file 不具有 x 時,回傳 true
=======
常用shell命令組合
# kudzu --probe --class=network //kudzu查看網卡型號
# ps -e -o "%C : %p : %z : %a"|sort -k5 -nr //查看進程,按內存從大到小排列
# ps -e -o "%C : %p : %z : %a"|sort -nr //按cpu利用率從大到小排列
# ls /etc/rc3.d/S* |cut -c 15- //顯示運行3級別開啓的服務(從中瞭解到cut的用途,截取數據)
# ifconfig eth0 |grep "inet addr:" |awk '{print $2}'|cut -c 6- //顯示IP地址
# free -m |grep "Mem" | awk '{print $2}' //顯示內存的大小
# cat /proc/cpuinfo |grep -c processor //顯示CPU的數量
# mpstat 1 1 //顯示CPU負載
# du -cks * | sort -rn | head -n 10 //顯存當前路徑下從大到小排序的前10個文件或目錄大小
# iostat -x 1 2 //磁盤I/O負載
# sar -n DEV //網絡負載
# ps aux | wc -l //進程總數