我想说:实践真的很是重要:我殊不知到怎么解决问题。
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.142css
[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/sunlinux
[root@Centos7~/bin]#bash -x infosystem.sh正则表达式
[root@Centos7~/bin]#bash -n infosystem.sh数据库
变量:
[root@Centos7~]#echo $$ 当前进程:
3925
[root@Centos7~]#echo $PPID 上级进程:vim
[root@Centos7~]# name=whoami
[root@Centos7~]#echo $name
rootcentos
[root@Centos7~]#echo $name
\S Kernel \r on an \m
[root@Centos7~]#cat /etc/issueapi
\S
Kernel \r on an \m
[root@Centos7~]#echo "$name"bash
\S
Kernel \r on an \m架构
[root@Centos7/bin]#vim ps.sh
#!/bin/bash
name=parent
echo "ps.sh:name $name"
son.shapp
[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
效果以下:
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
#cat .bash_profile 更改路劲
PATH=$PATH:$HOME/bin:/home/sun
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]#
用户退出提示:
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,无穷]
-#[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
二、
[root@Centos7/media/Packages]#ls |sed -r 's/..(.).rpm$/\1/' |sort |uniq -c
2141 i686
3076 noarch
1 TRANS.TBL
4374 x86_64
三、[root@Centos7/media/Packages]#ls |rev |cut -d. -f2 |rev |sort |uniq -c
2141 i686
3076 noarch
1 TRANS
4374 x86_64
四、将文本中的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/nulltrue查看包来源哪一个文件:[root@Centos7/misc/cd/Packages]#rpm -qf /etc/passwdsetup-2.8.71-7.el7.noarch :显示包的安装信息rpm -qi bashrpm -ql bash校验包:rpm -import/run/media/root/centos \7\x86/RPM -GPG-KEY-CENTOS-7rpm -k tree.....rpm