ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

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

2019-05-03 23:55:06  阅读:309  来源: 互联网

标签:所学 五节 myfile sh Linux root txt my find


先说道面试题

实例一:只查看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'

标签:所学,五节,myfile,sh,Linux,root,txt,my,find
来源: https://blog.51cto.com/12838569/2388682

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有