您的位置:新葡亰496net > 电脑系统 > 新葡亰496netlinux命令小题,linux命令小结

新葡亰496netlinux命令小题,linux命令小结

发布时间:2019-07-14 22:06编辑:电脑系统浏览(54)

    第1章 阶段总结

     

      Linux 系统命令操作语法的格式:

    linux命令 小题 http://www.jianshu.com/p/743b27ac37a5

    linux命令小结 http://www.jianshu.com/p/5e009a8d01c9

    1.1 一、请详细描述linux系统从打开主机电源到进入登录界面整个过程的流程。

    BIOS开机自检
    
    mbr引导
    
    grub菜单
    
    加载内核
    
    init进程
    
    /etc/inittab
    
    /etc/rc.d/rc.sysinit
    
    /etc/re.d/rc
    
    启动mingetty进程
    
    登录界面
    

    1、创建一个目录/data

    记忆方法:英文make directorys缩写后就是mkdir。

    命令:

    1. mkdir /data

    2. cd /;mkdir data

    3. #提示:使用分号可以在一行内分割两个命令。

    实践过程:

    1. 方法一:

    2. [root@oldboy66 ~]# mkdir /data

    1. #查看data目录是否创建成功,ls是list列表的意思,-ld是ls的常用参数,是长格式查看目录属性,l表示长格式,d表示目录
    1. [root@oldboy66 ~]# ls -ld /data
    1. drwxr-xr-x. 2 root root 4096 Nov 30 13:40 /data

    2.    

    3. 方法二:

    4. #删除方法一创建的目录

    5. [root@oldboy66 ~]# rm -r /data

    1. #输入y表示确认删除,y是yes的缩写
    1. rm: remove directory `/data'? y
    1. #进入根目录/下

    2. [root@oldboy66 ~]# cd /

    3. #创建data目录,不带斜线/,因为已经进入了

    1. [root@oldboy66 /]# mkdir data
    1. #查看data目录本身

    2. [root@oldboy66 /]# ls -ld data

    1. drwxr-xr-x. 2 root root 4096 Nov 30 13:44 data

    总结:

    cd后跟相对路径或者绝对路径,表示进入目录,如果不跟任何东西,会进入当前用户的家目录。

    相对路径概念:不从/开始,而是从当前目录开始,例如:data/,mnt/oldboy。

    绝对路径概念:从/开始的目录,就叫绝对路径,例如:/data/,/mnt/oldboy。

    cd命令记忆方法:change directory。

    mkdir [-mp] [目录名称] 建立目录

        -m:这个参数用来指定要创建目录的权限,但是很少用,都会用chmod来处理。

        如:mkdir –m 777 /tmp/test,即建立一个权限为777的目录。

        -p:这个参数用来递归创建目录,mkdir的常用参数。

      命令        【参数选项】          【文件或路径】

    [root@localhost ~]#  #号的是root用户环境 $是普通用户环境

    1.创建一个data目录

    1.2 二、我想在/data/oldboyedu目录下面创建 一个oldboy.txt文件

    [root@oldboyedu ~]# cd /data/oldboyedu

    -bash: cd: /data/oldboyedu: No such file or directory

    1.为何出现这样的错误

    这个目录不存在
    

    2.如何解决这个错误呢?

    创建目录
    
    给出命令:mkdir -p /data/oldboyedu
    

    2、在/data下面建立一个文件oldboy.txt

    命令:

    1. touch /data/oldboy.txt

    2. cd /data;touch oldboy.txt

    3. #创建文件也可以用echo等,只不过touch是专业的,也可用间接创建文件的命令,如vi,cat等。

    1. 例如:

    2. echo > /data/oldboy.txt

    3. > /data/oldboy.txt

    实践过程:

    1. 方法一:

    2. #在/data目录下创建oldboy.txt

    3. [root@oldboy66 data]# touch /data/oldboy.txt

    4. #查看创建的oldboy.txt

    5. [root@oldboy66 data]# ls -l /data/oldboy.txt

    6. -rw-r--r--. 1 root root 0 Nov 30 14:04 /data/oldboy.txt

    7.    

    8. 方法二:

    9. [root@oldboy66 /]# cd /data

    10. #如果同名文件存在,不会提示也不好覆盖,会更新文件的时间戳

    1. [root@oldboy66 data]# touch oldboy.txt

    总结:

    touch"摸"。touch [文件名] 就是"摸"一下文件,如果文件不存在,就建立新文件,如果存在,就改变文件的访问时间atime等时间戳信息。

    路径分隔区别:

    windows的目录分隔D:PIColdboy。

    linux的目录分隔/data/。

      rm                      -f                              /etc/hots

    Linux命令的写法

    [root@localhost ~]# mkdir /data 或者:cd /;madir data

    1.3 三、接上题,向oldboy.txt加入内容 "I love studying Linux." (不少于2种方法)

    方法1

    vi或vim修改
    

    方法2

    echo ' I love studying Linux.' >/data/oldboyedu/oldboy.txt
    

    3、为oldboy.txt增加内容为"I am studying linux"。

    方法一:常规编辑方法

    执行vi oldboy.txt进入vi编辑器(默认命令模式),点击a或i进入编辑模式,敲入内容I am studying linux,然后按键盘上的esc键退出编辑模式(进入到命令模式),最后敲:wq保存并退出。wq解释write quit。

    此方法说明:

    vi就是类似记事本一样的linux下的常用编辑器,如果想功能更丰富可以用vim代替vi,vi/vim的内部有很多的命令技术点,例如i就是insert,进入插入编辑模式的状态的意思,esc键是切换到命令模式,命令模式下可以敲冒号":"在后面才可以接命令参数,例如wq,w是write,q是quit。

    vi 编辑器,相当于记事本,有编辑功能,但是较弱。

    vim 复制编辑器,相当于emeditor,editplus,notepad 。

    快捷键:TAB 命令、路径补全。

    新葡亰496net 1

    方法二:单行或多行文本插入常用命令,内容都是存放到文件的尾部。

    1. echo "I am studying linux" >>/data/oldboy.txt

    实践过程:

    1. #特殊的编辑方法,通过echo命令使用单引号把引号的内容通过>>追加到/data/oldboy.txt,注意:是追加不是覆盖
    1. [root@oldboy66 data]# echo "I am studying linux" >>/data/oldboy.txt

    2. #检查追加的结果

    3. [root@oldboy66 data]# cat oldboy.txt

    1. I am studying linux

    此法说明:

    echo是一个打印输出内容的一个常用命令,配合">或>>"可以为文件覆盖及追加内容。">"意思为重定向,会清除文件里所有以前数据,">>"为内容追加,只在文件尾部追加需要的内容,还有一个较复杂不常用的类似命令printf。

    特殊字符命令:

    >重定向,会清除文件里所有以前的数据,增加

    >>追加重定向,

    方法三:写脚本常用,追加多行,内容都放在文件的尾部。

    1. cat >>/data/oldboy.txt<<EOF
    1. I am studying linux

    2. EOF

    3. #注意:结尾的EOF要顶格写,EOF也可以用别的字符替代,只要是一对就好。

    方法二、方法三为命令行或脚本中常使用的办法,都很重要。

    方法二用于单行文本,方法三可以是多行文件,文本中如果有特殊字符,如$等需要用转义才行。

    1. echo '

    2. 111

    3. 222

    4. 333

    5. '>>oldboy.txt

    方法四:

    1. [root@oldboy66 data]# cat >>/data/oldboy.txt

    2. I am studying linux

    按ctrl d或ctrl c组合键两遍结束编辑。此方法为特殊编辑方法。

    总结:

    echo是一个打印输出内容的一个常用命令,配合">"或">>"可以为文件覆盖或追加内容。echo $PATH打印出PATH的值。

    重定向:意思是将"数据传到其他地方"。将某个命令执行后本应该出现在屏幕的数据,传输到其他地方,执行命令时,这个命令可能会通过文件读入数据,经过处理之后,再将数据输出到屏幕。

    >或1> 输出重定向:把前面输出的东西输入到后边的文件中,会删除文件原有内容。

    >>或1>> 追加重定向:把前面输出的对象追加到后边的文件中,不会删除文件原有内容。

    <或<0 输入重定向:输入重定向用于改变命令的输入,后面指定输入内容,前面跟文件名

    <<或<<0 追加输入重定向: 后跟字符串,用来表示"输入结束",也可以ctrl d来结束输入。

    2> 错误重定向:把错误信息输入到后边的文件中,会删除文件原有内容。

    2>> 错误追加重定向:把错误信息追加到后边的文件中,不会删除文件原有内容。

    标准输入(stdin):代码为0,使用<或<<,数据流向从右向左。

    标准正常输出(stdout):代码为1,使用>或>>,数据流向从左向右。

    标准错误输出(stderr):代码为2,使用2>或2>>。

    箭头的方向就是数据流的方向。

    特殊写法:

    1. echo oldboy 2>a.txt 1>b.txt
    1. #2>&1 就是把标准错误重定向到标准输出

    2. echo oldboy &>log.txt

    3. #也可以用>&

    4. echo oldboy >log.txt 2>&1

      提示:

    命令 [参数] [路径,文件]  例如:rm -f /tmp/oldboy.log  删除tmp下的oldboy.log文件 []表示可选 命令:rm 参数:-f  路径文件:rm -f /tmp/oldboy.log 命令 参数 路径文件以空格隔开

    查看这个文件:[root@localhost ~]# ls -ld /data

     1.3.1 说说这些特殊符号含义:   >  >>  2> 2>>   #(井号)  .(点)  ..(两个点)  ~  *  $  |

       转义字符 撬棍 脱掉马甲打回原形(或类似含义)
    
    >   重定向符号 先清空文件内容,然后追加内容(或类似含义)
    
    >>  追加重定向 追加到文件结尾(或类似含义)
    
    2>  错误输出重定向
    
    2>> 错误输出追加重定向
    
    #   井号 注释或root用户命令提示符或sed分隔符(sed 's###g')
    
    .   当前目录 或 正则任何一个字符 或 用于生效
    
    .   /etc/profile === source /etc/profile #这个可以不讲解
    
    ..  当前目录的上级目录
    
    ~   当前用户家目录或awk中表示匹配(awk '$1~/oldboy/' xxx)#这个可以不讲解
    
    *   所有字符或任意字符或正则表达式表示前一个字符连续出现0次或0次以上
    
    $   取变量内容 或 正则以...结尾
    
    |   管道 或 正则表示或者
    

    4、把oldboy.txt文件拷贝到/tmp下

    命令:

    1. cd /data

    2. cp oldboy.txt /tmp/

    3. 提示:加cp -a,cp,-p保持属性

    总结:

    cp [-aifpru] [源文件] [目标文件]

        -a:相当于-pdr

        -d:若源文件为链接文件(link file),则复制链接文件属性而非档案本身。

        -f:强制,若目标档案已经存在且无法开启,则移除后再尝试。

        -i:若目标文件已经存在时,在覆盖时会先询问。

        -p:连同档案的属性一起复制过去,而非使用默认属性。

        -r:递归,用于复制目录。

        -u:若目标文件存在,则目标文件比源文件旧时才复制。

    提示:如果源文件是多个,那么目的文件在最后,且是目录。

    cp的重要参数apr。

      1、括号中[]表示可选,即命令的参数及路径文件是可选的;一个命令不同的功能

    man 帮助命令 man后跟命令 查看命令及配置文件

    2.在/data下面建立一个文件oldboy.txt

    1.4 test.txt内容为:

    trainning

    fanbingbing

    lidao     

    5、把/data目录移动到/root下

    命令:

    1. mv /data /root/

    2. 提示:如果希望带目录拷贝,尽量不要mv /data/ /root/,移动目录时,源目录结尾不要多余斜线。

    总结:

    mv [-ifu] [源文件/源目录] [目的文件/目的目录]

        -i:如果目的文件已存在,询问是否覆盖

        -f:强制执行,不会询问

        -u:若目的文件存在,则比源文件新才会移动。

    提示:如果源文件是多个,那么目的文件在最后,且是目录。

    如:f1、f2是文件,/d1、/d2是目录

    mv f1 f2:如果f2不存在,则相当于f1重命名为f2;如果f2存在,则f1重命名为f2,并覆盖f2 。

    mv f1 /d1:如果/d1不存在,则把f1移动到/下,并重命名为d1;如果/d1存在,则把f1移动到/d1下。

    mv /d1 /d2:如果/d2不存在,则把/d1重命名为/d2;如果/d2存在,则把/d1移动到/d2下。

    mv /d2 f1:如果f1不存在,则把/d2移动到当前目录,并重命名为f1;如果f1存在,会提示f1是个文件,不能用目录覆盖。

      2、参数选项表示使用一个命令的不同功能。 

    1.mkdir 创建目录命令

    [root@localhost ~]# cd /data

    1.4.1 四、请给出输出test.txt文件内容时,不包含trainning字符串的命令。

    方法1

    grep -v 'trainning' test.txt #不加引号也行
    

    方法2

    tail -2 test.txt
    

    方法3

    sed '/trainning/d' test.txt
    

    方法4

    awk '!/trainning/' test.txt
    

    方法5

    grep '^[^t]' test.txt 
    

    6、进入root目录下的data目录,删除oldboy.txt

    命令:

    1. cd /root/data/

    2. rm oldboy.txt

    删除一个文件一般用rm oldboy.txt,此法会提示你确认。用rm –f oldboy.txt方法不会提示确认直接删除,比较危险。

    对于文件的删除禁止用"rm –fr 文件名",这是杀鸡用牛刀的做法,必须禁止掉,最多用"rm –f 文件名"。rm –fr 一般用来强制删除目录不提示,非常危险。

    建议:

    使用mv替代rm,也就是把文件移动到/tmp下,然后等/tmp分区将要满时一次性删除,减少犯错。

    find删除

    1. [root@oldboy66 data]# find /root/data/ -type f -exec rm -f {} ;

    在脚本中删除文件或目录时生产环境的使用方法一般为:

    1、和xargs搭配用法

    1. #删除15天以前的文件

    2. find . -type f -name "*.log" -mtime 15 |xargs rm -f

    1. #删除目录30天 慎用

    2. find . -type f -name "*.log" -mtime 30 |xargs rm -fr

    2、使用find的-exec

    1. #在/logs目录中查找更改时间在5日以前的文件并删除它们
    1. find /logs -type f -mtime "*.log" -mtime 5 -exec rm {} ;

    find命令的原理:

    新葡亰496net 2

    :特殊字符,让一个有特殊意义的字符,脱掉马甲。

    .. :上级目录

    . :当前目录

    . :代表.号

    | :管道(把前一个命令结果的输出交给后一个程序进行继续处理)

    -type :按文件类型查找

    -name :按名字查找,查找的内容最好用双引号括起来。

    ! :取反。

    删除目录下除了oldboy.txt外的所有文件:

    1. [root@oldboy66 data]# find /root/data -type f ! -name "oldboy.txt" |xargs rm -f

    2. [root@oldboy66 data]# find /root/data/ -type f ! -name "oldboy.txt" -exec rm {} ;

    linux面试题:删除一个目录下所有文件,但保留一个指定文件。

       

       

      1)创建一个目录/data

    创建一个data目录

    [root@localhost data]# touch oldboy.txt

    1.5 五、入职新公司,老大让你在服务器上限制rm命令,当用户输入rm 命令时候提示”rm command is not allowed to use.” 请问实现的步骤是?。

    1)命令行测试
    
    alias rm='echo command is not allowd to use'
    
    2)永久生效
    
    写入/etc/profile
    
    3)生效
    
    source /etc/profile
    

    7、退出到上级目录,删除data目录。

    命令:

    1. cd ..或cd ../

    2. rm -r data或rmdir data

    3. #里面是空目录不需要用-rf。

    总结:

    .. :相对路径,表示当前目录的上一级目录,例如:/mnt/oldboy,mnt就是oldboy的上级目录。

    . :相对路径,表示当前目录,即当前命令行的目录。

    rm [-irf] [文件/目录] 删除文件/目录

        -i:询问用户是否正确删除,用y或n来回答。

        -r:删除目录时加该选项,删除目录及目录下的文件和目录。

        -f:强制删除,不用确认。

    rmdir [-p] [目录名] 用来删除空目录,-p表示递归删除目录,目录里不能有文件或者目录

    如:/a/b/c

    rmdir /a/b/c :会删除/a/b/c,而/a/b还在。

    rmdir –p /a/b/c :会删除/a,/a/b,/a/b/c。

    但是rmdir /a,rmdir –p /a/b都会出错,提示:Directory not empty。

      解答:

    [root@localhost ~]# mkdir /data 或者:cd /;madir data

    3.为oldboy.txt增加内容

    1.6 六、取出文件ett.txt 的第30到40行的内容。

    注:ett.txt由seq 20 120>ett.txt创建

    方法1

    sed -n '30,40p' ett.txt
    

    方法2

    awk 'NR==30,NR==40' ett.txt
    

    方法3

    head -40 ett.txt|tail -11
    

    方法4

    awk 'NR>=30&&NR<=40' ett.txt
    

    8、限定输出

    已知文件test.txt内容为:

    test

    liyao

    oldboy

    请给出打印test.txt内容时,不包含oldboy字符串的目录。

    方法一:

    head:头部,取文件的前N行,默认前10行,取出前三行-3 。

    1. [root@oldboy66 ~]# head -2 test.txt

    方法二:

    grep:过滤器,把想要的或者不想要的分离开,-v排除。

    1. [root@oldboy66 ~]# grep -v "oldboy" test.txt

    提示:也可以使用cat test.txt|grep –v "oldboy",这个命令虽然能实现,但是执行效率差很多。

    方法三:

    sed:删除,d表示delete删除,p表示print打印,-n取消sed的默认输出,-i改变文件内容。

        sed –n '/过滤的内容/处理的命令' 文件

    1. [root@oldboy66 ~]# sed -e '/oldboy/d' test.txt

    2. [root@oldboy66 ~]# sed /oldboy/d test.txt

    3. [root@oldboy66 ~]# sed -e /^oldboy/d test.txt

    4. [root@oldboy66 ~]# sed -n /[^oldboy]/p test.txt

       

    方法四:

    awk:

    1. [root@oldboy66 ~]# awk /[^oldboy]/ test.txt

      提示:Windows下的路径样式为C:datatest,而linux下的路径样式为/data/test

    2.cd 切换文件目录命令

    [root@localhost data]# vi oldboy.txt或者vim oldboy.txt

    1.7 七、

    通过修改文件( /etc/fstab或fstab ),可以设定开机时自动挂载文件系统。

    9、用一条命令完成创建目录/oldboy/test,即创建/oldboy目录和/oldboy/test目录

    命令:

    1. mkdir -p /oldboy/test

    实践过程:

    1. #递归创建目录,一般第一级目录不存在时用-p,否则报错mkdir: cannot create directory `/oldboy/test': No such file or directory
    1. [root@oldboy66 /]# mkdir -p /oldboy/test

    安装系统补装工具命令:

    yum安装或者rpm安装、源代码安装

    更新补丁执行(生产环境尽量不做,除非有已知的安全漏洞):

    yum update

    安装tree:

    1. [root@oldbo [root@oldboy66 /]# yum install tree -y

    2. #查询tree

    3. [root@oldboy66 /]# rpm -qa tree

    1. tree-1.5.3-3.el6.x86_64

    2. [root@oldboy66 /]# tree oldboy/

    1. oldboy/

    2. └── test

    3.    

    4. 1 directory, 0 files

    tree:显示目录树结构

    yum:linux里的包管理器,yum可以帮助解决依赖问题。

    例如:yum install tree -y,作用下载tree包,然后调用rpm命令安装tree包,如果需要依赖包,会自动下载并提前安装。

    rpm: -ivh(安装显示输出)

    rpm –ivh 包名.rpm(提前下载好),rpm安装的最大问题是无法解决依赖问题。

      因此/data就可以看做是c:data,不同的是Windows系统下还有D、E等盘,Linux下就只有/,它为所有目录的顶点。

    3.ls 查看文件目录命令

    打开文件lnsert 然后编辑

    1.8 八、

    在linux系统中,当LAN(局域网)内没有条件记案例DNS服务器,但又想让局域网内的用户可以使用计算机名互相访问时,应配置( /etc/hosts)文件(请写全路径)

    10、已知/tmp目录下存在test.txt文件,如何执行命令才能把/mnt/test.txt拷贝到/tmp下覆盖掉/tmp/test.txt,而linux系统不提示是否覆盖(root权限下)。

    命令:

    方法一:

    /bin/cp /mnt/test.txt /tmp/test.txt

    方法二:

    cp /mnt/test.txt /tmp/test.txt

    提示:此题就是屏蔽掉系统默认的对应命令别名,默认执行cp的操作是调用了别名的,所以提示覆盖。

    cp命令默认是不会提示overwrite,但是cp的-i选项会提示,而一般Linux的用户环境文件~/.bashrc中会把cp命名成alias cp='cp -i'。这样在Linux下输入cp命令实际上运行的是cp –i,加上一个""符号或者写cp全路径/bin/cp就是让此次的cp命令不使用别名(cp -i)运行。

    别名概念:

    输入alias查找当前别名。

    1. [root@oldboy66 /]# alias

    2. alias cp='cp -i'

    3. alias l.='ls -d .* --color=auto'

    1. alias ll='ls -l --color=auto'

    2. alias ls='ls --color=auto'

    3. alias mv='mv -i'

    4. alias rm='rm -i'

    5. alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

    取消别名设置:unalias(临时生效,重启失效)

    1. [root@oldboy66 /]# unalias cp
    1. [root@oldboy66 /]# alias

    2. alias l.='ls -d .* --color=auto'

    1. alias ll='ls -l --color=auto'

    2. alias ls='ls --color=auto'

    3. alias mv='mv -i'

    4. alias rm='rm -i'

    5. alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

    添加别名设置:

    1. [root@oldboy66 /]# alias cp='cp -i'
    1. [root@oldboy66 /]# alias

    2. alias cp='cp -i'

    3. alias l.='ls -d .* --color=auto'

    1. alias ll='ls -l --color=auto'

    2. alias ls='ls --color=auto'

    3. alias mv='mv -i'

    4. alias rm='rm -i'

    5. alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

    自定义别名oldboy:

    1. #设置oldboy为别名,执行echo I am oldboy linux

    2. [root@oldboy66 /]# alias oldboy="echo I am oldboy linux"

    1. #查看oldboy别名

    2. [root@oldboy66 /]# alias|grep oldboy

    1. alias oldboy='echo I am oldboy linux'
    1. [root@oldboy66 /]# oldboy

    2. I am oldboy linux

    3. #取消oldboy别名

    4. [root@oldboy66 /]# unalias oldboy

    1. [root@oldboy66 /]# alias|grep oldboy

    自定义rm:

    1. [root@oldboy66 /]# alias rm='echo "rm can not be used,pls use mv"'
    1. [root@oldboy66 /]# alias|grep rm
    1. alias rm='echo "rm can not be used,pls use mv"'
    1. [root@oldboy66 /]# rm -fr /root/oldboy/

    2. rm can not be used,pls use mv -fr /root/oldboy/

    方法三:

    unalias cp

    cp /mnt/test.txt /tmp/test.txt

    提示:命令行处理别名仅在当时生效,重启系统后失效。

    alias:查看以及定义别名

    unalias:取消别名

    ~:用户的家目录,针对root,~就代表/root。

    别名的配置文件,针对root用户/root/.bashrc;所有用户生效,/etc/bashrc或/etc/profile定义,生效执行soure /etc/bashrc或/etc/profile。

    别名的作用:

    1、通过给危险命令加一别保护参数,防止人为误操作。

    2、把很多复杂的字符串或命令变成一个简单的字符串或命令。

      英文:make directorys缩写后就是mkdir,这就是创建目录的命令。

    查看这个文件:[root@localhost ~]# ls -ld /data

    4.把oldboy.txt文件拷贝到/tmp下

    1.9 九、

    linux系统启动加载完成后,内核将启动名为(init)的程序,这也是引导过程完成后,内核运行的第一个程序。我们可以修改默认的启动级别为( 3),使得系统重启后自动采用命令行模式登录。

    11、只查看ett.txt文件(100行)内第20到第30行的内容。

    命令:

    sequence == seq序列

    1. #打印1到3

    2. [root@oldboy66 tmp]# seq 3

    3. 1

    4. 2

    5. 3

    6. #打印1到3

    7. [root@oldboy66 tmp]# seq 1 3

    8. 1

    9. 2

    10. 3

    11. 打印2到8

    12. [root@oldboy66 tmp]# seq 2 8

    13. 2

    14. 3

    15. 4

    16. 5

    17. 6

    18. 7

    19. 8

    20. #打印1到7的奇数

    21. [root@oldboy66 tmp]# seq 1 2 7

    1. 1

    2. 3

    3. 5

    4. 7

    5. #打印0到7的偶数

    6. [root@oldboy66 tmp]# seq 0 2 7

    1. 0

    2. 2

    3. 4

    4. 6

    Usage: seq [OPTION]... LAST

    or: seq [OPTION]... FIRST LAST

    or: seq [OPTION]... FIRST INCREMENT LAST

    -s:指定序列的分割符

    1. [root@oldboy66 tmp]# seq -s "--" 5

    2. 1--2--3--4--5

    3. [root@oldboy66 tmp]# seq -s "@" 5

    4. 1@2@3@4@5

    生成ett文件,seq 100 >ett.txt。

    1. [root@oldboy66 tmp]# seq 100 >ett.txt

    方法一:

    tail:尾巴,取出文件的最后N行,默认最后10行,取最后三行-n 3 。

        -f:跟踪一个文件的尾部实时变化(tail –f ett.txt)。

    1. [root@oldboy66 /]# head -30 ett.txt|tail -11

    2.    

    3. [root@oldboy66 /]# tail -81 ett.txt|head -11

    方法二:

    1. #效率高(首选)

    2. [root@oldboy66 tmp]# sed -n '20,30p' ett.txt

    3. [root@oldboy66 tmp]# sed -n 20,30p ett.txt

    取出第30行:

    1. [root@oldboy66 tmp]# sed -n '30p' ett.txt

    sed命令与选项:

    sed强大的功能,是由以下多种命令和选项联合工作的结果。sed通过指定某一地址来决定对哪些行来进行处理,如果没有指定地址,sed默认处理标准输入所有的行。地址的形式可以是数字,正则表达式,或两种结合。如果给出的是由逗号连接的两个地址,则表示sed要处理的内容就是该两个地址之间的行。

    sed命令就是用来处理那些由地址指定的输入行。

    命令

    功能

    a

    在当前匹配行的后面添加一行或多行文本内容

    c

    更改当前匹配行的文本,替换成新的文本,原文本行内容消失

    d

    删除当前模式空间所有的内容

    D

    删除当前模式空间内第一个n之前的内容

    i

    在当前匹配行之前插入一行或多行文本内容

    h

    把模式空间的内容复制到保持空间,并覆盖当前保持空间的内容

    H

    把模式空间的内容追加到保持空间,原保持空间的内容依旧存在(注意两行之间的n)

    x

    交换当前模式空间和当前保持空间的内容

    g

    与s联合使用时,表示对当前行全局匹配替换

    g

    取出当前保持空间的内容,并将其复制到模式空间,覆盖掉原模式空间的内容

    G

    取出当前保持空间的内容,并将其复制到模式空间,追加到原模式空间内容的后面(注意两行之间的n)

    p

    打印匹配行

    P

    打印当前模式空间内容,直到第一个换行符(n)为止

    n

    读取下一行内容,并复制到模式空间,取代原模式空间的内容

    N

    读取下一行内容,并复制到模式空间,追加到原模式空间内容的后面(注意两行之间的n)

    q

    第一个模式匹配完成后退出或立即退出

    r

    从另一个文件中读取文本,并加入到当前匹配行后面

    s

    常说的查找并替换,用一个字符串替换成另一个

    w

    将匹配的行写入新的文件

    y

    将字符转换为另一个字符(对正则表达式不能使用y命令)

    !

    对所选行以外的所有行进行相应处理

    =

    显示匹配内容行的行号

       

    sed选项:

    选项

    功能

    -e

    允许多项编辑

    -f

    后接sed脚本的文件名

    -n

    取消默认输出

    -i

    修改文件内容

       

    打印:

    sed –n '2p' oldboy.txt (打印第二行)

    sed –n '$p' oldboy.txt (打印最后一行)

    sed –n '1,3p' oldboy.txt (打印第1到3行)

    sed –n '/yass/'p oldboy.txt (打印匹配yass的行)

    sed –n '4,/The/'p oldboy.txt (在第四行匹配模式The,若匹配,则打印)

    sed –n '/$/'p oldboy.txt (匹配元字符$)

    sed –n '1,$'p oldboy.txt (打印整个文件,只需将执行范围设为第一行到最后一行1,$,$意义最后一行)

    sed –n '/.*ing/'p oldboy.txt (任意字符,使用模式/.*ing/查询以ing结尾的任意单次)

    sed –n '/movie/=' oldboy.txt (打印匹配行的行号)

    sed –n –e '/movie/p' –e '/movie/=' oldboy.txt (打印匹配行的内容和行号)

    sed '=' oldboy.txt|tail -2 (显示行数或最大行号)

    方法三:

    1. [root@oldboy66 tmp]# awk '{if(NR<31 && NR>19) print $1}' ett.txt

    2. [root@oldboy66 tmp]# awk '{if(NR<31 && NR>19) printf $1"n"}' ett.txt

    awk:一门语言,过滤内容(取列)

        awk '{print $1}' 文件 $1第一列,$2第二列

        awk –F "分隔符" '{print $1}' 文件 $1第一列,$2第二列,…,$(NF-1)(倒数第二列),$NF(最后一列)

    案例:awk默认分隔符空格

    1. [root@oldboy66 tmp]# cat awk.txt
    1. oldboy oldgirl

    2. ddd fff

    3. [root@oldboy66 tmp]# awk '{print $1}' awk.txt

    4. oldboy

    5. ddd

    6. [root@oldboy66 tmp]# awk '{print $2}' awk.txt

    7. oldgirl

    8. fff

    -F指定分隔符:

    1. [root@oldboy66 tmp]# awk -F ":" '{print $1}' /etc/passwd

    指定输出行之间的分隔符:

    1. [root@oldboy66 tmp]# awk -F ":" '{print $1 " " $3 "==" $5}' /etc/passwd

    总结:

    head [-n] [文件名]:后面直接跟文件名,显示文件前10行。-n表示显示文件前n行。

    tail [-nf] [文件名]:后面直接跟文件名,显示文件后10行。-n表示显示文件后n行。

    方法四:

    1. [root@oldboy66 tmp]# cat ett.txt|grep 20 -A 10

    2. [root@oldboy66 tmp]# cat ett.txt|grep 30 -B 10

    3. [root@oldboy66 tmp]# cat ett.txt|grep 25 -C 5

    -A:除了显示匹配的一行之外,并显示该行之后的num行。

    -B:除了显示匹配的一行之外,并显示该行之前的num行。

    -C:除了显示匹配的以后之外,并显示该行前后各num行。

      本题命令答案:

    4.touch 创建文件命令或者修改文件时间搓

    [root@localhost data]# cp  oldboy.txt /tmp

    1.10 十、说出下面几个文件的作用

    /var/log/messages            系统默认日志(系统日志也行)
    
    /var/log/secure              系统安全日志或用户的登录情况
    
    /etc/hosts                   ip地址与主机名(域名)对应关系  或 用于解析主机名
    
    /etc/fstab                   开机自动挂载
    
    /var/spool/cron/root         定时任务配置文件
    
    /etc/rc.local                开机自启动配置
    

    12、分析图片服务日志,把日志(每个图片访问次数*图片大小的总和)排行,取top10,也就是计算每个url的总访问大小。

    说明:这个功能可以用于IDC网站流量带宽很高,然后通过分析服务器日志哪些元素占用流量过大,进而进行优化或裁剪该图片,压缩js等措施。

      mkdir /data   或者cd /;mkdir  data

    在/data下面建立一个文件oldboy.txt

    cp(拷贝) 文件 拷贝到路径

    1.11 十一、统计/var/log下文件个数

    ls /var/log|wc -l
    
    
    find /var/log|wc -l
    

    13、把/oldboy目录及其子目录下所有以扩展名.sh结尾的文件中包含./hostlists.txt的字符串全部替换为./idctest_iplist。

    命令:

    1. [root@oldboy66 tmp]# find ./ -name "*.sh" -type f -exec sed -i 's#./hostlists.txt#./idctest_iplist#g' {} ;

    解析:

    sed替换:

    sed –i 's#oldboy#oldgirl#g' a.txt

        s:查找并替换,用一个字符串替换成另一个。

        g:与s联合使用时,表示对当前行全局匹配替换。

        -i:修改文件内容。

        #:分隔符,也可以用/、@等替换。

    find查找:

    find / -type f –name "a.txt"

    组合:

    替换当前目录下面所有文件名为test.txt中的oldboy为oldgirl。

    1. [root@oldboy66 tmp]# find ./ -name "test.txt" -type f|xargs sed -i 's#oldboy#oldgirl#g'

    2. [root@oldboy66 tmp]# find ./ -name "test.txt" -type f -exec sed -i 's#oldboy#oldgirl#g' {} ;

    3. [root@oldboy66 tmp]# sed -i 's#oldboy#oldgirl#g' `find ./ -name "test.txt" -type f`

    查看:

    1. [root@oldboy66 tmp]# find ./ -name "test.txt" -type f|xargs cat
    1. [root@oldboy66 tmp]# find ./ -name "test.txt" -type f -exec cat {} ;

    2. [root@oldboy66 tmp]# cat `find ./ -name "test.txt" -type f`

    特殊字符总结:

    符号

    作用

    >

    输出重定向符,重定向内容到文件,清除已有的内容,然后加入新内容,如果文件不存在还会创建文件

    >>

    追加输出重定向符,>>追加内容到文件(中间无空格)

    <

    输入重定向(箭头朝向就是数据流的方向)

    <<

    追加输入重定向

    |

    管道,就像一个真实管道一样,例如:水管左边进水,右边流出来。其他的功能,egrep "3306|1521" /etc/services

    转义字符,让有意义的字符脱掉它代表的意义。例如:正则里$表示以什么结尾,用$表示$符号本身。

    ~

    当前用户的家目录

    .或./

    一个点号是当前目录,其他功能,正则,任意单个字符

    ..或../

    两个点号是当前目录的上级目录

    /

    根目录,即linux里所有目录的顶点。也是路径分隔符,而windows里则为D:工作目录

    ;

    命令分隔符

    {}

    生成字符或数字序列(seq),一般配合echo等命令使用,find里的{}意思是前面命令的结果,mkdir stu{1..100}

    !

    1、! 字母,表示调出最近一次以此字母开头的命令;2、!!表示使用最近一次操作的命令;3、! 数字,表示调出历史的第几条命令。

    -

    用户上一次所在的目录。-由OLDPWD变量控制。

       

    常用快捷键:

    tab命令或路径补全键,如果。

    ctrl c终止当前任务命令或程序。

    ctrl d退出当前用户环境。相当于exit、logout。

    ctrl l清屏。

    ctrl shift c(ctrl insert)ssh客户端SecureCRT里复制的命令。

    ctrl a:到开头

    ctrl e:到结尾

    ctrl u:剪切光标前

    ctrl k:删除光标后

      提示:使用分号可以在一行内分隔两个命令,考试中发现很多同学把两个命令写到了一行,但是却没有加分号分隔,那样执行起来会报错的。

    [root@localhost ~]# cd /data

    5.把/data 目录移动到/root下

    1.12 十二、描述buffer和cache的区别

    写buffer读cache
    

      学生常犯的错误:把data看成了date,data是数据的意思,而date是日期的意思,这是完全不同的。

    [root@localhost data]# touch oldboy.txt

    [root@localhost data]# mv /data /root

    1.13 十三、

    如何把/data目录下所有包含oldboy的目录(可能目录的目录的目录里还有oldboy目录) 目录都打包出来。要求:解压打包后的目录结构不能改变 。

    方法1

    find /data -type d -name "oldboy" |xargs tar zcf  /tmp/oldboy.tar.gz
    

    方法2

    find /data -type d -name "oldboy" -exec tar zcf  /tmp/oldboy.tar.gz {} ;
    

    方法3

    tar zcf  /tmp/oldboy.tar.gz  `find /data -type d -name "oldboy"`
    
    tar zcf  /tmp/oldboy.tar.gz  $(find /data -type d -name "oldboy")
    

      创建目录,如果文件已经存在,则会提示文件已存在,不能创建。

    5.vi vim 打开文件编辑命令

    6.进入root目录下的data目录,删除oldboy.txt

    1.14 十四、请列出linux下面常用的打包工具并写出相应的压缩解压参数。

    tar zcf                      创建压缩包 或zcvf
    
    xf                           解压  或 zxvf
    
    tf                           查看  或 ztf
    
    -C                           解压到指定目录
    
    --exclude                    排除
    
    --exclude-from或-X           根据文件内容排除文件
    
    zip -r                       压缩目录
    
    root@zhu-K53SJ:/# cd /;mkdir data
    root@zhu-K53SJ:/# ls -ld /data
    drwxr-xr-x 2 root root 4096 10月 13 06:49 /data 
    root@zhu-K53SJ:/# mkdir /data                         #目录已经存在,则不能创建
    mkdir: 无法创建目录"/data": 文件已存在
    

    为oldboy.txt增加内容

    [root@localhost data]# cd /root/data

    1.15 十五、如何查看是否开启22端口,及查看sshd进程是否存在?

    查看端口22是否开启

    ss -lntup |grep 22
    
    netstat -lntup|grep 22
    
    telnet ip地址 22
    
    nc  ip地址 22
    
    nmap -p22  ip地址
    
    lsof -i:22
    

    查看进程是否存在

    ps -ef |grep sshd
    

      总结:

    [root@localhost data]# vi oldboy.txt或者vim oldboy.txt

    [root@localhost data]# rm oldboy.txt

    1.16 十六、将/data目录下的修改时间是7天以前,并且大于100k的文件复制到/tmp目录下。

    方法1

    find /data -type f  -mtime  7 -size  100k  -exec cp {} /tmp  ;
    

    方法2

    cp ` find /data -type f  -mtime  7 -size  100k ` /tmp
    
    cp $( find /data -type f  -mtime  7 -size  100k ) /tmp
    

    方法3

    find /data -type f  -mtime  7 -size  100k |xargs cp -t /tmp
    

    新葡亰496netlinux命令小题,linux命令小结。方法4

    find /data -type f  -mtime  7 -size  100k |xargs -i cp {} /tmp
    

      cd后跟相对路径或者绝对路径,表示进入目录。如果不跟任何东西,会进入当前用户的家目录。

    打开文件 lnsert 然后编辑

    rm:是否删除普通文件 "oldboy.txt"?y

    1.17 十七、现将文件b.txt中的所有123替换成def,请问如何实现?

    sed 's#123#def#g' b.txt
    

      相对路径概念:不从“/”开始,而是从当前目录开始。例如:data/, mnt/oldboy

    Ese :wq保存退出

    7.退出到上级目录,删除data目录

    1.18 十八、写出redhat中,配置网卡及dns的配置文件是什么?

    网卡: /etc/sysconfig/network-scripts/ifcfg-eth0
    
    DNS:  /etc/resolv.conf  
    

      绝对路径概念:从"/“开始的目录,就叫绝对路径。例如:/data/,/mnt/oldboy

    6.cp 拷贝文件命令

    [root@localhost data]# cd .. 或cd ../

    1.19 十九、什么是linux的运行级别,请描述linux的运行级别不同数字的含义?

    新葡亰496netlinux命令小题,linux命令小结。Linux的运行级别就是linux运行状态

    0 关机
    
    1 单用户模式
    
    2 多用户模式没有NFS
    
    3 命令行模式 文本模式 多用户模式
    
    4 没有使用
    
    5 图形化界面模式  桌面模式
    
    6 重启
    

      2)在/data下面建立一个文件oldboy.txt

    把oldboy.txt文件拷贝到/tmp下

    [root@localhost ~]# rm -r data 或 rmdir data

    1.20 二十、简述linux无法上网的排查流程 ;

    1.ping baidu.com 检查是否能上网

    2.ping 223.5.5.5  检查是否DNS问题

    3.ping 网关     检查是否配置或其他问题

     

    故障原因:

    1.检查配置文件

    2.虚拟网络编辑器

    3.vmware服务

    4.vmware虚拟网卡问题

      解答:

    [root@localhost data]# cp  oldboy.txt /tmp

    8.已知文件test.txt内容为;

    1.21 二十一、软连接与硬链接区别

    【硬连接】
    硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

    【软连接】
    另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

      命令答案:

    cp(拷贝) 文件 拷贝到路径

    test

    1.22 二十二、删除/etc/inittab中的空行或以#开头的行;

    方法1

    egrep -v '^$|^#'  /etc/inittab 
    

    方法2

    sed -r '/^$|^#/d' /etc/inittab
    

    方法3

    awk '!/^$|^#/' /etc/inittab
    

      touch /data/oldboy.txt  或者  cd /;touch oldboy.txt

    7.cat 查看文件内容命令

    liyao

    1.23 二十三、显示/etc/passwd中第1,3,5列

    awk -F ":" '{print $1,$3,$5}' /etc/passwd
    

      #创建文件也可以用echo等,只不过touch是专业的。

    [root@localhost data]# cat /tmp/oldboy.txt 查看文件内容

    oldboy

    1.24 二十四、写出你熟悉的8个VIM的快捷键

    移动光标
    
            ↑k
    
    ←h    →l
    
        ↓j
    
    
    
    把光标移动到文件的第1行
    
    gg
    
    1G
    
    :1
    
    
    
    把光标移动到文件的最后一行
    
    G
    
    :$
    
    
    
    把光标移动到文件的第100行
    
    100gg
    
    100G
    
    :100
    
    
    
    0(数字0)
    
    ^
    
    把光标移动到这一行的结尾
    
    $
    
    测试文件
    
    cat /etc/services  /etc/sysconfig/network-scripts/ifcfg-eth0 >>/tmp/vim.log
    
    编辑(移动并编辑)
    
    在当行下面插入一个空行并进入编辑模式
    
    o(小写字母o)
    
    
    
    在当行上面插入一个空行并进入编辑模式
    
    O(大写字母O)
    
    
    
    删除光标所在位置到行尾的内容并进入编辑模式
    
    C(大写字母C)
    
    
    
    删除光标所在位置到行尾的内容
    
    D  d$
    
    
    
    快速到达行尾并进入编辑模式
    
    A
    
    复制 删除 粘贴
    
    复制光标所在行
    
    yy
    
    
    
    粘贴
    
    p
    
    
    
    多次粘贴
    
    3p
    
    
    
    删除/剪切
    
    dd
    
    
    
    删除当前行到文件结尾的内容
    
    dG
    
    
    
    其他
    
    显示行号
    
    :set nu
    
    
    
    取消显示行号
    
    :set nonu
    
    查找
    
    /你要找的内容
    
    默认向下搜索
    
    继续向下查找
    
    n
    
    
    
    继续向上查找
    
    N
    
    
    
    你要找的内容
    
    默认向上搜索
    
    撤销当前操作
    
    u
    
    undo
    
    
    
    恢复刚才的操作
    
    ctrl   r
    
    
    
    vim查询帮助
    
    :help  G
    
    :help  :wq
    
    :h G
    
    nu===number
    

     

      例如:echo > /data/oldboy.txt或  > /data/oldboy.txt也可以创建文件。当然还有很多可以间接创建文件的命令,如vi,cat等。见后文。

    [root@localhost ~]# cat >test.txt<

    请给出打印test.txt内容时,不包含oldboy字符串的命令

    1.25 二十五、创建文件提示no space left on device 但是df -h还有空间这是什么原因?如何排查和解决。

    inode满了

    找出系统中大于1M的目录,确认后再删除

     

    test

    [root@localhost ~]# cat >test.txt<

    1.26 二十六、通过df -h发现磁盘空间不足但是du -sh发现没有满,说出原因和排查解决过程。

    原因:

    文件没有彻底删除导致的(硬链接数为0,进程调用数不为零)

    排查:

    lsof |grep delete

    解决:

    重启对应的服务

    root@zhu-K53SJ:/data# ls
    alex.txt  oldboy.txt
    root@zhu-K53SJ:/data# touch oldboy.txt
    

    liyao

    test

    1.27 二十七、显示当前系统日期为年月日~周几~小时

    data  %F_%w_%H_%M_%S
    

     

    oldboy

    liyao

    1.28 二十八、当前目录/etc/rc.d目录 cd ../../../tmp 请问当前所在目录是哪里

    /tmp

      注意:touch创建文件,如果文件已经存在,则不创建文件,也不覆盖,只修改文件的时间属性(时间戳:创建时间,修改时间等等)

    EOF

    oldboy

    1.29 二十九、查找出系统中大于50k且小于100k的文件,把文件中的oldboy替换为oldgirl。

    find -type -size  50k -size -100k |xargssed -i ‘s#oldboy#oldgirl#g‘
    

      总结:touch:摸,触摸的意思,创建文件或更新时间戳。如果文件存在,则更新时间戳;如果文件不存在,则创建文件

    cat生成test.txt文件以及里边的内容

    EOF

    1.30 三十、把/etc/hosts 文件备份为hosts.bak

    cp /etc/hosts /etc/hosts.bak
    

      3)为oldboy.txt增加内容为“I am studying linux”

    test

    [root@localhost ~]# grep -v oldboy test.txt

    1.31 三十一、把/oldboy 改名为/lidao

    mv /oldboy lidao
    

      解答:

    liyao

    test

    1.32 三十二、显示/etc/services 文件中包含3306或1521的行(三种方法)

      法一:常规编辑方法

    oldboy

    liyao

    1.32.1 方法一:grep -n

    grep -n "3306|1521" /etc/services
    

      执行vi oldboy.txt进入vi编辑器(默认命令模式),点击a或i进入编辑模式,敲入内容I am studying linux,然后按键盘上的esc键退出编辑模式(进入命令模式),然后敲:wq保存病退出。wq解释:write quit(写入并退出),:q退出,:q!强制退出,加"!"强制退出。

    8.mv 移动目录命令 或改名(rename)

    [root@localhost ~]# grep old test.txt

    1.32.2 方法二:egrep -n

    egrep -n "3306|1521" /etc/services
    
    grep -E "3306|1521" /etc/services
    

      此法说明:

    把/data 目录移动到/root下

    oldboy

    1.33 三十三、如何设置grep别名,让grep默认过滤时永久显示颜色

    alias grep=’grep --color’
    
    把这句同时写进/root/.bashrc里面,并且执行一下source /root/.bashrc
    

      vi 就是类似记事本一样的Linux下的常用的编辑器了,如果想功能更丰富可以用vim替代vi,vim类似高级的编辑器例如emeditor,iv/vim的内部有很多命令技术点要掌握。

    [root@localhost data]# mv /data /root

    [root@localhost ~]# head -2 test.txt

    1.34 三十四、查找/oldboy 目录下的所有文件结尾为*.txt的文件,并将文件内容输出。

    方法1:

    cat /oldboy/*.txt
    

    方法2:

    find /oldboy -type f -name “*.txt” | xargs cat
    

    方法3:

    find /oldboy/ -type f -name "*.txt" -exec cat {} ;
    

      下图为vi/vim的工作模式图:

    9.rm 删除命令

    test

    1.35 三十六、描述通配符与正则表达式的区别

    基本上解释就是通配符是系统命令使用,一般用来匹配文件名或者什么的用在系统命令中。而正则表达式是操作字符串,以行尾单位来匹配字符串使用的。
    还有一点需要注意的是:*在通配符和正则表达式中有其不一样的地方,在通配符中*可以匹配任意的0个或多个字符,而在正则表达式中他是重复之前的一个或者多个字符,不能独立使用的。比如通配符可以用*来匹配任意字符,而正则表达式不行,他只匹配任意长度的前面的字符。

    新葡亰496net 3

    rmdir 删除空目录

    liyao

    1.36 三十七、使用ifconfig  eth0 命令查看IP地址,请写出取出IP地址的方法,至少使用两种方法

    方法1:

    ifconfig eth0 | grep “10.0.0” | awk -F “:” ‘{print $2}’ | awk -F “ ” ‘{print $1}’
    

    方法2:

    ifconfig eth0 |awk 'NR==2' |awk -F"addr:|Bcast:"  '{print $2}'
    

      法二:单行或多行文本文本插入常用命令,内容都是放到文件的尾部

    [root@localhost data]# cd /root/data

    [root@localhost ~]# sed -n /li/p test.txt

    1.37 三十八、使用grep过滤不包含oldboy字符串的行

    grep -v “oldboy”
    

      echo "I am studying linux" > /data/oldboy.txt  

    [root@localhost data]# rm oldboy.txt

    liyao

    1.38 四十、已知/oldboy/test.txt 文件内容为:

     oldboy

     

     xizi

     xiaochao

    请问如何把文件中的空格过滤掉(要求命令行实现)。

    egrep -v “^$” /oldboy/test.txt
    

      1、如果没有oldboy.txt,会创建oldboy.txt文件

    rm:是否删除普通文件 "oldboy.txt"?y

    [root@localhost ~]# sed /^oldboy/d test.txt

    第2章 错误总结

      2、如果有oldboy.txt,会清空内容,放入单引号的内容。

    退出到上级目录,删除data目录

    test

    2.1 No such file or directory

    没有此文件或目录

      echo "I am studying linux." >>/data/oldboy.txt   这个在企业里面很常用:单行内容追加到文件的结尾。

    [root@localhost data]# cd .. 或cd ../

    liyao

    2.2 command not found

    找不到此命令

      实践过程:

    [root@localhost ~]# rm -r data  或 rmdir data

    [root@localhost ~]# sed /^old/d test.txt

    2.3 rm: cannot remove `/oldboy/data/': Is a directory

    要删除的是个非空目录

      echo "I am studying linux." >> /data/oldboy.txt   特殊的编辑文件方法,通过echo命令使用单引号把引号的内容通过>>追加到/data/oldboy.txt,注意:追加就是增加,不是覆盖,例子如下:

    10.grep 过滤排除命令

    test

    2.4 find: Arguments to -type should contain only one letter

    查找:-type的参数应该只包含一个字母

    root@zhu-K53SJ:/data# echo "覆盖文件的信息" > oldboy.txt      #单">"大于号是用来写入的,如果文件存在,则覆盖原文件的信息;不存在,则创建新的文件
    root@zhu-K53SJ:/data# cat oldboy.txt
    覆盖文件的信息
    
    root@zhu-K53SJ:/data# echo "使用echo往文件里面追加信息,'>>'双大于号,是用来追加信息的" >> oldboy.txt    #”>>"双引号是往文件末尾追加信息
    root@zhu-K53SJ:/data# cat oldboy.txt
    覆盖文件的信息
    使用echo往文件里面追加信息,'>>'双大于号,是用来追加信息的
    

    [root@localhost ~]# cat >test.txt<

    liyao

    2.5 Firewall is not running.

    防火墙没启动

      此法说明:

    test

    9.请用一条命令完成创建目录/oldboy/test,

    2.6 ping: unknown host baidu.com

    网不通

    未知主机baidu.com

      echo是一个打印输出内容的一个常用命令,配合">"或">>"可以为文件覆盖及追加内容,这个命令可要掌握哟。">"的意思为重定向,会清楚文件里所有以前数据,“>>”为内容追加,只在文件尾部追加需要的内容,还有一个教复杂不常用的类似命令,printf。

    liyao

    即创建/oldboy 目录及/oldbouy/test目录

    2.7 Package tree-1.5.3-3.el6.x86_64 already installed and latest version

    安装了这个软件最新版本的包

      法三:写脚本重用,追加多行,内容都是放到文件的尾部

    oldboy

    [root@localhost ~]# mkdir -p /oldboy/test

    2.8 Couldn't resolve host www.oldboyedu.com

    DNS不可达

    无法解析主机www.oldboyedu.com

      cat >>/data/oldboy.txt<<EOF

    EOF

    [root@localhost ~]# mkdir  /oldboy  /oldboy/test

    2.9 This account is currently not available

    该帐户目前不可用

    root@zhu-K53SJ:/data# cat >oldboy.txt        #cat >oldboy.txt,然后向文件里面写入信息,按ctrl   c或d,结束输入
    I am studying linux
    ^C
    root@zhu-K53SJ:/data# cat oldboy.txt
    I am studying linux
    

    [root@localhost ~]# grep -v oldboy test.txt

    10.已知/tmp 目录下已经存在test.txt文件,如何执行命令才能把

    2.10 Sorry, passwords do not match

    对不起,密码不匹配

     

      方法四:多行文本追加,可以使用cat方法,"<<"表示输入,把内容添加到尖括号的流向

    test

    /mnt/test.txt拷贝到/tmp 下覆盖掉/tmp/test.txt,而让linux系统不提

    root@zhu-K53SJ:/data# cat >>oldboy.txt<<EOF    #EOF是追加结束符号,可以是任意追加结束符
    > 还可以这昂错做吗
    > 是的
    > EOF
    root@zhu-K53SJ:/data# cat oldboy.txt
    I am studying linux
    还可以这昂错做吗
    是的
    

    liyao

    示是否覆盖(root权限下)

      8、已知文件test.txt内容为:

    [root@localhost ~]# grep oldboy test.txt

    [root@localhost ~]# cp /tmp/test.txt /mnt/

      test

    oldboy

    [root@localhost ~]# which cp

      liyao

    11.head  头部命令 显示文件头部

    alias cp='cp -i'

      oldboy

    [root@localhost ~]# head -2 test.txt

    /usr/bin/cp

      请给出打印test.txt内容时,不包含oldboy字符串的命令。

    test

    [root@localhost ~]# /usr/bin/cp /tmp/test.txt /mnt

      解答:

    liyao

    11.只查看ett.txt文件(100行)内第20到第30行的内容

      创建环境,创建一个文件,并写入信息进去,如下:

    12.tail 尾部命令 显示文件尾部

    [root@localhost ~]# seq 100 >ett.txt

     

    [root@localhost ~]# tail -2 test.txt

    [root@localhost ~]# head -30 ett.txt|tail -11

    root@zhu-K53SJ:/data# cat >>test.txt<<EOF      #往文件写入内容的方法
    > test
    > liyao
    > oldboy
    > EOF
    

    liyao

    [root@localhost ~]# tail -81 ett.txt|head -11

     

    oldboy

    [root@localhost ~]# sed -n 20,30p ett.txt

      grep -v oldboy test.txt   或者通过管道 cat test.txt | grep -v test.txt   不推荐,直接使用第一种即可

    13.sed 取各种内容命令 擅长打印行

    12.分析图片日志,把日志(每个图片访问次数*图片大小的总和)排行,取top10,也就是计算每个URL的总访问大小

    root@zhu-K53SJ:/data# grep -v oldboy test.txt
    test
    liyao
    

    [root@localhost ~]# sed -n /li/p test.txt

    说明:本题生产环境应用;这个功能可以用于IDC网站流量带宽很高,

      grep 过滤,grep oldboy test.txt 过滤文件中的oldboy字符串。

    liyao

    然后通过分析服务器日志那些元素占用流量过大,进而进行优化或裁剪

     

    [root@localhost ~]# sed /^oldboy/d test.txt

    该图片,压缩js等措施

    root@zhu-K53SJ:/data# grep oldboy test.txt      #从文件test.txt过滤oldboy字符串,Linux三剑客之一。
    oldboy
    root@zhu-K53SJ:/data# grep od test.txt          #如果文件不存在,则不能过滤
    

    test

    13.把/oldboy目录及其子目录下所有以扩展名.sh结尾的文件中包含./hostlists.txt

     

    liyao

    的字符串全部替换为../idctest_iplist

      head  -n 2 test.txt  读取文件的前两行

    14.tree 树命令  文件树

    echo oldboylinux >ett.txt

      法三:

    [root@localhost ~]# tree /oldboy

    [root@localhost ~]# cat ett.txt

      拓展:三剑客之一的sed删除方法,其实是把oldboy行删除,然后打印剩下的内容

    bash: tree: 未找到命令...

    oldboylinux

      sed '/oldboy/d' test.txt

    [root@localhost ~]# tree /oldboy

    [root@localhost ~]# cp ett.txt /etc/

      sed -e '/oldboy/d' test.txt

    /oldboy

    [root@localhost ~]# cp ett.txt /opt/

    root@zhu-K53SJ:/data# sed /oldboy/d test.txt
    test
    liyao
    

    └── test

    [root@localhost ~]# sed s#oldboylinux#olbdoywindows#g ett.txt #这只是输出 并没有修改文件内容

      提示:三剑客是grep、awk、sed,他们都有过滤字符串的功能,grep最擅长,awk处理列擅长。sed擅长删除,修改,替换,添加。

    1 directory, 0 files

    #要修改的内容#修改为什么内容#

      9、请用一条命令完成创建目录/oldboy/test,即创建/oldboy目录及oldboy/tetst目录

    [root@localhost ~]# yum install tree -y #从互联网上安装

    olbdoywindows

      解答:

    已加载插件:fastestmirror, langpacks

    [root@localhost ~]# sed -i s#oldboylinux#olbdoywindows#g ett.txt #-i保存默认输出 即修改文件内容

      mkdir -p /oldboy/test

    15.LANG 字符集命令

    [root@localhost ~]# cat ett.txt

      实践过程:

    查看文件时乱码使用

    olbdoywindows

      root@zhu-K53SJ:/# mkdir -p /oldboy/test        #递归创建目录,一般第一级目录不存在时用-p,否则报错。

    LANG=en #临时更改 然后执行查看文件树命令

    [root@localhost ~]# find / -type f -name "ett.txt"|xargs sed -i s#oldboylinux#olbdoywindows#g

      root@zhu-K53SJ:/# tree /oldboy                      #查看目录树结果

    16.which 位置命令

    #从根开始查 ett.txt文件

      /oldboy/

    [root@localhost ~]# which cp #汇报cp命令位置

    [root@localhost ~]# find / -type f -name "ett.txt"|xargs cat

        --test

    alias cp='cp -i'

    find: ‘/run/user/1000/gvfs’: 权限不够

      1 directory,0 files

    /usr/bin/cp

    olbdoywindows

      其他的方法:mkdir /oldboy /oldboy/test

    17.alias 别名命令

    olbdoywindows

      如果tree命令不存在,可以使用yum install tree -y安装

    [root@localhost ~]# alias

    olbdoywindows

      10、已知/tmp目录下已经存在了test.txt文件,如何执行命令才能把/mnt/test.txt拷贝到/tmp下覆盖掉/tmp/test.txt,而让linux系统不提示是否覆盖(root权限下)

    alias cp='cp -i'

      解答:

    alias egrep='egrep --color=auto'

      建立测试数据

    alias fgrep='fgrep --color=auto'

      cp /mnt/test.txt /tmp/     加反斜线就不提示了

    alias grep='grep --color=auto'

      /bin/cp /mnt/test.txt  /tmp/   加命令的全路径

    alias l.='ls -d .* --color=auto'

       覆盖文件不提示,上面的两张方法,cp、mv、rm都比较危险,所以是否为了防止大家误操作,加了内容限制,让你知道执行这些指令的时候比较微信。  

    alias ll='ls -l --color=auto'

      法三(不推荐使用):

    alias ls='ls --color=auto'

      unalias cp  取消别名

    alias mv='mv -i'

      alias 查看现有的别名

    alias rm='rm -i'

      别名的作用:

    alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

      1)通过给危险命令加一些保护参数,防止人为误操作;

    alias 命令=‘命令’ 添加别名命令

      2)把很多复杂的字符串或命令变成一个简单的字符串或命令。

    18.unalias 删除别名命令

      别名对应的命令:   别名的困惑及解决技巧:

    [root@localhost ~]#unalias cp

      alias  查看和设置别名  alias cp='cp -i'  等号后面一定要是一个命令

    19.| 管道命令

      unalias 取消别名

    通过管道把前一个命令的输出 交给后一个命令继续处理

      别名的用途举例:  

    20.find 查找命令

      系统的例子就是最好的例子:     

    -type (f d) -name "ddd"按名字查找  -mtime 按照修改时间查找

      11、只查看ett.txt文件(100行)内20到第30行的内容(企业常见面试题)

    21.seq 生成命令  显示  打印数字序列

      解答:sequence==seq序列

    [root@localhost ~]# seq 100 >ett.txt

      生成ett文件

    :set nu 显示行号

     

    [root@localhost ~]# sed -n 20,30p ett.txt  -n取消默认输出,20到30行,p输出

    root@zhu-K53SJ:/data# seq 100 >ett.txt    #模拟环境,创建序列,1-100,写入文件中
    root@zhu-K53SJ:/data# cat ett.txt         #seq序列,1-100的序列
    1
    2
    3
    4
    5
    6
    ...
    100
    

    22.xargs 用于把find / ls 的输出交给后面处理 一般在|后边使用

     

    echo oldboylinux >ett.txt

      通过管道实现目标

    [root@localhost ~]# cat ett.txt

    root@zhu-K53SJ:/data# head -30 ett.txt|tail -11     #首先去前三十行,然后通过管道传给tail取后面10行
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    

    oldboylinux

    root@zhu-K53SJ:/data# tail -80 ett.txt|head -10     #取后面80行,通过管道传递给后面指令,取前10行,即可
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30

    [root@localhost ~]# cp ett.txt /etc/

      法一:head -30 ett.txt |tail -10 

    [root@localhost ~]# cp ett.txt /opt/

      法二(必会):

    [root@localhost ~]# sed s#oldboylinux#olbdoywindows#g ett.txt #这只是输出 并没有修改文件内容

      sed -n "20,30p" ett.txt      这个命令更有效率,要记住  

    #要修改的内容#修改为什么内容#

    root@zhu-K53SJ:/data# sed -n '20,30p' ett.txt
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    

    olbdoywindows

      法2(锦上添花):

    [root@localhost ~]# sed -i s#oldboylinux#olbdoywindows#g ett.txt #-i保存默认输出 即修改文件内容

      awk "19<NR && NR<31" ett.txt

    [root@localhost ~]# cat ett.txt

    root@zhu-K53SJ:/data# awk "19<NR && NR<31" ett.txt    #NR是行,行号大于19,且小于31的内容。
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    

    olbdoywindows

      法4:(锦上添花)

    [root@localhost ~]# find / -type f -name "ett.txt"|xargs sed -i s#oldboylinux#olbdoywindows#g

      root@zhu-K53SJ:/data# awk '{if(NR<31&&NR>19) printf $0"n"}' ett.txt

    #从根开始查 ett.txt文件

    root@zhu-K53SJ:/data# awk '{if(NR<31&&NR>19) printf $0"n"}' ett.txt
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    

    [root@localhost ~]# find / -type f -name "ett.txt"|xargs cat

      提示:NR是行号,&&意思是并且,两边同时成立

    find: ‘/run/user/1000/gvfs’: 权限不够

      root@zhu-K53SJ:/data# awk "NR==30" ett.txt       #打印第30行

    olbdoywindows

      法5:

    olbdoywindows

      root@zhu-K53SJ:/data# grep 20 -A 10 ett.txt    

    olbdoywindows

      12、分析图片服务日志,把日志(每个图片访问次数*图片大小的总和)排行,取top10,也就是计算每个url的总访问大小【附加题,加分题】

      说明:本题生产环境应用:这个功能可以用于IDC网站流量宽带很高,然后通过分析服务器日志那些元素占用流量过大,进而进行优化或裁剪该图片,压缩js等措施。 

      13、把/oldboy目录及其子目录下的所有一扩展名.sh结尾的文件中包含oldboy的字符串全部替换为oldgirl【附加题:加分题】

      解答:

      建立测试数据

      root@zhu-K53SJ:/oldboy# find -type f -name "*.sh" |xargs sed -i "s#oldboy#oldgril#g"

    root@zhu-K53SJ:/# mkdir -p /oldboy/test
    root@zhu-K53SJ:/# cd /oldboy
    

     root@zhu-K53SJ:/oldboy# echo 'oldboy' > test/del.sh
      root@zhu-K53SJ:/oldboy# echo 'oldboy' > test.sh
      root@zhu-K53SJ:/oldboy# echo 'oldboy' > .sh

    root@zhu-K53SJ:/oldboy# find -type f|xargs                    #查找替换,首先使用find来实现
    ./.sh ./test/del.sh ./test.sh
    root@zhu-K53SJ:/oldboy# find -type f -name "*.sh"
    ./.sh
    ./test/del.sh
    ./test.sh
    root@zhu-K53SJ:/oldboy# find -type f -name "*.sh" |xargs cat     #使用find先查找,通过管道来传输,管道
    oldboy
    oldboy
    oldboy
    root@zhu-K53SJ:/oldboy# find -type f -name "*.sh" |xargs sed "s#oldboy#oldgril#g"    #首先看替换成功了没有,不要急着用-i,成功了使用-i
    oldgril
    oldgril
    oldgril
    root@zhu-K53SJ:/oldboy# find -type f -name "*.sh" |xargs sed -i "s#oldboy#oldgril#g"
    root@zhu-K53SJ:/oldboy#新葡亰496net, find -type f -name "*.sh" |xargs cat
    oldgril
    oldgril
    oldgril

      法二:

      root@zhu-K53SJ:/oldboy# sed -i "s#oldboy#oldgril#g" `find /oldboy -type f -name "*.sh"`

     

    root@zhu-K53SJ:/oldboy# find /oldboy -type f -name "*.sh"|xargs cat
    oldgril
    oldgril
    oldgril
    

     

      上面代码中,加上一对“``”(Tab键上面的反引号),使其先执行,执行的结果作为sed的参数。

      相当于:root@zhu-K53SJ:/oldboy# sed -i "s#oldboy#oldgril#g" /oldboy/.sh /oldboy/test/del.sh /oldboy/test.sh   替换了所有.sh文件里面的内容

    本文由新葡亰496net发布于电脑系统,转载请注明出处:新葡亰496netlinux命令小题,linux命令小结

    关键词:

上一篇:如何激活Win10,手工激活

下一篇:没有了