linux小命令

linux环境下的一些小命令:

  • 统计文件夹下的目录数
    ls -l | grep “^d” |wc -l
    wc命令
    linux统计文件

    1
    2
    3
    4
    5
    6
    7
    8
    # 统计文件夹下ts文件数量
    find ./ -name "*.ts" | wc -l
    # 统计文件夹下ts文件行数
    wc -l `find ./ -name "*.ts"`
    # 统计文件夹下ts文件总行数
    wc -l `find ./ -name "*.ts"` | tail -n1
    # 统计文件夹下ts文件总行数(过滤空行)
    find ./ -name "*.ts" | xargs cat | grep -v ^$ | wc -l
  • 修改命令行提示符
    环境变量PS1、PS2、PS3以及PS4来自定义用户命令行的字符显示
    linux系统的命令号提示符格式是设置在 环境变量 PS1 中的,可以通过export PS1="\u@\h \w $ " 来临时指定。

  • 环境变量
  • export NAME=”value”
    export 可定义环境变量
  • set
    使用 set 命令会显示普通变量和环境变量
  • unset NAME
    使用 unset 可以删除环境变量
  • env
    使用 env 命令只会显示环境变量
  • /ext/profile, /etc/bashrc
    对所有用户有效的环境配置文件
  • ~/.bashrc, ~/.bash_profile
    只对当前用户有效的环境配置文件
  • 动态链接库

    • 查看符号表 nm
    • 查看库的依赖关系 ldd
  • 查找
    Linux的五个查找命令的区别

    • locate 根据文件数据库,快速查找文件位置
      • locate – u 重新建立文件数据库(u前面有空格)
    • find 根据各种条件,查找文件
      • 真实遍历查找,速度较慢
    • whereis 查找指定命令的位置(包括可执行文件/说明文件/源代码),
    • which 指令会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果
  • 库文件相关

    • /etc/ld.so.conf 文件中,配置了系统默认查找目录
      • 修改配置(或新加库)之后,可通过ldconfig 命令来更新库缓存
      • 库文件缓存保存在 /etc/ld.so.cache 文件中, 程序查找库时,直接搜索这个文件,而不会去每个目录找
  • alias 自定义命令别名
    – alias ll=’ls -lF’ 自定义ll命令
    – unalias ll 删除ll 别名

  • xmodmap 修改键盘映射
    linux修改键盘按键

  • fuser 命令

    • Show which processes use the named files, sockets, or filesystems.
    • 显示正在使用 指定 文件/端口/文件系统 的进程
    • 示例: 杀掉正在使用 80端口的进程
      • sudo fuser -k 80/tcp
  • linux 权限

  • tail 命令

    • tail [选项] [filename]
    • 查看文件尾部内容, 默认为最后10行
    • 常见用法为 tail -f [filename], 能即时输出文件追加的内容,常用于查看正在被写入的日志.
  • top 命令

    • top
    • 显示当前正在运行的所有进程,并按消耗资源数排序
    • P – 以 CPU 占用率大小的顺序排列进程列表
    • M – 以内存占用率大小的顺序排列进程列表
  • namei 命令

    • namei [filename]
    • 从追溯一个文件,直到最后, 常用于查看多层嵌套的符号链接.
  • file 命令

    • file [filename]
    • 查看一个文件的文件类型 (可执行文件, 库文件, 符号链接, 压缩包文件, …)
  • 添加系统启动项
    假设要启动的程序为nginx, 启动脚本可参考

    1
    2
    3
    sudo mv xxx.sh /etc/init.d/nginx
    sudo chmod +x /etc/init.d/nginx
    sudo /usr/sbin/updare-rc.d -f nginx defaults
  • 深入理解linux系统的目录结构

  • ubuntu中管理用户和用户组
    如何成为 Root 用户

    1. 用户组
      • groupadd 新增用户组
      • groupdel 删除用户组
      • cat /etc/group 查看所有用户组
    2. 用户
      • useradd 新增用户
      • userdel 删除用户
      • passwd [user] 修改用户密码, 可以使用sudo 修改root密码
      • usermod 修改用户权限
      • cat /etc/passwd 查看所有用户
  • 字符集
    locale -a 查看本机支持的所有字符集
    cd /usr/share/locales && sudo ./install-language-pack zh_CN 安装中文字符集
    cd /usr/share/locales && sudo ./remove-language-pack zh_CN 卸载中文字符集

  • 批量修改文件名

    • find + grep + awk
    • 脚本批量 mv
    • rename
  • netstat 命令
    Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等
    #查看某端口号被哪个程序占用
    netstat -apn | grep portno

  • 应用程序错误报告
    有时候, 系统中的某个应用出现了问题, 那么你就会在每次启动的时候, 看到一个提示框, 问你要不要报告错误. 如果去掉这个提示呢?

    1. 消除这一次的提示
      删除 /var/crash/*
    2. 彻底摆脱错误弹窗
      编辑/etc/default/apport 文件, 并修改enable为0
  • 大多数linux 命令行工具, 都会把参数 - 当作标准输入流(通常是读取命令行输入).

    • 比如 cat -, 会输出命令行输入.
  • 查看/切换 shell

    • echo $SHELL 查看当前使用的shell程序
    • chsh -s /bin/zsh 切换shell为shell, 最后参数为执行文件路径
  • 系统时间相关

    • 查看当前时间 date
    • 修改系统时区
      tzselect
      sudo cp /usr/share/zoneinfo/Asia/ShangHai /etc/localtime
    • 同步网络时间 ntpdate time.windows.com
  • fakeroot
    在一个虚拟的环境中,模拟root操作, 但实际权限还是当前用户权限,常用于debian编译打包。

  • du
    统计文件大小的一个命令, -s 只显示最终结果, -B[M|G] 指定显示单位

  • objdump

    • objdump -s –section=.comment [filename]
      查看库或可执行文件的编译器信息
  • nohup
    用这个命令启动的程序, 不会收到HUP信号, 并且会自动把输出重定向到nohup.out
    可配合&启动deamon进程

  • 压缩文件

    • zip
      zip -r xxx.zip file1 file2 dir1 dir2
  • linux解压windows压缩的文件, 出现中文乱码
    解压的时候指定字符集, 详情
    unzip -O CP936 filename

  • mtr
    查看本地服务器 到 目标服务器的路由路径情况.
    使用 MTR 诊断网络问题

  • ubuntu 开机自动启动

    • 命令行运行 gnome-session-properties 可以修改登陆后
    • sysv-rc-conf 工具可以管理开机启动的服务.
    • /etc/lightdm/lightdm.conf
  • 在GUI打开隐藏文件夹

    • Ctrl + H
    • Alt + F12 直接输入文件路径
  • sed 命令
    sed [-nefri] ‘command’ 输入文本
  • 选项
    • n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
    • e∶直接在指令列模式上进行 sed 的动作编辑;
    • f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
    • r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
    • i∶直接修改读取的档案内容,而不是由萤幕输出。
  • 命令
    • a ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
    • c ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
    • d ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
    • i ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
    • p ∶打印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
    • s ∶取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g
  • 一个比较复杂的修改例子
    1
    2
    #将一段匹配pattern1--pattern2之间的匹配pattern3的字符串用pattern4替换
    sed -i '/pattern1/,/pattern2/s/pattern3/pattern4/g'
  • man 帮助手册
    man -k [word] 查看所有包含 word 关键字的文档
    mandb 生成 whatis 数据库

  • info
    与 man 类似, 不过是以页面树的形式组织。
    /usr/share/doc 很多有用的说明文档目录

  • 查看当前系统状态

  • who 查看当前连接的用户
  • netstat -a 查看网络使用状况
  • ps -aux 查看运行的进程
  • sync
    同步内存数据到硬盘
  • od
    以二进制形式输出文件

  • rsync
    参考
    同步文件
    rsync -avz --delete ${source_dir} ${VPS}:${midDir}

$ python 启动一个简单的 webserver
python -m SimpleHTTPServer port

bash

linux下的/etc/profile、/etc/bashrc、~/.bash_profile、~/.bashrc文件
O(http://blog.chinaunix.net/uid-23842323-id-2656618.html)
login shell和non-login shell

设置变量默认值

当变量a为null时则var=b

1
var=${a-b}

#当变量a为null或为空字符串时则var=b

1
var=${a:-b}

禁用密码登录

1
2
3
4
# vi /etc/ssh/sshd_config  
PasswordAuthentication no //禁止使用基于口令认证的方式登陆
PubkeyAuthentication yes //允许使用基于密钥认证的方式登陆
# /etc/init.d/sshd reload

linux小命令
https://leafflow.top/2015/11/20/linux/linux小命令-2015-11-20/
作者
vollen
发布于
2015年11月20日
许可协议