美文网首页
Linux常用命令

Linux常用命令

作者: 种豆瓜 | 来源:发表于2017-08-01 21:00 被阅读0次

    Shell作为操作系统的外壳,为用户提供了使用操作系统的接口。Shell和核心是命令行提示符,它允许输入文本命令,然后解释命令,并在内核执行。

    Linux系统上,通常有几种shell,不同的shell有不同的特性,所有的Linux发行版默认的Shell都是bash shell(Bourne again shell)。

    基本的bash shell 命令

    !!回车,唤出刚执行过的命令执行

    pwd

    print work directory 打印工作目录

    clear

    清屏

    history

    历史命令

    scp

    scp -r /opt/web/qf-web root@172.16.11.118:/opt/web/ ,将本机qf-web复制到118的/opt/web/目录下

    免密传输,在src生成公钥ssh-keygen -t rsa(可能已经存在),在当前用户的home目录.ssh隐藏文件夹下,将id_rsa.pub公钥

    加到dest用户home目录下的.ssh下的authorized_keys里。

    -------------------搜索------------------------

    grep

    Global Regular Expression Print

    grep -c Exception aaa.log ,输出匹配行的计数

    -n:显示匹配行及行号

    -v:显示不包含匹配文本的所有行。

    -e: grep -e t -e f file1 ,指定多个匹配模式

    pattern正则表达式主要参数:

    \: 忽略正则表达式中特殊字符的原有含义。

    ^:匹配正则表达式的开始行。

    $: 匹配正则表达式的结束行。

    \<:从匹配正则表达式的行开始。

    \>:到匹配正则表达式的行结束。

    [ ]:单个字符,如[A]即A符合要求 。

    [ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。

    .:所有的单个字符。

    * :有字符,长度可以为0。

    find

    格式:find  path  -option  [  -print ]  [ -exec  -ok  command ]  {} \;

    -name filename #查找名为filename的文件,正则""

    -mtime    -n +n      #按文件更改时间来查找文件,-n指n天以内,+n指n天以前

    -atime    -n +n      #按文件访问时间来查找文件,-n指n天以内,+n指n天以前

    -ctime    -n +n      #按文件创建时间来查找文件,-n指n天以内,+n指n天以前

    -perm                #按执行权限来查找

    find  . -name "*sh"  | xargs  chmod  a+x

    find . -name .svn | xargs rm -rf

    $find . -perm -007 -exec ls -l {} \;  #查所有用户都可读写执行的文件

    -------------------------遍历目录-------------------------------

    cd

    change directory 切换目录(制表符自动补全功能)

    cd .. ,返回上一级目录(单点符.表示当前目录,双点符..表示父目录)

    cd / ,返回根目录

    cd ~ 或cd ,返回到用户home目录

    cd - ,切换当前目录到上一个目录

    cd /opt/v* ,从当前目录切换到/etc/v_ _(其他的匹配还可以?)

    tab双击,提示目录下有哪些文件

    cd /opt && ls ,切换到/opt目录并列出目录下的文件

    ls/ll

    ls -l long长清单

    ls -lh 1024为单位

    ls -lS 文件大小排序

    ls -lt 最后修改时间排序

    ls -l --block-size=M  (K,M,G,T)

    ls -a all所有文件(隐藏文件)

    ls -p 目录文件加斜线

    ls -r 翻转顺序

    ls -F 文件末尾夹/

    -------------------------处理文件-------------------------------

    touch

    创建空文件

    cp

    copy 复制文件或目录

    -f:强行复制文件或目录,不论目标文件或目录是否已存在;

    -R/r:递归处理,将指定目录下的所有文件与子目录一并处理;

    -b:覆盖已存在的文件目标前将目标文件备份

    cp /opt/t1 ../t2 . ,t1和t2文件复制到当前文件夹下

    mv

    move 移动,重命名

    mv demo1.txt demo2.txt ,重命名为demo2.txt

    mv demo1 demo2 ,demo2存在,移动到demo2下,不存在重命名为demo2

    mv -b src desc ,如果dest存在,dest会备份为dest~,src重命名为dest

    mv -u old.txt new.txt, new.txt的修改时间比old.txt的修改时间新,覆盖会失败

    rm

    remove 移除

    -i 删除前逐一询问确认

    -------------------------处理目录-------------------------------

    mkdir

    make directory 创建文件夹

    mkdir ubuntu redhat slackware ,创建多个文件夹

    mkdir -p letter/important ,递归的创建文件夹

    rmdir

    remove directory 删除空文件夹

    ----------------------查看全部文件内容---------------------------

    cat

    concatenate 查看整个文件内容

    cat -n test1 给所有的行加上行号,-b

    cat f1.txt>f2.txt ,文件f1内容写入到f2中,>>,不存则创建

    more

    分页查看,空格翻页,b键回退

    less

    less is more,more命令的升级版。

    d后翻半页,u前翻半页

    b前翻一页,空格后翻一页

    / ?搜索

    nl

    ----------------------查看部分文件内容-------------------------

    tail

    显示文件最后几行内容

    tail -n 100 a.txt 显示默认100行

    tail -f a.log 显示a.log文件实时追加内容

    head

    显示文件开头几行内容

    head -n a.txt

    ----------------------探查进程---------------------------------

    ps

    process status

    ps -ef ,显示所有进程完整信息

    top

    第一行,当前系统时间,系统运行时间,几个用户登陆系统,1,5,15分钟负载情况

    第二行,进程状态

    第三行,us — 用户空间占用CPU的百分比。

    sy — 内核空间占用CPU的百分比。

    ni — 改变过优先级的进程占用CPU的百分比

    id — 空闲CPU百分比

    wa — IO等待占用CPU的百分比

    hi — 硬中断(Hardware IRQ)占用CPU的百分比

    si — 软中断(Software Interrupts)占用CPU的百分比

    第四行,内存状态

    第七行:PID — 进程id

    USER — 进程所有者

    PR — 进程优先级

    NI — nice值。负值表示高优先级,正值表示低优先级

    VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

    RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

    SHR — 共享内存大小,单位kb

    S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程

    %CPU — 上次更新到现在的CPU时间占用百分比

    %MEM — 进程使用的物理内存百分比

    TIME+ — 进程使用的CPU时间总计,单位1/100秒

    COMMAND — 进程名称(命令名/命令行)

    kill

    -l 列出所有可选信号

    kill pid -9, 杀死进程

    3 QUIT 结束运行

    9 KILL 无条件终止

    killall

    killall pname

    killall http*

    --------------------检测内存---------------------

    free

    -k,-m,-g

    -------------------检测磁盘空间------------------

    df

    disk free 设备上还有多少磁盘空间

    df -h 用户易读的形式显示

    du

    disk usage ,某个特定目录的磁盘使用情况

    du -h

    du -sh ,显示统计

    ----------------------权限----------------------

    chmod

    chmod options mode file ,mode参数可以使用八进制模式或者符号模式

    [ugoa][[+-=][rwxXstugo]] u 用户、g 组、o 其他,a 所有

    chown

    -----------------------文件处理------------------------

    sort

    排序

    sort -t ':' -k 3 -n /etc/passwd 根据用户ID数值排序,-n数值排序,-t分隔符

    -r 反序

    cut

    处理一个字符间隔的内容

    -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。

    -c :以字符为单位进行分割。

    -d :自定义分隔符,默认为制表符。

    -f  :与-d一起使用,指定显示哪个区域。

    who|cut -b 3-5,8

    cut -c 3 cut_ch.txt

    cat /etc/passwd|head -n 5|cut -d : -f 1

    sed [-nefr] [动作]

    选项与参数:

    -n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。

    -e :直接在命令列模式上进行 sed 的动作编辑;

    -f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;

    -r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)

    -i :直接修改读取的文件内容,而不是输出到终端。

    function:

    a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~

    c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!

    d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;

    i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);

    p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~

    s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

    cat new.txt |sed '2,5d' 删除2-5行,不实际删除文件内容

    nl /etc/passwd | sed '3,$d'

    sed '2a drink tea'

    nl /etc/passwd | sed '2i drink tea'

    nl /etc/passwd | sed '2,5c No 2-5 number'

    nl /etc/passwd | sed -n '5,7p'

    nl /etc/passwd | sed -n '/root/p'

    /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g'  ,sed 's/要被取代的字串/新的字串/g'

    nl /etc/passwd | sed -e '3,$d' -e 's/bash/blueshell/' ,-e表示多点编辑,第一个编辑命令删除/etc/passwd第三行到末尾的数据,第二条命令搜索bash替换为blueshell

    sed 的『 -i 』选项可以直接修改文件内容

    sed -i 's/\.$/\!/g' regular_express.txt , sed 将 regular_express.txt 内每一行结尾若为 . 则换成 !

    sed -i '$a # This is a test' regular_express.txt

    awk

    awk的一般语法格式为:awk [-参数 变量] 'BEGIN{初始化}条件类型1{动作1}条件类型2{动作2}。。。。END{后处理}'

    默认域分隔符是"空白键" 或 "[tab]键, $0则表示所有域,$1表示第一个域,$n表示第n个域

    awk '{print}'  /etc/passwd  ==  awk '{print $0}'  /etc/passwd

    /etc/passwd |awk  -F ':'  '{print $1}'

    cat /etc/passwd |awk  -F ':'  'BEGIN {print "name,shell"}  {print $1","$7} END {print "blue,/bin/nosh"}'

    awk -F: '/root/' /etc/passwd

    ARGC              命令行参数个数

    ARGV              命令行参数排列

    ENVIRON            支持队列中系统环境变量的使用

    FILENAME          awk浏览的文件名

    FNR                浏览文件的记录数

    FS                设置输入域分隔符,等价于命令行 -F选项

    NF                浏览记录的域的个数

    NR                已读的记录数

    OFS                输出域分隔符

    ORS                输出记录分隔符

    RS                控制记录分隔符

    ls -l |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ", size}'

    awk -F ':' 'BEGIN {count=0;} {name[count] = $1;count++;}; END{for (i = 0; i < NR; i++) print i, name[i]}' /etc/passwd

    awk -F: '$1~/mail/{print $1}' /etc/passwd

    ----------------------压缩数据-------------------

    gzip是Linux上最流行的压缩工具

    gzip

    压缩文件,单个文件

    -d ,解压缩

    gunzip

    解压文件

    tar

    tape archive

    -c ,创建一个新的tar归档文件

    -x ,从已有的tar归档文件中提取文件

    -f ,输出结果到文件

    -t ,列出tar归档文件的内容

    -v ,在处理时显示文件

    -z ,将输出重定向到gzip命令来压缩内容

    tar -cvf test.tar test1/ test2/

    tar -tf test.tar

    tar -xvf test.tar

    tar -czf test.tar test

    tar -zxvf filename.tar.gz

    ---------------------网络----------------------

    netstat

    netstat -at ,只列出TCP连接,-u

    netstat -ant ,禁用反向域名解析,显示的是ip

    netstat -ntl ,所有处于监听状态的tcp连接

    netstat -ntlp ,获取进程名、进程号以及用户 ID

    netstat -ie ,打印网络接口,和ifconfig相似

    ---------------------日期----------------------

    date

    date +%Y%m%d

    date +%Y%m%d-%H:%m:%S

    date -s 20080523 //设置成20080523,这样会把具体时间设置成空00:00:00

    date -s 01:01:01 //设置具体时间,不会对日期做更改

    date -s “01:01:01 2008-05-23″ //这样可以设置全部时间

    date -s “01:01:01 20080523″ //这样可以设置全部时间

    date -s “2008-05-23 01:01:01″ //这样可以设置全部时间

    date -s “20080523 01:01:01″ //这样可以设置全部时间

    相关文章

      网友评论

          本文标题:Linux常用命令

          本文链接:https://www.haomeiwen.com/subject/frtslxtx.html