Linux 基本指令的操作和所学的 汇总(五节续)

先说道面试题

实例一:只查看test.txt文件(100行)内第20到第30行的内容(企业面试) 4 + 2种 方法

(1)seq 30 >/my/et.txt
head -30 /my/et.txt | tail -11
(2)sed -n '20,30' p et.txt (sed功能增删该查   -n  取消默认输出 按规则输出打印(p))
(3)awk ' NR>19&&NR<31' et.txt ({if(NR>=20 && NR<=30) print $1}可以替换 ‘’ 内的内容意思相同)
(4) grep 
A  除了显示匹配到的一行外 ,并显示该行之后的num行   例子: grep  20 -A 10  a.txt
B  除了显示匹配到的一行外 ,并显示该行之前的num行   例子: grep  30 -B 10  a.txt
C  除了显示匹配到的一行外 ,并显示改行之前的num行   例子: grep  25 -C  5  a.txt

一条指令 将/my/a.txt 复制到 /temp/a.txt 后不提示信息

(1)\cp  /my/a.txt   /temp/a.txt
(2)/bin/cp   /my/a.txt   /temp/a.txt
(3)unalias cp      ---->  (该条功能不建议使用,服务器重启后 失效 )
          cp  /my/a.txt   /temp/a.txt 

把/my 目录及其子目录中使用扩展名为‘ .sh’结尾的文件中包含 oldboyde 字符串全部替换成 oldgirl;

创建测试数据
[root@root ~]# cd  /my
[root@root my]# echo 'oldboy' >/test/a.sh
-bash: /test/a.sh: No such file or directory
[root@root my]# echo 'oldboy' >test/a.sh 
[root@root my]# echo 'oldboy' >test.sh  
[root@root my]# echo 'oldboy' >t.sh  
[root@root my]# tree
.
├── 8.txt
├── ett.txt
├── new1
│   └── new2
│       └── new3
├── new2
│   └── new2
│       └── new3
├── test
│   └── a.sh
├── test.sh
└── t.sh
测试开始替换数据
[root@root my]#find -type f -name '*.sh'|xargs sed 's#oldboy#oldgirl#g' (只是替换但尚未修改)
oldgirl
oldgirl
oldgirl
[root@root my]# find -type f -name '*.sh'|xargs sed -i 's#oldboy#oldgirl#g'
(加 -i 直接替换修改)
[root@root my]#find -type f -name '*.sh'|xargs  cat 信息流  给cat   
oldgirl
oldgirl
oldgirl
(不加xargs  直接变成数据流 交给cat)
[root@root ~]# find /my -type f -name '*.sh'| cat         
/my/test/a.sh
/my/t.sh
/my/test.sh

五星级别的命令 :

linux 三剑客之

grep  \ awk \  sed;他们都有过滤字符串的功能;
grep :查找过滤最擅长
awk :处理列擅长(NF  :代表字段  NR:代表 记录  一个记录代表一行)
sed :   擅长添加、替换、修改、删除 、

帮助指令:

ifconfig   查看网卡链接信息---- 相同于 ip addr 
man  命令        Linux  指令
--help    简洁 版 帮助
help  命令        内置指令帮助

操作查看目录指令:

mkdir 创建目录

全名称:make directorys    :
mkdir   (/data)是创建的目录;或者 cd  /; mkdir  data
第一个指令 是 直接创建 目录 在根  " / "下 :  mkdir  /data  ;
第二个是 进入根" / "下直接创建   :cd /; mkdir data
例子: mkdir  /myfile    或者     cd  /; mkdir  myfile    
#### 递归创建目录    
mkdir   -p   /my/new1/new2
#### 多重创建
[root@root ~]# mkdir /yyn/{335,336,3365}/yyn -p
[root@root ~]# tree /yyn
/yyn
├── 332
│   └── yyn
├── 335
│   └── yyn
├── 336
│   └── yyn
└── 3365
    └── yyn

ls 列表

ll :查看该目录下的文件总个数

指令规则:命令 【参数选项】【文件或路径】
ls  -ld   (参数  l   和  d)  多参数可以直接连起来操作    前面 加  “ - ”
参数  l   (long)      长格式       
参数 d (directorys) 查看目录
例子: ls  -l    \    ls  -d   \    ls -ld()   ls  /data (进入目录下查看)

cd 改变目录路径

全名称 :change directory 
相当路径:没有从根 " / " 开始    cd   data
绝对路径:从根 " / "  开始      cd  /etc
例子:  cd  /etc ;  cd  data  

pwd 打印工作目录(显示当前所在路径)

全名称  :print work  directory 
例子:  pwd     输出结果:/directory   / (那个文件)

touch 创建文件及更新时间戳

若文件不存在   touch  file.txt  
若文件存在  更新时间戳(文件的时间属性)  ;
例子: touch   /myfile/file.txt 
touch  另外  
touch {1..10}.txt  创建
mv  `find  /my -type f -name " *.txt  "  ` /data

vi 编辑文件

vi  file.txt     
vi  后跟 操作的文件  ; 回车进入待编辑状态
按 " a "或 " i  " 字母 进入编辑状态  ; 编辑好之后
按 键盘   Esc  回到  待编辑状态;
输入  " :wq "  保存和退出 编辑  回到  命令行模式;
不想保存: 输入 :q     
强制退出 输入   :q!   
解释   wq  :  w(write) 、q (Quit) ;

vim 复杂编辑器

功能复杂,高亮,自动缩进,写脚本(shell  / python 脚本用)
vim  file.txt
按 " a "或 " i  " 字母 进入编辑状态  ; 编辑好之后
按 键盘   Esc  回到  待编辑状态;
输入  " :w "  保存后再按":q"退出 编辑  回到  命令行模式;

echo 覆盖或追加内容 配合 " 重定向 > " , " 追加 >>"

echo    ' I am study Linux now; ' >myfile.txt
echo  {a..z}  myfile.txt   相当于 序列  seq 部分功能
解释:echo 后面跟  文件内容    " > "  代表重定向到    那个文件  
或者其他" > " 后的文件若存在 会 先清空 该文件的内容   
后  写入 " > " 前面的 内容 ;
此 "  >  " 指令  操作  危险   ,在操作前  请先备份 ,
再操作;若想追加  则用   "  >>   "
例子: echo 'I drop in love river with you; '>>myfile.txt

cat 查找,单行和多行文本添加

Linux 常用的指令功能:

查看网卡连接设置
cat   /etc/sysconfig/network-scripts/ifcfg- ens34    网卡名称 
cat  >myfile.txt 回车 后编辑输入  I love you  in my life;在按  Ctrl  + C   或   D 结束编辑;
[root@root myfile]# cat >>myfile.txt<<my     : (多行追加实例:)
 i love you in mylife;
do you want to mirry with me?
my(my  可以换成任意,但必须顶格写)
[root@root myfile]# cat myfile.txt   (实例显示的结果:)
I studying Linux now;
i love you in mylife;
do you want to mirry with me?
Cat 其它用法: 多行文本输入
cat  >> /my/a.txt << my
123
123
456
my

特殊符号 < 、< <、>、>> 的说明:箭头的指向代表数据的流向

'>' 或 (0\1\2)> 输出重定向:把前面的内容输入到后面,会清除原有的文件内容;(有 1 没有都一样)
例子 :>myfile.txt      (清空原有内容)    echo ' i love you ' >myfile.txt

'>>' 或  (0\1\2)>>   追加输出重定向:把前面的内容追加到后面,不会清除原有文件内容; 
例子:echo 'I drop in love river with you; '>>myfile.txt

0< 或 <     输入重定向  : 把文件或文本内容   输入给  前面的命令;
例子:
[root@root myfile]# echo ' 1 2 3 4 '>myfile.txt
[root@root myfile]# cat myfile.txt
 1 2 3 4 
[root@root myfile]# xargs -n 2 <myfile.txt  (xargs -n 2  理解为:2个一个单位分组)
1 2
3 4

0<< 或 <<   输入追加重定向
[root@root myfile]# cat >>myfile.txt<<my     : (多行追加实例:)
i love you in mylife;
do you want to mirry with me?
my

数字的说明:
标准输入(stdin):        代码为0 ,使用 0< 或 0<< ,数据(输入的数据)流向从右到左
例子: cat  < myfile.txt
标准正常输出(stdout):代码为1 ,使用 1> 或 1>> ,数据(正确的数据)流向从左到右
例子: echo  oldbook >myfile.txt     echo  oldbooks >> myfile.txt
标准错误输出( stderr ):   代码为2 ,使用 2> 或 2>> ,数据(错误的数据)流向从左到右  
echo oldbook > myfile.text  2>b.txt     意思是:正确的数据输出到 myfile.txt,错误的输出到b.txt
cho odkbb > a.txt 2>'&'     意思是: 正确或者错误都输出到 a.txt
cho  oooddd  &>a.txt        意思是: 正确或者错误都输出到 a.txt
echo  shuikm  &>>a.txt      意思是:正确或者错误输出追加到 a.txt

xargs 分组

xargs -n  number <wenjian   分组
echo 1 2 3 4 5 6 7 8 >a.txt
例子:xargs  -n   3 <a.txt

cp 拷贝

cp  file  /temp  把某个文件或目录拷贝到 某个地方
例子:  cp  a.txt  /temp/      相对路径拷贝
[root@root myfile]# cp /myfile/a.txt  /my
cp: overwrite `/my/a.txt'? y
若拷贝目录需要 加参数  " -r   递归拷贝 "
" -a  相对于  ;
-p: 保持属性 ;
-d:链接文件  
-r  "拷贝目录  
在拷贝时 ,让系统 不提示覆盖信息  
cp 前 加 " \ " ;或者  写全路径  
例子:/bin/cp  /my/a.txt   /temp/ a.txt
                     \cp  -r /myfile  /temp   

rm remove

rm    -f(force)强制   -r(recuresive) 递归删除目录   /  mydirectory
rm -fr /{1,2,3,4,5,6,7,8} 

mv 移动文件和目录

mv  file.txt  /temp    原位置文件就没有了

find 查找

find  查找   -type f (什么类型)  -name (叫什么名字)  " file.txt"   -exec(做什么动作)
find  /myfile   -type f  -name  ' myfile.txt '    -exec  rm {} \;
! 取反的意思    find  /myfile   -type f ! -name  ' myfile.txt' 
-a(and) 交集    find  /myfile   -type f  -name  ' myfile.txt' -a 'a.txt'    默认是交集
-o (or) 并集      find  /myfile   -type f  -name  ' myfile.txt'  -o 'a.txt'
上面例子是:找到/myfile 目录下file类型的myfile.txt 文件 ' {} 内容 '删除操作
find  /myfile   -type f  -name  "*.txt "  | xargs rm -f 
把查找的内容  放到一行上  进行删除
find  +  rm   删除该目录下其他文件  但保留指定文件
find  /my  -type f !- name ' 8.txt'  -exec  rm -f {} \;

grep 过滤 -v 排除后面的

grep  【内容】  【 文件】     显示【内容】          例子:grep   123  a.txt
v  过滤排除的内容显示除了过滤以外的内容              例子: grep  -v   123  a.txt 
A  除了显示匹配到的一行外 ,并显示该行之后的num行     例子: grep  20 -A 10  a.txt
B  除了显示匹配到的一行外 ,并显示该行之前的num行     例子: grep  30 -B 10  a.txt
C  除了显示匹配到的一行外 ,并显示改行之前后的num行   例子: grep  25 -C  5  a.txt

head 头部 tail 尾部

head  -num   a.txt   读取前 num 行  从a.txt文件
例子:head  -10  a.txt  读取前10行数据

tail  -num   a.txt   读取后 num 行  从a.txt文件
例子: tail  -10 a.txt 读取后10行数据

有个 a.txt 文件内容100行,要求读取20-30行
例子:head  -30  a.txt | tail -11   

安装软件包

    yum   install   【参数】【y/n  代表  是否提示】
     yum install tree -y 

别名 的作用:alias \ unalias

给危险指令加防护 防止误操作
简化命令
alias  查看和设置系统现有的别名设置别名
unalias   取消现有的别名
unalias  cp  取消cp  -i  的别名
[root@root /]# alias rm='echo this command does not allow to use'
[root@root /]# rm
this command does not allow to use
[root@root /]# alias net='cat /etc/sysconfig/network-scripts/ifcfg-eth0'
[root@root /]# net
DEVICE=eth0
HWADDR=00:0c:29:54:22:9d
TYPE=Ethernet
UUID=f0212429-d0c9-4ff5-9d33-8c7231d5664c
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp
USERCTL=no
PEERDNS=yes
IPV6INIT=no

seq 序列

seq  num                    默认从1开始num结束
seq  -s  " " num                横着从1开始num结束;  -s  指定分隔符   默认  \n
seq  num1  num2         从num1开始到num2结束
seq  num1  num2   num3      从 num1 开始到 num3 结束 间隔 num2
    横着输出打印
    [root@root ~]# seq -s " " 10  
    1 2 3 4 5 6 7 8 9 10
    [root@root my]# seq 10 |xargs -n 3 
    (seq num 默认从1开始num结束,xargs -n num 分组)
    1 2 3
    4 5 6
    7 8 9
    10
    [root@root my]# seq 3 10 |xargs -n 3
    (seq num1 num2 从num1开始到num2结束,xargs -n num 分组)
    3 4 5
    6 7 8
    9 10
    [root@root my]# seq 1 2 20 |xargs -n 3
    (seq num1 num2 num3 从 num1 开始到 num3 结束 间隔 num2,xargs -n num 分组)
    1 3 5
    7 9 11
    13 15 17
    19

sed

语法:
        sed  ' s#1#2#g'  et.txt   
                        1 , 2  把 1 的内容, 替换成 2 的内容 
                        # 号  是分隔符   ,可以 / 或者  @ 替换  
    参数:
    -n   取消默认输出    
                            sed -n '20,30'p /my/ett.txt 
    -i   修改文件内容
                             sed -i 's#oldboy#oldgirl#g' test.sh  t.sh  test/a.sh
    -e   允许多项修改
    功能:
    p   打印           
                             sed -n '20,30'p /my/ett.txt 
    g  和  s 联合是 表示当前行全局匹配替换
                             sed -i 's#oldboy#oldgirl#g' test.sh  t.sh  test/a.sh   原理是这样)
                            (1) sed -i 's#oldboy#oldgirl#g' `find /my -type f -name "*.sh"`
                            (2) find /my -type f -name "*.sh |xargs  sed -i 's#oldboy#oldgirl#g'
    s  查找并替换  
                             sed -i 's#oldboy#oldgirl#g' test.sh  t.sh  test/a.sh  (原理是这样)
                             (1) sed -i 's#oldboy#oldgirl#g' `find /my -type f -name "*.sh"`
                             (2) find /my -type f -name "*.sh |xargs  sed -i 's#oldboy#oldgirl#g'
上一篇:vba一些常用方法汇总(excel)


下一篇:python打包pyinstaller