s5-6 Linux 标准输出 系统优化 目录结构

时间:2024-01-02 17:32:26

标准输出

重定向符号

#>   1>    标准输出重定向  先把文件的内容清空   把内容放在文件的最后一行

#>>  1>>   追加重定向      把内容放在文件的最后一行
1 标准输出 执行正确的内容才会通过漏斗
2>        标准错误重定向
2>>       错误追加重定向
[root@lewen ~]# eho hello >>/data/lewen.txt
[root@lewen ~]# cat /data/lewen.txt
hello lewen
错误
-bash: eho: command not found
[root@lewen ~]# eho hello >>/data/lewen.txt
[root@lewen ~]# cat /data/lewen.txt
hello lewen
错误
-bash: eho: command not found
-bash: eho: command not found eho hello >>/data/lewen.txt >>/data/lewen.txt
eho hello >>/data/lewen.txt >&
把错误的信息放入到对的信息中 对的错误在一起 < 输入重定向
echo >/data/num.txt
[root@lewen ~]# cat /data/num.txt [root@lewen ~]# xargs -n2 </data/num.txt << 追加输入重定向
cat >>/data/lewen.txt<<EOF
I
am
studying
linux
EOF

find命令

[root@lewen tmp]# find /root/ -type f -name "lewen.txt"
/root/data/lewen.txt
[root@lewen tmp]# #find /root/ -type f -name "lewen.txt"
[root@lewen tmp]# #find 在哪里找 找什么类型的 找什么名字 -type 找什么类型的
f file 文件
d directory 目录

管道 |

[root@lewen tmp]# find /root/ -type f -name "lewen.txt"
/root/data/lewen.txt
[root@lewen tmp]#
[root@lewen tmp]#
[root@lewen tmp]# find /root/ -type f -name "lewen.txt"|xargs ls -l
-rw-r--r--. root root Sep : /root/data/lewen.txt 找出以.txt结尾的文件
[root@lewen tmp]# find /root/ -type f -name "*.txt"
/root/data/lewen.txt
/root/data/num.txt
  • 已知文件test.txt内容

lewen
test
lidao
请给出输出test.txt文件内容时,不包含lewen字符串的命令。

创建测试文件:
mkdir /data
cat >/data/test.txt<<EOF
test
liyao
lewen
EOF #方法1-grep
[root@lewen ~]# cd /data/
[root@lewen data]# cat test.txt
test
liyao
lewen
[root@lewen data]# grep -v "lewen" test.txt
test
liyao #方法2-head
[root@lewen data]# head test.txt
test
liyao
lewen
[root@lewen data]# head -n2 test.txt
test
liyao
[root@lewen data]# head - test.txt
test
liyao [root@lewen data]# tail test.txt
test
liyao
lewen
[root@lewen data]# tail - test.txt
liyao
lewen
[root@lewen data]# tail - test.txt
lewen #方法3-awk
[root@lewen data]# awk '/lewen/' test.txt
lewen
[root@lewen data]# grep "lewen" test.txt
lewen
[root@lewen data]# grep -v "lewen" test.txt
test
liyao
[root@lewen data]# awk '!/lewen/' test.txt
test
liyao
[root@lewen data]# #awk中 !表示取反 非 #方法4-sed
[root@lewen data]# sed '/lewen/d' test.txt
test
liyao 小结:
.grep 过滤 ******
.head tail ******
.sed awk 了解
  • 已知/tmp下已经存在test.txt文件,如何执行命令才能把/mnt/test.txt拷贝到/tmp下覆盖掉/tmp/test.txt,而让系统不提示是否覆盖(root权限下)。
[root@lewen data]# cp /mnt/test.txt  /tmp/
cp: overwrite `/tmp/test.txt'? ^C
#方法1 撬棍
[root@lewen data]# \cp /mnt/test.txt /tmp/ #方法2 使用命令的绝对路径 全路径 [root@lewen data]# which cp
alias cp='cp -i'
/bin/cp
[root@lewen data]# which mkdir
/bin/mkdir [root@lewen data]# ls -l /bin/cp
-rwxr-xr-x. root root Mar /bin/cp
[root@lewen data]# /bin/cp /mnt/test.txt /tmp/ #提示你是否覆盖? 是否删除? #为何我们执行cp的时候就相当于cp -i
#为何我们执行rm的时候就相当于rm -i ###linux别名
##小名 昵称 爱称 外号 ##目标
###.防止运行危险命令******
###.省事 简化命令 ##如何设置一个别名 ###第一个里程碑-查看系统中的别名 [root@lewen data]# alias rm cp mv
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
###第二个里程碑-模仿
#执行rm命令的时候提示 do not use rm
root@lewen data]# echo do not use rm
do not use rm
[root@lewen data]# alias rm='echo do not use rm'
[root@lewen data]# alias rm
alias rm='echo do not use rm'
[root@lewen data]# rm /tmp/test.txt
do not use rm /tmp/test.txt
[root@lewen data]# rm -f /tmp/test.txt
do not use rm -f /tmp/test.txt
[root@lewen data]# rm -fr /tmp/test.txt
do not use rm -fr /tmp/test.txt
###第三个里程碑-永久生效
#/etc/profile
#vim 快捷键
##移动光标到文件的最后一行 G
##移动光标到文件的 第一行 gg
##在光标所在位置的下一行插入一个空行 并进入编辑模式 o(小写字母)
[root@lewen ~]# tail - /etc/profile
alias rm='echo do not use rm' [root@lewen ~]# source /etc/profile
[root@lewen ~]# alias rm
alias rm='echo do not use rm' #第四个里程碑-填坑
编辑 /root/.bashrc
把 alias rm='rm -i'这一行前面加上一个注释# 小结:
.配置别名
.临时取消别名 cp rm
  • 只查看ett.txt文件(共100行)内第20到第30行的内容
seq 100 >/lewen/ett.txt
[root@lewen ~]# #sed 默认输出 sed命令会把文件的内容 默认都显示出来
[root@lewen ~]# sed -n '20p' /lewen/ett.txt [root@lewen ~]# sed -n '20,30p' /lewen/ett.txt

方法1-sed

[root@lewen ~]# head - /lewen/ett.txt |tail -

方法2-head + tail

#方法3-awk
[root@lewen ~]# awk 'NR==20' /lewen/ett.txt #NR表示行号
#== 表示等于
[root@lewen ~]# awk 'NR==20,NR==30' /lewen/ett.txt
[root@lewen ~]# sed -n '20,30p' /lewen/ett.txt #方法4-grep
[root@lewen ~]# grep "" /lewen/ett.txt [root@lewen ~]# #文件的内容 ====等于这一行的行号
[root@lewen ~]# grep -A10 "" /lewen/ett.txt 小结:
.取出文件中的某一行,或者连续的几行
.sed,head+tail
.awk-了解
  • 把/lewen目录及其子目录下所有以扩展名 .sh结尾的文件中,文件包含lewen的字符串全部替换为oldgirl
创建测试环境:
mkdir -p /lewen/test
cd /lewen
echo "lewen">test/del.sh
echo "lewen">test.sh
echo "lewen">t.sh
touch lewen.txt
touch alex.txt #第一个里程碑-找出你要的文件
[root@lewen lewen]# find /lewen/ -type f
/lewen/t.sh
/lewen/lewen.txt
/lewen/test.sh
/lewen/test/del.sh
/lewen/ett.txt
/lewen/alex.txt
[root@lewen lewen]# find /lewen/ -type f -name "*.sh"
/lewen/t.sh
/lewen/test.sh
/lewen/test/del.sh #第二个里程碑-lewen替换为oldgirl 处理一个文件
[root@lewen lewen]# cat /lewen/t.sh
lewen
[root@lewen lewen]# #sed 's#找谁#替换为什么#g' /lewen/t.sh
[root@lewen lewen]# #替换
[root@lewen lewen]# sed 's#lewen#oldgirl#g' /lewen/t.sh
oldgirl
[root@lewen lewen]# cat /lewen/t.sh
lewen
[root@lewen lewen]# #sed修改文件的内容
[root@lewen lewen]# sed -i 's#lewen#oldgirl#g' /lewen/t.sh
[root@lewen lewen]# cat /lewen/t.sh
oldgirl #第三个里程碑-把find命令找到的文件交给sed命令处理
[root@lewen lewen]# find /lewen/ -type f -name "*.sh"
/lewen/t.sh
/lewen/test.sh
/lewen/test/del.sh
[root@lewen lewen]# find /lewen/ -type f -name "*.sh"|xargs ls -l
-rw-r--r--. root root Sep : /lewen/test/del.sh
-rw-r--r--. root root Sep : /lewen/test.sh
-rw-r--r--. root root Sep : /lewen/t.sh
[root@lewen lewen]# find /lewen/ -type f -name "*.sh"|xargs sed 's#lewen#oldgirl#g'
oldgirl
oldgirl
oldgirl
[root@lewen lewen]# find /lewen/ -type f -name "*.sh"|xargs sed 's#lewen#oldgirl#g' -i
[root@lewen lewen]# find /lewen/ -type f -name "*.sh"|xargs cat
oldgirl
oldgirl
oldgirl 小结:
.find 与|xargs
.ls -l rm sed
.sed名进行替换 修改文件内容

1.find 与|xargs
2.ls -l rm sed
3.sed名进⾏替换 修改⽂件内容

s5-Linux系统优化

#添加用户
linux用户分类
1.root 用户 linux皇帝
2.普通用户  贫民百姓
[root@lewen lewen]# useradd   lewen
[root@lewen lewen]# id lewen
uid=(lewen) gid=(lewen) groups=(lewen)
[root@lewen lewen]# id lilaoshi
id: lilaoshi: No such user
[root@lewen lewen]# passwd lewen
Changing password for user lewen.
New password:
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully. #切换用户
[root@lewen lewen]# whoami
root
[root@lewen lewen]# su - lewen
[lewen@lewen ~]$ whoami
lewen #切换回root
[lewen@lewen ~]$ su - root
Password:
#退出当前用户 注销
[lewen@lewen ~]$ #ctrl + d
[lewen@lewen ~]$ logout 课后题目:
#su 与su -区别
查看系统什么版本的?
[root@lewen ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@lewen ~]# uname -r
2.6.-.el6.x86_64
[root@lewen ~]# uname -m
x86_64
#PS1 系统环境变量
##一般都是大写的,在系统中任何的地方都可以使用。
[root@lewen ~]# echo $PS1
[\u@\h \W]\$
[root@lewen ~]# #\u=====当前用户名 whoami
[root@lewen ~]# #\h 当前主机名 hostname
[root@lewen ~]# #\W 当前的位置 pwd
[root@lewen ~]# PS1='[\u@\h \W \t]\$'
SElinux关闭
#临时关闭-重启服务器失效
[root@lewen ~]# #查询selinux状态
[root@lewen ~]# getenforce
Enforcing
[root@lewen ~]# #enforcing selinux正在运行
[root@lewen ~]# #permissive selinux临时关闭 还是提示警告
[root@lewen ~]# #disabled selinux彻底关闭
[root@lewen ~]# setenforce
usage: setenforce [ Enforcing | Permissive | | ]
[root@lewen ~]# setenforce
[root@lewen ~]# getenforce
Permissive #永久关闭-重启服务器生效
vim /etc/selinux/config [root@lewen ~]# grep "=disabled" /etc/selinux/config
SELINUX=disabled
[root@lewen ~]# grep "disabled" /etc/selinux/config
# disabled - No SELinux policy is loaded.
SELINUX=disabled 小结:
.临时关闭-setenforce
.永久关闭-修改配置文件
关闭Iptables
#服务器对外使用,有外网,开启防火墙
#服务器内网, 关闭 #关闭防火墙 #临时关闭
#查询防火墙是否在运行
/etc/init.d/iptables status [root@lewen ~]# /etc/init.d/iptables stop
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
[root@lewen ~]# /etc/init.d/iptables stop
[root@lewen ~]# /etc/init.d/iptables status
iptables: Firewall is not running. #永久关闭
开机自动启动
#让iptables在开机的时候 不自动启动
chkconfig [root@lewen ~]# chkconfig |grep ipt
iptables :off :off :on :on :on :on :off
[root@lewen ~]# chkconfig iptables off
[root@lewen ~]# chkconfig |grep ipt
iptables :off :off :off :off :off :off :off 小结:
.临时关闭 xxxx stop
.永久 chkconfig xx off
#显示中文乱码
.什么是字符集?
##表示字符 文字的方法
UTF- 万国码 系统默认的字符集
GBK GB2312 .如何查看系统的字符集
[root@lewen ~]# echo $LANG
en_US.UTF-
[root@lewen ~]# #语言.字符集 .如何修改字符集-临时
[root@lewen ~]# export LANG=zh_CN.UTF-
[root@lewen ~]# echo $LANG
zh_CN.UTF- .如何修改字符集-永久
[root@lewen ~]# cat /etc/sysconfig/i18n
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16" .生效
[root@lewen ~]# source /etc/sysconfig/i18n
[root@lewen ~]# echo $LANG
en_US.UTF- #.查看中文乱码的原因******
)linux使用的字符集
)远程连接工具使用的字符集
) 与 ) 不同 就会导致乱码 #.排查
)linux使用的字符集
)远程连接工具使用的字符集 #.解决
方法1 修改远程连接工具字符集
方法2 修改linux系统的字符集
.如何修改字符集-临时
.如何修改字符集-永久
.生效

s6-Linux目录结构特点

一切从根开始
磁盘/设备/分区没有挂载 无法使用
举例-linux下面使用光盘
#.把光盘放入到光驱中
#.linux中使用光盘 /dev/cdrom
[root@lewen ~]# ll /dev/cdrom
lrwxrwxrwx. root root Sep : /dev/cdrom -> sr0
[root@lewen ~]# cd /dev/cdrom
-bash: cd: /dev/cdrom: Not a directory
[root@lewen ~]# cat /dev/cdrom ###.把光盘挂载到系统里面
[root@lewen ~]# mount /dev/cdrom /mnt/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@lewen ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 .8G .4G .0G % /
tmpfs .9G .9G % /dev/shm
/dev/sda1 190M 40M 141M % /boot
/dev/sr0 .7G .7G % /mnt 小结:
.一切从根开始,一切皆文件
.linux设备(光盘/磁盘分区)不挂载无法使用
.挂载相当于给磁盘分区/设备 开了一个入口 通过入口进入到光盘/磁盘分区中
.入口-挂载点-目录
/etc/sysconfig/network-scripts/ifcfg-eth0
#网卡的配置文件
DEVICE=eth0 ###网卡的名字
HWADDR=:0c::1e:: #@@hardware address硬件地址 MAC地址
TYPE=Ethernet ###互联网
UUID=3405d22b-1aab-45a5-b57f-c0d005e4f269 ###UUID 系统中唯一的标识
ONBOOT=yes #@@booton 在重启的时候是否开启网卡(自动运行)
NM_CONTROLLED=yes ###是否能被network软件进行管理
BOOTPROTO=none #@@网卡获取ip地址的方式
#none/static ip地址是固定的
#dhcp 自动获取ip地址
IPADDR=10.0.0.200 #@@ ip address ip地址
NETMASK=255.255.255.0 ### 子网掩码
GATEWAY=10.0.0.2 #@@ 网关 默认的出口
USERCTL=no ###是否准许普通用户管理网卡 开 关 重启
PEERDNS=yes ###
DNS1=223.5.5.5 #@@
DNS2=223.6.6.6 #@@ #上网使用 www.baidu.com jd.com taobao.com 域名
##把使用的域名转换为ip地址 ----DNS做 域名解析服务/系统 ###阿里云的DNS
#223.5.5.5
#223.6.6.6 #
#114.114.114.114
#114.114.115.115 #谷歌
#8.8.8.8
#如何修改DNS
#.在网卡配置文件中添加上
DNS1=223.5.5.5
DNS2=223.6.6.6 [root@lewen ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=:0c::1e::
TYPE=Ethernet
UUID=3405d22b-1aab-45a5-b57f-c0d005e4f269
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=10.0.0.200
NETMASK=255.255.255.0
GATEWAY=10.0.0.2
USERCTL=no
PEERDNS=yes
IPV6INIT=no
DNS1=223.5.5.5
DNS2=223.6.6.6
#网卡的配置生效-重启网卡
重启某一个网卡
ifdown eth0 && ifup eth0
重启所有网卡
/etc/init.d/network restart
/etc/resolv.conf
配置DNS。
网卡配置文件里面的DNS优先于 /etc/resolv.conf
配置DNS都在网卡里面配置
/etc/hosts  ip地址与域名解析关系  对主机名进行解析
#www.baidu.com ---->119.75.216.20
10.0.0.200 www.baidu.com www.jd.com
##进行测试
/etc/hosts
C:\Windows\System32\drivers\etc\hosts
/etc/sysconfig/network  修改主机名的文件
查看当前的主机名
[root@lewen ~]# hostname
lewen 临时修改主机名-重启服务器之后失效
[root@lewen ~]# hostname lewenedu01-nb
[root@lewen ~]# hostname
lewenedu01-nb 永久修改主机名-重启服务器之后生效
[root@lewenedu01-nb ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=lewenedu01-nb

/etc/fstab    开机的时候自动挂载的文件   开机的时候给每个磁盘分区开一个入口

#第一列 --表示设备/分区
#第二列 --表示入口/目录/挂载点
 /etc/rc.local 开机的时候自动运行的文件   需要开机自启动的软件/命令/服务放在这个文件中
Startup
如何让一个软件/脚本/服务开机自动运行?
1./etc/rc.local                 #服务器运行软件的清单
2.通过chkconfig管理 开机自启动
/etc/inittab  开机的时候运行级别的配置文件
init tab(table)

.linux运行级别讲解
关机状态,不要把运行级别设置为0
单用户模式 root用户密码忘记了
多用户模式,但是没有NFS
完全的多用户模式,命令模式,文本模式
未使用
X11,桌面模式,图形化界面模式
重启状态,不要把运行级别设置为6
.如何查看当前运行级别
[root@lewenedu01-nb ~]# runlevel
N
[root@lewenedu01-nb ~]# #N
[root@lewenedu01-nb ~]# #上一次使用的运行级别 当前系统的运行级别 .如何切换运行级别-临时
[root@lewenedu01-nb ~]# #上一次使用的运行级别 当前系统的运行级别
[root@lewenedu01-nb ~]# init
[root@lewenedu01-nb ~]# runlevel .如何永久修改运行级别-重启生效
[root@lewenedu01-nb ~]# tail - /etc/inittab
id::initdefault: 小结:
1.0-6含义
.如何查看
.如何修改 临时 永久

目录详解--/etc/init.d  服务管理的命令

/etc/profile 系统环境变量 别名
PS1 PATH
LANG==>/etc/sysconfig/i18n
/etc/bashrc  别名
#国法(全国各地生效)
/etc/profile     系统环境变量 别名   √√√√√
/etc/bashrc      别名
##家规(地*策 当前用户生效)
~/.bashrc       
~/.bash_profile
~表示当前用户的家目录
root   ~ ===== /root
lewen ~ ===== /home/lewen
/usr/local 编译安装的软件默认的位置
C:\Program Files windows安装软件默认的位置
Linux下面安全软件的方法
.yum   (自动解决安装依赖的软件)  点外卖-你缺少什么外面给你解决
yum install tree
.rpm (缺啥少啥自己解决) 速冻水饺-半成品-缺少的东西自己解决
.编译 自己做饭
买菜切菜---------炒菜----上菜
./configure------make----make install [root@lewenedu01-nb ~]# ##查看软件是否安装成功
[root@lewenedu01-nb ~]# rpm -qa |grep tree
tree-1.5.-.el6.x86_64
/usr/share
/var/log/messages 系统默认日志信息
/var/log/secure   系统用户的登录信息(谁 什么时候 从哪里登录的 是否成功)
/proc/meminfo    内存信息
[root@lewenedu01-nb ~]# free
total used free shared buffers cached
Mem:
-/+ buffers/cache:
Swap:
[root@lewenedu01-nb ~]# free -h
total used free shared buffers cached
Mem: .7G 377M .4G 236K 38M 162M
-/+ buffers/cache: 176M .6G
Swap: 767M 0B 767M

/proc/cpuinfo 查看cpu信息lscpu

/proc/loadavg 系统的负载
负载:系统的繁忙程度
最近1分钟 最近5分钟 最近15分钟 平均负载
[root@lewenedu01-nb ~]# w
:: up :, users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/ 10.0.0.1 : :08m .18s .18s -bash
root pts/ 10.0.0.1 : :02m .06s .06s -bash
root pts/ 10.0.0.1 : .00s .18s .07s w
root pts/ 10.0.0.1 : :01m .03s .03s -bash
#系统的负载接近系统cpu的核心数量
/proc/mounts 显示系统挂载信息
df -h
findmnt  == cat /proc/mounts