本文共 11073 字,大约阅读时间需要 36 分钟。
如何过滤出以下目录的中的所有一级目录
[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开头的就是目录
1 2 3 4 5 6 7 8 | 通过过滤以长格式输出的开头文件标识d [root@xcn ~] # ls -l |grep ^d 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 提示:^ :以...开头 |
方法2:通过给目录加标识,然后通过过滤标识,过滤出目录
1 2 3 4 5 6 7 | [root@xcn ~] # ls -F #把目录结尾加上"/",便于区分和过滤出来,ls -p也可以让目录带上斜线 111 222 333 aaa/ bbb/ ccc/ ddd/ [root@xcn ~] # ls -F|grep /$ #把包含斜线"/"的过滤出来就是目录 aaa/ bbb/ ccc/ ddd/ |
方法3:find的应用
1 2 3 4 5 | [root@xcn ~] # find . -type d #.代表当前目录 . /aaa . /ccc . /bbb . /ddd |
方法4:tree
1 2 3 4 5 6 | [root@xcn ~] # tree -dl . |-- aaa |-- bbb |-- ccc `-- ddd |
过滤空行及#开头的行
1 2 3 4 5 6 7 | [root@xcn ~] # grep -Ev "^#|^$" /etc/init.d/sshd [root@xcn ~] # egrep -v "^#|^$" /etc/init.d/sshd 注释: -E #egrep - v #过滤 ^ # #井号开头 ^$ #空行 |
方法5:sed
1 2 3 4 5 6 7 8 9 | [root@xcn ~] # ls -l|sed -n /^d/p 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 注释: -n #拒绝默认输出 p #打印 |
方法6:awk
1 2 3 4 5 | [root@xcn ~] #ls -l|awk '/^d/ {print $0}' 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 |
2.假如当前目录是
1 2 | [root@xcn ~] # pwd #这是打印当前目录 /root |
现在因为需要进入到了/tmp目录下进行操作,执行的命令如下:
1 2 3 4 5 6 | [root@xcn ~] # pwd /root [root@xcn ~] # cd /tmp/ [root@xcn tmp] # cd - /root [root@xcn ~] # |
原理:
1 2 | [root@xcn ~] # env|grep -i oldpwd #是这个变量记录着上一次的目录 OLDPWD= /tmp |
3.一个目录中有很多文件(ls查看时好多屏),想最快速度查看到最近更行的文件。如果看?
解答:
1 2 3 4 5 | [root@xcn etc] # ls -lrt #执行这个命令后最新的文件会在最下面 #以长格式按照修改时间倒序文件和目录,这样最近创建或修改的文件或目录 -t #按修改时间 -r #翻转 |
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服务)
1 | [root@xcn ~] # ln -s /application/apache2.2.17 /application/apache #-s 参数表示为创建软链接 |
5.已知apache服务的访问日志按天记录在服务器本地目录/data/logs下,由于磁盘空间紧张,现在要求只能保留最近7天访问日志!请问如何解决?请给出解决办法或配置或处理命令。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | -rw-r--r-- 1 root root 0 Jun 28 00:00 2017-06-29_00-00.backstage_access.log -rw-r--r-- 1 root root 0 Jun 28 00:00 2017-06-29_00-00.backstage_error.log -rw-r--r-- 1 root root 0 Jun 29 00:00 2017-06-30_00-00.backstage_access.log -rw-r--r-- 1 root root 0 Jun 29 00:00 2017-06-30_00-00.backstage_error.log -rw-r--r-- 1 root root 0 Jun 30 00:00 2017-07-01_00-00.backstage_access.log -rw-r--r-- 1 root root 0 Jun 30 00:00 2017-07-01_00-00.backstage_error.log -rw-r--r-- 1 root root 0 Jul 1 00:00 2017-07-02_00-00.backstage_access.log -rw-r--r-- 1 root root 0 Jul 1 00:00 2017-07-02_00-00.backstage_error.log -rw-r--r-- 1 root root 0 Jul 2 00:00 2017-07-03_00-00.backstage_access.log -rw-r--r-- 1 root root 0 Jul 2 00:00 2017-07-03_00-00.backstage_error.log -rw-r--r-- 1 root root 0 Jul 3 00:00 2017-07-04_00-00.backstage_access.log -rw-r--r-- 1 root root 0 Jul 3 00:00 2017-07-04_00-00.backstage_error.log -rw-r--r-- 1 root root 0 Jul 4 00:00 2017-07-05_00-00.backstage_access.log -rw-r--r-- 1 root root 0 Jul 4 00:00 2017-07-05_00-00.backstage_error.log -rw-r--r-- 1 root root 0 Jul 5 00:00 2017-07-06_00-00.backstage_access.log -rw-r--r-- 1 root root 0 Jul 5 00:00 2017-07-06_00-00.backstage_error.log [root@guaji01 ~] # find ./ -type f -name "*.log" -mtime +7|xarge rm -f #删除7天 |
find 查找与时间有关参数:
-atime n #n为数字,意义为在n天之前的【一天之内】被access过的档案;
-ctime n #n为数字,意义为在n天之前的【一天之内】内change过状态的档案
-mtime n #n 为数字,意思为在n天之前的【一天之内】被modification过的档案
-newer file #file 为一个存在的档案,意思是说,只要档案比file还要新,就会被列出来
1 | find ./ type f -name "*.log" -mtime +7| xargs rm -f |
6.调试系统服务时,希望能实时查看系统日志/var/log/messages的更新,如何做?
法一:
1 2 3 4 5 6 7 8 9 10 11 | [root@xcn ~] # tail -f /var/log/messages Jul 6 14:51:40 localhost yum[29341]: Installed: gnome-vfs2-devel-2.24.2-8.el6.x86_64 Jul 6 14:51:41 localhost yum[29341]: Installed: dmz-cursor-themes-0.4-4.el6.noarch Jul 6 14:51:41 localhost yum[29341]: Installed: system-gnome-theme-60.0.2-1.el6.noarch Jul 6 14:51:41 localhost yum[29341]: Installed: libgnome-2.28.0-11.el6.x86_64 Jul 6 14:51:41 localhost yum[29341]: Installed: libgnome-devel-2.28.0-11.el6.x86_64 Jul 6 14:51:41 localhost yum[29341]: Installed: libbonoboui-2.24.2-3.el6.x86_64 Jul 6 14:51:42 localhost yum[29341]: Installed: libbonoboui-devel-2.24.2-3.el6.x86_64 Jul 6 14:51:42 localhost yum[29341]: Installed: libgnomeui-2.24.1-4.el6.x86_64 Jul 6 14:51:42 localhost yum[29341]: Installed: libgnomeui-devel-2.24.1-4.el6.x86_64 Jul 6 14:51:43 localhost yum[29341]: Updated: glib2-2.28.8-9.el6.i686 |
法二:
1 2 3 4 5 6 7 8 9 10 11 | [root@xcn ~] # tail -F /var/log/messages Jul 6 14:51:40 localhost yum[29341]: Installed: gnome-vfs2-devel-2.24.2-8.el6.x86_64 Jul 6 14:51:41 localhost yum[29341]: Installed: dmz-cursor-themes-0.4-4.el6.noarch Jul 6 14:51:41 localhost yum[29341]: Installed: system-gnome-theme-60.0.2-1.el6.noarch Jul 6 14:51:41 localhost yum[29341]: Installed: libgnome-2.28.0-11.el6.x86_64 Jul 6 14:51:41 localhost yum[29341]: Installed: libgnome-devel-2.28.0-11.el6.x86_64 Jul 6 14:51:41 localhost yum[29341]: Installed: libbonoboui-2.24.2-3.el6.x86_64 Jul 6 14:51:42 localhost yum[29341]: Installed: libbonoboui-devel-2.24.2-3.el6.x86_64 Jul 6 14:51:42 localhost yum[29341]: Installed: libgnomeui-2.24.1-4.el6.x86_64 Jul 6 14:51:42 localhost yum[29341]: Installed: libgnomeui-devel-2.24.1-4.el6.x86_64 Jul 6 14:51:43 localhost yum[29341]: Updated: glib2-2.28.8-9.el6.i68 |
法三:
1 2 3 4 5 6 7 8 9 10 11 | [root@xcn ~] # tailf /var/log/messages Jul 6 14:51:40 localhost yum[29341]: Installed: gnome-vfs2-devel-2.24.2-8.el6.x86_64 Jul 6 14:51:41 localhost yum[29341]: Installed: dmz-cursor-themes-0.4-4.el6.noarch Jul 6 14:51:41 localhost yum[29341]: Installed: system-gnome-theme-60.0.2-1.el6.noarch Jul 6 14:51:41 localhost yum[29341]: Installed: libgnome-2.28.0-11.el6.x86_64 Jul 6 14:51:41 localhost yum[29341]: Installed: libgnome-devel-2.28.0-11.el6.x86_64 Jul 6 14:51:41 localhost yum[29341]: Installed: libbonoboui-2.24.2-3.el6.x86_64 Jul 6 14:51:42 localhost yum[29341]: Installed: libbonoboui-devel-2.24.2-3.el6.x86_64 Jul 6 14:51:42 localhost yum[29341]: Installed: libgnomeui-2.24.1-4.el6.x86_64 Jul 6 14:51:42 localhost yum[29341]: Installed: libgnomeui-devel-2.24.1-4.el6.x86_64 Jul 6 14:51:43 localhost yum[29341]: Updated: glib2-2.28.8-9.el6.i686 |
7.打印配置文件nginx.conf内容的行号及内容,该如何做?
法1:
1 2 3 4 5 6 7 8 9 10 11 | [root@guaji01 conf] # nl nginx.conf 1 user nginx; 2 worker_processes 4; 3 4 #pid /var/run/nginx.pid; 5 6 events { 7 worker_connections 5000; 8 #use epoll; 9 } .................... |
法2:
1 2 3 4 5 6 7 8 9 10 11 12 | [root@guaji01 conf] # cat -n nginx.conf 1 user nginx; 2 worker_processes 4; 3 4 #pid /var/run/nginx.pid; 5 6 events { 7 worker_connections 5000; 8 #use epoll; 9 } 10 ........................ |
法3:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | [root@guaji01 conf] # less -N nginx.conf 1 user nginx; 2 worker_processes 4; 3 4 #pid /var/run/nginx.pid; 5 6 events { 7 worker_connections 5000; 8 #use epoll; 9 } 10 11 http { 12 include mime.types; 13 default_type application /octet-stream ; 14 |
法4:vi 文件 然后执行:set nu, :set nonu 为取消行号
8.装完系统后,希望让网络文件共享服务NFS,仅在3级别上开机自启动,该如何做?
方法1:全部关掉然后开启需要的级别的服务
1 2 3 4 5 6 7 | [root@xcn ~] # chkconfig nfs off #默认2,3,4,5级别都是开启状态,所有需要先都关了。当然也可以chkconfig --level 245 nfs off [root@xcn ~] # chkconfig --list nfs nfs 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭 [root@xcn ~] # chkconfig --level 3 nfs on [root@xcn ~] # chkconfig --list nfs nfs 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:关闭 6:关闭 |
方法2:关闭不需要的级别的服务
1 2 3 4 5 | [root@xcn ~] # chkconfig --list nfs nfs 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 [root@xcn ~] # chkconfig --level 245 nfs off [root@xcn ~] # chkconfig --list nfs nfs 0:关闭 1:关闭 2:关闭 3:启用 4:关闭 5:关闭 6:关闭 |
12./etc/目录为Linux系统的默认的配置文件及服务启动命令的目录
请用tar打包/etc整个目录(打包及压缩)
请用tar打包/etc整个目录(打包及压缩,但需要排除/etc/services文件)
请把a点命令的压缩包,解压到/tmp指定目录下(最好只用tar 命令实现)
解答:
a:
1 2 3 4 5 6 7 | [root@xcn /] # tar zcvf etc.tar.gz ./etc/ -rw-r--r-- 1 root root 9948783 9月 24 04:12 etc. tar .gz z:压缩 c:创建 v :显示输出 f:文件ch |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | [root@xcn /] # tar tf etc.tar.gz #查看压缩包里的内容 etc/ etc /sysctl .conf etc /modprobe .d/ etc /modprobe .d /blacklist .conf etc /modprobe .d /dist .conf etc /modprobe .d /anaconda .conf etc /modprobe .d /openfwwf .conf etc /modprobe .d /dist-oss .conf etc /modprobe .d /dist-alsa .conf etc /gnupg/ etc /oddjobd .conf.d/ etc /oddjobd .conf.d /oddjobd-introspection .conf etc /oddjobd .conf.d /oddjobd-mkhomedir .conf etc /updatedb .conf etc /sudo .conf etc /mailcap etc /nanorc etc /fprintd .conf etc /printcap etc /rwtab |
13.已知如下命令结果:
1 2 3 | [root@xcn ~] # echo "I am xcn mysql is 995345781" >> xcn [root@xcn ~] # cat xcn I am xcn mysql is 995345781 |
现在需要从文件中过滤出"xcn"和"995345781"字符串,请给出命令
解答:
方法1:
1 2 3 4 | [root@xcn ~] # awk '{print $3 $6}' xcn xcn995345781 [root@xcn ~] # awk '{print $3 " " $6}' xcn xcn 995345781 |
方法2:
1 2 3 4 | [root@xcn ~] # cut -d" " -f3,6 xcn xcn 995345781 -d:指定分隔符 |
1 2 | [root@xcn ~] # cut -c 6-8 xcn xcn |
14.如何查看/etc/services文件的有多少行?
解答:
方法一:
1 2 | [root@xcn ~] # wc -l /etc/services 10774 /etc/services |
方法二:
1 2 | [root@xcn ~] # cat -n /etc/services |tail -1 10774 iqobject 48619 /udp # iqobje |
方法三:
1 2 | [root@xcn ~] # sed -n '$=' /etc/services 10774 |
方法四:
1 2 | [root@xcn ~] # awk '{print NR}' /etc/services|tail -1 10774 |
方法五:
1 2 | [root@xcn ~] # grep -n $ /etc/services|tail -1 10774:iqobject 48619 /udp # iqobject |
15.请执行命令取出Linux中eth1的IP地址
法1:
1 2 | [root@xcn ~] # ifconfig eth1|grep "inet addr"|cut -d ":" -f 2|cut -d " " -f 1 172.16.1.2 |
法2:
1 2 | [root@xcn ~] # ifconfig eth1|grep "inet addr:"|awk -F ":" '{print $2}'|awk '{print $1}' 172.16.1.2 |
法3:
1 2 | [root@xcn ~] # ifconfig eth1|grep "inet addr"|awk -F "[: ]" '{print $13}' 172.16.1.2 |
法4:
1 2 | [root@xcn ~] # ifconfig eth1|sed -n '/inet addr/p'|sed 's#^.*addr:##g'|sed 's#Bc.*$##g' 172.16.1.2 |
思路:
匹配需要的目标(获取的字符串如上文的ip)前的字符串一般用以..开头(^.*)来匹配开头,匹配的结尾写上实际的字符,如:"^.*addr:"表达式就匹配" inet addr:",而处理需要的目标后的内容一般在匹配的开头写上实际的字符,而结尾是用以...结尾(.*$)来匹配。如:Bcast:.*$部分表示匹配“Bcast:10.0.0.255 Mask:255.255.255.0”.
法5:
1 2 | [root@xcn ~] # ifconfig eth1|sed -n 's#^.*addr:\(.*\) Bcast.*$#\1#gp' 172.16.1.2 |
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
法1:
1 2 | [root@xcn ~] # stat xcn|sed -n '4p'|awk -F "[/(]" '{print $2}' 0644 |
法2:
1 2 | [root@xcn ~] # stat xcn|head -4|tail -1|awk -F "[/(]" '{print $2}' 0644 |
法3:
1 2 | [root@xcn ~] # stat xcn|sed -n 's#^.*s: (\([0-9].*\)/-r.*$#\1#gp' 0644 |
本文转自 baishuchao 51CTO博客,原文链接:http://blog.51cto.com/baishuchao/1945114
转载地址:http://lvnwl.baihongyu.com/