快速使用linux系统指令

347 阅读6分钟

基础

Overview

  • How to remember all these linux commands?
    • English
    • Official Manual : use man command
    • Frequently Used Options :: tldr.sh
    • Practice, Practice and Practice (Muscle memory)

Most Used Linux Commands

  • File System

    `cat`cat xxxx.txt
    [https://tldr.ostera.io/cat](https://tldr.ostera.io/cat)
    `chmod`1.4读2写1执行
    2.r读w写x执行
    3.u文件所属者,g文件所属者所在组,o其他用户,a所有用户
    4.+增加权限,-减少权限,=重新赋值
    5.常用组合1:chmod ugo+r file1.txt
    6.常用组合2:chmod a+r file1.txt
    7.常用组合3:chmod ug+w,o-w file1.txt file2.txt
    8.常用组合4:chmod -R a+r *
    9.常用组合5:chmod 777 file
    `chown`1.-R : 处理指定目录以及其子目录下的所有文件
    2.--help : 显示辅助说明
    3.-v : 显示详细的处理信息
    4.-f : 忽略错误信息
    5.常用组合1:chown root /var/run/httpd.pid
    6.常用组合2:chown runoob:runoobgroup file1.txt
    7.常用组合3:chown -R runoob:runoobgroup *
    8.常用组合4:chown :512 /home/runoob
    `cp`1.[https://tldr.ostera.io/cp](https://tldr.ostera.io/cp)
    2.-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
    3.-f:覆盖已经存在的目标文件而不给出提示。
    4.-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
    5.-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
    6.常用组合1:cp –r test/ newtest
    `du`1.查看文件目录大小
    2.常用组合1:du -h test
    3.常用组合2: du -sh *
    `df`1.常用查看存储空间
    2.常用组合1:df -h
    3.常用组合2: df -T
    `file`1.查看文件属性
    2.常用组合1:file /root/test
    3.常用组合2: file -c 文件名 查看指令执行过程
    `ln`1.创建连接
    2.-s:对源文件建立符号连接,而非硬连接。
    2.常用组合1:ln -s 源目录 链接目录
    3.常用组合2:ln 源目录 链接目录
    `ls`1.-a 列出目录所有文件,包含以.开始的隐藏文件
    2.-l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来
    3.-t 以文件修改时间排序
    4.-S 以文件大小排序
    5.-h 以易读大小显示。
    6.常用组合1:ls -la 或者单独使用ls
    `mkdir`1.-p 确保目录名称存在,不存在的就建一个。
    2.常用组合1:mkdir test
    3.常用组合2:mkdir test/newtest
    `mv`1.改名:mv zhangsan lisi
    2.mv /var/log/test.txt .
    `pwd`1.查看当前路径
    `rm`1.-r 将目录及以下之档案亦逐一删除。
    2.-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
    2.常用组合1:rm -rf /opt/test/
    `rmdir`1.删除空的目录
    2.常用组合1:rmdir -p test/test1
    `tee`1.标准输入
    2.tee test.txt
    `touch`1.touch命令有两个功能:一是创建新的空文件,二是改变已有文件的时间戳属性。
    2.touch file{1..5}.txt
    3.touch file1.txt更改创建时间 stat进行验证
    `find`1.常用组合1:find . -name "*.c"
    2.常用组合2:find . -type f
    3.常用组合3:find . -ctime -20
    4.常用组合4:find /var/log -type f -mtime +7 -ok rm {} \;
  • Processes

    `crontab`1.分 时 日 月 周
    2.crontab -e 编辑定时任务
    3.crontab -l 列出定时任务
    4.crontab -r 删除定时任务
    `kill`1.kill -9 id 强制杀死进程
    2.kill -15 正常停止一个进程。
    3.kill -1 id 重新加载进程
    `ps`1.ps -ef 显示所有程序间的关系
    2.ps -aux 显示所有包含其他使用者的行程
    `time`1.后面接要执行的指令,执行完成后会显示完成时间,以及使用机器性能等信息
  • User Environment

    `env`1.env 显示所有环境变量
    2.env -u 删除某个环境变量
    3.env LOGNAME=root 定义指定的环境变量
    `exit`1.退出终端
    `who`1.用于显示系统中有哪些使用者正在上面,显示的资料包含了使用者 ID、使用的终端机、从哪边连上来的、上线时间
    2.who -H
    `uanme`1.uname -a 依次输出内核名称,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
  • Text Processing

    `grep`1.grep -v linuxtechi /etc/passwd
    `awk`1.用法一:awk '{print $1,$4}' log.txt
    2.用法二:awk -F, '{print $1,$2}' log.txt
    3.用法三:awk -F '[ ,]' '{print $1,$2,$5}' log.txt 用空格分隔,再用逗号分隔
    4.用法四: awk -va=1 '{print $1,$1+a}' log.txt 设置参数a=1
    5.用法五:awk '{print $NF}' file1.txt 输出最后一列
    6.用法六: awk 'NR==2{print $3}' file1.txt
    `dirname` and `basename`1.dirname命令去除文件名中的非目录部分,删除最后一个“\”后面的路径,显示父目录。 语法:dirname [选项] 参数
    2.basename命令用于打印目录或者文件的基本名称,显示最后的目录名或文件名。语法:basename [选项] 参数
    `diff`1. diff log2014.log log2013.log -y -W 50
    `sort` and `uniq`1.sort log | uniq -c | sort
    2.-r 反向排序
    3.https://www.runoob.com/linux/linux-comm-sort.html
    4.https://www.runoob.com/linux/linux-comm-uniq.html
    `tail`1.tail notes.log # 默认显示最后 10 行
    2.-f 循环读取
    3.-n 行数显示文件的尾部 n 行内容
    4.tail -fn 20 notes.log
    `wc`1.-l 显示行数
    2.-w 显示字数
    3.wc将计算指定文件的行数、字数,以及字节数。
    `xargs`1.是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。l
    2.cat test.txt | xargs 全部放在一行
    3.cat test.txt | xargs -n3 每行三个
    4.echo "nameXnameXnameXname" | xargs -dX 自定义分隔符
    5.cat zhangsan.txt |xargs -I {} echo {}
  • editor

    `vim`1.文本编辑工具
    2.q退出,w保存,!强行,:set nu显示行号
    3.-f:覆盖已经存在的目标文件而不给出提示。
    4.-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
    5.-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
    6.:数字 到某一行
    7.i 光标插入进入编辑模式
    8.dd 删除一行
    9.J合并一行
    10.ctrl+v 选中
    11.yy 复制整行,yw复制某个单词,y$复制光标到最后,y^复制光标到最前,p黏贴 11.u撤销上一步 12./ 查找,n下一个,N上一个 13.:s/1/2 搜索当前行第一个1并用2代替,:s/1/2/g 搜索当前行所有的1并用2代替, :%s/1/2/g 在整个文档中将1替换为2, :s/1/2/c 每次替换都给出提示确认
  • Misc

    `sleep`睡眠默认以秒为单位
  • Power Tools

    `tmux`1.tmux new -s 'session-name' 创建新会话
    2.tmux detach 离开会话
    3.tmux ls 查看有哪些会话
    4.tmux attach -t 'session-name' 接入会话
    5.tmux kill-session -t '' 杀死会话
    6. tmux switch -t 'session-name' 切换会话
    `curl`1.curl -o /dev/null -s -w %{http_code} www.linux.com 返回网站返回码
    2. curl -O http://www.linux.com/hello.sh
    3.curl -x 192.168.100.100:1080 http://www.linux.com 使用代理
    5.-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
    6.常用组合1:cp –r test/ newtest
  • network

    `ifconfig`查看ip
    `ping`查看网络连通性
    `telnet` telnet ip port 查看网络连通性
  • git commod

git config --global user.name "ASxx" 
git config --global user.email "123456789@qq.com"
git代码库
  git clone ssh://git@47.101.174.187:10022/chang/chang-devops.git
  推送:
  git add README.md
  git add --all                           //相反的命令restore
  git commit -m "first commit"            //相反的命令 git rm 
  git remote add origin ssh://git@47.101.174.187:10022/chang/chang-devops.git
  git push -u origin master
  git知识了解:https://www.cnblogs.com/miracle77hp/articles/11163532.html
  拓展:
    git在push东西的时候,系统会检测本地的基础代码(就是更改前的代码)和仓库中的基础代码是不是一样,如果不一样就会报错
    git fetch origin/master           //同步远程分支,然后在执行下面的指令进行创建,就是新的分支
    git branch [branch-name]          //新建一个分支,但依然停留在当前分支
    git checkout -b [branch]          //新建一个分支,并切换到该分支
  分支操作:
    查看分支:
      git branch                  //查看当前分支
      git branch -a               //查看全部分支
    git日志:
      git log 
      git log -x      //x是变量,换成数字就是显示前x个提交的日志
    合并分支:
      第一步你要把你当前分支都add进暂存区,然后暂存区commit提交到分支,清空暂存区。
        git add .
        git commit -m ‘dev'                    //如果本地目录有要删减的地方,删减以后,加-a的这个参数,就会让远程和本地同步
        git push -u origin dev
      第二部切换要合并的分支,比如说我们切换到master分支,然后一定要pull一下最新的代码,我专门把这个步骤加粗一下:
        git checkout master
        git pull origin master
      第三步合并代码:
        git merge dev
      第四步:查看git状态,没有问题直接合并
        git status
        这一步查看状态就是看看又没有冲突,为提交,暂存区还有东西等问题,没有问题就可以直接解决了
        git push origin master
    新建分支:

Bash

  • Basic Shells

    • TODO:
  • Useful Command Oneliner

    • For loop
    for i in `seq 1 100`; do echo $i; done
    for i in `seq 1 100`; do wget http://xxx/$i.png; done
    for i in `seq 1 100`; do wget http://11xxx/$(printf "%04d" $i).png; done
    
    • All IP Connect to my host
    $ netstat -lantp |  grep ESTABLISHED | awk '{print $5}' |  awk -F: '{print $1}' |  sort -u
    
    • Find the process that is using a certain port, eg, 3000
    lsof -i:3000
    
    • Repeat a command every 0.1 second
    watch -n 0.1 "ls -lh"
    
    • Redirect tar extract to another directory
    tar xfz filename. tar.gz -C PathToDirectory
    
    • Pipe STDOUT to vim
    tail -1000 /some/file | vim -
    
    • Copy files between hosts
    scp aaa.img target_username@target_host:
    scp aaa.img target_username@target_host:/tmp/bbb.img
    
    rsync -avrz -e ssh source_dir/ target_username@target_host:/tmp/target_dir/
    
    • diff two different command outputs
    diff -urN <(command1 arg1) <(command2 arg1 arg2)
    vimdiff <(command1 arg1) <(command2 arg1 arg2)
    

Linux SysAdmin Tools

  • netstat and vmstat and top and free
  • sar
  • tcpdump and wireshark
  • TODO: blah blah blah

References

菜鸟教程

常用:

Commands

Vim

Redhat

Shell

Kernel

Command line

oneliner