linux shell 常用命令

文件和目录列表
      ls 按字母顺序输出目录和文件
            -F 会在目录后加上"/"
            -a 显示所有文件包括隐藏文件
            -R 递归列出目录下子目录的文件
            -d 只列出目录本身信息,不列出其内容
            -l 列出文件的相关信息 文件类型 权限 链接总数 所属主 所有组 修改时间 文件/目录名
            用字符串做参数 指定要显示的文件
            --time=atime 显示出访问时间

文件处理
      创建空文件 touch  touch my_file
            touch 后面跟已存在的文件 会改变文件的创建时间 touch my_file
            touch -a后跟已存在的文件 改变文件的访问时间   touch -a my_file
      复制文件 cp  cp source destination
            cp file file1复制文件并重命名为file1
            目标文件已存在会被覆盖
            -i 参数会询问是否覆盖已存在文件
            cp file filedir/ 复制文件到指定目录中
            -R递归复制整个目录 -r也可以 
                    cp -R dir1/ dir2 如果dir2不存在会自动创建 
            -p 连同档案的属性一起复制过去,而非使用预设属性
            -l 进行硬式连结 (hard link) 的连结档建立,而非复制档案本身
            -s 复制成为符号连结文件 (symbolic link),亦即『快捷方式』档案
            -f 为强制 (force) 的意思,若有重复或其它疑问时,不会询问使用者,而强制复制
            -d 若来源文件为连结文件的属性(link file),则复制连结文件属性而非档案本身
            -u 若 destination 比 source 旧才更新 destinatio

            复制文件夹下的所有文件到另一文件夹且目标文件夹存在  cp  -r /srcdir/.  /dstdir

      创建链接文件 ln
            ln file hard_file 创建硬链接hard_file
            ln -s file soft_file 创建软链接
            软连接类似原文件的快捷方式,原文件删除链接文件失效
            硬链接 相当于cp -p加同步更新,修改原文件硬链接文件也会改变,删除原文件硬链接还存在保存原文件内容

      重命名或移动文件 mv
            mv file file_rename 重命名文件
            mv file /home/temp/ 移动到目的目录下
            mv file /home/temp/file_rename 移动并重命名
            mv dir dir1 移动目录
            -i 询问是否覆盖
      删除文件 rm
            -i 删除前询问是否删除
            -f 参数强制删除
            -r 递归删除目录
            rm -i file 删除文件
            rm -r dir 删除目录

           删除当前目录下的所有文件    find . -type f -delete或find . -type f -exec rm -f {} \; 或find . -type f | xargs rm -f
      创建目录 mkdir
            -p递归创建目录 
            mkdir -p /home/temp/test
            mkdir new_dir 创建目录new_dir
      删除目录  
            remdir 只能删空目录
      展开目录 tree
            tree dir 展示目录、子目录以及其中的文件


查看文件内容
      查看文件类型 file
      查看整个文件 
            cat 显示所有内容
                -n参数给所有的行加上行号
                -b只给有文本的行加上行号
                -T不出现制表符
            more 分页显示
            less 分页显示 支持上下翻页
      查看部分文件
            tail 显示文件最后几行 默认10行
                -n参数可以指定要显示的行数 比如tail -n 5显示最后5行
                -f参数可以在其他进程使用该文件时查看文件的内容,tail命令保持活跃不断的显示添加到文件中的内容,可以用来实时检   测系统日志
            head 显示开头几行 默认10行
                -n参数指定要显示几行


处理进程
      监测进程
            ps 显示进程ID  运行在哪个终端 已用CPU时间等信息
                ps在不同的类unix中有不同的参数风格 BSD的风格是不用"-"
                a显示跟任意终端关联的进程
                g显示所有进程
                r仅显示运行中的进程
                x显示所有进程甚至包括未分配任何终端的进程
                l采用长模式显示
                u基于用户的格式显示

            top 实时显示进程信息
                top在运行时可以使用命令 是在运行时不是在top后面加上
                    f选择对输出进行排序的字段
                    d修改轮询间隔
                    q退出top
      结束进程
            kill 通过PID结束进程 k如:ill 6784
                kill默认发送TERM信号结束进程
                -s参数指定要发送的信号  kill -s kill 6784
                    KILL  9     无条件终止
                    HUP   1     挂起
                    INT   2     中断
                    QUIT  3     结束运行
                    SEFV  11     段错误
                    TERM  15    尽可能终止
                    STOP  17    无条件停止运行,但不终止

            killall 通过进程名而不是PID来结束进程,也可以使用通配符
                kill http*

监测磁盘空间
        挂载存储媒体 mount  手动挂载设备媒体(大部分都支持自动挂载)
            mount 命令直接输出当前系统上挂载的设备列表
            mount -t type device directory  手动挂载基本命令
                type指定了磁盘被格式化的文件系统类型
                device存储文件的设备
                directory 挂载点
                例如:mount -t vfat /dev/sdb1 /media/disk
        卸载移动设备 umount  从linux上移除一个移动设备不能直接移除要先鞋子
            umount directory | device 可以使用设备文件或者挂载点卸载
            例如 umount /dev/sdb1
        查看设备磁盘空间
            df
                显示输出设备文件位置、容量、已用、剩余、已用比例、挂载点
                -h 输出的磁盘空间数字变成M或G的格式
            du 
            显示某个特定目录的磁盘使用情况,默认是当前目录,包括目录和子目录,按照目录层级最底部开始,一次显示文件、子目录、目录
            -c 参数显示所有已列出文件总大小
            -h 参数按用户易读的格式输出大小
            -s 显示每个输出参数的总计

处理数据文件
      排序数据 sort
            -n 把数字识别成数字而不是字符
            -M 按月排序
            -r 反序
      搜索数据 grep
            grep 在输入或指定文件中查找包含匹配模式的字符的行
            grep “查找的内容”  搜索路径
            grep good file 在文件file中搜索能匹配模式good的文本行
            -v 参数输出不匹配的行
            -n 显示匹配模式的行所在行号
            -c 只显示输出有多少行匹配
            -e 指定多个匹配模式 例如 grep -e one -e two file
            匹配模式可以用正则表达式
            -r 有目录
      压缩文件 
            gzip 
                gzip myprog 压缩文件
                gzip my* 使用通配符来批量压缩
                gzcat 查看压缩过的文本文件内容
                gunzip 解压文件
          rar 
                压缩:rar a 压缩包名(无后缀) 压缩内容
                解压缩:rar x 压缩包名 解压目录
          zip/unzip
                压缩:zip 参数(目录:-r) 压缩包名 原料
                解压:unzip 压缩包名 -d 解压目录
  归档数据 
          tar 
          参数 :
                -c 创建压缩文件
                -x 提取文件
                -v 处理文件时显示文件
                -f 指定压缩包名字
                -z 将输出重定向给gzip命令压缩文件 xxx.tar.gz
                 -j 使用bzip2的方式压缩文件  xxx.tar.bz2  

                -A 将一个已有 tar归档文件追加到另一个已有tar文件
                -C 解压到指定目录
                -r 追加文件到已有tar文件末尾
                -t 列出已有tar文件的内容
          压缩 
                tar 参数 压缩包名  原材料
                tar zcvf test.tar.gz file dir
          解压 
                tar zxvf test.tar.gz -C 解压目录
                tar jxvf test.tar.bz2 -C 目录

                tar tf test.tar 列出test.tar的内容

shell命令 有内建命令和外部命令
          shell 的内建命令会在当前shell中执行,外部命令会在子shell中执行
显示命令文件位置
        which 只显示外部命令文件
              which ps
        type -a 显示出每个命令的两种实现内部和外部(都存在的情况下)
查看使用历史命令
        命令末尾加上字符 &,可以进入后台模式
        jobs命令可以显示后台作业信息
        history 查看最近用过的命令列表
        history -a将历史命令强制写入.bash_history文件中
            !12 惊叹号加命令在历史了列表中的编号,使用历史列表中的命令
            !!重用最近的命令
命令别名
        alias  为常用命名创建另一个名称
            alias -p查看当前可用的别名
            alias li=‘ls -li’

wc 命令对数据中的文本进行计数
        输出三个值:文本行数、文本词数、文本字节数

$? 返回上个已执行命令的退出状态码

read命令  从标志输入(键盘)或另一个文件描述符中接收输入。在收到输入后,read命令会将数据放进一个变量
        -p 选项,允许你直接在 read 命令行指定提示符
        -t 选项指定了 read 命令等待输入的秒数
        -s 选项可以避免在read命令中输入的数据出现在显示器。实际只是read令会将文本颜色设成跟背景色一样,可用于密码输入
        read 命令来读取Linux系统上文件里保存的数据。每次调用 read 命令,它都会从文件中读取一行文本。当文件中再没有内容时, 会退出并返回非零退出状态码。其中最难的部分是将文件中的数据传给 read 命令。最常见的方法是对文件使用 cat 命令,将结果通过管道直接传给含有 read 命令的 while 命令

#!/bin/bash
# reading data from a file
#
count=1
cat test | while read line
do
echo "Line $count: $line"
count=$[ $count + 1]
done
echo "Finished processing the file"

IFS 环境变量

环境变量 IFS ,叫作内部字段分隔符(internal field separator)。IFS 环境变量定义了bash shell用作字段分隔符的一系列字符。默认情况下,bash shell会将下列字符当作字段分隔符:空格、制表符和换行符。通过修改 IFS 环境变量,就能强制 for 命令将文件中的每行都当成单独的一个条目来处理,即便数据中有空格也是如此。一旦从文件中提取出了单独的行,可能需要再次利用循环来提取行中的数据。

#!/bin/bash
IFS.OLD=$IFS
IFS=$'\n'
for entry in $(cat /etc/passwd)
do
echo "Values in $entry –"
IFS=:
for value in $entry
do
echo "
$value"
done
done
$

shell 命令行操作
      删除
            ctrl d 删除光标位置后面一个字符
            ctrl u 删除光标前所有字符
            crtl k 删除光标后所有字符
            ctrl h 删除光标前一个字符
      移动
            ctrl b 向前移动
            ctrl f 向后移动
            ctrl a 光标移动到头部
            ctrl e 光标移动的尾部

            ctrl p 向上
            ctrl n 向下

https://blog.csdn.net/samxx8/article/details/40618781

 

你可能感兴趣的:(shell,linux)