第一篇:linux 命令總結
linux 命令總結
1、永久更改ip ifconfig eth0 新ip 然后編輯/etc/sysconfig/network-scripts/ifcfg-eth0,修改ip
2、從Linux上遠程顯示Windows桌面 安裝rdesktop包
3、手動添加默認網關 以root用戶,執行: route add default gw 網關的IP 想更改網關
?
vi /etc/sysconfig/network-scripts/ifcfg-eth0 更改GATEWAY
?
/etc/init.d/network restart
4、查出22端口現在運行什么程序 lsof-i :22
5、查看本機的IP,gateway, dns IP: 以root用戶登錄,執行ifconfig。其中eth0是第一塊網卡,lo是默認的設備
Gateway: 以root用戶登錄,執行netstat-rn,以0.0.0.0開頭的一行的Gateway即為默認網關
也可以查看/etc/sysconfig/network文件,里面有指定的地址!
DNS: more /etc/reslov.conf,內容指定如下: nameserver 202.206.32.1 nameserver 202.206.32.1
6、RH8.0命令行下輕松改變ping 的TTL值 #sysctl-w net.ipv4.ip_default_ttl=N(N=0~255),若N>255,則ttl=0
7、RH8.0命令行下輕松改變系統配置默認值
編輯/etc/sysctl.conf, 例如,將 net.ipv4.ip_forward = 0 變為 net.ipv4.ip_forward = 1 重啟后生效,用sysctl-a查看可知
8、mount局域網上其他windows機器共享出的目錄
mount-t smbfs-o username=guest,password=guest //machine/path /mnt/cdrom
9、允許|禁止root通過SSH登陸
修改sshd_config:PermitRootLogin no|yes
10、讓root直接telnet登陸
編輯/etc/pam.d/login,去掉 auth required /lib/security/pam_securetty.so 這句話
11、改變telnet的端口
/etc/services這個文件里可修改想要的端口號.重啟守護進程
12、終端模式有問題 export TERM=vt100
13、模仿超級終端,LINUX里什么程序連接路由器和交換機(alstone)minicom
14、ssh上來能不能不自動斷線
那是timetou的設置,修改TMOUT變量值
15、用什么工具做入侵檢測
snort
16、Linux下檢測程序內存泄漏的工具 cchecker或是efence庫都可以
17、linux下如何監視所有通過本機網卡的數據 tcpdump iptraf
18、為什么root執行好多命令都說command not found 一定是telnet上來的,然后su成root的,修改su命令格式,應該是su更換你登入時所用的shell 語法
chsh [-s shell ] [-l ] [-u ] [-v ] [ username ] 描述
chsh 用來更換你登入時所用的shell。在命令列沒指定shell。chsh 會提示一個給你。
有效的shell
chsh 可用指定路徑全名的方式來指定任何一個可執行的檔案。然而,如果此 shell并沒紀錄在 /etc/shells 檔上,則chsh會提出警告訊息。選項
-s,--shell 變更你的登入shell.-l,--list-shells
列出紀錄在 /etc/shells 的shell。
-u,--help 使用短訊。
-v,--version 版本資訊
相關文件
login(1), passwd(5), shells(5)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 114 在linux下一些常用的關機/重啟命令
有shutdown、halt、reboot、及init,它們都可以達到重啟系統的目的,但每個命令的內部工作過程是不同的。
1.shutdown shutdown命令安全地將系統關機。有些用戶會使用直接斷掉電源的方式來關閉linux,這是十分危險的。因為linux與windows不同,其后臺運行著許多進程,所以強制關機可能會導致進程的數據丟失﹐使系統處于不穩定的狀態﹐甚至在有的系統中會損壞硬件設備。
而在系統關機前使用shutdown命令﹐系統管理員會通知所有登錄的用戶系統將要關閉。并且login指令會被凍結﹐即新的用戶不能再登錄。直接關機或者延遲一定的時間才關機都是可能的﹐還可能重啟。這是由所有進程〔process〕都會收到系統所送達的信號〔signal〕決定的。這讓像vi之類的程序有時間儲存目前正在編輯的文檔﹐而像處理郵件〔mail〕和新聞〔news〕的程序則可以正常地離開等等。shutdown執行它的工作是送信號〔signal〕給init程序﹐要求它改變runlevel。Runlevel 0被用來停機〔halt〕﹐runlevel 6是用來重新激活〔reboot〕系統﹐而runlevel 1則是被用來讓系統進入管理工作可以進行的狀態﹔這是預設的﹐假定沒有-h也沒有-r參數給shutdown。要想了解在停機〔halt〕或者重新開機〔reboot〕過程中做了哪些動作﹐你可以在這個文件/etc/inittab里看到這些runlevels相關的資料。
shutdown 參數說明:
[-t] 在改變到其它runlevel之前﹐告訴init多久以后關機。
[-r] 重啟計算器。
[-k] 并不真正關機﹐只是送警告信號給每位登錄者〔login〕。
[-h] 關機后關閉電源〔halt〕。
[-n] 不用init﹐而是自己來關機。不鼓勵使用這個選項﹐而且該選項所產生的后果往往不總是你所預期得到的。
[-c] cancel current process取消目前正在執行的關機程序。所以這個選項當然沒有時間參數﹐但是可以輸入一個用來解釋的訊息﹐而這信息將會送到每位使用者。
[-f] 在重啟計算器〔reboot〕時忽略fsck。[-F] 在重啟計算器〔reboot〕時強迫fsck。
[-time] 設定關機〔shutdown〕前的時間。
2.halt----最簡單的關機命令
其實halt就是調用shutdown-h。halt執行時﹐殺死應用進程﹐執行sync系統調用﹐文件系統寫操作完成后就會停止內核。
參數說明:
[-n] 防止sync系統調用﹐它用在用fsck修補根分區之后﹐以阻止內核用老版本的超級塊〔superblock〕覆蓋修補過的超級塊。
[-w] 并不是真正的重啟或關機﹐只是寫wtmp〔/var/log/wtmp〕紀錄。
[-d] 不寫wtmp紀錄〔已包含在選項[-n]中〕。
[-f] 沒有調用shutdown而強制關機或重啟。
[-i] 關機〔或重啟〕前﹐關掉所有的網絡接口。
[-p] 該選項為缺省選項。就是關機時調用poweroff。
3.reboot reboot的工作過程差不多跟halt一樣﹐不過它是引發主機重啟﹐而halt是關機。它的參數與halt相差不多。
4.init init是所有進程的祖先﹐它的進程號始終為1﹐所以發送TERM信號給init會終止所有的用戶進程﹑守護進程等。shutdown 就是使用這種機制。init定義了8個運行級別(runlevel),init 0為關機﹐init 1為重啟。關于init可以長篇大論﹐這里就不再敘述。另外還有telinit命令可以改變init的運行級別﹐比如﹐telinit-iS可使系統進入單用戶模式﹐并且得不到使用shutdown時的信息和等待時間。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 115 Linux服務器的一些基本應用
現就以如下網絡架構為例,來說一下linux服務器的配置。在正式配置之前先說一下這個服務器所要實現的功能: 1.數據共享 2.打印共享 3.模擬NT域 4.ADSL共享 5.內部DNS服務 6.DHCP服務 7.FTP服務 8.www.tmdps.cn/distrib/sourc...pd-1.2.5.tar.gz 2]安裝: tar zxvf proftpd-1.2.5.tar.gz cd proftpd-1.2.5./configure –prefix=/usr/local/proftpd //指定安裝在/usr/local/proftpd目錄下 make make install cp contrib/dist/rpm/proftpd.init.d /etc/rc.d/init.d/proftpd chmod 700 /etc/rc.d/init.d/proftpd chkconfig –level 3 proftpd on //設置為系統自啟動服務
cp /usr/local/proftpd/sbin/proftpd /usr/sbin //將proftpd拷至/usr/sbin目錄下,讓系
統能自動搜索到,也免得再去加一個搜索路徑 3]配置/usr/local/proftpd/etc/proftpd.conf文件: vi /usr/local/proftpd.conf ServerName “Xchen FTP server” //服務器登錄提示 ServerType standalone DefaultServer on Port 21 Umask 022 MaxInstances 30 User nobody Group nobody //原來為nogroup,請改成nobody RequireValidShell off //手動添加此名,重要
//限定test組用戶只能訪問自己的home目錄,而不能向上瀏覽 DefaultRoot ~ test //限定test組用戶只能訪問自己的/home/ftp目錄,不能向上瀏覽 DefaultRoot ~/ftp test //限定music組用戶只能訪問/home/music目錄,不能向上瀏覽 DefaultRoot /home/ftp music //除music組中bb用戶外都能訪問/home/music目錄,不能向上瀏覽 DefaultRoot /home/ftp music,!bb //上面組需要自己建立:groupadd test,gpasswd –a username test ServerIdent off //登錄時不顯示版本信息 AllowOverwrite on // /home/ftp為匿名用戶登錄目錄 User ftp Group ftp UserAlias anonymous ftp MaxClients 10 DisplayLogin welcome.msg DisplayFirstChdir.message DenyAll 4]啟動服務:/etc/rc.d/init.d/proftpd start 5]測試,在客戶端用FTP軟件或命令行FTP程序進行訪問ftp.cx.com。6]proftpd還有很多高級應用,請參考相關資料,這里就不多贅述。
十、www.tmdps.cn提供的動態服務的實現。
1]登錄www.tmdps.cn網站,注冊一個用戶,并申請一個動態域名xxxx.3322.org。2]下載linux客戶端軟件:
http://www.tmdps.cn/dyndnspage/ez-i...-linux-i386.tgz 3]安裝軟件:
tar zxvf ez-ipupdate-3.0.10-linux-i386.tgz mv ez-ipupdate-3.0.10-linux-i386 /usr/local/ezip 4]編輯/usr/local/ezip/qdns.conf文件:
vi /usr/local/qdns.conf service-type=qdns user=username:password //用戶名及密碼,用冒號隔開 host=xxxxx.3322.org //你申請的域名 interface=ppp0 //接口為ppp0 max-interval=2073600 cache-file=/tmp/ez-ipupdate.cache 5]將當前ip現新到我們申請的域名: cd /usr/local/ezip ez-ipupdate –c qdns.conf 系統會提示數據更新成功,好,我們來ping一下xxxx.3322.org,是ppp0的IP,再用http://xxx.3322.org試一下,成功!!。
6]問題又來了,難道我們每次啟動ADSL都要用手動更新一次嗎,你可能會想到用crontab讓它每隔幾分鐘更新一次,不過為了ip更新而啟用crond服務似乎有點小題大做,我的方法,修改/usr/sbin/adsl-start腳本:
vi /usr/sbin/adsl-start 找到倒數25行‖tty –s && $ECHO ― Connected!―,在其下增加一行: /usr/local/ezip/ez-ipupdate –c /usr/local/ezip/qdns.conf 存盤退出,我們讓ADSL拔號完成以后自動更新!7]測試一下: adsl-start.Connected!ez-ipupdate Version 3.0.10 Copyright(C)1999-2000 Angus Mackay.connected to members.3322.org(202.X.X.X)on port 80.request successful OK,數據更新成功。
好,現在你隨時隨地都可以用xxxx.3322.org訪問你的服務了,不錯吧。
十二、openssh的設置
如果你在家里或者其它地方,怎樣控制你的服務器,你可能會想到用telnet,本來是可以的,但是由于telnet用的是明碼傳輸,容易給那些不懷好意者可乘之機,所以我們用openssh來代替telnet。
1]卸載原來的2.9x版,2.9x版有bug,不安全: rpm –e openssh 2]最新軟件包下載:
ftp://ftp.openbsd.org/pub/OpenBSD/O...sh-3.4p1.tar.gz 3]安裝軟件:
tar zxvf openssh-3.4p1.tar.gz cd openssh-3.41./configure--prefix=/usr/local/ssh--sysconfdir=/etc/ssh--with-tcp-wrappers--with-ipv4-default--with-md5-passwords make
make install
注:安裝完成以后,會自動生成主機密鑰,還會提示需要sshd用戶帳號,可用useradd加一個sshd用戶。
install /contrib/redhat/sshd.pam /etc/pam.d/sshd cp contrib/redhat/sshd.init /etc/rc.d/init.d/sshd chkconfig--level 3 sshd on ;配置成系統服務 4]配置openssh之/etc/ssh/ssh_config文件 vi /etc/ssh/ssh_config Host * ForwardAgent no ForwardX11 no RhostsAuthentication no RhostsRSAAuthentication no RSAAuthentication yes
PasswordAuthentication yes BatchMode no CheckHostIP yes
StrictHostKeyChecking ask IdentityFile ~/.ssh/identity Port 22 Cipher 3des
EscapeChar ~
5]配置openssh之/etc/ssh/sshd_config文件 vi /etc/ssh/sshd_config Port 22 ListenAddress 0.0.0.0 ListenAddress :: HostKey /etc/ssh/ssh_host_key HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key KeyRegenerationInterval 3600 ServerKeyBits 768
SyslogFacility AUTH LogLevel INFO
LoginGraceTime 600
#PermitRootLogin yes #還是不要讓root直接登錄為妙!StrictModes yes RSAAuthentication yes PubkeyAuthentication yes RhostsAuthentication no IgnoreRhosts yes RhostsRSAAuthentication no HostbasedAuthentication no IgnoreUserKnownHosts no PasswordAuthentication yes PermitEmptyPasswords no Subsystem sftp /usr/local/ssh/libexec/sftp-server 6]配置用戶的加密密鑰
useradd test passwd test su test ssh-keygen-d 出現提示請回車并輸入passwd,再次輸入passwd。
注:這個密碼是系統加密運算時用到的,登錄時還用原來密碼。
7]啟動服務
/etc/rc.d/init.d/sshd start 8]在客戶端用test帳號進行測試。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%55 116 linux幾條命令的基本用法
提示符為#表示需要root權限,$表示一般用戶權限即可 1.linux下面命令行查找文件的兩個方法
1)find $ find 路徑-name 待查找文件-print-xdev參數把查詢操作限制在當前的文件系統之中: $ find /mnt/dos-name *.sys-print-xdev 2)locate + updatedb: # updatedb $ locate 待查找文件
2.使用whatis和apropos命令獲取命令簡介 # makewhatis //更新whatis數據庫 $ whatis w //查看命令w的功能
$ apropos search //查找有search功能的有哪些命令
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 117 在RedHat Linux環境中實現雙網卡綁定
用于雙網卡在同一網段內的情況,可以實現流量均衡或者備份 1.#cd /etc/sysconfig/network-scripts # cp ifcfg-eth0 ifcfg-bond0--2 #vi ifcfg-bond0 將第一行改成 DEVICE=bond0--3 # vi /etc/modules.conf 加入兩行
alias bond0 bonding
options bond0 miimon=100 mode=1
--4 # vi /etc/rc.d/rc.local 加入兩行
ifenslave bond0 eth0 eth1 route add-net 192.168.0.0 netmask 255.255.255.0 bond0--5 reboot 重啟會看見:
................Bringing up interface bond0 OK Bringing up interface eth0 OK Bringing up interface bond1 OK--6.檢查: #netstat-r 192.168.0.0 255.255.255.0 0 40 0 0 bond0 192.168.0.0 255.255.255.0 0 40 0 0 eth0 192.168.0.0 255.255.255.0 0 40 0 0 eth1 這時候看看你的網卡后面的燈, 他們閃的頻率是一樣的..當#ifdown eth0 時, 轉換有5-6秒的延時.--注意:
如果網絡不通需要從啟bind # ifdown bind0
#ifup bind0
網卡綁定用在vncserver 或scp中就不靈了 118 route命令使用方法
route命令主要用于手動配置靜態路由表 例:增加一條通過網關到達令一子網的路由
#route add net remote_net_ip gateway_ip 1
其中add代表要增加路由,net表示路由到達的是一個網絡而不是一臺主機,1代表遠端網絡需通過網關才能到達
(直接通過網絡接口相連時,該參數用0)命令格式:
#route add-net remote_net_ip gateway_ip-netmask netmask #route add-host host_ip local_interface_ip-interface
使用“delete”,“change”命令參數可以對路由表中的路由信息進行刪除和修改
使用“netstat-rn”命令查看當前的路由信息
過修改文件/etc/defaultrouter可以設置一些默認路由 $$$$$$$$$$$$$$$$$$$$$$$$$$$$ 122 find命令詳細用法 名稱 : find 用法 : find
使用說明 :
將文件系統內符合 expression 的文件列出來。你可以指要文件的名稱、類別、時間、大小、權限等不同資訊的組合,只有完全相符的才會被列出來。
find 根據下列規則判斷 path 和 expression,在命令列上第一個] 范圍 ;如[A-Z]即A,B,C一直到Z都符合要求.所有的單個字符
* 所有字符,長度可以為0
3、舉例
# ps-ef | grep in.telnetd
root 19955 181 0 13:43:53 ? 0:00 in.telnetd # more size.txt size文件的內容 b124230 b034325 a081016 m7187998 m7282064 a022021 a061048 m9324822 b103303 a013386 b044525 m8987131 B081016 M45678
B103303 BADc2345 # more size.txt | grep '[a-b]' 范圍 ;如[A-Z]即A,B,C一直到Z都符合要求 b124230 b034325 a081016 a022021 a061048 b103303 a013386 b044525 # more size.txt | grep '[a-b]'* b124230 b034325 a081016 m7187998 m7282064 a022021 a061048 m9324822 b103303 a013386 b044525 m8987131 B081016 M45678
B103303 BADc2345 # more size.txt | grep '' 單個字符;如[A] 即A符合要求 b124230 b034325 b103303 b044525 # more size.txt | grep '[bB]' b124230 b034325 b103303 b044525 B081016 B103303 BADc2345 # grep 'root' /etc/group root::0:root bin::2:root,bin,daemon sys::3:root,bin,sys,adm adm::4:root,adm,daemon uucp::5:root,uucp mail::6:root tty::7:root,tty,adm lp::8:root,lp,adm nuucp::9:root,nuucp daemon::12:root,daemon
# grep '^root' /etc/group 匹配正則表達式的開始行 root::0:root # grep 'uucp' /etc/group uucp::5:root,uucp nuucp::9:root,nuucp # grep '/tmp/sharetab.$$ [ “x$fstype”!= xnfs ] && echo “$patht$rest$fstypet$optst$desc” >>/tmp/sharetab.$$
/usr/bin/touch-r /etc/dfs/sharetab /tmp/sharetab.$$ /usr/bin/mv-f /tmp/sharetab.$$ /etc/dfs/sharetab if [-f /etc/dfs/dfstab ] && /usr/bin/egrep-v '^[ ]*(#|$)' if [ $startnfsd-eq 0-a-f /etc/rmmount.conf ] && if [ $startnfsd-ne 0 ];then elif [!-n “$_INIT_RUN_LEVEL” ];then while [ $wtime-gt 0 ];do wtime=`expr $wtime-1` if [ $wtime-eq 0 ];then
echo “Usage: $0 { start | stop }” # more size.txt the test file their are files The end
# grep 'the' size.txt the test file their are files # grep '' size.txt the test file
# grep '' size.txt the test file
# grep '' size.txt the test file The end 119 Emacs 安裝 1.獲得 Emacs
http://ftp.gnu.org/pub/gnu/emacs/ http://savannah.gnu.org/projects/emacs/ ftp://soft.eeatech.org:11021/incoming/other/ 2.安裝方法
PATH=%emacs%/bin 3.基本配置
Emacs 的配置文件.emacs or _emacs HOME=%path% 120 UNIX awk使用手冊 什么是awk?
你可能對UNIX比較熟悉,但你可能對awk很陌生,這一點也不奇怪,的確,與其優秀的功能相比,awk還遠沒達到它應有的知名度。awk是什么?與其它大多數UNIX命令不同的是,從名字上看,我們不可能知道awk的功能:它既不是具有獨立意義的英文單詞,也不是幾個相關單詞的縮寫。事實上,awk是三個人名的縮寫,他們是:Aho、(Peter)Weinberg和(Brain)Kernighan。正是這三個人創造了awk---一個優秀的樣式掃描與處理工具。
AWK的功能是什么?與sed和grep很相似,awk是一種樣式掃描與處理工具。但其功能卻大大強于sed和grep。awk提供了極其強大的功能:它幾乎可以完成 grep和sed所能完成的全部工作,同時,它還可以可以進行樣式裝入、流控制、數學運算符、進程控制語句甚至于內置的變量和函數。它具備了一個完整的語言所應具有的幾乎所有精美特性。實際上,awk的確擁有自己的語言:awk程序設計語言,awk的三位創建者已將它正式定義為:樣式掃描和處理語言。
為什么使用awk?
使用awk的第一個理由是基于文本的樣式掃描和處理是我們經常做的工作,awk所做的工作有些象數據庫,但與數據庫不同的是,它處理的是文本文件,這些文件沒有專門的存儲格式,普通的人們就能編輯、閱讀、理解和處理它們。而數據庫文件往往具有特殊的存儲格式,這使得它們必須用數據庫處理程序來處理它們。既然這種類似于數據庫的處理工作我們經常會遇到,我們就應當找到處理它們的簡便易行的方法,UNIX有很多這方面的工具,例如sed、grep、sort以及find等等,awk是其中十分優秀的一種。
使用awk的第二個理由是awk是一個簡單的工具,當然這是相對于其強大的功能來說的。的確,UNIX有許多優秀的工具,例如UNIX天然的開發工具C語言及其延續C++就非常的優秀。但相對于它們來說,awk完成同樣的功能要方便和簡捷得多。這首先是因為awk提供了適應多種需要的解決方案:從解決簡單問題的awk命令行到復雜而精巧的awk程序設計語言,這樣做的好處是,你可以不必用復雜的方法去解決本來很簡單的問題。例如,你可以用一個命令行解決簡單的問題,而C不行,即使一個再簡單的程序,C語言也必須經過編寫、編譯的全過程。其次,awk本身是解釋執行的,這就使得awk程序不必經過編譯的過程,同時,這也使得它與shell script程序能夠很好的契合。最后,awk本身較C語言簡單,雖然awk吸收了C語言很多優秀的成分,熟悉C語言會對學習awk有很大的幫助,但 awk本身不須要會使用C語言——一種功能強大但需要大量時間學習才能掌握其技巧的開發工具。
使用awk的第三個理由是awk是一個容易獲得的工具。與C和C++語言不同,awk只有一個文件(/bin/awk),而且幾乎每個版本的UNIX都提供各自版本的awk,你完全不必費心去想如何獲得awk。但C語言卻不是這樣,雖然C語言是UNIX天然的開發工具,但這個開發工具卻是單獨發行的,換言之,你必須為你的UNIX版本的C語言開發工具單獨付費(當然使用D版者除外),獲得并安裝它,然后你才可以使用它。
基于以上理由,再加上awk強大的功能,我們有理由說,如果你要處理與文本樣式掃描相關的工作,awk應該是你的第一選擇。在這里有一個可遵循的一般原則:如果你用普通的shell工具或shell script有困難的話,試試awk,如果awk仍不能解決問題,則便用C語言,如果C語言仍然失敗,則移至C++。
awk的調用方式
前面曾經說過,awk提供了適應多種需要的不同解決方案,它們是:
一、awk命令行,你可以象使用普通UNIX命令一樣使用awk,在命令行中你也可以使用awk程序設計語言,雖然awk支持多行的錄入,但是錄入長長的命令行并保證其正確無誤卻是一件令人頭疼的事,因此,這種方法一般只用于解決簡單的問題。當然,你也可以在shell script程序中引用awk命令行甚至awk程序腳本。
二、使用-f選項調用awk程序。awk允許將一段awk程序寫入一個文本文件,然后在awk命令行中用-f選項調用并執行這段程序。具體的方法我們將在后面的awk語法中講到。
三、利用命令解釋器調用awk程序:利用UNIX支持的命令解釋器功能,我們可以將一段awk程序寫入文本文件,然后在它的第一行加上: #!/bin/awk-f
并賦予這個文本文件以執行的權限。這樣做之后,你就可以在命令行中用類似于下面這樣的方式調用并執行這段awk程序了。
awk腳本文本名 待處理文件
awk的語法:
與其它UNIX命令一樣,awk擁有自己的語法:
awk [-F re] [parameter...] ['prog'] [-f progfile][in_file...] 參數說明:
-F re:允許awk更改其字段分隔符。
parameter: 該參數幫助為不同的變量賦值。
'prog': awk的程序語句段。這個語句段必須用單拓號:'和'括起,以防被shell解釋。這個程序語句段的標準形式為:
'pattern {action}' 其中pattern參數可以是egrep正則表達式中的任何一個,它可以使用語法/re/再加上一些樣式匹配技巧構成。與sed類似,你也可以使用“,”分開兩樣式以選擇某個范圍。關于匹配的細節,你可以參考附錄,如果仍不懂的話,找本UNIX書學學grep和sed(本人是在學習ed時掌握匹配技術的)。action參數總是被大括號包圍,它由一系統awk語句組成,各語句之間用“;”分隔。awk解釋它們,并在pattern給定的樣式匹配的記錄上執行其操作。與shell類似,你也可以使用―#‖作為注釋符,它使―#‖到行尾的內容成為注釋,在解釋執行時,它們將被忽略。你可以省略pattern和 action之一,但不能兩者同時省略,當省略pattern時沒有樣式匹配,表示對所有行(記錄)均執行操作,省略action時執行缺省的操作——在標準輸出上顯示。
-f progfile:允許awk調用并執行progfile指定有程序文件。progfile是一個文本文件,他必須符合awk的語法。
in_file:awk的輸入文件,awk允許對多個輸入文件進行處理。值得注意的是awk不修改輸入文件。如果未指定輸入文件,awk將接受標準輸入,并將結果顯示在標準輸出上。awk支持輸入輸出重定向。
awk的記錄、字段與內置變量:
前面說過,awk處理的工作與數據庫的處理方式有相同之處,其相同處之一就是awk支持對記錄和字段的處理,其中對字段的處理是grep和sed不能實現的,這也是awk優于二者的原因之一。在awk中,缺省的情況下總是將文本文件中的一行視為一個記錄,而將一行中的某一部分作為記錄中的一個字段。為了操作這些不同的字段,awk借用shell的方法,用1,2,3...這樣的方式來順序地表示行(記錄)中的不同字段。特殊地,awk用0表示整個行(記錄)。不同的字段之間是用稱作分隔符的字符分隔開的。系統默認的分隔符是空格。awk允許在命令行中用-F re的形式來改變這個分隔符。事實上,awk用一個內置的變量FS來記憶這個分隔符。awk中有好幾個這樣的內置變量,例如,記錄分隔符變量RS、當前工作的記錄數NR等等,本文后面的附表列出了全部的內置變量。這些內置的變量可以在awk程序中引用或修改,例如,你可以利用NR變量在模式匹配中指定工作范圍,也可以通過修改記錄分隔符RS讓一個特殊字符而不是換行符作為記錄的分隔符。
例:顯示文本文件myfile中第七行到第十五行中以字符%分隔的第一字段,第三字段和第七字段:
awk-F % 'NR==7,NR==15 {printf 1 3 7}' awk的內置函數
awk 之所以成為一種優秀的程序設計語言的原因之一是它吸收了某些優秀的程序設計語言(例如C)語言的許多優點。這些優點之一就是內置函數的使用,awk定義并支持了一系列的內置函數,由于這些函數的使用,使得awk提供的功能更為完善和強大,例如,awk使用了一系列的字符串處理內置函數(這些函數看起來與C 語言的字符串處理函數相似,其使用方式與C語言中的函數也相差無幾),正是由于這些內置函數的使用,使awk處理字符串的功能更加強大。本文后面的附錄中列有一般的awk所提供的內置函數,這些內置函數也許與你的awk版本有些出入,因此,在使用之前,最好參考一下你的系統中的聯機幫助。
作為內置函數的一個例子,我們將在這里介紹awk的printf函數,這個函數使得awk與c語言的輸出相一致。實際上,awk中有許多引用形式都是從C語言借用過來的。如果你熟悉C語言,你也許會記得其中的printf函數,它提供的強大格式輸出功能曾經帶我們許多的方便。幸運的是,我們在awk中又和它重逢了。awk中printf幾乎與C語言中一模一樣,如果你熟悉C語言的話,你完全可以照C語言的模式使用awk中的printf。因此在這里,我們只給出一個例子,如果你不熟悉的話,請隨便找一本C語言的入門書翻翻。例:顯示文件myfile中的行號和第3字段:
awk '{printf“%03d%sn”,NR,1}' myfile 在命令行使用awk
按照順序,我們應當講解awk程序設計的內容了,但在講解之前,我們將用一些例子來對前面的知識進行回顧,這些例子都是在命令行中使用的,由此我們可以知道在命令行中使用awk是多么的方便。這樣做的原因一方面是為下面的內容作鋪墊,另一方面是介紹一些解決簡單問題的方法,我們完全沒有必要用復雜的方法來解決簡單的問題----既然awk提供了較為簡單的方法的話。
例:顯示文本文件mydoc匹配(含有)字符串“sun”的所有行。
awk '/sun/{print}' mydoc
由于顯示整個記錄(全行)是awk的缺省動作,因此可以省略action項。
awk '/sun/' mydoc
例:下面是一個較為復雜的匹配的示例:
awk '/[Ss]un/,/[Mm]oon/ {print}' myfile
它將顯示第一個匹配Sun或sun的行與第一個匹配Moon或moon的行之間的行,并顯示到標準輸出上。
例:下面的示例顯示了內置變量和內置函數length()的使用:
awk 'length(0)>80 {print NR}' myfile
該命令行將顯示文本myfile中所有超過80個字符的行號,在這里,用0表示整個記錄(行),同時,內置變量NR不使用標志符''。
例:作為一個較為實際的例子,我們假設要對UNIX中的用戶進行安全性檢查,方法是考察/etc下的passwd文件,檢查其中的passwd字段(第二字段)是否為“*”,如不為“*”,則表示該用戶沒有設置密碼,顯示出這些用戶名(第一字段)。我們可以用如下語句實現:
#awk-F: '2==“" {printf(”%s no password!n“,1' /etc/passwd 在這個示例中,passwd文件的字段分隔符是―:‖,因此,必須用-F:來更改默認的字段分隔符,這個示例中也涉及到了內置函數printf的使用。
awk的變量
如同其它程序設計語言一樣,awk允許在程序語言中設置變量,事實上,提供變量的功能是程序設計語言的其本要求,不提供變量的程序設計語言本人還從未見過。
awk 提供兩種變量,一種是awk內置的變量,這前面我們已經講過,需要著重指出的是,與后面提到的其它變量不同的是,在awk程序中引用內置變量不需要使用標志符”“(回憶一下前面講過的NR的使用)。awk提供的另一種變量是自定義變量。awk允許用戶在awk程序語句中定義并調用自已的變量。當然這種變量不能與內置變量及其它awk保留字相同,在awk中引用自定義變量必須在它前面加上標志符”“。與C語言不同的是,awk中不需要對變量進行初始化,awk根據其在awk中第一次出現的形式和上下文確定其具體的數據類型。當變量類型不確定時,awk默認其為字符串類型。這里有一個技巧:如果你要讓你的 awk程序知道你所使用的變量的明確類型,你應當在在程序中給它賦初值。在后面的實例中,我們將用到這一技巧。
運算與判斷:
作為一種程序設計語言所應具有的特點之一,awk支持多種運算,這些運算與C語言提供的幾本相同:如+、-、*、/、%等等,同時,awk也支持C語言中類似++、--、+=、-=、=+、=-之類的功能,這給熟悉C語言的使用者編寫awk程序帶來了極大的方便。作為對運算功能的一種擴展,awk還提供了一系列內置的運算函數(如log、sqr、cos、sin等等)和一些用于對字符串進行操作(運算)的函數(如length、substr等等)。這些函數的引用大大的提高了awk的運算功能。
作為對條件轉移指令的一部分,關系判斷是每種程序設計語言都具備的功能,awk也不例外。awk 中允許進行多種測試,如常用的==(等于)、!=(不等于)、>(大于)、=(大于等于)、>=(小于等于)等等,同時,作為樣式匹配,還提供了~(匹配于)和!~(不匹配于)判斷。
作為對測試的一種擴充,awk也支持用邏輯運算符:!(非)、&&(與)、||(或)和括號()進行多重判斷,這大大增強了awk的功能。本文的附錄中列出了awk所允許的運算、判斷以及操作符的優先級。
awk的流程控制
流程控制語句是任何程序設計語言都不能缺少的部分。任何好的語言都有一些執行流程控制的語句。awk提供的完備的流程控制語句類似于C語言,這給我們編程帶來了極大的方便。
1、BEGIN和END:
在awk 中兩個特別的表達式,BEGIN和END,這兩者都可用于pattern中(參考前面的awk語法),提供BEGIN和END的作用是給程序賦予初始狀態和在程序結束之后執行一些掃尾的工作。任何在BEGIN之后列出的操作(在{}內)將在awk開始掃描輸入之前執行,而END之后列出的操作將在掃描完全部的輸入之后執行。因此,通常使用BEGIN來顯示變量和預置(初始化)變量,使用END來輸出最終結果。
例:累計銷售文件xs中的銷售金額(假設銷售金額在記錄的第三字段):
awk
>'BEGIN { FS=”:“;print ”統計銷售金額“;total=0} >{print 3;total=total+3;}
>END {printf ”銷售金額總計:%.2f“,total}' sx(注:>是shell提供的第二提示符,如要在shell程序awk語句和awk語言中換行,則需在行尾加反斜杠)
在這里,BEGIN預置了內部變量FS(字段分隔符)和自定義變量total,同時在掃描之前顯示出輸出行頭。而END則在掃描完成后打印出總合計。
2、流程控制語句
awk提供了完備的流程控制語句,其用法與C語言類似。下面我們一一加以說明:
2.1、if...else語句: 格式:
if(表達式)語句1 else 語句2 格式中”語句1"可以是多個語句,如果你為了方便awk判斷也方便你自已閱讀,你最好將多個語句用{}括起來。awk分枝結構允許嵌套,其格式為:
if(表達式1)
{if(表達式2)
語句1 else 語句2 }
語句3 else {if(表達式3)語句4 else 語句5 }
語句6 當然實際操作過程中你可能不會用到如此復雜的分枝結構,這里只是為了給出其樣式罷了。
2.2、while語句
格式為:
while(表達式)語句
2.3、do-while語句
格式為:
do { 語句
}while(條件判斷語句)
2.4、for語句
格式為:
for(初始表達式;終止條件;步長表達式)
{語句}
在awk 的 while、do-while和for語句中允許使用break,continue語句來控制流程走向,也允許使用exit這樣的語句來退出。break 中斷當前正在執行的循環并跳到循環外執行下一條語句。continue從當前位置跳到循環開始處執行。對于exit的執行有兩種情況:當exit語句不在 END中時,任何操作中的exit命令表現得如同到了文件尾,所有模式或操作執行將停止,END模式中的操作被執行。而出現在END中的exit將導致程序終止。例:為了
awk中的自定義函數
定義和調用用戶自己的函數是幾乎每個高級語言都具有的功能,awk也不例外,但原始的awk并不提供函數功能,只有在nawk或較新的awk版本中才可以增加函數。
函數的使用包含兩部分:函數的定義與函數調用。其中函數定義又包括要執行的代碼(函數本身)和從主程序代碼傳遞到該函數的臨時調用。
第二篇:stata命令總結
表2-1: 回歸分析相關命令一覽
命令用途
anova 方差和協方差分析 heckman Heckman 篩選模型
intreg 離散型變量模型,包括Tobit、cnreg 和intreg ivreg 工具變量法(IV 或2SLS)
newey Newey-West 標準差設定下的回歸
prais 針對序列相關的Prais-Winsten, Cochrane-Orcutt, or Hildreth-Lu 回歸 qreg 分量回歸 reg OLS 回歸 sw 逐步回歸法
reg3 三階段最小二乘回歸
rreg 穩健回歸(不同于方差穩健型回歸,即White 方法)sureg 似無相關估計
svyheckman 調查數據的Heckman 篩選模型 svyintreg 調查數據的間斷變量回歸 svyregress 調查數據的線性回歸 tobit Tobit 回歸
treatreg treatment 效應模型 truncreg 截斷回歸
表2-2: 時間序列命令一覽
命令用途
clemao1 允許結構突變的單位根檢驗 zandrews dfuller dfgls pperron coin 單方程協整檢驗
dwstat 參考dwstat2 , durbina2 durbinh
表2-3: Panel Data 模型相關命令一覽I 命令模型
統計描述相關命令:
xtdes 變量類型,數據類型描述 xtsum 基本統計量 xttab 按表格形式列示 xtpattern 面板數據的模式 估計相關命令:
xtreg 面板數據模型(固定效應、隨機效應)
xtregar 含有AR(1)干擾項的固定效應和隨機效應面板數據模型
xtgls 截面-時序混合模型,可處理異方差、組內序列相關和組間相關性 xtpcse OLS or Prais-Winsten models with panel-corrected standard errors xtrchh Hildreth-Houck random coefficients models xtivreg 面板模型的工具變量或兩階段最小二乘法估計 xtabond Arellano-Bond(1991)線性動態面板數據模型估計
xtabond2 Arellano-Bover(1995)系統GMM 動態面板數據模型估計 xttobit Tobit 隨機效應面板模型
xtintreg Random-effects interval data regression models xtlogit Fe, Re, Pa logit models xtprobit Re, Pa probit models xtcloglog Re, Pa cloglog models xtpoisson Fe, Re, Pa Poisson models xtnbreg Fe, Re, Pa negative binomial models xtfrontier 面板隨機前沿模型
xthtylor Hausman-Taylor estimator for error-components models
表2-4: Panel Data 模型相關命令一覽II 命令模型
假設檢驗相關:
test Wald 檢驗,如時間效應聯合顯著性檢驗 xttest0 隨機效應檢驗 xttest1 面板序列相關檢驗 xttest2 ads xtserial Wooldridge 一階序列相關檢驗 xtab Arellano 面板一階序列相關檢驗 hausman Hausman 檢驗 面板單位根和協整相關: xtunit stata提供的檢驗方法
ipshin IPS(2003)面板單位根檢驗
levilin Levin,Lin和Chu(LLC, 2002)面板單位根檢驗 madfuller Sarno-Taylor(1998)面板單位根檢驗
xtfisher Maddala和Wu(1999),基于P 值的面板單位根檢驗
表2-5: Post-estimation Commands 命令名稱用途
adjust 列示預測結果的均質,適于多種回歸分析,可分組列示 estimates 估計結果的存儲、再顯示、列表比較等 hausman Hausman 模型識別檢驗
lincom 獲得參數的線性組合,在Logit 模型中可以獲得系數線性組合的OR 值 linktest 但方程link 識別檢驗,用y 對Oy 和Oy2 回歸 lrtest 似然比(LR)檢驗
mfx 計算邊際效應和彈性系數 nlcom 系數的非線性組合 predict 獲得擬合值、殘差等
predictnl 獲得非線性估計的擬合值、殘差等 test 線性約束的假設檢驗,Wald 檢驗 testnl 非線性約束的假設檢驗
vce 列示參數估計值的方差-協方差矩陣
表2-6: 二維圖種類一覽
圖形種類簡單描述 scatter scatterplot line line plot connected connected-line plot scatteri scatter with immediate arguments area line plot with shading bar bar plot spike spike plot dropline dropline plot dot dot plot rarea range plot with area shading rbar range plot with bars rspike range plot with spikes rcap range plot with capped spikes rcapsym range plot with spikes capped with symbols rscatter range plot with markers rline range plot with lines rconnected range plot with lines and markers tsline time-series plot tsrline time-series range plot mband median-band line plot mspline spline line plot lowess LOWESS line plot lfit linear prediction plot qfit quadratic prediction plot fpfit fractional polynomial plot lfitci linear prediction plot with CIs qfitci quadratic prediction plot with CIs fpfitci fractional polynomial plot with CIs function line plot of function histogram histogram plot kdensity kernel density plot 表2-7: 二維圖選項一覽
選項類別簡單描述
added line options draw lines at specified y or x values added text option display text at specified(y,x)value axis options labels, ticks, grids, log scales title options titles, subtitles, notes, captions legend option legend explaining what means what scale(#)resize text, markers, and line widths region options outlining, shading, aspect ratio, size aspect option constrain aspect ratio of plot region scheme(schemename)overall look by(varlist,...)repeat for subgroups nodraw suppress display of graph name(name,...)specify name for graph saving(filename,...)save graph in file advanced options difficult to explain 表2-9: 模擬分析相關命令一覽
命令用途備注 抽樣相關:
corr2data 產生具有指定相關性的數據僅適用于模擬相關分析 drawnorm invnorm(uniform())產生服從標準正態分布的隨機數函數,可調節均值和方差 matuniform(r,c)產生均勻分布函數
sample 從現有數據中進行非重復隨機抽樣參考bsample sim arma 產生服從ARIMA 過程的隨機變量需要下載 Bootstrap 相關: bootstrap bs bstat bsample MC 相關: simulate MC simulation jknife 類似于MC permute postfile 存儲MC 的結果 statsby exp list
第三篇:stata命令總結
stata11常用命令
注:JB統計量對應的p大于0.05,則表明非正態,這點跟sktest和swilk檢驗剛好相反; dta為數據文件; gph為圖文件; do為程序文件;
注意stata要區別大小寫; 不得用作用戶變量名:
_all _n _N _skip _b _coef _cons _pi _pred _rc _weight double float long int in if using with 命令:
讀入數據一種方式 input x y 1 4 2 5.5 3 6.2 4 7.7 5 8.5 end su/summarise/sum x 或 su/summarise/sum x,d 對分組的描述: sort group by group:su x %%%%% tabstat economy,stats(max)%返回變量economy的最大值
%%stats括號里可以是:mean,count(非缺失觀測值個數),sum(總和),max,min,range,%% sd,var,cv(變易系數=標準差/均值),skewness,kurtosis,median,p1(1%分位
%% 數,類似地有p10, p25, p50, p75, p95, p99),iqr(interquantile range = p75 – p25)_all %描述全部
_N 數據庫中觀察值的總個數。_n 當前觀察值的位置。_pi 圓周率π的數值。list gen/generate %產生數列 egen wagemax=max(wage)clear use by(分組變量)set more 1/0 count %計數
gsort +x(升序)gsort-x(降序)sort x 升序;并且其它變量順序會跟著改變 label var y “消費” %添加標簽 describe %描述數據文件的整體,包括觀測總數,變量總數,生成日期,每個變量的存儲類型(storage type),標簽(label)replace x5=2*y if x!=3 %替換變量值
replace age = 25 in 107 %令第107個觀測中age為25 rename y2 u %改變變量名
drop in 2 %刪除全部變量的第2行
drop if x==.刪去x為缺失值的所有記錄
keep if x<2 %保留小于2的數據,其余變量跟隨x改變 keep in 2/10 %保留第2-10個數
keep x1-x5 %保留數據庫中介于x1和x5間的所有變量(包括x1和x5),其余變量刪除
ci x1 x2,by(group)%算出置信區間,不過先前對group要先排序,即sort group;
%by的意思逐個進行
cii 12 3.816667 0.2710343, level(90)%已知均值,方差,計算90%的置信區間
cii 10 2 %obs=10,mean=2,以二項分布形式,計算置信區間 centile x,centile(2.5 25 50 75 97.5)%取分位數 correlate/corr x y z %相關系數
pwcorr x y,sig %給出原假設r=0的命令 %如果變量非服從正態分布,則spearman x y regress/reg mean year %回歸方程建立 reg y x,noconstant %無常數項 predict meanhat %預測擬合值 predict e,residual %得到殘差 estat hettest % 異方差檢驗
dwstat % Durbin-Watson自相關檢驗 vif % 方差膨脹因子
logit y x1 x2 x3(y取0或1,是被解釋變量,x1-x3是被解釋變量)%logit回歸
probit y x1 x2 x3(y取0或1,是被解釋變量,x1-x3是被解釋變量)%probit回歸
tobit y x1 x2 x3(y取值在0和1之間,是被解釋變量,x1-x3是被解釋變量)%tobit回歸
sktest e %殘差正態性檢驗 p>0.05則接受原假設,即服從正態分布; %% sktest是基于變量的偏度和斜度(正態分布的偏度為0,斜度為3)swilk x %基于Shapiro-Wilk檢驗
%%p值越小,越傾向于拒絕零假設,也就是變量越有可能不服從正態分布 xi %生成虛擬變量 tabulat gender,summ(math)%用gender指標對math進行分類,返回兩類math的mean、std、freq tabulate=tab %gen f=int((shengao-164)/3)*3+164 組距為3 tabulate 變量名 [, generate(新變量)missing nofreq nolabel plot ] %%%%% generate(新變量)// 按分組變量產生啞變量 nofreq // 不顯示頻數 nolabel // 不顯示數值標記 plot // 顯示各組頻數圖示 missing // 包含缺失值
cell // 顯示各小組的構成比(小組之和為 1)column // 按欄顯示各組之構成(各欄總計為 1)row // 按行顯示各組之構成(各行總計為 1)%%%%% 求和,求最小? mod(x,y)%求余數
means %返回三種平均值 di normprob(1.96)di invnorm(0.05)di binomial(20,5,0.5)di invbinomial(20,5,0.5)di tprob(10,2)di invt(10.0.05)di fprob(3,27,1)di invfprob(3,27,0.05)di chi2(3,5)di invchi2(3,0.05)stack x y z,into(e)%把三列合成一列 xpose,clear %矩陣轉置
append using d: 主站蜘蛛池模板: 色综合久久久久久久久久| 亚洲色大成网站www永久网站| 亚洲碰碰人人av熟女天堂| 亚洲国产区男人本色| 精品日韩欧美一区二区在线播放| 中文字幕丰满乱子伦无码专区| 国产精品爽爽久久久久久无码| 熟女少妇在线视频播放| 国产福利视频一区二区精品| 丰满熟女人妻一区二区三| 国产偷窥女洗浴在线观看| 国产成人不卡无码免费视频| 奇米777四色影视在线看| 久草热8精品视频在线观看| av无码av天天av天天爽| 久久亚洲精品无码观看不卡| 76少妇精品导航| 成人美女黄网站色大免费的| 久久99精品久久久久久清纯| 亚洲成a人片在线观看www| 天天综合亚洲色在线精品| 精品麻豆一卡2卡三卡4卡乱码| 精品人妻伦一二三区久久aaa片| 日本高清www无色夜在线视频| 国产亚洲精品a片久久久| 久久久久久久无码高潮| 99亚洲精品| 2022国产成人精品视频人| 射精情感曰妓女色视频| 亚洲精品一区二区丝袜图片| 国产99久久久国产精品免费看| 亚洲精品无码专区在线在线播放| 成人影片麻豆国产影片免费观看| 国产高跟黑色丝袜在线| 国产免费视频精品视频| 国产精品毛片无码| 一级丰满老熟女毛片免费观看| 看成年全黄大色黄大片| 国产成人午夜福利免费无码r| 国产丶欧美丶日本不卡视频| 999zyz玖玖资源站在线观看|