第三周 培训重点内容:

我想说:实践真的非常重要:我却不知到怎么解决问题。
Linux操作起来真的非常好玩;
我喜欢敲键盘的感觉,但是自己玩的不留
我希望每天都尽力去玩Linux,希望有所成就吧!我希望我能坚持下去!
以下是第三周整理的内容:
第三周重点内容
脚本:
[root@Centos7/app]#./infosystem.sh
hello world
The host is Centos7.4.localdomain
The kernel is 3.10.0-693.el7.x86_64
The cpu is Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
MemTotal: 2031912 kB
The IP is 192.168.137.142

[root@Centos7/app]#vim reset.sh
[root@Centos7~]#mkdir bin
[root@Centos7~]#mv /app/infosystem.sh ~/bin/
[root@Centos7~]#echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/home/sun

[root@Centos7~/bin]#bash -x infosystem.sh

[root@Centos7~/bin]#bash -n infosystem.sh

变量:
[root@Centos7~]#echo $$ 当前进程:
3925
[root@Centos7~]#echo $PPID 上级进程:

[root@Centos7~]# name=whoami
[root@Centos7~]#echo $name
root

[root@Centos7~]#echo $name
\S Kernel \r on an \m
[root@Centos7~]#cat /etc/issue

\S
Kernel \r on an \m
[root@Centos7~]#echo "$name"

\S
Kernel \r on an \m

[root@Centos7/bin]#vim ps.sh
#!/bin/bash
name=parent
echo "ps.sh:name $name"
son.sh

[root@Centos7/bin]#vim son.sh
#!/bin/bash
name=son
echo "ps.sh:name $name"
sleep 100
执行结果:
[root@Centos7/bin]#chmod +x *br/>[root@Centos7/bin]#ps.sh
ps.sh:name parent
ps.sh:name son
全局变量
export name=son
set 变量
env
export
declare -r
declare -x

[root@Centos7~/bin]# name=test;(echo $name ; name=112;echo $name); echo $name
test
112
test

[root@Centos7/etc]#cd /etc/;pwd
/etc
[root@Centos7/etc]#cd
[root@Centos7~]#(cd /etc/;pwd)
/etc
[root@Centos7~]#

[root@Centos7~]#(umask 066; touch /app/f1)
[root@Centos7~]#ll /app/f1
-rw-------. 1 root root 0 May 27 14:23 /app/f1br/>[root@Centos7~]#umask
0022

[root@Centos7/app]#( ls;pwd ) > /app/all.log

[root@Centos7~]#(name=haha;touch /app/$name.bak)

脚本练习
[root@Centos7~/bin]#vim infosystem.sh
#Author:sun
#Date 2018-5-27
#Description:show system info
echo "hello world"
echo "The host is hostname"
echo "The kernel is uname -r"
echo "The cpu is lscpu |grep "Model name:"|tr -s ' ' |cut -d: -f2"
cat /proc/meminfo |head -n1
cat /etc/centos-release
echo "HardWare is lsblk |grep -w sda |tr -s " "|cut -d' ' -f1,4,6"
echo "The IP is ifconfig ens33|grep netmask |tr -s " "|cut -d" " -f3"

[root@Centos7~/bin]#
echo $? 0表示成功

[root@centos ~/bin]#i=10
[root@centos ~/bin]#j=10
[root@centos ~/bin]#let sum=$i+$j
[root@centos ~/bin]#echo $sum
20
脚本:
[root@centos ~/bin]#var=haha;[ -n "$var" ] && echo true ||echo false
true

[root@centos ~/bin]#unset var[ -n "$var" ] && echo true ||echo false
false

[root@centos ~/bin]#var=haha; [[ "$var" =~ ha ]] && echo true || echo false
true
=~ 支持正则表达式:
[root@centos ~/bin]#var==haha; [[ "$var" =~ h+ ]] && echo true || echo false
true
[root@centos ~/bin]#var=haha;[[ "$var" =~ h? ]] && echo true || echo false
true

[root@centos ~/bin]#var=hac;[[ "$var" =~ .. ]] && echo true || echo false
true
[root@centos ~/bin]#var=hac;[[ "$var" =~ ^..$ ]] && echo true || echo false
false
判断文件以sh结尾:执行:
[root@centos ~/bin]#filename=f1.sh ;[[ "$filename" =~ .sh$ ]] && echo true ||echo false

IP地址的判断:
[root@centos ~]#ip="172.18.19.11"; [[ "$ip" =~ ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$" ]] && echo true ||echo false
IP地址判断有效性:
[root@centos ~]#ip="172.18.19.159" ;[[ "$ip" =~ ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ ]] && echo true ||echo false

匹配数字全数字:
[root@centos ~]#var=132 ; [[ "$var" =~ ^[0-9]+$ ]] && echo true ||echo false

判断正整数:
[root@centos ~]#var=1 ; [[ "$var" =~ ^[1-9][0-9]$ ]] && echo true ||echo false
true
判断正整数:[root@centos ~]#var=01 ; [[ "$var" =~ ^0
[1-9][0-9]*$ ]] && echo true ||echo false

判断手机号:
[root@centos ~]#mobile=18512554331; [[ "$mobile" =~ ^1[3456789][0-9]{9} ]] && echo true ||echo false
true

系统自带的脚本:
[root@centos ~]#vim /etc/rc.d/rc.sysinit
效果如下:

Print a text banner.

echo -en $"\t\tWelcome to "
read -r system_release < /etc/system-release
if [[ "$system_release" == "Red Hat" ]]; then
[ "$BOOTUP" = "color" ] && echo -en "\033[0;31m"
echo -en "Red Hat"
[ "$BOOTUP" = "color" ] && echo -en "\033[0;39m"
PRODUCT=$(sed "s/Red Hat (.) release./\1/" /etc/system-release)
echo " $PRODUCT"
elif [[ "$system_release" == Fedora ]]; then
[ "$BOOTUP" = "color" ] && echo -en "\033[0;34m"
echo -en "Fedora"
[ "$BOOTUP" = "color" ] && echo -en "\033[0;39m"
PRODUCT=$(sed "s/Fedora (.) \?release./\1/" /etc/system-release)
echo " $PRODUCT"
elif [[ "$system_release" =~ "CentOS" ]]; then
[ "$BOOTUP" = "color" ] && echo -en "\033[0;36m"
echo -en "CentOS"
[ "$BOOTUP" = "color" ] && echo -en "\033[0;39m"

判断数字大小:判断是之前是不是数字:
[root@centos ~/bin]#num=10; [ "$num" -eq 10 ] && echo true ||echo false^C
[root@centos ~/bin]#
[root@centos ~/bin]#num=10; [ "$num" -ne 10 ] && echo true ||echo false
false
[root@centos ~/bin]#num=10; [ "$num" -ne 10 ] && echo true ||echo false
false
[root@centos ~/bin]#num=10; [ "$num" -ne 1 ] && echo true ||echo false
true

判断变量是否被定义过:
[root@centos ~/bin]#unset var ;[ -v var ] && echo true ||echo false
[root@centos ~/bin]#var=" "; [ -v var ] && echo true ||echo false

查看颜色:
echo -e "\033[1;5;31;43mHi,dangerous!\033[0m"
vim /etc/profile.d/env.sh 配置环境

查看目录是否存在
[root@centos ~/bin]$[ -d /app/backa ] ||mkdir /app/backa && cp /etc/passwd /app/
查看文件是否存在

[root@centos ~/bin]$[ -e /etc/passwd ] && echo true || echo false
true

读写权限:

[root@centos ~/bin]$[ -r /etc/passwd -a -w /etc/passwd ] && echo ture
ture
[root@centos ~/bin]$[ -r /etc/passwd -o -w /etc/passwd ] && echo ture
ture

实验:写一个创建用户的脚本,会询问用户用户名及密码,要求密码输入过程不可见
方法一:
#!/bin/bash
read -p "Please Enter your username: " name
echo -n "Please Enter the password for $name: "
stty -echo
read password
stty echo
echo
useradd $name
echo $password |passwd --stdin $name &> /dev/null
echo "$name created"

方法二:
#!/bin/bash
read -p "Please Enter your username: " name
read -sp "Please Enter the password for $name: " password
echo
useradd $name
echo $password |passwd --stdin $name &> /dev/null
echo "$name created"

多条件判断
方法一:
[liubei@instructor_v7(nanyibo) ~]$ [ -r /app/passwd ] || [ -w /app/passwd ] && echo true
[liubei@instructor_v7(nanyibo) ~]$ [ -r /app/passwd ] && [ -w /app/passwd ] && echo true

方法二:
[liubei@instructor_v7(nanyibo) ~]$ [ -r /app/passwd -a -w /app/passwd ] && echo true
[liubei@instructor_v7(nanyibo) ~]$ [ -r /app/passwd -o -w /app/passwd ] && echo true

[liubei@instructor_v7(nanyibo) ~]$ [ ! -e /etc/passwda ] && echo true
true

实验:写一个创建用户的脚本,会询问用户用户名及密码,要求密码输入过程不可见
方法一:
#!/bin/bash
read -p "Please Enter your username: " name
echo -n "Please Enter the password for $name: "
stty -echo
read password
stty echo
echo
useradd $name
echo $password |passwd --stdin $name &> /dev/null
echo "$name created"

方法二:静默输出
#!/bin/bash
read -p "Please Enter your username: " name
read -sp "Please Enter the password for $name: " password
echo> /dev/null
echo "$name created"
useradd $name
echo $password |passwd --stdin $name &
输入5个数:

[root@centos /app]$read -N 5 -p "hello: " name
hello: 12345[root@centos /app]$echo $name
12345

实验:输入密码小于等于8位数:

第8天:

判断文件
[root@centos ~]$touch a
[root@centos ~]$chmod g+s a
[root@centos ~]$[ -g a ] && echo true
true
[root@centos ~]$[ -g a ] && echo true^C
[root@centos ~]$touch a.txt
[root@centos ~]$[ -g a.txt ] && echo true
[root@centos ~]$ls /proc/$$/fd
0 1 2 255
compress 压缩文件:
umask:chmod 000 rw
权限会 被修改:

666-umask=600
gzip :
-c; 压缩文件原文件不变,权限会根据uMask 变化
-cd 标准输出,umask 会变
gzip :可以改变压缩比
for n in {1..9};do gzip -$n -c passwd >passwd.gz.$n;done
while true ;do ;done
压缩比:默认是6.数字越小,压缩比越小速度快
gzip -$n -c passwd
bzip2:
bzip2 -k passwd :原文件不丢,权限也在
bzip2 -dk passwd :
bzip2 -cd passwd : 解压缩文件,预览解压后的文件标准输出

文件描述符:打开一个文件有多少个描述符:
[root@centos /app]$ls /proc/$$/fd
0 1 2 255
[root@centos /app]$ls /proc/$$/fd |wc -l
4

判断软连接及路径: 先判断是不是软软连接
[root@Centos7~]#[ -d /lib ] &&echo true
true
[root@Centos7~]#[ -L /lib ] &&echo true
true
判断所有者和所属组:

[root@centos ~]$[ -O /etc/passwd ] && echo true
true
[root@centos ~]$[ -G /etc/shadow ] && echo true
true

[root@centos ~]$a=10;[ $a -eq 10 ] && echo true ||echo false
true

判断文件是不是可写,可读:

[root@centos ~]$[ -r /etc/issue ] && [ -w /etc/shadow ] && echo true
true
[root@centos ~]$[ -r /etc/issue ] && [ -x /etc/shadow ] && echo true
[root@centos ~]$[ -r /etc/issue ] && [ -x /etc/shadow ] && echo true
判断空文件赋值:
vim /etc/rc.d/rc.sysinit
if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then
HOSTNAME=localhost

查看文件系统:类型
[root@centos ~]$[ -f /bin/cat -a -x /bin/cat ] && cat /etc/fstab
root也没有执行权限:切记:
[root@centos ~]$[ -x /etc/shadow ] && echo true ||echo false
false
[ ! -r /etc/shadow ] && [ ! -w /etc/shadow ] && echo true
摩根定律:
[root@centos ~]$ [ ! ( -r /etc/shadow -o -w /etc/shadow ) ] && echo true
[root@centos ~]$[ ! -r /etc/shadow -a ! -w /etc/shadow ] && echo true
普通用户不能登陆:
touch /etc/nologin
echo disable common user login > /etc/nologin
静默输入密码:

[root@Centos7~/bin]#read -s -p "please input your password: " passwd

输入密码的次数:
[root@Centos7~/bin]#read -n 5 -p "please input you name: " username

判断yes /no

[root@Centos7~]#yes=yn;[[ "$yes" =~ ^Yy?$ ]] && echo true ||echo false
false

[root@Centos7~]#n=no; [[ "$n" =~ ^[Nn][oO]?$ ]]&& echo true ||echo false
true

整体判断:
[root@Centos7~]#n=n; [[ "$n" =~ ^Yy?$|^[Nn][oO]?$ ]]&& echo true ||echo false
true

判断yes no 脚本:
read -p "Do you agree ? yes or no: " yes

[[ "$n" =~ ^Yy?$|^[Nn][oO]?$ ]]&& echo true ||echo false

判断yes no 的脚本
#!/bin/bash
read -p "Do you agree ? yes or no: " choice
choice=$(echo "$choice" | tr "[ :upper: ]" "[ :lower: ]")
[ "$choice" = "yes" -o "$choice" = "y" ] && echo "you enter yes " && exit 1
[ "$choice" = "no" -o "$choice" = "n" ] && echo "you enter no " && exit 2 ||
echo "you enter wrong "
最后一行命令结束,自动退出终端,切记:

[root@Centos7/app]#echo "your cost : \$5.00"
your cost : $5.00

函数库:
/etc/rc.d/init.d/functions
查看文件系统:
/etc/fstab

User specific environment and startup programs

#cat .bash_profile 更改路劲
PATH=$PATH:$HOME/bin:/home/sun

User specific aliases and functions

vim ~/.bashrc

source 与bash 的区别
source 影响当前进程:
bash 开启子进程:
[root@Centos7~/bin]#source procss_bash.sh
var=haha
var=xxx
[root@Centos7~/bin]#bash procss_bash.sh
var=
var=xxx
[root@Centos7~/bin]#

用户退出提示:

~/.sh_logout

echo -e "\033[1;5;31;43m 辛苦了亲!每天好心情,day day up!\033[0m"
$-变量值:
[root@Centos7~]#echo $-
himBH
h hash
i 交互式:
m:monitor:
b: braceexpand 大括号扩张
h:history

脚本中:
[root@Centos7~/bin]#f1.sh
hB

数据库查找:
locate
[root@Centos7~]#ll /var/lib/mlocate/mlocate.db

更新数据库:
[root@Centos7~]#ll /var/lib/mlocate/mlocate.db
-rw-r-----. 1 root slocate 3588970 May 31 09:27 /var/lib/mlocate/mlocate.db
[root@Centos7~]# updatedb
[root@Centos7~]#locate newf1.sh
/root/newf1.sh
locate 支持正则表达式:

[root@Centos7~/bin]# locate -n 3 -r ".conf$"
/app/httpd-2.4.33/docs/doxygen.conf
/app/httpd-2.4.33/docs/conf/httpd.conf
/app/httpd-2.4.33/docs/conf/extra/httpd-autoindex.conf

find 命令:
查找路径:
查找条件
处理动作
查找最大2层,最小2层
[root@Centos7~/bin]#find /etc -maxdepth 2 -mindepth 2 -name "network"
/etc/sysconfig/network

查看链接数:
[root@Centos7/app]#find -samefile a
./a
./d1/aa

查找文件以.sh结尾
[root@Centos7/app]#find /root -regex "..txt$"
查看问价以.sh结尾或.txt结尾的文件
根据属组查找:
-user USERNAME:查找属主为指定用户(UID)的文件
-group GRPNAME: 查找属组为指定组(GID)的文件
-uid UserID:查找属主为指定的UID号的文件
查找所属主 及文件
[root@Centos7~]#find /home -user sun -name "
.sh"
即不是王的文件也不是.sh 结尾的文件
[root@Centos7/app]#find /home !( -user sun -o - name "*.sh")
find /home -not -user wang -o -not -user bai
不是王的,或者不是白的,那就是全部文件
ias.txt
./d1
[root@Centos7/app]#dd if=/dev/zero of=f1 bs=1 count=1024
生成文件
查看1k 的文件:
[root@Centos7/app]#find -size lk
查看文件大小来查看;
6k
6k:(5k,6k]
-6k:[0,5k]
+6k:(6k,无穷]
大于50M 小于100根目录下
find / -size +50m -size -101m

根据时间查找文件:
-atime

:[#,#+1)

+#[#+1,无穷]
-#[0,#)
-amin
-mmin
-cmin

find /etc/ -mmin -l 一分钟时间
-mtime
-ctime
权限查找:权限644,文件类型为 f (精确匹配)
[root@Centos7/app]#find -perm 644 -type f
./f1
并且:
[root@Centos7/app]#find -perm -444 -type f
[root@Centos7/app]#find -perm -440 -type f
./f1 (0:表示不关心)

[root@Centos7/app]#find -perm /444 -type f
./f1
任何人都投写权限
[root@Centos7/app]#find -perm /222 -type f
./f1
全部匹配:表示不关心
[root@Centos7/app]#find -perm -000 -type f
./f1
find -perm /002 -002 -type f 一样的
一位
找到文件删掉:
[root@Centos7/app]#find -perm -020 -type f -delete
文件重定向: 动作:
[root@Centos7/app]#find -perm -020 -type f -ls > list.txt
文件备份:提示:不提示:
[root@Centos7/app]# find -name ".conf" -ok cp {} /root/{}.bak \;
不提示:
[root@Centos7/app]#find -name "
.conf" -exec cp {} /root/{}.bak \;
删除查找到的文件:
[root@Centos7/app]#find -name "*.conf" -exec rm {} \;
批量创建文件:
echo test{1..10}|xargs touch
压缩:
gzip passwd
gzip -d passwd.gz

bzip2 passwd
bzip2 -d passwd.bz2
bzip2 -k passwd 保留源文件

xz passwd
xz -d passwd.xz
压缩文件:
zip -r sysconfig(目标文件) /testdir/sysconfig (源文件)
unzip
[root@Centos7/app]#cat /var/log/message |zip messages.zip - (代表前面的内容)
打包文件:
[root@Centos7/app]#tar -cvf /app/sysconfig.tar /etc/sysconfig/ (将/etc/syscinfig 打包)

查看文件大小:
[root@Centos7/app]#du -sh /etc/sysconfig
tar 工具打包:
打包并压缩:
[root@Centos7/app]#tar -zcvf /app/sysconfig.tar.gz /etc/sysconfig/
[root@Centos7/app]#tar -Jcvf /app/sysconfig.tar.xz /etc/sysconfig/
[root@Centos7/app]#tar -jcvf /app/sysconfig.tar.bz2 /etc/sysconfig/
查看压缩文件有哪些东西:
tar -tvf /app/sysconfig.tar.xz
解压缩文件:
[root@Centos7/app]#tar -xvf /app/sysconfig.tar.bz2 -C /app
批量查看文件类型;
[root@Centos7/app]#file -f filelist.txt
vim 读取文件:
[root@Centos7/app]#:r! ls /root/anacond a-ks.cfg
指定打包文件;
[root@Centos7/app]#tar -T filelist.txt -Jcvf a.tar.xz
tar: Removing leading `/' from member names
/root/anaconda-ks.cfg
/etc/issue

sed 脚本:
经典多行编辑:
[root@Centos7~]#sed -e '/^#EnableMMAP\ off/s/#//' -e'/^<IfModule mime_magic_module>/,/^<\/IfModule>/ s/#//' /etc/httpd/conf/httpd.conf

多点编辑
sed -e
[root@Centos7~]#sed -n -e '2p' -e '3p' f1
2
3
多数行打印:
[root@Centos7~]#sed -n -e '2p' -e '6p' f1
2
6
[root@Centos7~]#sed 'n;D' f1 显示奇数行;n 是覆盖的意思
[root@Centos7~]#sed -n '1~2p' f1 显示奇数行:
[root@Centos7~]#sed -n 'n;p' f1 显示偶数行;
[root@Centos7~]#sed -n '2~2p' f1
除了第二行全部删掉:

[root@Centos7~]#sed '2!d' f1
2
从文件中读取命令到。bashrc 文件文件中:
[root@Centos7~]#sed '/User/r /root/bin/sed.txt' .bashrc
脚本重定向:
cat > /root/bin/sed.txt << end
alias p=poweroff
alias cdnet="cd /etc/sysconfig/network-scripts"
end
全局添加东西;
[root@Centos7~/bin]#sed -r 's/(.*)/ \1&mage/g' /etc/passwd
替换

[root@Centos7~]#sed -r 's@/(bin/bash)$@/s\1@g' /etc/passwd
替换:
改写网卡名字:
/etc/default/grub 影响网卡名字:
sed -r 's@(GRUB_CMDLINE_LINUX=".*)"$@\1 4566666xyzzzzz"@' /etc/default/grub

偶数行:
[root@Centos7/media/Packages]#seq 1 10 |sed -n 'n;p'
[root@Centos7/media/Packages]#sed -n '2~2'
rpm架构:
[root@Centos7/media/Packages]#ls | egrep -o "[^.]+.rpm"|cut -d. -f1 |sort |uniq -c

2、
[root@Centos7/media/Packages]#ls |sed -r 's/..(.).rpm$/\1/' |sort |uniq -c
2141 i686
3076 noarch
1 TRANS.TBL
4374 x86_64

3、[root@Centos7/media/Packages]#ls |rev |cut -d. -f2 |rev |sort |uniq -c
2141 i686
3076 noarch
1 TRANS
4374 x86_64
4、将文本中的n和n+1行合并为一行,n 为奇数行:

cat seq 1 10 |sed "/^$/d;G" 删除空行,然后给每行添加一个空行:

stream editor 行编辑器
sed gnu 工具
sed [option].... "script"(地址命令)
sed 语法
[root@Centos7~]#sed -n 'p' /etc/issue

\S
Kernel \r on an \m

[root@Centos7~]#ifconfig |sed -n '2p' |tr -s " "|cut -d" " -f3
192.168.137.142
sed 支持标准输入:
sed -n "2p"
[root@Centos7~]#sed -n '2p'
a
b
b
c
d
显示文件行号"
[root@Centos7~]# nl /etc/fstab
地址:
[root@Centos7~]#sed -n "8,12p" /etc/fstab

[root@Centos7~]#sed -n "8,+3p" /etc/fstab 8行之后3行打印出来
[root@Centos7~]#sed -n "3,/^f/p" /etc/passwd^C
[root@Centos7~]#sed -n '/^r/,/^f/p' /etc/passwd
奇数偶数:
[root@Centos7~]#cat -n /etc/passwd |sed -n '3 ~2p'
[root@Centos7~]#sed -n '3~2p' /etc/passwd
[root@Centos7~]#sed -n '2~2p' /etc/passwd

添加空格:之后添加数字
[root@Centos7~]#cat -n /etc/passwd |sed '3,6a\ ============'
在第几行添加文本:
sed '7a alias cdnet="cd /etc/sysconfig/network-scripts"' ~/.bashrc

最后一行添加文本,并且备份:
[root@Centos7/app]# sed -i.bak '$a alias cdnet="cd /etc/sysconfig/network-scripts"' ~/.bashrc
替换:文本添加内荣:
[root@Centos7~]#sed '/^# Source/c\xxxxxx x' ~/.bashrc

修改配置文件;
[root@Centos7~]#sed -i '/^SELINUX=/c\SELINUX=disabled' /etc/selinux/config

多行添加内容:
[root@Centos7~]#sed '/^# Source/ixxxxxx\nyyyy\nzzzz' ~/.bashrc
sed :正则表达式计算

[root@Centos7~]#sed -r 's@(/bin/bash)@#\1@g' /etc/passwd
写入到文件中:
[root@Centos7~]#sed '/^alias/w /app/alias.txt' .bashrc

显示所在的行:

[root@Centos7~]#sed '/^alias/='.bashrc
打印用户以bash结尾的行:
[root@Centos7~]#sed -n '/bash$/!p' /etc/passwd
全局替换;
[root@Centos7~]#sed 's@/bin/bash$@/sbin/nologin@g' /etc/passwd
替换:
[root@Centos7~]#sed -i 's@SELINUX=disabled@SELINUX=enforcing@' /etc/selinux/config
sed 截取ip 地址:
[root@Centos7~]#ifconfig ens33|sed -n '2p'|sed 's@.inet@@g'| sed 's@netmask.@@g' 192.168.137.142
[root@Centos7~]#ifconfig ens33|sed -n '2p'|sed -r 's@.inet (.) netmask.@\1@'
192.168.137.142
取ip 地址:
[root@Centos7~]#ifconfig |sed -n '2p'|sed -r 's@(.
inet )(.)( net.)@\2@'
[root@Centos7~]#ifconfig |sed -r '2!d; s@(.inet )(.)( netmask .*)@\2@'
192.168.137.142

[root@Centos7~]#ifconfig |sed -n '2p'|sed -r 's@.inet @@' |sed -r 's@ netmask.@@'
192.168.137.142

经典:配置文件:
[root@Centos7~]#sed -n '/^b/,/^f/p' /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
经典去除配置文件前面的#号:

ip 后向引用:
[root@Centos7~]#ifconfig ens33|sed -r -n '2s@.inet (.) netmask.*@\1@p'
192.168.137.142

取版本号:
[root@Centos7~]#sed -n -r 's@.release ([^.]+).@\1@p' /etc/centos-release
7
在后面补文字:
sed -r 's@(quiet )@\1i love you @' /etc/default/grub

替换双引号:
[root@Centos7~/bin]#sed -r 's/(")$/ \1/p' /etc/default/grub
包含:
[root@Centos7~/bin]#sed -r '/LINUX/s/(")$/
\1/p' /etc/default/grub

取出ip
[root@Centos7~/bin]#ifconfig ens33 |sed -r '2!d ; s/.inet //;s/ netmask.//'
192.168.137.142

取出基名:

[root@Centos7~/bin]#echo "/etc/sysconfig/network-scripts/" |sed -nr 's@./(.+)/?@\1@p'
network-scripts/
取目录名:实验效果
[root@Centos7~/bin]#echo "/etc/sysconfig/network-scripts/" |sed -nr 's@(.
/)(.+)/?@\1@p'
/etc/sysconfig/
[root@Centos7~]#echo '/etc/sysconfig/network' |sed -r 's@(./)([^]+/?)@\1@'
/etc/sysconfig/
[root@Centos7~]#echo '/etc/sysconfig/network' |sed -r 's@(.
/)([^]+/?)@\2@'
network
后向引用

[root@Centos7/app]#cat mobile.txt |sed -r 's@([0-9]{4})([0-9]{3})([0-9]{3})@\1****\3@'

yum :abi是指:运行在操作系统上,必须遵守操作系统标准:
api: 涉及到库的标准; 不同的操作系统,不同的ABI
静态库:插入一个库到程序中:
动态库:调用动态库:
ldd /bin/ls
seq 1 10 |xargs -n2
查找文件:
find -name "*.c" |wc
sed -i 's///g'
cat /etc/httpd/conf/httpd.conf 很重要的配置文件

[root@Centos7/app]#sed -r 's/^[^#]|^$/#/g' /etc/fstab
解决软件包的问题:
[root@Centos7/misc/cd/Packages]#ls *.rpm |egrep -o "[^.]+.rpm$"|cut -d. -f1 |sort|uniq -c

破坏安装包,怎么解决问题 :
[root@Centos7/misc/cd/Packages]#rm /usr/bin/tree
rm: remove regular file ‘/usr/bin/tree’? y
[root@Centos7/misc/cd/Packages]#rpm -i vsftpd-3.0.2-22.el7.x86_64.rpm
[root@Centos7/misc/cd/Packages]#rpm -i tree-1.6.0-10.el7.x86_64.rpm
package tree-1.6.0-10.el7.x86_64 is already installed
解决方案:覆盖安装
[root@Centos7/misc/cd/Packages]#rpm -ivh --replacepkgs tree-1.6.0-10.el7.x86_64.rpm
查看时间:
ll /var/lib/rpm

判断安装包名:
[root@Centos7/misc/cd/Packages]#rpm -q vsftpd &> /dev/null && echo true ||rpm -ivh vsftpd-3.0.2-22.el7.x86_64.rpm &> /dev/null
true
查看包来源哪个文件:
[root@Centos7/misc/cd/Packages]#rpm -qf /etc/passwd
setup-2.8.71-7.el7.noarch
:显示包的安装信息
rpm -qi bash
rpm -ql bash
校验包:
rpm -import/run/media/root/centos \7\x86/RPM -GPG-KEY-CENTOS-7
rpm -k tree.....rpm

转载于:https://blog.51cto.com/13718453/2124718

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值