如何過濾出以下目錄的中的所有一級目錄
[root@xcn ~]# ll
total 16
-rw-r--r-- 1 root root 0 Jul 5 11:43 111
-rw-r--r-- 1 root root 0 Jul 5 11:43 222
-rw-r--r-- 1 root root 0 Jul 5 11:43 333
drwxr-xr-x 2 root root 4096 Jul 5 11:43 aaa
drwxr-xr-x 2 root root 4096 Jul 5 11:43 bbb
drwxr-xr-x 2 root root 4096 Jul 5 11:43 ccc
drwxr-xr-x 2 root root 4096 Jul 5 11:43 ddd
方法1:ls -l結果中以d開頭的就是目錄
<code>通過過濾以長格式輸出的開頭檔案辨別d</code>
<code>[root@xcn ~]</code><code># ls -l |grep ^d </code>
<code>drwxr-xr-x 2 root root 4096 Jul 5 11:43 aaa</code>
<code>drwxr-xr-x 2 root root 4096 Jul 5 11:43 bbb</code>
<code>drwxr-xr-x 2 root root 4096 Jul 5 11:43 ccc</code>
<code>drwxr-xr-x 2 root root 4096 Jul 5 11:43 ddd</code>
<code>提示:^ :以...開頭</code>
方法2:通過給目錄加辨別,然後通過過濾辨別,過濾出目錄
<code>[root@xcn ~]</code><code># ls -F #把目錄結尾加上"/",便于區分和過濾出來,ls -p也可以讓目錄帶上斜線</code>
<code>111 222 333 aaa/ bbb/ ccc/ ddd/</code>
<code>[root@xcn ~]</code><code># ls -F|grep /$ #把包含斜線"/"的過濾出來就是目錄</code>
<code>aaa/</code>
<code>bbb/</code>
<code>ccc/</code>
<code>ddd/</code>
方法3:find的應用
<code>[root@xcn ~]</code><code># find . -type d #.代表目前目錄</code>
<code>.</code><code>/aaa</code>
<code>.</code><code>/ccc</code>
<code>.</code><code>/bbb</code>
<code>.</code><code>/ddd</code>
方法4:tree
<code>[root@xcn ~]</code><code># tree -dl</code>
<code>.</code>
<code>|-- aaa</code>
<code>|-- bbb</code>
<code>|-- ccc</code>
<code>`-- ddd</code>
過濾空行及#開頭的行
<code>[root@xcn ~]</code><code># grep -Ev "^#|^$" /etc/init.d/sshd </code>
<code>[root@xcn ~]</code><code># egrep -v "^#|^$" /etc/init.d/sshd </code>
<code>注釋:</code>
<code>-E </code><code>#egrep</code>
<code>-</code><code>v</code> <code>#過濾</code>
<code>^</code><code># #井号開頭</code>
<code>^$ </code><code>#空行</code>
方法5:sed
<code>[root@xcn ~]</code><code># ls -l|sed -n /^d/p</code>
<code>-n </code><code>#拒絕預設輸出</code>
<code>p </code><code>#列印</code>
方法6:awk
<code>[root@xcn ~]</code><code>#ls -l|awk '/^d/ {print $0}'</code>
2.假如目前目錄是
<code>[root@xcn ~]</code><code># pwd #這是列印目前目錄</code>
<code>/root</code>
現在因為需要進入到了/tmp目錄下進行操作,執行的指令如下:
<code>[root@xcn ~]</code><code># pwd</code>
<code>[root@xcn ~]</code><code># cd /tmp/</code>
<code>[root@xcn tmp]</code><code># cd -</code>
<code>[root@xcn ~]</code><code>#</code>
原理:
<code>[root@xcn ~]</code><code># env|grep -i oldpwd #是這個變量記錄着上一次的目錄</code>
<code>OLDPWD=</code><code>/tmp</code>
3.一個目錄中有很多檔案(ls檢視時好多屏),想最快速度檢視到最近更行的檔案。如果看?
解答:
<code>[root@xcn etc]</code><code># ls -lrt #執行這個指令後最新的檔案會在最下面</code>
<code>#以長格式按照修改時間倒序檔案和目錄,這樣最近建立或修改的檔案或目錄</code>
<code>-t </code><code>#按修改時間</code>
<code>-r </code><code>#翻轉</code>
4.在配置apache時,執行了./confiure --prefix=/application/apache2.2.17 來編譯apache在make installl完成後,希望使用者的通路路徑更簡單,需要給/application/apache2.2.17目錄做一個軟連結/application/apache,使得内部開發或管理人員通過/application/apache就可以通路到/apache的安裝目錄/application/apache2.2.17下的内容,請你給出實作的指令(提示:apache為一個http web服務)
<code>[root@xcn ~]</code><code># ln -s /application/apache2.2.17 /application/apache #-s 參數表示為建立軟連結</code>
5.已知apache服務的通路日志按天記錄在伺服器本地目錄/data/logs下,由于磁盤空間緊張,現在要求隻能保留最近7天通路日志!請問如何解決?請給出解決辦法或配置或處理指令。
<code>-rw-r--r-- 1 root root 0 Jun 28 00:00 2017-06-29_00-00.backstage_access.log</code>
<code>-rw-r--r-- 1 root root 0 Jun 28 00:00 2017-06-29_00-00.backstage_error.log</code>
<code>-rw-r--r-- 1 root root 0 Jun 29 00:00 2017-06-30_00-00.backstage_access.log</code>
<code>-rw-r--r-- 1 root root 0 Jun 29 00:00 2017-06-30_00-00.backstage_error.log</code>
<code>-rw-r--r-- 1 root root 0 Jun 30 00:00 2017-07-01_00-00.backstage_access.log</code>
<code>-rw-r--r-- 1 root root 0 Jun 30 00:00 2017-07-01_00-00.backstage_error.log</code>
<code>-rw-r--r-- 1 root root 0 Jul 1 00:00 2017-07-02_00-00.backstage_access.log</code>
<code>-rw-r--r-- 1 root root 0 Jul 1 00:00 2017-07-02_00-00.backstage_error.log</code>
<code>-rw-r--r-- 1 root root 0 Jul 2 00:00 2017-07-03_00-00.backstage_access.log</code>
<code>-rw-r--r-- 1 root root 0 Jul 2 00:00 2017-07-03_00-00.backstage_error.log</code>
<code>-rw-r--r-- 1 root root 0 Jul 3 00:00 2017-07-04_00-00.backstage_access.log</code>
<code>-rw-r--r-- 1 root root 0 Jul 3 00:00 2017-07-04_00-00.backstage_error.log</code>
<code>-rw-r--r-- 1 root root 0 Jul 4 00:00 2017-07-05_00-00.backstage_access.log</code>
<code>-rw-r--r-- 1 root root 0 Jul 4 00:00 2017-07-05_00-00.backstage_error.log</code>
<code>-rw-r--r-- 1 root root 0 Jul 5 00:00 2017-07-06_00-00.backstage_access.log</code>
<code>-rw-r--r-- 1 root root 0 Jul 5 00:00 2017-07-06_00-00.backstage_error.log</code>
<code>[root@guaji01 ~]</code><code># find ./ -type f -name "*.log" -mtime +7|xarge rm -f #删除7天</code>
find 查找與時間有關參數:
-atime n #n為數字,意義為在n天之前的【一天之内】被access過的檔案;
-ctime n #n為數字,意義為在n天之前的【一天之内】内change過狀态的檔案
-mtime n #n 為數字,意思為在n天之前的【一天之内】被modification過的檔案
-newer file #file 為一個存在的檔案,意思是說,隻要檔案比file還要新,就會被列出來
<code>find</code> <code>./ </code><code>type</code> <code>f -name </code><code>"*.log"</code> <code>-mtime +7|</code><code>xargs</code> <code>rm</code> <code>-f</code>
6.調試系統服務時,希望能實時檢視系統日志/var/log/messages的更新,如何做?
法一:
<code>[root@xcn ~]</code><code># tail -f /var/log/messages </code>
<code>Jul 6 14:51:40 localhost yum[29341]: Installed: gnome-vfs2-devel-2.24.2-8.el6.x86_64</code>
<code>Jul 6 14:51:41 localhost yum[29341]: Installed: dmz-cursor-themes-0.4-4.el6.noarch</code>
<code>Jul 6 14:51:41 localhost yum[29341]: Installed: system-gnome-theme-60.0.2-1.el6.noarch</code>
<code>Jul 6 14:51:41 localhost yum[29341]: Installed: libgnome-2.28.0-11.el6.x86_64</code>
<code>Jul 6 14:51:41 localhost yum[29341]: Installed: libgnome-devel-2.28.0-11.el6.x86_64</code>
<code>Jul 6 14:51:41 localhost yum[29341]: Installed: libbonoboui-2.24.2-3.el6.x86_64</code>
<code>Jul 6 14:51:42 localhost yum[29341]: Installed: libbonoboui-devel-2.24.2-3.el6.x86_64</code>
<code>Jul 6 14:51:42 localhost yum[29341]: Installed: libgnomeui-2.24.1-4.el6.x86_64</code>
<code>Jul 6 14:51:42 localhost yum[29341]: Installed: libgnomeui-devel-2.24.1-4.el6.x86_64</code>
<code>Jul 6 14:51:43 localhost yum[29341]: Updated: glib2-2.28.8-9.el6.i686</code>
法二:
<code>[root@xcn ~]</code><code># tail -F /var/log/messages </code>
<code>Jul 6 14:51:43 localhost yum[29341]: Updated: glib2-2.28.8-9.el6.i68</code>
法三:
<code>[root@xcn ~]</code><code># tailf /var/log/messages </code>
7.列印配置檔案nginx.conf内容的行号及内容,該如何做?
法1:
<code>[root@guaji01 conf]</code><code># nl nginx.conf</code>
<code> </code><code>1 user nginx;</code>
<code> </code><code>2 worker_processes 4;</code>
<code> </code><code>3</code>
<code> </code><code>4 </code><code>#pid /var/run/nginx.pid;</code>
<code> </code><code>5</code>
<code> </code><code>6 events {</code>
<code> </code><code>7 worker_connections 5000;</code>
<code> </code><code>8 </code><code>#use epoll;</code>
<code> </code><code>9 }</code>
<code>....................</code>
法2:
<code>[root@guaji01 conf]</code><code># cat -n nginx.conf</code>
<code> </code><code>10</code>
<code>........................</code>
法3:
<code>[root@guaji01 conf]</code><code># less -N nginx.conf</code>
<code> </code><code>1 user nginx;</code>
<code> </code><code>2 worker_processes 4;</code>
<code> </code><code>3 </code>
<code> </code><code>4 </code><code>#pid /var/run/nginx.pid;</code>
<code> </code><code>5 </code>
<code> </code><code>6 events {</code>
<code> </code><code>7 worker_connections 5000;</code>
<code> </code><code>8 </code><code>#use epoll;</code>
<code> </code><code>9 }</code>
<code> </code><code>10 </code>
<code> </code><code>11 http {</code>
<code> </code><code>12 include mime.types;</code>
<code> </code><code>13 default_type application</code><code>/octet-stream</code><code>;</code>
<code> </code><code>14</code>
法4:vi 檔案 然後執行:set nu, :set nonu 為取消行号
8.裝完系統後,希望讓網絡檔案共享服務NFS,僅在3級别上開機自啟動,該如何做?
方法1:全部關掉然後開啟需要的級别的服務
<code>[root@xcn ~]</code><code># chkconfig nfs off</code>
<code>#預設2,3,4,5級别都是開啟狀态,所有需要先都關了。當然也可以chkconfig --level 245 nfs off</code>
<code>[root@xcn ~]</code><code># chkconfig --list nfs</code>
<code>nfs 0:關閉 1:關閉 2:關閉 3:關閉 4:關閉 5:關閉 6:關閉</code>
<code>[root@xcn ~]</code><code># chkconfig --level 3 nfs on</code>
<code>nfs 0:關閉 1:關閉 2:關閉 3:啟用 4:關閉 5:關閉 6:關閉</code>
方法2:關閉不需要的級别的服務
<code>nfs 0:關閉 1:關閉 2:啟用 3:啟用 4:啟用 5:啟用 6:關閉</code>
<code>[root@xcn ~]</code><code># chkconfig --level 245 nfs off</code>
12./etc/目錄為Linux系統的預設的配置檔案及服務啟動指令的目錄
請用tar打包/etc整個目錄(打包及壓縮)
請用tar打包/etc整個目錄(打包及壓縮,但需要排除/etc/services檔案)
請把a點指令的壓縮包,解壓到/tmp指定目錄下(最好隻用tar 指令實作)
a:
<code>[root@xcn /]</code><code># tar zcvf etc.tar.gz ./etc/</code>
<code>-rw-r--r-- 1 root root 9948783 9月 24 04:12 etc.</code><code>tar</code><code>.gz</code>
<code>z:壓縮</code>
<code>c:建立</code>
<code>v</code><code>:顯示輸出</code>
<code>f:檔案ch</code>
<code>[root@xcn /]</code><code># tar tf etc.tar.gz #檢視壓縮包裡的内容</code>
<code>etc/</code>
<code>etc</code><code>/sysctl</code><code>.conf</code>
<code>etc</code><code>/modprobe</code><code>.d/</code>
<code>etc</code><code>/modprobe</code><code>.d</code><code>/blacklist</code><code>.conf</code>
<code>etc</code><code>/modprobe</code><code>.d</code><code>/dist</code><code>.conf</code>
<code>etc</code><code>/modprobe</code><code>.d</code><code>/anaconda</code><code>.conf</code>
<code>etc</code><code>/modprobe</code><code>.d</code><code>/openfwwf</code><code>.conf</code>
<code>etc</code><code>/modprobe</code><code>.d</code><code>/dist-oss</code><code>.conf</code>
<code>etc</code><code>/modprobe</code><code>.d</code><code>/dist-alsa</code><code>.conf</code>
<code>etc</code><code>/gnupg/</code>
<code>etc</code><code>/oddjobd</code><code>.conf.d/</code>
<code>etc</code><code>/oddjobd</code><code>.conf.d</code><code>/oddjobd-introspection</code><code>.conf</code>
<code>etc</code><code>/oddjobd</code><code>.conf.d</code><code>/oddjobd-mkhomedir</code><code>.conf</code>
<code>etc</code><code>/updatedb</code><code>.conf</code>
<code>etc</code><code>/sudo</code><code>.conf</code>
<code>etc</code><code>/mailcap</code>
<code>etc</code><code>/nanorc</code>
<code>etc</code><code>/fprintd</code><code>.conf</code>
<code>etc</code><code>/printcap</code>
<code>etc</code><code>/rwtab</code>
13.已知如下指令結果:
<code>[root@xcn ~]</code><code># echo "I am xcn mysql is 995345781" >> xcn</code>
<code>[root@xcn ~]</code><code># cat xcn </code>
<code>I am xcn mysql is 995345781</code>
現在需要從檔案中過濾出"xcn"和"995345781"字元串,請給出指令
方法1:
<code>[root@xcn ~]</code><code># awk '{print $3 $6}' xcn </code>
<code>xcn995345781</code>
<code>[root@xcn ~]</code><code># awk '{print $3 " " $6}' xcn </code>
<code>xcn 995345781</code>
方法2:
<code>[root@xcn ~]</code><code># cut -d" " -f3,6 xcn </code>
<code>-d:指定分隔符</code>
<code>[root@xcn ~]</code><code># cut -c 6-8 xcn </code>
<code>xcn</code>
14.如何檢視/etc/services檔案的有多少行?
方法一:
<code>[root@xcn ~]</code><code># wc -l /etc/services </code>
<code>10774 </code><code>/etc/services</code>
方法二:
<code>[root@xcn ~]</code><code># cat -n /etc/services |tail -1</code>
<code> </code><code>10774 iqobject 48619</code><code>/udp</code> <code># iqobje</code>
方法三:
<code>[root@xcn ~]</code><code># sed -n '$=' /etc/services </code>
<code>10774</code>
方法四:
<code>[root@xcn ~]</code><code># awk '{print NR}' /etc/services|tail -1</code>
方法五:
<code>[root@xcn ~]</code><code># grep -n $ /etc/services|tail -1</code>
<code>10774:iqobject 48619</code><code>/udp</code> <code># iqobject</code>
15.請執行指令取出Linux中eth1的IP位址
<code>[root@xcn ~]</code><code># ifconfig eth1|grep "inet addr"|cut -d ":" -f 2|cut -d " " -f 1</code>
<code>172.16.1.2</code>
<code>[root@xcn ~]</code><code># ifconfig eth1|grep "inet addr:"|awk -F ":" '{print $2}'|awk '{print $1}'</code>
<code>[root@xcn ~]</code><code># ifconfig eth1|grep "inet addr"|awk -F "[: ]" '{print $13}'</code>
法4:
<code>[root@xcn ~]</code><code># ifconfig eth1|sed -n '/inet addr/p'|sed 's#^.*addr:##g'|sed 's#Bc.*$##g'</code>
思路:
比對需要的目标(擷取的字元串如上文的ip)前的字元串一般用以..開頭(^.*)來比對開頭,比對的結尾寫上實際的字元,如:"^.*addr:"表達式就比對" inet addr:",而處理需要的目标後的内容一般在比對的開頭寫上實際的字元,而結尾是用以...結尾(.*$)來比對。如:Bcast:.*$部分表示比對“Bcast:10.0.0.255 Mask:255.255.255.0”.
法5:
<code>[root@xcn ~]</code><code># ifconfig eth1|sed -n 's#^.*addr:\(.*\) Bcast.*$#\1#gp'</code>
sed小括号()分組功能
sed 's/■/▲/标簽' #斜線可以被其他字元替換
■部分可以用正則,▲的部分不能用正則
()分組(group)再■部分使用()括起來的内容,再▲的位置可以用使用\1調用前面括号内容
如果有多個括号,那麼一次\2,\3調用第二個第三個括号,以此類推
16.如何取得xcn檔案的權限對于的數字内容,如-rw-r--r--為644,要求使用指令取得644或0644這樣的數字
r read w write -沒有x執行
r 4
w 2
x 1
- 0
<code>[root@xcn ~]</code><code># stat xcn|sed -n '4p'|awk -F "[/(]" '{print $2}'</code>
<code>0644</code>
<code>[root@xcn ~]</code><code># stat xcn|head -4|tail -1|awk -F "[/(]" '{print $2}'</code>
<code>[root@xcn ~]</code><code># stat xcn|sed -n 's#^.*s: (\([0-9].*\)/-r.*$#\1#gp'</code>
本文轉自 baishuchao 51CTO部落格,原文連結:http://blog.51cto.com/baishuchao/1945114