如何过滤出已知当前目录下oldboy中的所有一级目录

第1章 linux启动过程
1.1 linux启动过程
(1) 开机自检(BIOS)内存cup是否有问题(硬件检查)
(2) MBR引导
(3) GRUB菜单(选择不同的内核)
(4) 加载内核(kernel)
(5) 运行init进程(linux里面的第一个进程,初始化过程)
(6) 读取/etc/inittab配置文件(运行级别配置文件)
(7) 执行/etc/rc.d/rc.sysinit脚本(系统初始化脚本,设置主机名,设置IP地址)
(8) 执行/etc/rc.d/rc脚本(根据系统的云心级别,再开机的时候启动不同的软件)

  1. PATH
    PATH 存放的是linux下命令的路径(位置)
    [[email protected] ~]# echo $PATH
    /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

1.2 linux执行命令过程
1.是否是别名
2.在PATH中找命令是否存在
1).提示
command not found
2).执行

小结:
1.linux启动过程
2.PATH作用
PS1 LANG PATH (三个环境变量)
3.linux执行命令过程
1.3 题1过滤 一级目录
##.1 如何过滤出已知当前目录下oldboy中的所有一级目录(提示:不包含oldboy目录下面目录的子目录及隐藏目录,即只能是第一级目录)?

创建环境
mkdir /oldboy -p
cd /oldboy
mkdir ext/oldboy test xiaodong xiaofan xingfujie -p
touch jeacen oldboy wodi.gz yingsui.gz

1.3.1 方法1-tree
[[email protected] /oldboy]# tree -dL 1
.
├── ext
├── test
├── xiaodong
├── xiaofan
└── xingfujie

5 directories

#-d 只显示目录
#-L level 最多显示多少层

1.3.2 方法2-find
[[email protected] /oldboy]# find -maxdepth 1 -type d
.
./xiaodong
./xiaofan
./test
./ext
./xingfujie

#-maxdepth 最大的深度 最多显示多少层
1.3.3 方法3-find
[[email protected] /oldboy]# find -maxdepth 1 -type d
.
./xiaodong
./xiaofan
./test
./ext
./xingfujie
查找点的目录
[[email protected] /oldboy]# find -maxdepth 1 -type d -name "."
.
不显示带点的目录,find命令取反 find -maxdepth 1 -type d ! -name "."
[[email protected] /oldboy]# find -maxdepth 1 -type d ! -name "."
./xiaodong
./xiaofan
./test
./ext
./xingfujie
#! 排除 取反 非

1.3.4 方法4 d开头的
[[email protected] /oldboy]# ll |grep "^d"
drwxr-xr-x 3 root root 4096 Jul 19 23:59 ext
drwxr-xr-x. 2 root root 4096 Jul 16 19:24 test
drwxr-xr-x 2 root root 4096 Jul 19 23:59 xiaodong
drwxr-xr-x 2 root root 4096 Jul 19 23:59 xiaofan
drwxr-xr-x 2 root root 4096 Jul 19 23:59 xingfujie
[[email protected] /oldboy]# #^ 以....开头的行 三剑客使用 正则表达式

1.3.5 方法5 第2列大于1
[[email protected] /oldboy]# ll |awk ‘$2>1‘
total 40
drwxr-xr-x 3 root root 4096 Jul 19 23:59 ext
drwxr-xr-x. 2 root root 4096 Jul 16 19:24 test
drwxr-xr-x 2 root root 4096 Jul 19 23:59 xiaodong
drwxr-xr-x 2 root root 4096 Jul 19 23:59 xiaofan
drwxr-xr-x 2 root root 4096 Jul 19 23:59 xingfujie
1.3.6 方法6- ls
[[email protected] /oldboy]# ls –F 不同类型的文件 加上不同的标记 目录/
alex.txt jeacen oldboy.txt test.sh t.sh.bak xiaodong/ xingfujie/
ext/ oldboy test/ t.sh wodi.gz xiaofan/ yingsui.gz
[[email protected] /oldboy]# #-F 不同类型的文件 加上不同的标记 目录/
[[email protected] /oldboy]# ls -F |grep "/"
ext/
test/
xiaodong/
xiaofan/
xingfujie/

[[email protected] /oldboy]# ls -ld */
drwxr-xr-x 3 root root 4096 Jul 19 23:59 ext/
drwxr-xr-x. 2 root root 4096 Jul 16 19:24 test/
drwxr-xr-x 2 root root 4096 Jul 19 23:59 xiaodong/
drwxr-xr-x 2 root root 4096 Jul 19 23:59 xiaofan/
drwxr-xr-x 2 root root 4096 Jul 19 23:59 xingfujie/

1.4 小结:
1.tree find
2.grep awk
3.ls
1.5 题1 压缩解压
1.6 经典故障
tar命令经典故障 Removing leading `/‘ from member names

创建压缩包都见过这个提示吧?
[[email protected] /oldboy]# tar zcf /tmp/etc.tar.gz /etc/
tar: Removing leading `/‘ from member names
什么意思呢?
背后过程:
打包压缩过程中 文件或目录 绝对路径---->相对路径
打包的时候:
/etc/host
/etc/profile
压缩包中样子
etc/host
etc/profile

这个提示原因:
防止解压的时候覆盖源文件。

#12 /etc/目录为linux系统的默认的配置文件及服务启动命令的目录
a.请用tar打包/etc整个目录(打包及压缩)。
c.请把a点命令的压缩包,解压到/tmp指定目录下(最好只用tar命令实现)。
b.请用tar打包/etc整个目录(打包及压缩,但需要排除/etc/services文件)。

windows 压缩 winrar/好压/2345压缩
linux 打包压缩 tar

1.7 #创建压缩包
tar zcf /tmp/etc.tar.gz /etc/

tar zcvf /tmp/etc.tar.gz /etc/
压缩之后的放在那里 目标

#z gzip 通过gzip 软件压缩
#c create 创建包
#v verbose 显示过程
#f file 指定文件

1.7.1 #查看压缩包内容
tar ztf /tmp/etc.tar.gz
#t list 显示压缩包内容

#解压
tar etc.tar.gz 解压 zxf z可以省略不写
#x extract 解压
压缩
tar zcf
查看
tar tf

解压
tar xf
显示压缩包信息
[[email protected] /tmp]# ll /tmp/etc.tar.gz
-rw-r--r-- 1 root root 9734648 Jul 20 01:41 /tmp/etc.tar.gz
#解压到/opt 解压到指定位置
[[email protected] /tmp]# tar xf /tmp/etc.tar.gz -C /opt/
-C 解压到指定位置
[[email protected] /tmp]# ll /opt/
total 12
drwxr-xr-x. 2 root root 4096 Jul 11 01:16 data
drwxr-xr-x 78 root root 4096 Jul 19 20:43 etc
drwxr-xr-x. 2 root root 4096 Mar 26 2015 rh

b.请用tar打包/etc整个目录(打包及压缩,但需要排除/etc/services文件)。
1.7.2 排除/etc/services文件
[[email protected] /tmp]# tar zcf /tmp/etc-pai.tar.gz /etc/ --exclude /etc/services
tar: Removing leading `/‘ from member names

排除后
[[email protected] /tmp]# tar tf /tmp/etc-pai.tar.gz |grep services
etc/init/readahead-disable-services.conf
排除前
[[email protected] /tmp]# tar tf /tmp/etc.tar.gz |grep services
etc/init/readahead-disable-services.conf
etc/services

tar zcf /tmp/etc-pai.tar.gz /etc/ --exclude /etc/services
--exclude-from name.txt 排除文件夹和文件

name.txt
oldboy.txt
/oldboy/oldboy

打包压缩:
1.创建
2.查看
3.解压
4.解压到指定位置
5.排除(了解)

#2 假如当前目录是

cd - 进入到上一次所在的位置

An argument of - is equivalent to $OLDPWD.

#cd - === cd $OLDPWD

cd .
cp/mv
cd ..
cd ~ ==== cd

#3.
[[email protected] /tmp]# cd /etc/
[[email protected] /etc]# touch oldboy.txt

ls -lrt
#-r 逆序
#-t 按照修改时间

#6 调试系统服务时,希望能实时查看系统日志/var/log/secure的更新,如何做?

-f
-F == -f --try 如果文件不存在 会不断重试

tail -f /var/log/secure
tailf /var/log/secure

1.8 题3打印配置文件nginx.conf
#7 打印配置文件nginx.conf内容的行号及内容,该如何做?

[[email protected] /oldboy]# #{1..5} 生成序列
[[email protected] /oldboy]# echo {1..10}
1 2 3 4 5 6 7 8 9 10
[[email protected] /oldboy]# echo {01..10}
01 02 03 04 05 06 07 08 09 10
[[email protected] /oldboy]# echo stu{01..10} |xargs -n1
stu01
stu02
stu03
stu04
stu05
stu06
stu07
stu08
stu09
stu10
[[email protected] /oldboy]# echo stu{01..10} |xargs -n1 >nginx.conf
生成一列 然后追加到nginx.conf文件里面

1.8.1 方法1 cat
[[email protected] /oldboy]# cat -n nginx.conf -n显示序号
1 stu01
2 stu02
3 stu03
4 stu04
5 stu05
6 stu06
7 stu07
8 stu08
9 stu09
10 stu10

1.8.2 方法2 vim
vim nginx.conf
:set nu #显示行号
#nu === number

:set nonu #取消显示行号
1.8.3 方法3 awk
显示某一列
[[email protected] ~]# awk ‘{print NR,$1}‘ /oldboy/nginx.conf
1 stu01
2 stu02
3 stu03
4 stu04
5 stu05
6 stu06
7 stu07
8 stu08
9 stu09
10 stu10

NR 行号
$1 第1列
$2 第2列
$0 一整行内容

显示/proc/mounts 文件的行号和第1列和第3列
awk ‘{print NR,$1,$3}‘ /proc/mounts

1.8.4 方法4 grep -n

grep -n "." nginx.conf

. 正则表达式 任意一个字符
-n 显示行号

1.8.5 方法5 nl number of lines
nl nginx.conf

1.8.6 方法6 sed
sed = nginx.conf
sed ‘=‘ nginx.conf |xargs -n2
[[email protected] ~]# sed ‘=‘ nginx.conf
[[email protected] ~]# sed “=” nginx.conf
=显示行号
小结:
1.cat -n /vim (必会)
2.grep awk (必会)
3.nl sed
1.9 题4
已知nginx服务的访问日志按天记录在服务器本地目录/app/logs下,由于磁盘空间紧张,现在要求只能保留最近7天访问日志!请问如何解决? 请给出解决办法或配置或处理命令。

删除7天之前的日志

mkdir -p /app/logs
cd /app/logs
for time in {01..20};do date -s "201805$time"; touch accesswww$(date +%F).log ;done
date -s "20180520 00:00:00"

date 显示时间 修改时间
find
-mtime modify time 修改时间

[[email protected] /app/logs]# find -mtime +7|xargs ls -l
-rw-r--r-- 1 root root 0 May 1 00:00 ./access_www_2018-05-01.log
-rw-r--r-- 1 root root 0 May 2 00:00 ./access_www_2018-05-02.log
-rw-r--r-- 1 root root 0 May 3 00:00 ./access_www_2018-05-03.log
-rw-r--r-- 1 root root 0 May 4 00:00 ./access_www_2018-05-04.log
-rw-r--r-- 1 root root 0 May 5 00:00 ./access_www_2018-05-05.log
-rw-r--r-- 1 root root 0 May 6 00:00 ./access_www_2018-05-06.log
-rw-r--r-- 1 root root 0 May 7 00:00 ./access_www_2018-05-07.log
-rw-r--r-- 1 root root 0 May 8 00:00 ./access_www_2018-05-08.log
-rw-r--r-- 1 root root 0 May 9 00:00 ./access_www_2018-05-09.log
-rw-r--r-- 1 root root 0 May 10 00:00 ./access_www_2018-05-10.log
-rw-r--r-- 1 root root 0 May 11 00:00 ./access_www_2018-05-11.log
-rw-r--r-- 1 root root 0 May 12 00:00 ./access_www_2018-05-12.log

实例1-1 找出/app/logs 下面以.log结尾的7天之前的文件 显示详细信息(ls -l) (3种方法)

find /app/logs/ -type f -name "*.log" -mtime +7

方法1
find /app/logs/ -type f -name "*.log" -mtime +7|xargs ls -l

方法2
ls -l $(find /app/logs/ -type f -name ".log" -mtime +7)
ls -l `find /app/logs/ -type f -name "
.log" -mtime +7`

方法3
find /app/logs/ -type f -name "*.log" -mtime +7 -exec ls -l {} \;

实例1-2 8 linux系统运行级别一般为0-6,请分别写出每个级别的含义。

1) 0-6
2)
runlevel
3)
init

第2章 题5
2.1 iptable
9 装完系统后,希望让网络文件共享服务NFS(iptables),仅在3级别上开机自启动,该如何做?
让iptables开机自启动?

[[email protected] ~]# chkconfig --level 3 iptables on
[[email protected] ~]# chkconfig |grep ipt
iptables 0:off 1:off 2:off 3:on 4:off 5:off 6:off

第3章 题6
3.1 乱码字符集
linux系统中查看中文,但是乱码了,请问如何解决乱码问题?

乱码原因:字符集不同
如何排查: 查看字符集是否相同
如何解决:修改字符集

第4章 题7
4.1 已知如下命令及结果:
[[email protected] ~]$ mkdir /oldboy ; echo "I am oldboy,myqq is 31333741">/oldboy/oldboy.txt
[[email protected] ~]$ cat oldboy.txt
I am oldboy,myqq is 31333741
a.现在需要从文件中过滤出“oldboy”和“31333741”字符串,请给出命令.
b.如果需要从文件中过滤出“oldboy,31333741”字符串,请再给出命令.
a.现在需要从文件中过滤出“oldboy”和“31333741”字符串,请给出命令.

4.2 方法1 sed+awk
[[email protected] /oldboy]# sed ‘s#,# #g‘ oldboy.txt
I am oldboy myqq is 31333741
[[email protected] /oldboy]# sed ‘s#,# #g‘ oldboy.txt |awk ‘{print $3,$6}‘
oldboy 31333741

4.3 方法2 tr+awk
[[email protected] /oldboy]# tr "," " " <oldboy.txt
I am oldboy myqq is 31333741
[[email protected] /oldboy]# tr "," " " <oldboy.txt |awk ‘{print $3,$6}‘
oldboy 31333741
tr sed命令阉割版
[[email protected] /oldboy]# echo 123123|tr "123" "abc"
abcabc
[[email protected] /oldboy]# echo 112233|tr "123" "abc"
aabbcc
[[email protected] /oldboy]# #tr 1对1的替换

4.4 方法3 tr+cut
[[email protected] /oldboy]# cut -d " " -f2,3,4 oldboy.txt
am oldboy,myqq is
[[email protected] /oldboy]# cut -d " " -f2-5 oldboy.txt
am oldboy,myqq is 31333741
-d 指定分隔符(菜刀)
-f 某一列

a.现在需要从文件中过滤出“oldboy”和“31333741”字符串,请给出命令.

[[email protected] /oldboy]# tr "," " " <oldboy.txt
I am oldboy myqq is 31333741
[[email protected] /oldboy]# tr "," " " <oldboy.txt |cut -d " " -f3,6
oldboy 31333741
4.5 方法4 awk
[[email protected] /oldboy]# cat oldboy.txt
I am oldboy,myqq is 31333741
[[email protected] /oldboy]# awk -F "," ‘{print $2}‘ oldboy.txt
myqq is 31333741
#-F 指定分隔符(菜刀)
#-F指定多个分隔符
[[email protected] /oldboy]# awk -F "[, ]" ‘{print $3}‘ oldboy.txt
oldboy

4.6 方法5 sed sed
[[email protected] /oldboy]# ca时t oldboy.txt
I am oldboy,myqq is 31333741
[[email protected] /oldboy]# sed ‘s#I am ##g‘ oldboy.txt
oldboy,myqq is 31333741
[[email protected] /oldboy]# sed ‘s#I am ##g‘ oldboy.txt |sed ‘s#,myqq is##g‘
oldboy 31333741

4.6.1 小结:
1.sed /tr + awk /cut 这两个必须会
2.awk

4.6.2 如果需要从文件中过滤出“oldboy,31333741”字符串,请再给出命令.

[[email protected] /oldboy]# awk -F"[ ,]" ‘{print $3"_"$NF}‘ oldboy.txt
oldboy_31333741
[[email protected] /oldboy]# awk -F"[ ,]" ‘{print $3":)"$NF}‘ oldboy.txt
oldboy:)31333741
[[email protected] /oldboy]# awk -F"[ ,]" ‘{print $3","$NF}‘ oldboy.txt
oldboy,31333741

4.7 显示 /etc/passwd 第1列和第3列内容 要求格式显示为:
USER:第1列内容 UID:第3列内容
USER:第1列内容 UID:第3列内容
USER:第1列内容 UID:第3列内容
USER:第1列内容 UID:第3列内容
USER:第1列内容 UID:第3列内容

[[email protected] /oldboy]# awk -F":" ‘{print "USER:"$1,"UID:"$3}‘ /etc/passwd
USER:root UID:0
USER:bin UID:1
USER:daemon UID:2
USER:adm UID:3
USER:lp UID:4
USER:sync UID:5

[[email protected] /oldboy]# awk -F":" ‘{print "USER:"$1,"UID:"$3}‘ /etc/passwd|column -t
USER:root UID:0
USER:bin UID:1
USER:daemon UID:2
USER:adm UID:3
USER:lp UID:4

第5章 题8
14 如何查看/etc/services文件的有多少行?
显示行号 只保留最后一行
[[email protected] /oldboy]# wc /etc/services
10774 58108 641020 /etc/services
[[email protected] /oldboy]# wc -l /etc/services
10774 /etc/services

5.1 统计总数
统计出 /etc目录下面 以.conf结尾的文件的数量

|传递的是文字
|xargs 传递的是文件名

[[email protected] /oldboy]# find /etc/ -type f -name "*.conf" | wc -l
195

第6章 题9
15 过滤出/etc/services 文件包含3306或1521两数字所在的行的内容。

egrep "3306或1521" /etc/services

egrep "3306|1521" /etc/services
mysql 3306/tcp # MySQL
mysql 3306/udp # MySQL
ncube-lm 1521/tcp # nCube License Manager
ncube-lm 1521/udp # nCube License Manager

| 扩展正则表达式 egrep == grep -E

6.1 总结:
1.Linux启动流程
2.PATH作用
3.查找 grep awk
4.打包压缩 :创建 查看 解压 解压到xxx
5.基础命令
6.显示行号

第7章 vmware 经典故障:
该虚拟机似乎正在使用中。

如果该虚拟机未在使用,请按“获取所有权(T)”按钮获取它的所有权。否则,请按“取消(C)”按钮以防损坏。

配置文件: G:\VMware\模板机01\老男孩教育50期-模板机01.vmx。

方法1.重启计算机
方法2.通过everything 搜索 .lck 删除 虚拟机名称.lck 目录 重启vmware

原文地址:http://blog.51cto.com/13855748/2149637

时间: 2024-11-29 03:29:03

如何过滤出已知当前目录下oldboy中的所有一级目录的相关文章

数据结构已知先序和中序画出该树

这道题目很经典,具体如下: 已知遍历结果如下,试画出对应的二叉树: 前序:A B C E H F I J D G K 中序:A H E C I F J B D K G 解题要点: 1.前序.中序.后序--都针对中间那个节点而言(根节点也是中间的节点). 前序,指先遍历中间节点,然后左,然后右. 中序,指左--中--右. 后序,指右--中--左. 2.根据两种不同序列的遍历方法,便可画出二叉树. 解题答案如下:(对照着看会好理解这道题目一些的) 解题思路: 1.前序中序都首先找出A,推断出:A没有

数据结构已知后序和中序画出该树

已知二叉树后序遍历序列是DBCEFGHA,中序遍历序列EDCBAHFG,它的前序遍历的序列是?麻烦再画下这二叉树. 后续遍历的顺序是左右根,中序遍历的顺序是左根右 这点应该懂吧 由后续访问序列可以看出最后一个被访问的必定是这个树的根 而中序遍历的序列可以看出,一棵树当根确定后,在根前面被访问的是他的左子树,后边的是他的右子树元素 弄懂了上边两点就开始做题吧 由后序遍历序列是DBCEFGHA 为了方便,我写小写字母了啊 可以看出整棵树的根节点是a 再看中序遍历序列EDCBAHFG a是根节点 左子

已知二叉树前序和中序,求二叉树。

如题,给出二叉树的前序遍历和中序遍历,怎么还原二叉树. 假如一个二叉树的前序遍历为:12453,中序遍历为:42513.由于这颗二叉树比较简单,可以用 凑 的方法很容易凑出符合题意的二叉树(没有写这篇文章之前,我都是用这种笨方法的..尴尬). 即如图: 那么有没有一个标准的方法来推导呢?当然是有的! 我们来分析一下这棵树的前序和中序. 先看前序:12453,第一个字符"1"肯定是整棵树root节点,这不用解释.至于第二个字符以及往后的字符就没有什么可用的信息了. 再看中序:42513,

二叉树遍历 ——已知后序,中序求层序 A1020.(25)

若直接DFS递归求解,会栈溢出 #include <cstdio> #include <cstring> #include <queue> #include <algorithm> using namespace std; const int maxn=50; struct node{ int data; node* lchild; node* rchild; }; int pre[maxn],in[maxn],post[maxn];//先序,中序,后序 i

已知二叉树前、中序遍历,求后序 / 已知二叉树中、后序遍历,求前序

void solve(int start,int end,int root) { // 前序和中序 -> 后序 // 每次调用solve()函数,传入pre-order的start,end,root if (start > end) // 递归边界 return; int i = start; while (i < end && in.at(i) != pre.at(root)) // 找到左右子树的分割点 i++; solve(start, i - 1, root +

九度1078(二叉树已知先序和中序求后序)

题目链接:点击打开链接 解题思路: 很不错的一道题.用递归的方法求解.每次对两个序列进行递归,求得左子树的先序/中序,右子树的先序/中序.把树建好后调用递归输出后序即可 完整代码: #include <iostream> #include <cstdio> #include <string> using namespace std; string fir , mid; typedef struct Node { char ch; struct Node *l; stru

数据结构——已知先序中序求后序,已知中序后序求先序

总结下二叉树的已知两种遍历方式求第三种遍历顺序的方法,已知先序和中序遍历或者后序与中序遍历后二叉树是唯一确定的,下面介绍怎么求出第三种遍历顺序. 先序遍历顺序为:根结点——左子结点——右子结点,中序遍历为:左子结点——根结点——右子结点,我们注意到,先序遍历的第一个元素就是二叉树根结点,我们在中序遍历中以该元素分为左右两部分,则左边为左子树,右边为右子树,递归即可还原二叉树,这个过程中可直接输出后序遍历的顺序.同理,可以用后序与中序还原出先序遍历的顺序. 代码及测试数据如下: 1 #includ

二叉树系列(二):已知中序遍历序列和后序遍历序列,求先序遍历序列

前面已经介绍过三种遍历方法的规则,为了大家看着方便,这里我们在重新介绍一遍: 1.先序遍历 (1)访问根结点: (2)先序遍历左子树: (3)先序遍历右子树.  2.中序遍历 (1)中序遍历左子树: (2)访问根结点: (3)中序遍历右子树. 3.后序遍历 (1)后序遍历左子树: (2)后序遍历右子树: (3)访问根结点. 知道了二叉树的三种遍历规则,只要有中序遍历序列和前后任一种遍历序列,我们就可以求出第三种遍历序列,今天我们研究的是已知中序和后序遍历序列,求先序遍历序列. 已知该二叉树的中序

二叉树系列(一):已知先序遍历序列和中序遍历序列,求后序遍历序列

首先介绍一下三种遍历顺序的操作方法: 1.先序遍历 (1)访问根结点: (2)先序遍历左子树: (3)先序遍历右子树.  2.中序遍历 (1)中序遍历左子树: (2)访问根结点: (3)中序遍历右子树. 3.后序遍历 (1)后序遍历左子树: (2)后序遍历右子树: (3)访问根结点. 知道了二叉树的三种遍历规则,只要有中序遍历序列和前后任一种遍历序列,我们就可以求出第三种遍历序列,今天我们研究的是已知先序和中序遍历序列,求后序遍历序列. 已知该二叉树的先序遍历序列为:A-B-D-E-G-C-F,