快速使用linux系统指令

家资是何物,积帙列梁梠。这篇文章主要讲述快速使用linux系统指令相关的知识,希望能为你提供帮助。
基础Overview


  • How to remember all these linux commands?

  • English
  • Official Manual : use ??man?? command
  • Frequently Used Options :: ??tldr.sh??

  • tldr.ostera.io/

  • 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:mkdirtest/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 file1..5.txt
    3.touchfile1.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,$2log.txt
    3.用法三:awk -F [ ,]print $1,$2,$5log.txt 用空格分隔,再用逗号分隔
    4.用法四: awk -va=1 print $1,$1+a log.txt设置参数a=1
    5.用法五:awk print $NF file1.txt输出最后一列
    6.用法六:awk NR==2print $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 -Iecho


  • 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查看网络连通性


  • 【快速使用linux系统指令】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/liwenchang/liwenchang-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/liwenchang/liwenchang-devops.git
git push -u origin master
拓展:
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 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 复制代码??
  • $ netstat -lantp |grep ESTABLISHED | awk print $5 |awk -F: print $1 |sort -u
    复制代码

  • lsof -P | grep :3000
    复制代码

  • watch -n 0.1 "ls -lh"
    复制代码

  • tar xfz filename. tar.gz -C PathToDirectory
    复制代码

  • tail -1000 /some/file | vim -
    复制代码

  • 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 -urN < (command1 arg1) < (command2 arg1 arg2)
    vimdiff < (command1 arg1) < (command2 arg1 arg2)
    复制代码


  • diff two different command outputs

Linux SysAdmin Tools

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



    推荐阅读