第十天-linux命令及基础手把手实战
总结技巧:
1、可以通过案例来总结技术点
2、可以通过画图,更佳形象理解记忆
下面通过例题,对命令加深理解
1、如何过滤出当前目录下的所有一级目录,不包括目录下的子目录
分析:1、ls -l结果中以d 开头的就是目录
2、通过给目录加标示,然后通过滤标示来过滤出目录
3、通过find 直接查找指定文件类型的文件
xiaorui@xiaorui:~$ ls -l |grep ^d #^ 的意思是以什么开头的 drwxrwxr-x 2 xiaorui xiaorui 4096 11月 11 23:11 script drwxrwxr-x 2 xiaorui xiaorui 4096 11月 16 22:46 test drwxrwxr-x 4 xiaorui xiaorui 4096 10月 9 19:33 VirtualBox VMs drwxrwxr-x 2 xiaorui xiaorui 4096 10月 10 19:38 镜像文件 drwxrwxr-x 2 xiaorui xiaorui 4096 10月 15 20:25 软件包 drwxr-xr-x 10 xiaorui xiaorui 4096 10月 22 21:40 文档 drwxr-xr-x 10 xiaorui xiaorui 4096 11月 18 23:09 下载 drwxr-xr-x 3 xiaorui xiaorui 4096 11月 20 21:08 桌面
xiaorui@xiaorui:~$ ls -l|sed -n /^d/p #-n 的意思是取消默认输出 p是打印 drwxrwxr-x 2 xiaorui xiaorui 4096 11月 11 23:11 script drwxrwxr-x 2 xiaorui xiaorui 4096 11月 16 22:46 test drwxrwxr-x 4 xiaorui xiaorui 4096 10月 9 19:33 VirtualBox VMs drwxrwxr-x 2 xiaorui xiaorui 4096 10月 10 19:38 镜像文件 drwxrwxr-x 2 xiaorui xiaorui 4096 10月 15 20:25 软件包 drwxr-xr-x 10 xiaorui xiaorui 4096 10月 22 21:40 文档 drwxr-xr-x 10 xiaorui xiaorui 4096 11月 18 23:09 下载 drwxr-xr-x 3 xiaorui xiaorui 4096 11月 20 21:08 桌面
xiaorui@xiaorui:~$ ls -ld */ drwxrwxr-x 2 xiaorui xiaorui 4096 11月 11 23:11 script/ drwxrwxr-x 2 xiaorui xiaorui 4096 11月 16 22:46 test/ drwxrwxr-x 4 xiaorui xiaorui 4096 10月 9 19:33 VirtualBox VMs/ drwxrwxr-x 2 xiaorui xiaorui 4096 10月 10 19:38 镜像文件/ drwxrwxr-x 2 xiaorui xiaorui 4096 10月 15 20:25 软件包/ drwxr-xr-x 10 xiaorui xiaorui 4096 10月 22 21:40 文档/ drwxr-xr-x 10 xiaorui xiaorui 4096 11月 18 23:09 下载/ drwxr-xr-x 3 xiaorui xiaorui 4096 11月 20 21:08 桌面/
xiaorui@xiaorui:~$ ls -F|grep /$ #$ 是以什么结尾的 -F append indicator (one of */=>@|) to entries script/ test/ VirtualBox VMs/ 镜像文件/ 软件包/ 文档/ 下载/ 桌面/ xiaorui@xiaorui:~$ ls -p |grep / #-p 是给目录添加标示 append / indicator to directories script/ test/ VirtualBox VMs/ 镜像文件/ 软件包/ 文档/ 下载/ 桌面/
xiaorui@xiaorui:~$ ls -l|awk '/^d/' drwxrwxr-x 2 xiaorui xiaorui 4096 11月 11 23:11 script drwxrwxr-x 2 xiaorui xiaorui 4096 11月 16 22:46 test drwxrwxr-x 4 xiaorui xiaorui 4096 10月 9 19:33 VirtualBox VMs drwxrwxr-x 2 xiaorui xiaorui 4096 10月 10 19:38 镜像文件 drwxrwxr-x 2 xiaorui xiaorui 4096 10月 15 20:25 软件包 drwxr-xr-x 10 xiaorui xiaorui 4096 10月 22 21:40 文档 drwxr-xr-x 10 xiaorui xiaorui 4096 11月 18 23:09 下载 drwxr-xr-x 3 xiaorui xiaorui 4096 11月 20 21:08 桌面
xiaorui@xiaorui:~$ find ./ -maxdepth 1 -type d #-maxdepth 指定查找的深度
xiaorui@xiaorui:~$ tree -Ld 1 #-L level Max display depth of the directory tree. . ├── script ├── test ├── VirtualBox VMs ├── 镜像文件 ├── 软件包 ├── 文档 ├── 下载 └── 桌面
小结:linux三剑客grep、sed、awk,他们都有过滤的功能,grep最擅长过滤,awk擅长处理列,sed擅长删除、修改、替换、添加
2、一个目录中有很多文件(ls 查看时有好多屏,)想最快速度查看最近更新的文件
xiaorui@xiaorui:~$ ls -lrt /etc/ #执行这个命令之后最新的文件会显示在最下面
#以长格式按照修改时间倒序排列文件和目录,这样最近创建或修改的文件或目录就在窗口最下面了
#-r --reverse 当排序时,翻转排序
#-t sort by modification time, newest first
3、软链接
ln -s /application/apache2.2.7/ /application/apache
4、删除3天前的日志
find ./ -type f -name "*.log" -mtime +3|xargs rm -f #方法一
find ./ -type f -name "*.log" -mtime +3 -exec rm -f {} \; #方法二
find ./ -type f -name "*.log" -mtime +3 -delete #方法三
5、调试系统服务时,希望能够实时查看系统日志/var/log/message的更新
tail -f /var/log/messages #方法一 tailf /var/og/messages #方法二 tail -F /var/log/messages #方法三
6、打印配置文件nginx.conf内容显示行号及内容(下面以/etc/passwd为例)
方法一:
xiaorui@xiaorui:~$ grep -n . /etc/passwd 1:root:x:0:0:root:/root:/bin/bash 2:daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin 3:bin:x:2:2:bin:/bin:/usr/sbin/nologin 4:sys:x:3:3:sys:/dev:/usr/sbin/nologin 5:sync:x:4:65534:sync:/bin:/bin/sync 6:games:x:5:60:games:/usr/games:/usr/sbin/nologin 7:man:x:6:12:man:/var/cache/man:/usr/sbin/nologin 8:lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin 方法二: xiaorui@xiaorui:~$ nl /etc/passwd 1 root:x:0:0:root:/root:/bin/bash 2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin 3 bin:x:2:2:bin:/bin:/usr/sbin/nologin 4 sys:x:3:3:sys:/dev:/usr/sbin/nologin 5 sync:x:4:65534:sync:/bin:/bin/sync 6 games:x:5:60:games:/usr/games:/usr/sbin/nologin 7 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin 方法三: xiaorui@xiaorui:~$ cat -n /etc/passwd 1 root:x:0:0:root:/root:/bin/bash 2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin 3 bin:x:2:2:bin:/bin:/usr/sbin/nologin 4 sys:x:3:3:sys:/dev:/usr/sbin/nologin 5 sync:x:4:65534:sync:/bin:/bin/sync 6 games:x:5:60:games:/usr/games:/usr/sbin/nologin 7 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin 方法四: xiaorui@xiaorui:~$ less -N /etc/passwd 1 root:x:0:0:root:/root:/bin/bash 2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin 3 bin:x:2:2:bin:/bin:/usr/sbin/nologin 4 sys:x:3:3:sys:/dev:/usr/sbin/nologin 5 sync:x:4:65534:sync:/bin:/bin/sync 6 games:x:5:60:games:/usr/games:/usr/sbin/nologin 7 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
7、装完系统后,希望让网络文件共享服务NFS,仅在3级别上开机启动
方法一:chkconfig nfs off
chkconfig --level 3 nfs on
方法二:chkconfig --level 245 nfs off
方法三:rm -f /etc/rc.d/rc3.d/S55sshd
ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/K25sshd
8、如何查看/etc/services文件有多少行?
xiaorui@xiaorui:~/test$ wc -l /etc/services 612 /etc/services xiaorui@xiaorui:~/test$ cat -n /etc/services |tail -1 612 # Local services xiaorui@xiaorui:~/test$ sed -n '$=' /etc/services 612 xiaorui@xiaorui:~/test$ awk '{print NR}' /etc/services |tail -1 612 xiaorui@xiaorui:~/test$ grep -n $ /etc/services |tail -1 612:# Local services
9、取出一行中的两个字符串
xiaorui@xiaorui:~/test$ cat xiaorui.txt I am xiaorui myqq is 1126785053
方法一: xiaorui@xiaorui:~/test$ awk '{print $3" "$6}' xiaorui.txt xiaorui 1126785053
方法二: xiaorui@xiaorui:~/test$ cut -d" " -f3,6 xiaorui.txt xiaorui 1126785053 加强版: xiaorui@xiaorui:~/test$ cat xiaorui.txt I am xiaorui,myqq is 1126785053
方法三: xiaorui@xiaorui:~/test$ sed 's#,# #g' xiaorui.txt |awk '{print $3" "$6}' xiaorui 1126785053 方法四: xiaorui@xiaorui:~/test$ cut -d" " -f3,6 xiaorui.txt #-d指定分隔符 xiaorui 1126785053
方法五: xiaorui@xiaorui:~/test$ cut -c 6-12,20- xiaorui.txt #-c指定字符 xiaoruis 1126785053
方法六: xiaorui@xiaorui:~/test$ awk -F '[ ,]' '{print $3" " $6}' xiaorui.txt #-F []可以指定“空格和逗号”都为分隔符, xiaorui 1126785053
10、去掉文件中的注释行和空行显示
xiaorui@xiaorui:~$ grep -v ^# /etc/ssh/ssh_config |grep -v ^$ Host * SendEnv LANG LC_* HashKnownHosts yes GSSAPIAuthentication yes GSSAPIDelegateCredentials no ----------------------------------------------------------------------------------------- xiaorui@xiaorui:~$ grep -vE "^#|^$" /etc/ssh/ssh_config Host * SendEnv LANG LC_* HashKnownHosts yes GSSAPIAuthentication yes GSSAPIDelegateCredentials no ----------------------------------------------------------------------------------------- xiaorui@xiaorui:~$ egrep -v "^#|^$" /etc/ssh/ssh_config Host * SendEnv LANG LC_* HashKnownHosts yes GSSAPIAuthentication yes GSSAPIDelegateCredentials no