LINUX SHELL命令学习

Linux常用命令/ 常见面试题

ls和echo

‘ls’命令可以用‘echo’命令来替代。‘ls’命令列出目录内容,从替换上述命令的角度讲,我们可以使用‘echo *’,两个命令的输出完全一样。
echo

Shell

创建第一个shell脚本

这里写图片描述
hello

  • #! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。毕竟Linux的Shell也是有很多种的,比如
    Bourne Shell(/usr/bin/sh或/bin/sh)
    Bourne Again Shell(/bin/bash)
    C Shell(/usr/bin/csh)
    K Shell(/usr/bin/ksh)
    Shell for Root(/sbin/sh)
    ……
  • 执行shell脚本

    作为可执行程序执行

    作为可执行程序执行shell脚本

  • 注意,一定要写成 ./hello.sh,而不是 hello.sh,运行其它二进制的程序也一样,直接写 hello.sh,linux 系统会去 PATH 里寻找有没有叫 hello.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的当前目录通常不在 PATH 里,所以写成 hello.sh 是会找不到命令的,要用 ./hello.sh 告诉系统说,就在当前目录找。
  • 作为解释器参数执行脚本

    解释器参数

    变量

    定义变量

    定义变量时,变量名不加美元符号($,PHP语言中变量需要)
    如your_name=”runoob.com”
    除了显式地直接赋值,还可以用语句给变量赋值,如:

    for file in ls /etc
    以上语句将 /etc 下目录的文件名循环出来。

    使用变量

    your_name="qinjx"
    echo $your_name 
    echo ${your_name}

    变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界(推荐),

    只读变量

    readonly myUrl
    只读变量不能被修改

    删除变量

    unset variable_name
    变量被删除后不能再次使用。unset 命令不能删除只读变量。

    变量类型

    变量类型
    运行shell时,会同时存在三种变量:

    1) 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
    2) 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
    3) shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

    查看文件内容

    cat

    查看文件内容
    -n 或 –number:由 1 开始对所有输出的行数编号。

    vim

    Leetcode例题实操1

    Write a bash script to calculate the frequency of each word in a text file words.txt.

    For simplicity sake, you may assume:

    words.txt contains only lowercase characters and space ’ ’ characters.
    Each word must consist of lowercase characters only.
    Words are separated by one or more whitespace characters.
    For example, assume that words.txt has the following content:

    the day is sunny the the
    the sunny is is
    Your script should output the following, sorted by descending frequency:
    the 4
    is 3
    sunny 2
    day 1
    答案:

    cat words.txt | tr -s ' ' '\n' | sort | uniq -c | sort -r | awk '{ print $2, $1 }'

    这里写图片描述
    截取回车
    cat 命令用于连接文件并打印到标准输出设备上。(属于文件管理命令)
    tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。(属于文档编辑命令)
    Linux sort命令用于将文本文件内容加以排序。
    sort可针对文本文件的内容,以行为单位来排序。(属于文档编辑命令)
    -r 以相反的顺序来排序。
    uniq可检查文本文件中重复出现的行列。(属于文档编辑命令)
    -c或–count 在每列旁边显示该行重复出现的次数。

    count
    count命令前面这列代表每个单词出现了几次

    Leetcode例题实操2 截取文件的某一行

    sed(属于文档编辑命令)

    inux sed命令是利用script来处理文本文件。

    sed可依照script的指令,来处理、编辑文本文件。

    Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。、

    参数说明:

    -n或–quiet或–silent 仅显示script处理后的结果。

    动作说明:
    a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
    c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
    d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
    i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
    p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
    s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g

    这里写图片描述

    如何查看某一行的长度

    5p

    如何截取某些行

    [root@ml-J33A3K testdemo]# sed -n ‘5,8p’ file.txt
    Line5 very
    Line6 Happy
    Line7 due
    Line8 to

    如何截取列方向上固定位置的内容

    Linux cut命令用于显示每行从开头算起 num1 到 num2 的文字。
    使用说明:
    cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
    如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。
    参数:
    -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
    -c :以字符为单位进行分割。
    -d :自定义分隔符,默认为制表符。
    -f :与-d一起使用,指定显示哪个区域。
    -n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
    范围之内,该字符将被写出;否则,该字符将被排除

    截取列

    如何截取某些列

    -d是指以“ “空格为分隔符,相当于python中的.split(” “),-f是指显示以空格分隔后的第1个域(没有第0个域,从1开始计数)
    这里写图片描述

    猜你喜欢

    转载自blog.csdn.net/u011462357/article/details/79804874