美文网首页ios综合挡程序员iOS开发记录
开发必会的 Linux & Mac 命令

开发必会的 Linux & Mac 命令

作者: 木猫尾巴 | 来源:发表于2015-12-17 17:02 被阅读1755次

    [TOC]
    Linux 和 Mac 也是就OS X 的命令非常相似,在开发过程中会经常用到,命令忘记用法就使用

    # 命令[command]的帮助信息,显示在当前命令行内
    [command]  --help
    # 显示命令[command]完整帮助文档
    man [command]
    

    Linux 命令行工具操作快捷键

    # Ctrl + C - 取消操作
    # Ctrl + D - 退出内嵌终端
    # Ctrl + L - 清屏
    # Ctrl + R - 历史命令,可以查找近期的命令,重复近期的命令
    # Ctrl + A - 光标移到行首
    # Ctrl + E - 光标移到行尾
    # Ctrl + W - 清除光标之前一个单词
    # Ctrl + K - 清除光标到行尾的字符
    # Ctrl + T - 交换光标前两个字符
    # Ctrl + V - 输入控制字符 如Ctrl+v ,会输入^M
    # Ctrl + F - 光标后移一个字符
    # Ctrl + B - 光标前移一个字符
    # Ctrl + H - 删除光标前一个字符
    # Esc+f - 光标后移一个单词
    # Esc+b - 光标前移个单词
    # Esc+N+[单词] - 光标输入N个单词[单词],N为不可省略
    # Esc-c - 使下一个单词首字母大写, 同时光标前进一个单词, 如光标停留在单词的某个字母上则为这个光标位置
    # Esc-u - 使下一个单词所有字母变大写, 同时光标前进一个单词, 同上
    # Esc-l 同Esc-U, 但使之全变为小写
    

    命令行复制粘贴快捷键

    • 在控制台下(也就是本台电脑的图形化界面下的,那个命令行)

    复制命令:Ctrl + Shift + C 组合键.

    粘贴命令:Ctrl + Shift + V 组合键.

    • 在终端下 :(这个是远程登陆的命令行,也就是你要操作的电脑在远程)
      一般用的是这个但是这个insert键,如果是笔记本的话必须借助功能件组合才能打出来,我电脑是联想的功能键是Fn

    复制命令:Ctrl + Insert 组合键  或  用鼠标选中即是复制。

    粘贴命令:Shift + Insert 组合键  或  单击鼠标滚轮即为粘贴。

    使用超级管理员身份

    # 使用超级管理员身份执行命令 [command]
    sudo [command]
    

    命令行窗口

    清空历史信息

    clear
    

    系统类

    查看内存占用

    free -m
    

    以(-/+ buffers/cache)的free和used为主

    查看磁盘占用

    df -h
    

    查看内核/操作系统/CPU信息

    uname -a
    cat /proc/version
    

    查看操作系统版本

    head -n 1 /etc/issue
    

    查看CPU信息

    cat /proc/cpuinfo
    

    文件类

    查找文件

    快速查找

    # 根据名称查找/目录下的[file full name]文件
    find / -name [file full name]
    
    # 递归查找 [.] 也就是所有 后缀为 [suffix] 的文件
    find . -name "*.[suffix]"
    
    # 查找当前目录中的所有 [jar]文件
    ls -l | grep '[jar]'
    

    递归查找

    # 递归查找所有文件内容中,前提这是一个可以被读取并识别的,包含[search key]的 xml 文件
    find . -name "*.xml" |xargs grep "[search key]"
    

    内容查找

    # 查找所有的包含 [context] 后缀为 [suffix] 的文件
    grep -H '[context]' *.[suffix]
    
    # 显示所有以 [head] 开头的文件中包含 [test]的行
    grep '[test]' [head]*
    
    # 显示在aa,bb,cc文件中匹配[context]的行
    grep '[context]' aa bb cc
    
    # 显示aa中所有包含每个字符串至少有[number]个连续小写字符的字符串的行
    grep '[a-z]\{[number]\}' aa
    

    查看文件头[number]行

    # [filename] 文件名
    head -n [number] [filename]
    

    查看文件尾[number]行

    # [filename] 文件名
    tail -n [number] [filename]
    

    查看日志类型文件

    # 日志文件 [logfile.log]
    tail -f [logfile.log]
    # 这个命令会自动显示新增内容,屏幕只显示10行内容的(可设置)[linenumber]
    tail -f -n [linenumber] [logfile.log]
    

    文件操作

    显示当前目录

    pwd
    

    显示当前目录文件占用空间

    # -h标识为人类好看的结果 -d 标识递归层数
    du -h -d 1
    # -c 最终还会返回统计的所有文件的数量
    du -h -c
    # 找出当前目录下面的文件多少个
    find . -type f | wc -l
    

    以树状图列出目录的内容

    # 以树状图显示目录 [folder] 内容,如果没有请安装 tree 工具
    tree [folder]
    # OS X 请安装 tree或者使用下面的命令
    find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
    # 递归变量文件夹内的结构,忽略 [build] 的子文件夹,并输出到文件 FileTree.md
    tree -d -I [build] > FileTree.md
    # 如果想忽略更多文件夹这样写
    tree -d -I "build|gradle|output"
    

    文件权限

    # [file]的权限进行 options 操作
    chmod [options] [file]
    # 第一位指定属主的权限,第二位指定组权限,第三位指定其他用户的权限
    # 4,执行时设置用户ID
    # 2,执行时设置用户组ID
    # 1,设置粘着位
    # 如6(4+2)代表有读写权,7(4+2+1)有读、写和执行的权限
    # -rwxrwxrwx,r表示读、w表示写、x表示可执行 options 为777
    
    • Option
    option Full option Desc
    -c --changes 只输出被改变文件的信息
    -f --silent --quiet 当chmod不能改变文件模式时,不通知文件的用户
    -R --recursive 可递归遍历子目录,把修改应到目录下所有文件和子目录
    -v --verbose 无论修改是否成功,输出每个文件的信息
    --reference=filename 参照filename的权限来设置权限
    • Option Code
    code Desc
    + 增加权限
    - 删除权限
    = 重新分配权限
    • Who
    who Desc
    u 用户
    g
    o 其它
    a 所有用户(默认)
    • permission
    Permison Desc
    r
    w
    x 执行
    s 设置用户(或组)的ID号
    t 设置粘着位(sticky bit),防止文件或目录被非属主删除
    u 用户的当前权限
    g 组的当前权限
    o 其他用户的当前权限
    • 实例
    Dome Desc
    chmod 751 file 给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
    chmod u=rwx,g=rx,o=x file 上例的另一种形式
    chmod u+x file 给file的属主增加执行权限
    chmod 4755 设置用ID,给属主分配读、写和执行权限,给组和其他用户分配读、执行的权限
    chmod =r file 为所有用户分配读权限
    chmod 444 file 同上
    chmod a-wx,a+r file 同上
    chmod -R u+r directory 递归地给directory目录下所有文件和子目录的属主分配读的权限

    显示当前文件夹详情

    ls -al
    

    复制文件

    # 复制文件 [source] 到 [dest]
    cp [source] [dest]
    #  递归复制整个文件夹 [sourceFolder] 到 [targetFolder]
    cp -r [sourceFolder] [targetFolder]
    # 远程拷贝 [sourecFile] 到 [romoteUserName@remoteIp:remoteAddr]
    scp [sourecFile] [romoteUserName@remoteIp:remoteAddr] 远程拷贝
    

    移动文件

    # 移动文件 [movefile] 到 [targetFolder]
    mv [movefile] [targetFolder]
    

    重命名

    # rename [oldNameFile] 重命名为 [newNameFile]
    rename [oldNameFile] [newNameFile]
    # rename 正则表达式做批量命令
    # 先man rename 在手册页的最后一行看正则的版本,然后使用对应的正则表达式,如Perl版本
    rename 's/^oldName/newName/' oldName.xx 
    # 或者 C 的正则版本
    rename 'oldNmae' 'newName' oldName.xx
    # 将 [oldNameFile] 重命名为 [newNameFile] 不建议使用,会导致误操作
    mv [oldNameFile] [newNameFile]
    

    压缩文件

    # 保存为 [tarFileName.tar.gz] , 从[fromFolder]压缩到[targetFolder]
    tar -czf [tarFileName.tar.gz] [fromFolder] [targetFolder]
    
    # 列出压缩文件 [tarFileName] 的内容文件列表
    tar -tzf [tarFileName.tar.gz]
    
    # 压缩 文件
    zip [zipOutName] [File]
    # 压缩文件夹
    zip -r [zipOutName] [Folder]
    

    解压文件

    # 解压 [tarFileName.tar.gz] 的文件
    tar -xvzf [tarFileName.tar.gz]
    # zip解压
    unzip [zipFile] -d [outFolder]
    

    对于.rar

    要在linux下处理.rar文件,需要安装RAR for Linux,可以从网上下载,但要记住,RAR for Linux 不是免费的;
    可从 http://www.rarsoft.com/download.htm 下载RARfor Linux 3.2. 0,然后安装:

    tar -xzpvf rarlinux-3.2.0.tar.gz
    cd rar 
    make 
    

    这样就安装好了,安装后就有了rar和unrar这两个程序,rar是压缩程序,unrar 是解压程序

    删除文件大小为零的文件

    find ./ -size 0 | xargs rm -f &
    

    目录操作

    创建目录

    # 创建 [newfolder] 目录
    mkdir [newfolder]
    

    删除目录

    # 删除空目录 [emptyFolder]
    rmdir [emptyFolder]
    # 安全删除目录 [folder] 中所有内容
    \rm -r [folder]
    # 递归删除目录 [folder] 中所有内容 这样容易误删除
    rm -rf [folder]
    

    网络类

    查看端口占用情况

    # 查看端口号 [port] 的使用情况
    netstat -tln | grep [port]
    

    查看端口属于哪个程序

    # 查看端口号 [port] 属于哪个程序
    lsof -i :[port]
    

    网络检测

    # 检查网卡
    ping 127.0.0.1
    # 检查网络 [host or ip address]
    ping [host or ip address]
    # 路由跟踪 到 [host] 的路由
    traceroute [host]
    

    进程类

    查看进程

    #  查看所有有关[progress name]的进程
    ps –ef | grep [progress name]
    
    # 查看所有进程
    ps aux
    # 查看 [progress] 进程
    ps aux |grep [progress] 
    

    查看Java运行进程

    # 查看java进程
    jps
    # 查看java进程号
    jps -q
    # java 应用程序main class的完整package名或者应用程序的jar文件完整路径名
    jps -l
    # 查看java进程号 输出传递给main 方法的参数
    jps -m
    # 查看java进程传递给JVM的参数
    jps -v
    

    终止进程

    # 终止线程号为[pid]的线程
    kill -9 [pid]
    

    用户类

    显示用户

    # 显示当前用户名
    whoami
    

    切换用户

    # 切换到 username
    su -username
    

    配置 信息类

    查看系统版本

    more /proc/version
    

    打印信息

    # 打印java home环境变量的值
    echo $JAVA_HOME
    # 读取环境变量更你使用的bash有关,如果是 bash 是读取 ~/.bash_profile 中
    

    远程管理

    远程登录

    # 使用ssh登录 [userName] [ip]
    ssh [userName]@[ip]
    

    相关文章

      网友评论

      本文标题:开发必会的 Linux & Mac 命令

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