• shell基础命令


    shell基础命令

    一:Shell

    1.Shell 是一种脚本语言
    
    Shell 是一种脚本语言,和Python语言类似,是一种解释型语言
    任何代码最终都要被“翻译”成二进制的形式才能在计算机中执行
    
    脚本语言的优点是使用灵活、部署容易、跨平台性好,非常适合 Web 开发以及小工具的制作
    
    Shell 就是一种脚本语言,我们编写完源码后不用编译,直接运行源码即可

    2.Shell 也支持编程

    Shell 并不是简单的堆砌命令,我们还可以在 Shell 中编程
    Shell 虽然没有 C++、Java、Python 等强大,但也支持了基本的编程元素,例如:
    if...else 选择结构,case...in 开关语句,forwhile、until 循环;
    变量、数组、字符串、注释、加减乘除、逻辑运算等概念;
    函数,包括用户自定义的函数和内置函数(例如 printf、export、eval 等)

    3.Shell 还能连接其它程序

    内置命令
    在 Shell 中输入的命令,有一部分是 Shell 本身自带的,这叫做内置命令
    
    外部命令
    有一部分是其它的应用程序(一个程序就是一个命令),这叫做外部命令
    
    每个程序就是一个命令
    Shell 本身支持的命令并不多,功能也有限,但是 Shell 可以调用其他的程序,每个程序就是一个命令
    
    这使得 Shell 命令的数量可以无限扩展,其结果就是 Shell 的功能非常强大,完全能够胜任 Linux 的日常管理工作
       1 文本或字符串检索
       2 规模软件的自动部署
       3 更改系统设置、监控服务器性能
       4 发送报警邮件
       5 抓取网页内容
       6 压缩文件等

    4.Shell命令的组成

    命令 + 参数 + 选项
    参数:一般带有-或者--
    选项:一般为文件目录或者文件的路径(绝对路径和相对路径皆可

    二:文件管理命令

    基本命令

    选项全称作用
    pwd Print Work Directory 查看当前目录
    ls List 列出当前目录的内容
    cd Change Direcory 切换目录
    cp Copy 复制
    mv Move 移动
    rm Remove 删除
    mkdir Make Direcories 创建文件夹
    rmdir Remove Direcories 删除文件夹
    touch Touch 创建文件/更新文件时间戳
    vi / vim Visual editor / VI improved 创建/编辑文件
    tree Tree 查看目录树
    cat Concatenate files and print on the standard output 查看内容较少的纯文本文件
    less Less 查看文件内容 分页显示
    可以向前、向后浏览
    more More 查看文件内容 分页显示
    只能向前浏览
    tail Tail 动态查看 查看尾部信息
    head Head 以行为单位,取文件的内容
    grep Global search Regular Expression and Print out the line 全面搜索正则表达式
    echo Echo 输出字符串或提取Shell变量的值

    pwd

    作用:

      查看当前所在的目录(绝对路径)

     

    语法格式:

        pwd [选项]

    常用选项:

    选项作用
    -L 显示逻辑路径

    实例:

    pwd        # /root
    pwd -L    # /root

    ls

    作用:

      列出指定目录下的内容及其相关属性信息

     

    语法格式:

      ls [选项] [目录名]

    常用选项:

    选项作用
    -a 显示所有文件及目录 (包括以“.”开头的隐藏文件)
    -l 使用长格式列出文件及目录信息
    -r 将文件以相反次序显示(默认依英文字母次序)
    -t 根据最后的修改时间排序
    -A 同 -a ,但不列出 “.” (当前目录) 及 “..” (父目录)
    -S 根据文件大小排序
    -R 递归列出所有子目录

    实例:

    ls    # 列出当前目录所有文件:anaconda-ks.cfg
    ls -l    # 列出当前目录所有文件(详细):-rw-------. 1 root root 932 Nov 18 17:44 anaconda-ks.cfg
    ls -a    # 列出当前目录所有文件(包括隐藏文件):.  ..  anaconda-ks.cfg  .bash_history  .bash_logout  .bash_profile  .bashrc  .cshrc  .pki  .tcshrc  .viminfo
    ls /    # 列出根目录下所有文件:bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

    ll就相当于ls -l

    cd

    作用:

      从当前目录切换到指定目录(该目录可以是绝对路径,也可以是相对路径)

     

    语法格式:

      cd [参数] [目录名]

    常用选项:

    选项作用
    -P 如果切换的目标目录是一个符号链接,则直接切换到符号链接指向的目标目录
    -L 如果切换的目标目录是一个符号链接,则直接切换到符号链接名所在的目录
    - 切换到之前的目录
    -- 仅使用”-“选项时,当前目录将被切换到环境变量”OLDPWD”对应值的目录
    ~ 切换至当前用户目录
    .. 切换至当前目录位置的上一级目录
    . 切换至当前目录(敲了和没敲一样)

    实例:

    cd file1    # 切换到file1目录
    cd ..        # 切换到上级目录
    cd ../..    # 切换到上上级目录
    cd ~        # 切换到当前用户目录
    cd -        # 切换到之前的目录
    cd .        # 切换到当前目录(有点鸡肋....)

    cp

    作用:

      复制文件或目录

     

    语法格式:

      cp [参数] [文件/目录]

    常用选项:

    选项作用
    -f 若目标文件已存在,则会直接覆盖原文件
    -i 若目标文件已存在,则会询问是否覆盖
    -p 保留源文件或目录的所有属性
    -r 递归复制文件和目录
    -d 当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录
    -l 对源文件建立硬连接,而非复制文件
    -s 对源文件建立符号连接,而非复制文件
    -b 覆盖已存在的文件目标前将目标文件备份
    -v 详细显示cp命令执行的操作过程
    -a 等价于“dpr”选项

    实例:

    cp 1.txt 2.txt    # 将当前文件夹下的1.txt 复制到 当前文件夹 名为2.txt 
    cp 1.txt /usr/local/2.txt    # 将当前文件夹下的1.txt 复制到 /usr/local目录 名为2.txt 
    cp /media/song.mp3 /root/song2.mp3    # 将/media目录下的song.mp3 复制到 /root目录 名为song2.mp3

    mv

    作用:

      移动文件或对其重命名

     

    语法格式:

      mv [参数] [文件/目录]

    常用选项:

    选项作用
    -i 若存在同名文件,则向用户询问是否覆盖
    -f 覆盖已有文件时,不进行任何提示
    -b 当文件存在时,覆盖前为其创建一个备份
    -u 当源文件比目标文件新,或者目标文件不存在时,才执行移动此操作

    实例:

    mv 1.txt /media/    # 将当前目录下的1.txt 移动到 /media目录
    mv 1.txt 11.txt        # 将当前目录下的1.txt 重命名为 11.txt
    mv 11.txt file1/2.txt    # 将当前目录下的11.txt 移动到 file1目录 重命名为2.txt
    mv new_file/ file1/    # 将当前目录下的new_file目录(空) 移动到 file1目录

    如果移动的路径下有1个同名的目录,则会覆盖那个目录

    rm

    作用:

      删除一个目录中的一个多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除

     

    语法格式:

      rm [参数] [文件/目录]

    常用选项:

    选项作用
    -f 忽略不存在的文件,不会出现警告信息
    -i 删除前会询问用户是否操作
    -r/R 递归删除
    -v 显示指令的详细执行过程

    实例:

    rm 1.txt    # 删除当前目录下的1.txt,需要再输入yes
    rm 1.txt -f    # 删除当前目录下的1.txt,无需再输入yes
    rm /var/3.ini -f    # 删除/var目录下的3.ini,无需再输入yes
    rm file1 -r    # 递归删除当前目录下的flle1目录(包括该目录和目录下的所有文件)
    rm -rf *    # 删除当前目录下所有文件
    rm -rf /*    # 删库跑路(且行且珍惜)

    mkdir

    作用:

      创建文件夹(如果要创建的目录已经存在,则提示已存在,而不会继续创建目录)

     

    语法格式:

      mkdir [选项] [目录]

    常用选项:

      

    选项作用
    -p 递归创建多级目录
    -m 建立目录的同时设置目录的权限
    -z 设置安全上下文
    -v 显示目录的创建过程

    rmdir

    作用:

      删除空目录(只能删除空目录;删除非空目录时,就要使用带有“-R”选项的rm命令)

     

    语法格式:

      rmdir [选项] [目录名称]

    常用选项:

      

    选项作用
    p 用递归的方式删除指定的目录路径中的所有父级目录,非空则报错
    -- -- ignore-fail-on-non-empty 忽略由于删除非空目录时导致命令出错而产生的错误信息
    -v 显示命令的详细执行过程
    -- -- help 显示命令的帮助信息
    -- -- version 显示命令的版本信息

    主要用于删除空目录,如果要删非空目录,建议直接用:rm -r 目录名

    touch

    作用:

    • 创建新的空文件
    • 改变已有文件的时间戳属性
     

    语法格式:

      touch [选项] [文件]

     

    常用选项:

      

    选项作用
    -a 改变档案的读取时间记录
    -m 改变档案的修改时间记录
    -r 使用参考档的时间记录,与 --file 的效果一样
    -c 不创建新文件
    -d 设定时间与日期,可以使用各种不同的格式
    -t 设定档案的时间记录,格式与 date 命令相同
    --no-create 不创建新文件
    --help 显示帮助信息
    --version 列出版本讯息

    实例:

    touch 3.txt    # (如果3.txt不存在)创建3.txt文件(只会创建,不会打开文件)
    touch 3.txt    # (如果3.txt已存在)更新3.txt文件的时间戳(只会更新文件的时间戳,不会打开文件)
    touch file{1,2,3}.txt     # 批量创建1-3.txt/批量更新1-3.txt时间戳
    touch file{1..5}.txt     # 批量创建1-5.txt/批量更新1-5.txt时间戳

    vi / vim

    作用:

      文本编辑器(对文本进行创建、查找、替换、删除、复制和粘贴等操作)

     

    语法格式:

      vi [选项] [文件名]

     

    常用选项:

      

    选项作用
    -s 静默模式
    -- -cmd<命令> 加载任何vimrc文件之前执行指定命令
    -R 只读模式
    -v Vi模式
    -e Ex模式
    -y 简易模式
    -- -- 之后只有文件名
    -c<命令> 加载第一个文件之后执行指定命令
    -s<脚本输入文件> 从指定脚本输入文件阅读普通模式命令
    -w<脚本输出文件> 追加所有类型的命令写入脚本输出文件
    -W<脚本输出文件> 写入所有类型的命令到指定脚本输出文件
    + 从文件末尾开始
    +<行数> 从指定行开始
    -- -noplugin 不要加载插件脚本
    -p<数量> 打开指定数量的标签页(带文件名)
    -r<文件名> 恢复崩溃的会话
    -L 等同于-r
    -r 列出交换文件并退出
    -u<vimrc> 熟用指定vimrc,而不是.vimrc
    -T<终端> 设置使用指定终端
    -o<数量> 打开指定数量的窗口
    -n 不使用交换文件,只用内存
    -Z 受限模式
    -m 不允许修改(写入)
    -b 二进制模式
    -M 在文本中不允许修改

    实例:

    vi 1.log    # (如果1.log不存在)创建并打开1.log文件
    vi 1.log    # (如果1.log已存在)打开1.log文件
    vi -R 1.log    # 以只读模式打开1.log文件
    vi    # 进入vi编辑器

    文件查看命令

    选项全称作用
    tree Tree 查看目录树
    cat Concatenate files and print on the standard output 查看内容较少的纯文本文件
    less Less 查看文件内容 分页显示
    可以向前、向后浏览
    more More 查看文件内容 分页显示
    只能向前浏览
    tail Tail 动态查看 查看尾部信息
    head Head 显示文件开头内容
    grep Global search Regular Expression and Print out the line 全面搜索正则表达式
    echo Echo 输出字符串或提取Shell变量的值

    tree

     

    作用:

      以树状图形式列出目录的内容(包括目录里的文件,显示出指定目录的文件目录结构)

     

    语法格式:

      tree [选项]

     

    常用选项:

    选项作用
    -a 显示所有文件和目录
    -A 使用ASNI绘图字符显示树状图而非以ASCII字符组合
    -C 在文件和目录清单加上色彩,便于区分这种类型
    -d 显示目录名称而非内容
    -D 列出文件或目录的更改时间
    -f 在每个文件或目录之前,显示完整的相对路径名称
    -F 在执行文件,目录,Socket,符号连接,管道名称名称,各自加上“*”,“/”,“=”,“@”,“ ”号
    -g 列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码
    -i 不以阶梯状列出文件或目录名称
    -I<范本样式> 不现实符合范本样式的文件或目录名称
    -l 如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录
    -n 不在文件和目录清单上加上色彩
    -N 直接列出文件和目录名称,包括控制字符
    -p 列出权限标示
    -P<范本样式> 只显示符合范本像是的文件或目录名称
    -q 用“?”号取代控制字符,列出文件和目录名称
    -s 列出文件或目录大小
    -t 用文件和目录的更改时间排序
    -u 列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码
    -x 将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该子目录予以排除在寻找范围外
    -L 层级显示
     

    实例

    tree
    tree -L 2    # 只显示2层目录
    tree -t    # 用文件和目录的更改时间排序
    tree -r    # 以相反次序排序
    tree -f    # 在每个文件或目录之前,显示完整的相对路径
    tree -d    # 只显示目录
    tree -a    # 显示所有文件和目录

    cat

     

    作用:

      在终端设备上显示文件内容

     

    语法格式:

      cat [选项] [文件]

     

    常用选项:

    选项作用
    -n 显示行数(空行也编号)
    -s 显示行数(多个空行算一个编号)
    -b 显示行数(空行不编号)
    -E 每行结束处显示$符号
    -T 将TAB字符显示为 ^I符号
    -v 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
    -e 等价于”-vE”组合
    -t 等价于”-vT”组合
    -A 等价于 -vET组合
    --help 显示帮助信息
    --version 显示版本信息
     

    实例:

      

    cat filename.txt    # 查看文件的内容
    cat -n filename.txt    # 查看文件的内容,并显示行数编号
    cat -n linuxcool.log > linuxprobe.log     # 查看文件的内容,并添加行数编号后输出到另外一个文件中
    cat /dev/null > /root/filename.txt        # 清空文件的内容

    less

     

    作用:

    分页显示工具

    用less命令显示文件时,PageUp键向上翻页,PageDown键向下翻页,要退出less程序,应按Q键。

    less的作用与more十分相似,不同点为less命令允许用户向前或向后浏览文件,而more命令只能向前浏览 。

     

    语法格式:

    less [选项] [文件]

     

    常用选项:

    选项作用
    -b 置缓冲区的大小
    -e 当文件显示结束后,自动离开
    -f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
    -g 只标志最后搜索的关键词
    -i
    略搜索时的大小写
    -m 显示类似more命令的百分比
    -N 显示每行的行号
    -o 将less 输出的内容在指定文件中保存起来
    -Q 不使用警告音
    -s 显示连续空行为一行
    -S 在单行显示较长的内容,而不换行显示
    -x 将TAB字符显示为指定个数的空格字符
     

    命令内部操作:

    按键作用
    b 向后翻一页
    d 向后翻半页
    h 显示帮助界面
    Q 退出less 命令
    u 向前滚动半页
    y 向前滚动一行
    空格 滚动一页
    回车 滚动一行
     

    实例:

    less test.py    # 查看文件
    ps -ef |less     # ps查看进程信息并通过less分页显示
    history | less     # 查看命令历史使用记录并通过less分页显示
    less 001.log 002.log     # 浏览多个文件
    less file1    # 当正在浏览一个文件时,也可以使用 
    :e file2      #  :e命令 打开另一个文件

    more

     

    作用:

    显示文本文件内容

    将内容较长的文本文件内容(不能在一屏显示完)进行分屏显示,并且支持在显示时定位关键字

    对于内容较少的文本文件内容则推荐使用cat命令查看

     

    语法格式:

    more [选项] [文件]

     

    常用选项:

    选项作用
    -num 指定每屏显示的行数
    -l more在通常情况下把 ^L 当作特殊字符, 遇到这个字符就会暂停,-l选项可以阻止这种特性
    -f 计算实际的行数,而非自动换行的行数
    -p 先清除屏幕再显示文本文件的剩余内容
    -c 与-p相似,不滚屏,先显示内容再清除旧内容
    -s 多个空行压缩成一行显示
    -u 禁止下划线
    +/pattern 在每个文档显示前搜寻该字(pattern),然后从该字串之后开始显示
    +num 从第 num 行开始显示
     

    命令内部操作:

    按键作用
    空格 显示文本的下一屏内容
    回车 向下n行,需要定义,默认为1行
    斜线符 接着输入一个模式,可以在文本中寻找下一个相匹配的模式
    H 显示帮助屏
    B 显示上一屏内容
    Q 退出more命令
    Ctrl+F、空格 向下滚动一屏
    Ctrl+B 返回上一屏
    = 输出当前的行号
    :f 输出文件名和当前的行号
    V 调用vi编辑器
    ! 调用Shell,并执行命令
     

    实例:

    more -dc file     # 显示文件file的内容,显示之前先清屏,附已显示的百分比
    more -c -10 file     # 显示文件file的内容,每10行显示一次,而且在显示之前先清屏
    more -p -5 file     # 显示文件file的内容,每5行显示一次,而且在显示之后再清屏
    more -s file     # 逐页显示 file 文档内容,如有连续两行以上空白行则以一行空白行显示 
    more +20 file     # 从第 20 行开始显示 file 之文档内容 

    tail

     

    作用:

    查看文件尾部内容

    tail用于显示文件尾部的内容,默认在屏幕上显示指定文件的末尾10行

    如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题

    如果没有指定文件或者文件名为“-”,则读取标准输入。

     

    语法格式:

    tail [选项]

     

    常用选项:

    选项作用
    --retry 即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。使用此选项时需要与选项“——follow=name”连用
    -c<N>或——bytes=<N> 输出文件尾部的N(N为整数)个字节内容
    -f<name/descriptor> --follow<nameldescript>:显示文件最新追加的内容
    -F 与选项“-follow=name”和“--retry”连用时功能相同
    -n<N>或——line=<N> 输出文件的尾部N(N位数字)行内容
    --pid=<进程号> 与“-f”选项连用,当指定的进程号的进程终止后,自动退出tail命令
    --help 显示指令的帮助信息
    --version 显示指令的版本信息
     

    实例:

    tail file    # 显示文件file的最后10行
    tail +20 file     # 显示文件file的内容,从第20行至文件末尾
    tail -c 10 file # 显示文件file的最后10个字符
    tail -f 10 file    # 一直变化的文件总是显示后10行
    tail --help    # 显示帮助信息

    head

     

    作用:

    显示文件开头内容

    以行为单位,取文件的内容,后面不接参数时默认打印前10行

     

    语法格式:

    head [选项] [文件]

     

    常用选项:

    选项作用
    -n 后面接数字,代表显示几行的意思
    -c 指定显示头部内容的字符数
    -v 总是显示文件名的头信息
    -q 不显示文件名的头信息
     

    实例:

    head 1.txt    # 显示前10行文件内容
    head -n 3 install.log    # 显示前3行文件内容
    head -v -n 2 test.txt     # 显示文件名信息,并显示文件前两行
    head -c 5 test.txt         # 显示文件前5个字符

    grep

     

    作用:

    全面搜索正则表达式,并将其打印出来

    这个命令可以结合正则表达式使用,它也是linux使用最为广泛的命令

    grep命令的选项用于对搜索过程的补充,而其命令的模式十分灵活,可以是变量、字符串、正则表达式

    需要注意的是:一当模式中包含了空格,务必要用双引号将其引起来

     

    语法格式:

    grep [选项]

     

    常用选项:

    选项作用
    -i 搜索时,忽略大小写
    -c 只输出匹配行的数量
    -l 只列出符合匹配的文件名,不列出具体的匹配行
    -n 列出所有的匹配行,显示行号
    -h 查询多文件时不显示文件名
    -s 不显示不存在、没有匹配文本的错误信息
    -v 显示不包含匹配文本的所有行
    -w 匹配整词
    -x 匹配整行
    -r 递归搜索
    -q 禁止输出任何结果,已退出状态表示搜索是否成功
    -b 打印匹配行距文件头部的偏移量,以字节为单位
    -o 与-b结合使用,打印匹配的词据文件头部的偏移量,以字节为单位
     

    实例:

    grep test test*    # 查找前缀有“test”的文件包含“test”字符串的文件  
    grep -r /root/mine dir    # 用递归的方式查找/root/mine目录下的包含dir的文件

    echo

     

    作用:

    输出字符串或提取Shell变量的值

     

    语法格式:

    echo [选项] [字符串]

     

    常用选项:

    选项作用
    -n 不输出结尾的换行符
    -e “a” 发出警告音
    -e “b” 删除前面的一个字符
    -e “c” 结尾不加换行符
    -e “f” 换行,光标扔停留在原来的坐标位置
    -e “n” 换行,光标移至行首
    -e “r” 光标移至行首,但不换行
    -E 禁止反斜杠转移,与-e参数功能相反
    —version 查看版本信息
    --help 查看帮助信息
     

    实例:

    echo "123" > 1.txt    # 把123写入1.txt
    echo "456" > 1.txt    # 把456写入1.txt,覆盖之前的内容
    echo "789" >> 1.txt    # 把789写入1.txt,追加到下一行

    关机相关

     

    冷关机

    直接断电进行关机/强制关机(非正常关机
     

    热关机

    正常关机
    shutdown -h now    # 立刻关机
    shutdown -h 0    # 立刻关机
    shutdown -h 10    # 10分钟后关机
    shutdown -h 14:00    # 下午14点关机
    shutdown -c        # 取消关机
    shutdown -r    now    # 立刻重启
    shutdown -r    0    # 立刻重启
    shutdown -r        # 10分钟之后重启
    reboot        # 立刻重启
    halt        # 立刻关机,需要人工关闭电源
    poweroff    # 立刻关机,并且关闭电源

    解压缩相关

     

    方式1 - tar

    # 压缩
    tar -czvf 1.tar.gz 1    # 把目录1打包成1.tar.gz
    
    # 解压
    tar -xvf 1.tar.gz -C /usr/
    cd /usr/local/    # 切换到/usr/local目录
    mkdir 1    # 创建目录1
    cd 1    # 切换到目录1
    touch {1..20}.txt 1/    # 在目录1下创建1-20.txt 共20个文件
    tar -czvf 1.tar.gz 1/    # 把 目录1 打包成 1.tar.gz
    
    
    rm -rf 1    # 删除目录1
    tar -xvf 1.tar.gz    # 解压 1.tar.gz
    tar -xvf 1.tar.gz -C /usr/    # 解压 1.tar.gz到/usr

    方式2 - unzip

    安装
    yum install unzip -y

    使用

    zip 1.zip 1

    1.解压tar.gz文件

     

    语法格式:

    tar -zxvf

    2.解压tar.xz文件

     

    Ⅰ.可以先将 外层用xz解压 方式解压,,然后 里层用tar解压 方式解压:

    xz -d *****.tar.xz
    
    tar -xvf *****.tar

    Ⅱ.直接使用如下命令解压:

    tar xvJf   ***.tar.xz
     
  • 相关阅读:
    USACO 1.3 warmhole
    hadoop本地库与系统版本不一致引起的错误解决方法
    hadoop安装遇到的各种异常及解决办法
    Hadoop学习笔记【分布式文件系统学习笔记】
    Hadoop学习笔记【Hadoop家族成员概述】
    Ext2.x学习笔记
    Memcached学习笔记
    关于反向生成url
    python 练习题- 图书租金计算
    python 练习题- letcode 168. Excel表列名称
  • 原文地址:https://www.cnblogs.com/ltyc/p/14053264.html
Copyright © 2020-2023  润新知