3、常见命令操作

这里写图片描述
这里写图片描述

命令介绍
    mkdir  创建目录的命令 make directory
    touch  创建文件“摸”,修改时间戳
    pwd  显示当前的路径
    -ls   -l(long)d(directory)显示目录或者文件  全程list
    ls -l  /root/
    tree   查看目录结构
    cd    切换目录层次change directory
    echo  打印输出内容(printf复杂的输出)
    seq 打印数字序列, 提示: seq 10等价于echo{0..10}
    cat   查看文件内容、往文件中写入
    vi/vim    文件编辑器
    cp    拷贝文件、拷贝目录
    mv    移动文件、移动目录
    rm    删除文件、目录
         -f强制删除文件  -r递归删除 删除文件或目录  -fr删除文件、目录
    rmdir  删除空目录,基本上已经淘汰

    grep   核心命令之一(三剑客的老三)过滤 -v排除
    sed    核心命令之一(三剑客的老二) -n取消默认输出 p打印 d删除
    awk    核心命令之一(三剑客的老大)

    head  头部  显示文件头部-n -行数  head -n 5 oldboy.txt  (默认行数:10)
    tail  尾部  显示文件尾部-n -行数  tail -n 2 oldboy.txt  (默认行数:10
符号介绍
    ;     多个命令的分隔符
    /     根或者路径的分隔符
    >     重定向(数据流朝着箭头的方向流动,会覆盖原来的文件)
    >>    追加重定向(在原来文件的结尾,追加内容)
    ..    返回上一级目录   cd ..、
    .     当前目录
    { }   配合echo打印序列 echo{1..40}

【案例演示】

1、创建一个目录(文件)data
    mkdir  创建目录的命令 make directory
    -ls   -l(long)d(directory)显示目录或者文件  全程list
    cd    切换目录层次change directory
答案:
    mkdir /data
    cd /;   mkdir /data   

 ls -l /root/   查看/root/目录下有什么文件。

2、在/data下创建oldboy.txt文件
答案:
    touch /data/oldboy.txt
    cd /data; touch oldboy.txt
时间过程:
    touch /data/oldboy.txt
    ls -l /data/oldboy.txt    <--查看创建的oldboy.txt,注意没有上面的d参数,为什么呢?

如果在/data中有同名的文件存在,不会提示,也不会覆盖,会更新文件的时间戳。
【总结】touch [文件名]---“摸”一下文件,如果文件不存在,就创建文件;如果文件存在,就改变文件的访问时间atime等时间戳信息。

windows的目录分隔符:  \
linux的目录分隔符:   /



3、vi/vim  记事本编辑器
            i、a
    命令模式《====》插入模式
             Esc
命令模式:无INSERT关键字
插入模式:有INSERT关键字
    :wq  写入并退出
    :q   直接退出

4、为/data下的oldboy.txt文件添加"oldboy"
答案:
方法一:常规编辑方法-->用vi编辑器
    执行 vi oldboy.txt 进入 vi 编辑器(默认命令模式)、点击 a 或 i 进入编辑模式,敲入内容oldboy ,然后按键盘上的 Esc 键退出编辑模式(默认命令模式),最后敲 :wq(write quit) 保存并退出。  

方法二:单行插入文本,放到文件的尾部
    echo "ABCD" > oldboy.txt 
    cat oldboy.txt 

方法四:多行文本
cat>>/data/oldboy.txt

    CCC
    DDDCtrl+C或者Ctrl+D可以退出追加
    cat oldboy.txt 

方法五:多行文本:写脚本常用,追加多行,内容都是放到文件的尾部
    cat>>/data/oldboy.txt<<EOF
    AAA
    BBB
    CCC
    DDD
    EOF
【注】EOF要顶格写,EOF必须成对出现,也可以用其它成对的标识符代替
作用:把上面的四行内容追加到/data/oldboy.txt文件中

5、cp拷贝文件、拷贝目录(-r)

(1)把oldboy.txt文件拷贝到/tmp/下
格式:cp  src文件路径下的文件  dst文件路径
答案:
    cp /data/oldboy.txt /tmp/
    ls /tmp/
(2)拷贝文件或者目录-a -p -r
总结:
    cp [-aifpru] [源文件] [目标文件]
-a :相当于-pdr
-p :连同档案的属性也一起复制过去
-r :递归,用于复制目录

6、mv 移动文件、移动目录(不用-r)
mv /data  /root/
【提示】如果希望带目录拷贝,尽量不要mv /data/  /root/,移动目录时,源目录结尾不要多余的斜线。
    虽然这样是可以的,但是我们要养成良好的习惯和规范。
【总结】
mv [-ifu] [源文件/源目录] [目标文件/目标目录]
    -i :如果目的文件已经存在,询问是否覆盖
    -f :强制执行,不会询问
    -u :如果目的文件已经存在,且目的文件比源文件新,才会移动
提示:如果源文件是多个,那么目的文件在最后,且是目录

7、rm(remove)删除文件、删除目录(-r)
(1)删除文件:rm 文件名
    进入root目录下的data目录,删除oldboy.txt
答案:
    cd /root/data/
    rm oldboy.txt

y:是
[说明]
    rm -f 文件名   //强制删除,不提示,不推荐使用
(2)删除目录: rm -r 目录名  

    rmdir data
    rm -fr 目录    //强制删除目录

8、grep  (以行为单位)进行过滤操作
题目1:假设oldboy.txt中有三行aaa,bbbb,ccc,abcd那么想只打印出来aaa,bbbb,ccc应该怎么打印?
答案:
法一:
    grep -v abcd  oldboy.txt    //除去 oldboy.txt中的abcd,再打印出来
法二:
    head -3  oldboy.txt  //打印出oldboy.txt文件中的前三行
法三:
    sed /^abcd/d oldboy.txt   //把以abcd开头的删除后再打印:其中^表示以_______开头;如果不加^,表示包含_______。
[扩展]
    sed -n/a/p oldboy.txt   //-n表示不用默认方式打印,包含a的打印
    sed -n/^a/p oldboy.txt   //-n表示不用默认方式打印,以a开头的打印

题目2:把oldboy.txt中包含a的行打印出来?
答案:
    grep  a  oldboy.txt
    sed -n /a/p oldboy.txt

=================================================================================================
快捷键Tab:命令、目录补全键
man + 命令 :查找命令的定义

命令介绍:
   取消默认
    alias 别名
    alias|grep cp
    unalias 取消别名
    /bin/cp 
    \cp

    which 查看命令的路径whereis,locate,find / -type f -name "cp"
    mkdir -p /data/oldboy  其中:必须加-p,才可以递归创建多个目录

[find命令]
    find 查找路径  
        find / -type f -mtime 按照修改时间 -name "oldboy.txt"在根目录下查找文件名为"oldboy.txt"的类型为“文件”的路径
    find 与 xargs用的更加频繁(用管道|相连)

    sed -i s###g
    akw

    xargs 用于把find/ls的输出交给后面处理
    man  查看命令以及配置文件等帮助
符号介绍:
    |   管道:通过管道把前一个命令的输出交给后一个命令继续处理
    s###g
1、请用一条命令完成创建目录/oldboy/test,即创建/oldboy目录以及/oldboy/test目录
答案:
    mkdir -p /oldboy/test  //-p递归创建目录,一般第一级目录不存在时用-p,否则报错
    tree /oldboy/     //查看目录树结果
【问题】如何安装tree?

2、已知/tmp目录下已经存在text.txt文件,如何执行命令才能把/tmp/test.txt拷贝到/mnt下覆盖掉/mnt/text.txt,而让linux系统不提示是否覆盖(root权限下)。
答案:
法一:
    \cp /tmp/text.txt /mnt/
法二:
    /bin/cp /tmp/text.txt /mnt/   其中which cp得到/bin
法三:alias
alias 查看别名
默认情况下,cp的别名是cp -i   用查看cp的别名:alias|grep cp

因此可以先用unalias去除cp的别名
    unalias cp   //不即cp使用别名
    cp /tmp/text.txt /mnt/
提示:命令行处理别名仅在当时生效,重启系统后就失效了
【注】系统默认的别名的作用:
    通过给危险命令加一些保护参数,防止人的误操作
    把很多复杂的字符串简单化

2、man + 命令
作用:查找命令的作用

3、which 命令
作用:查找命令的路径

4、find + 目录 + -type 类型 + -name 名称     查找路径
    find + 目录 + -type 类型 + -name 名称 + -exec + 命令 参数类型 + {} \;
案例:
c
find / -type f -name "oldboy.txt" -exec rm -f {} \;

这里写图片描述
删除所有的“oldboy.txt”文件还可以用下面的方法
find / -type f -name “oldboy.txt” | xargs rm -f

【解释】其中 | 的含义是“管道”,下面是管道的解释:
这里写图片描述
find / -type f -name -mtime +15 “oldboy.txt” | xargs rm -f 按照时间
find / -type f -name -mtime +5 “oldboy” | xargs rm -rf
这里写图片描述
其中:-mtime示意图
这里写图片描述

5、题目:只查看oldboy.txt文件(100行)第20-30行的内容
答案:
方法一;
    head -n 30 oldboy.txt | tail -n -10 
方法二:sed擅长输出“行”
    sed -n 20,30p lodboy.txt
方法二:awk擅长输出“列”,此处也可以处理行,只不过复杂一点。
    awk '{if(NR>19&&NR<31) print $0}' oldboy.txt    //$0表示处理“行”

6、题目: /data目录以及其子目录下所有以扩展名.sh结尾的文件中包含aaaa的字符串全部替换为AAAA。
答案:
    find /data -type f name "*sh" | xargs sed -i s#aaaa#AAAA#g
        其中:s###g  :   s#被替换的字符串#替换成的字符串#g
            -i表示替换后写入文件   
批量查看:xargs是对前面find到的文件,按照行进行cat处理
    find /data -type f name "*sh" | xargs cat


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值