常用Bash命令

Bash命令适用于Linux和Mac下的terminal

  • 创建空目录(在当前目录下):mkdir xxx
  • 切换目录:cd <目录路径><目录路径>可以是绝对路径,也可以是当前目录的相对路径)
  • 显示当前目录路径:pwd
  • 查看当前文件夹下的文件:ls
  • 删除文件:rm [文件名]
    rm:remove;
    -r:recursive,递归删除目录下的子目录;
    -f:force,强制删除(针对一些不可写的文)。
    删除整个文件夹:rm -r [文件夹名]
  • 移动/重命名文件:mv [source] [destination]
    mv:move
    [source][destination]的几种情况:
    1、source为文件,destination为目录:将文件移动到对应目录中。
    2、source为文件,destination为文件:对文件改名(实质使用source文件覆盖des文件)。
    3、source为目录,destination为目录:destination存在,则移动source目录到des目录中;否则是改名。
  • 拷贝文件:cp [source_file] [destination],destination省略即为拷贝到当前目录。

  • 查看当前目录下各个文件及目录占用空间大小:du -sh *du -sh * | sort -n统计文件大小,并按文件大小排序。
    du: disk usage,
    -s, –summarize: display only total for each directory(不列举子目录的大小)
    -h, –human-readable: print sizes in human readable format(按KB/M/G的格式,否则会只打印Byte字节数)
    最后*表示列出所有的文件&目录

  • 使程序在后台运行,nohup command,这样关闭当前terminal也不会杀掉进程(使用ssh连接的场景,ssh断了执行的命令还会继续执行)
    nohup: no hangup,hangup意为“挂断”,hangup (HUP) signal表示用户退出登陆了(关闭了当前的terminal)(即hang up),因此程序就停止了。nohup 命令即保证了程序不会随着用户的log off而结束。

  • 使程序打印到某个文件中,command >file_name 2>&1 &,这样程序的标准输出都会直接写到指定的文件中。
    >:表示redirection,即将标准输出的结果输出到文件中(而不是输出到命令行中),若>前未写明file discriptor则默认为标准输出。
    2:是一种file discriptor,表示stderr,2>&1表示将stderr的结果redirect到和1相同的文件中(&表示相同文件)(>后要么接file_name,要么接&x)。
    数字的含义:表示标准输入输出的类型,0 - stdin,1 - stdout,2 - stderr。
    最后的&:command的最后接&表示命令在后台运行,terminal不用等到当前命令结束才能执行下一条命令。

  • 查看某个进程:ps process_id
    查看当前所有进程:ps -ef,列出所有的活动进程;
    若要筛选某些进程,ps -ef | grep xxx,把名字包含xxx的进程列出来。

  • 结束进程:kill PID,结束pid对应的进程,pid:process identifier,即进程对应的序号。
    eg.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    (base) renli-mbp:test lrrr$ python test.py >log &
    [1] 40207
    (base) renli-mbp:test lrrr$ ps 40207
    PID TT STAT TIME COMMAND
    (base) renli-mbp:test lrrr$ kill 40207
    (base) renli-mbp:test lrrr$ ps 40207
    PID TT STAT TIME COMMAND
    [1]+ Terminated: 15 python test.py > log
    # 这个时候进程已经结束了,只是还没有被回收,因此会显示Terminated
    (base) renli-mbp:test lrrr$ ps 40207
    PID TT STAT TIME COMMAND
    # 这时进程已经真正消失了
  • 查看文件行数:wc -l file

  • 查看大文件:less file,在查看之前不会加载整个文件,因此速度快。

  • 筛选命令:grep [表达式] [文件],是一个基于正则表达式的文本匹配工具,全称是Global Regular Expression Print。
    其将文件中符合表达式的行筛选并打印出来,若不指定任何文件名称,则grep会从标准输入中读取。
    通常用法:和管道符号|相结合,管道符号的用法是:command 1 | command 2,他的功能是把第一个命令command 1执行的结果作为输入传给command 2
    示例:ps -ef | grep python:筛选出所有python相关的进程信息。

  • 排序命令:sort [各种选项] [文件],其是对文件的行进行排序,未指定文件则默认从标准输入中读取。
    默认是按ASCII码排序,将文件的行从首字母开始升序排序(即a-z的顺序)。
    常用选项:
    -u:去除重复行
    -d:忽略除英文字母、数字及空格字符外的其他字符
    -r:反向排序
    -n:依照数值的大小排序
    -t:分隔字符,指定排序时所用的栏位分隔字符

    1
    2
    3
    4
    5
    6
    7
    8
    % 文件如下
    apple:10:2.5
    orange:20:3.4
    banana:30:5.5
    pear:90:2.3

    % 以:未分隔符,按第二列进行数值排序
    sort -n -k 2 -t : facebook.txt % -k指定列数

用法和grep类似,通常也是利用管道符|,对前一个命令的结果进行排序显示。


Post Date: 2019-08-02

版权声明: 本文为原创文章,转载请注明出处