linux命令笔记(长期更新)

2018-09-24

本博客所有文章采用的授权方式为 自由转载-非商用-非衍生-保持署名 ,转载请务必注明出处,谢谢。

声明:
本博客欢迎转发,但请保留原作者信息!
Qznoe:阿川的个人空间
博客:阿川的个人博客
邮箱:achuan@achuan.io
内容系本人学习、研究和总结,如有雷同,实属荣幸!

 今天在写一些刚最近学到linux命令,看到笔记本上记得有点乱重写整理了一下。接触了linux也有近大半年了,越来越离不开它了,windows也是偶尔开一下虚拟机,接触linux这段时间也是受益匪浅,使用windows的时候虽然控制的住网瘾,但是偶尔也想打一把,自从独装了linux直接一棒子打死…挺好的…我也非常喜欢linux命令,它提升了我一些单词量。还让我接触了开源的概念、它的历史,这些我都非常喜欢。  咳咳,关于开源过几天再说吧,进入正题,这些是记的笔记,linux命令虽多,但每个人玩linux的目的固然不同,常用的命令也有差异,当然你也用到它时Google一下。

cd

  • 切换目录,可以是绝对路径,也可以是相对路径

      cd /home/achuan   //切换到目录/achuan/achuan
      cd ./achuan       //切换到当前目录下的achuan目录中,“.”表示当前目录  
      cd ../achuan      //切换到上层目录中的chuan目录中,“..”表示上一层目录
      cd ~              //切换到home
      cd ../..          //切换到目录的上两级
    

ls

  • 查看目录与文件,list之意

      -l  //列出长数据串,包含文件的属性与权限数据等
      -a  //列出全部的文件,连同隐藏文件(开头为.的文件)一起列出来(常用)
      -d  //仅列出目录本身,而不是列出目录的文件数据
      -h  //将文件容量以较易读的方式(GB,kB等)列出来
      -R  //连同子目录的内容一起列出(递归列出),等于该目录下的所有文件都会显示出来
    

注:这些参数也可以组合使用,下面举两个例子:

grep

  • 强大的文本搜索命令,它能使用正则表达式搜索

      -a   //将binary文件以text文件的方式查找数据
      -c   //计算找到‘查找字符串’的次数
      -i   //忽略大小写的区别,即把大小写视为相同
      -v   //反向选择,即显示出没有‘查找字符串’内容的那一行
      # 例如:
         //取出文件/etc/man.config中包含MANPATH的行,并把找到的关键字加上颜色
      grep --color=auto 'MANPATH' /etc/man.config
         //把ls -l的输出中包含字母file(不区分大小写)的内容输出
      ls -l | grep -i file
    

find

  • 基于查找文件命令,相对而言,使用复杂,参数多
     # 与参数有关

      -mtime n   //n为数字,意思为在n天之前的“一天内”被更改过的文件;
      -mtime +n   //列出在n天之前(不含n天本身)被更改过的文件名;
      -mtime -n   //列出在n天之内(含n天本身)被更改过的文件名;
      -newer file   //列出比file还要新的文件名
      # 例如:
      find /root -mtime 0 # 在当前目录下查找今天之内有改动的文件
    

   # 与用户或用户组名有关的参数

    -user name   //列出文件所有者为name的文件
    -group name   //列出文件所属用户组为name的文件
    -uid n   //列出文件所有者为用户ID为n的文件
    -gid n   //列出文件所属用户组为用户组ID为n的文件

   # 与文件权限及名称有关的参数:

    -name filename   //找出文件名为filename的文件
    -size [+-]SIZ   //找出比SIZE还要大(+)或小(-)的文件
    -tpye TYPE   //查找文件的类型为TYPE的文件,TYPE的值主要有:一般文件(f)、设备文件(b---术、c)、
                   目录(d)、连接文件(l)、socket(s)、FIFO管道文件(p);class phone{

cp

  • 用于复制文件,还可以把多个文件一次性复制到一个目录下

      -a   //将文件的特性一起复制
      -p   //连同文件的属性一起复制,而非使用默认方式,与-a相似(常用于备份)
      -i   //若目标文件已经存在时,在覆盖时会先询问操作的进行
      -r   //递归持续复制,用于目录的复制行为
      -u   //目标文件与源文件有差异时才会复制
      # 例如:
      cp -a aa aab   //连同文件的所有特性把文件aa复制成文件aab
      cp aa aab aabb achuan   //把文件aa、aab、aabb复制到目录achuan中
    

mv

  • 用于移动文件、目录或更名,move之意

      -f   //force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
      -i   //若目标文件已经存在,就会询问是否覆盖
      -u   //若目标文件已经存在,且比目标文件新,才会更新
      注:该命令可以把一个文件或多个文件一次移动一个文件夹中,但是最后一个目标文件一定要是“目录”。
      # 例如:
      mv aa aab aabb achuan   //把文件aa、aab、aabb移动到目录achuan中
      mv aa aab   //把文件aa重命名为aab
    

rm

  • 用于删除文件或目录,remove之间(数据无价,操作需谨慎!!!)

      -f   //就是force的意思,忽略不存在的文件,不会出现警告消息
      -i   //互动模式,在删除前会询问用户是否操作
      -r   //递归删除,最常用于目录删除,它是一个非常危险的参数
      # 例如:
      rm -i achuan   //删除文件achuan,在删除之前会询问是否进行该操作
      rm -fr achuan  //强制删除目录achuan中的所有文件
    

ps

  • 用于某个时间点的进程运行情况选取下来并输出,process之意

      -A   //所有的进程均显示出来
      -a   //不与terminal有关的所有进程
      -u   //有效用户的相关进程
      -x   //一般与a参数一起使用,可列出较完整的信息
      -l   //较长,较详细地将PID的信息列出
        
      用到不多,记住一般使用命令参数搭配即可 # 例如:
      ps aux   //查看系统所有的进程数据
      ps ax   //查看不与terminal有关的所有进程
      ps -lA   //查看系统所有的进程数据
      ps axjf   //查看连同一部分进程树状态
    

kill

  • 用于向某个工作或者是某个PID(数字)传送一个信号,它通常与ps和jobs命令一起使用,# 例如:

      kill -signal PID
    

signal的常用参数如下:
注:最前面的数字为信号的代号,使用时可以用代号代替相应的信号。

    1:SIGHUP   //启动被终止的进程
    2:SIGINT   //相当于输入ctrl+c,中断一个程序的进行
    9:SIGKILL   //强制中断一个进程的进行
    15:SIGTERM   //以正常的结束进程方式来终止进程
    17:SIGSTOP   //相当于输入ctrl+z,暂停一个进程的进行
    # 例如:
       //以正常的结束进程方式来终于第一个后台工作,可用jobs命令查看后台中的第一个工作进程
    kill -SIGTERM %1 
       //重新改动进程ID为PID的进程,PID可用ps命令通过管道命令加上grep命令进行筛选获得
    kill -SIGHUP PID

file

  • 用于判断file命令后的文件的基本数据,因为在linux下文件的类型并不是以后缀分的,这个命令显得非常有用,语法so easy

      file filename
      # 例如:
      file ./test
    

tar

  • 命令用于对文件进行打包,默认情况并不会压缩,如果指定相应的参数,还会调用相应的压缩程序(gzip和bzip等)进行压缩和解压

      -c   //新建打包文件
      -t   //查看打包文件的内容含有哪些文件名
      -x   //解打包或解压缩的功能,可以搭配-C(大写)指定解压的目录,注意-c,-t,-x不能同时出现在同一条命令中
      -j   //通过bzip2的支持进行压缩/解压缩
      -z   //通过gzip的支持进行压缩/解压缩
      -v   //在压缩/解压缩过程中,将正在处理的文件名显示出来
      -f filename   //filename为要处理的文件
      -C achuan   //指定压缩/解压缩的目录achuan
    
      命令有点多哈,但是通常我们只需要记住下面三条命令即可:
      压缩:tar -jcv -f filename.tar.bz2 要被处理的文件或目录名称
      查询:tar -jtv -f filename.tar.bz2
      解压:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录
    

chgrp

  • 用于改变文件所属用户组

      chgrp [-R] dirname/filename
      -R   //进行递归的持续对所有文件和子目录更改
      # 例如:
      chgrp users -R ./achuan   //递归地把achuan目录下中的所有文件和子目录下所有文件的用户组修改为users
    

chmod

  • 用于改变文件或目录的权限,非常重要的命令

      -c   //当发生改变时,报告处理信息
      -f   //错误信息不输出
      -R  //进行递归的持续对所有文件和子目录更改
      -v  //运行时显示详细处
      4或r   //读取权限
      2或w   //写入权限
      1或x   //执行或切换权限
      0或-   //不具任何权限
      s     //特殊权限
    

注:该命令有两种用法,包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法,在此我只说数字设定法。

  • 说数字设定法 0没有权限,1执行权限,2写权限,4读权限,然后将其相加。所以数字属性的格式应为3个从0到7的八进制数

      # 例如:  
      如果想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)=6(读/写)。
    
    
      chmod 777 -R achuan   //"achuan"文件或目录
      -R   //进行递归的持续更改,即连同子目录下的所有文件都会更改
    

vim

  • vim命令要用于文本编辑,相比vim的话题不亚于,哪个编程语言更好…不过编辑器,在我看来不过是用哪个会提高我的工作效率,这因人而异。vim里面有很多好用的命令,以后我会单独说它。

gcc

  • 前段时间学了点C才了解的,它主要用于编译,对于开发C语言的人来说,这是非常重要的命令

      -o   //output之意,用于指定生成一个可执行文件的文件名
      -c   //用于把源文件生成目标文件(.o),并阻止编译器创建一个完整的程序
      -I   //增加编译时搜索头文件的路径
      -L   //增加编译时搜索静态连接库的路径
      -S   //把源文件生成汇编代码文件
      -lm   //表示标准库的目录中名为libm.a的函数库
      -lpthread   //连接NPTL实现的线程库
      -std=   //用于指定把使用的C语言的版本
    
      # 例如:
         //把源文件demo1.c按照c99标准编译成可执行程序demo1
      gcc -o demo1 demo1.c -lm -std=c99
         //把源文件demo1.c转换为相应的汇编程序源文件demo1.s
      gcc -S demo1.c
    

shutdown

*关机、重启命令,经常使用的命令

    -r   //重启
    -n   //杀死所有运行中的程序后自动关机
    -f   //关机时,不进行磁盘检测
    -f   //关机时,进行磁盘检测
    -c   //取消目前已经进行中的关机动作
    # 例如:
    shutdown -r now   //立即重启
    shutdown now   //立即关机
    shutdown +5 now  //5分钟后关机

init是所有进程的祖先,它们的进程号始为1.所以发送TERM信号给init会终止所有的用户进程,守护进程等,shutdown就是使用这种机制,init定义了8个运行级别(runleve),inti 0 关机,init 1 重启……关于init就到这了。就不长篇大论了。

暂且到这里,欲知后续如何,请看下回分解Alt text

2019-2-15 更新

scp

  • 多用于系统文件之间的复制,scp 是 secure copy 的缩写,中文就是”安全复制”,
    scp是linux系统下基于ssh协议进行的远程文件

      -1   强制scp命令使用协议ssh1
      -2   强制scp命令使用协议ssh2
      -4   强制scp命令只使用IPv4寻址
      -6   强制scp命令只使用IPv6寻址
      -B   使用批处理模式(传输过程中不询问传输口令或短语)
      -C   允许压缩(将-C标志传递给ssh,从而打开压缩功能)
      -p   保留原文件的修改时间,访问时间和访问权限
      -q   不显示传输进度条
      -r   递归复制整个目录
      -v   详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题
      -o   ssh_option:如果习惯于使用ssh_config(5)中的参数传递方式
      -P   port:注意是大写的P,port是指定数据传输用到的端口号
      # 例如:
      # windows传输到linux,
      [参数][文件][用户名][ip][地址]
      scp -r - demo.text ubuntu@139.199.105.72:/var/www
    

文章赞赏

赞赏码

文章评论



Follow @achuanya    Watch    Star

友情链接

Fooleap's Blog
杨 青 | 女程序员的个人博客
TMaize Blog
Krryblog - 你的美好,我都记得
BlogWe | 个人博客大全

章节列表