linux常用命令

1.cd命令,进入某个目录

cd /root 进入root目录
cd 或者 cd ~ 进入用户家目录
 
2.ls命令,展示目录下的文件和目录,我们常用的是展示详细内容的ls -l,也可以写成它的别名ll,它会展示文件属性、权限等信息。
  1. -l :列出长数据串,包含文件的属性与权限数据等  
  2. -a :列出全部的文件,连同隐藏文件(开头为.的文件)一起列出来(常用) 
  3. -d :仅列出目录本身,而不是列出目录的文件数据  
  4. -h :将文件容量以较易读的方式(GB,kB等)列出来  
  5. -R :连同子目录的内容一起列出(递归列出),等于该目录下的所有文件都会显示出来  
 
3.grep命令,这个命令用于分析一行的信息,一般与管道符匹配使用,对上个命令的执行结果进行筛选、加工等。
  1. -a :将binary文件以text文件的方式查找数据  
  2. -c :计算找到‘查找字符串’的次数  
  3. -i :忽略大小写的区别,即把大小写视为相同  
  4. -v :反向选择,即显示出没有‘查找字符串’内容的那一行  
  5. # 例如:  
  6. # 取出文件/etc/man.config中包含MANPATH的行,并把找到的关键字加上颜色  
  7. grep --color=auto 'MANPATH' /etc/man.config  
  8. # 把ls -l的输出中包含字母file(不区分大小写)的内容输出  
  9. ls -l | grep -i file  
 
比如统计当前目录下包含 wang 的字符的数量:
    ll | grep wang | wc -l
    或
    ll | grep -c wang
 
4.find命令,用于查询。可用于查询的参数类别比较多,较为复杂。
  1. find [PATH] [option] [action]  
  2.   
  3. # 与时间有关的参数:  
  4. -mtime n : n为数字,意思为在n天之前的“一天内”被更改过的文件;  
  5. -mtime +n : 列出在n天之前(不含n天本身)被更改过的文件名;  
  6. -mtime -n : 列出在n天之内(含n天本身)被更改过的文件名;  
  7. -newer file : 列出比file还要新的文件名  
  8. # 例如:  
  9. find /root -mtime 0 # 在当前目录下查找今天之内有改动的文件  
  10.   
  11. # 与用户或用户组名有关的参数:  
  12. -user name : 列出文件所有者为name的文件  
  13. -group name : 列出文件所属用户组为name的文件  
  14. -uid n : 列出文件所有者为用户ID为n的文件  
  15. -gid n : 列出文件所属用户组为用户组ID为n的文件  
  16. # 例如:  
  17. find /home/ljianhui -user ljianhui # 在目录/home/ljianhui中找出所有者为ljianhui的文件  
  18.   
  19. # 与文件权限及名称有关的参数:  
  20. -name filename :找出文件名为filename的文件  
  21. -size [+-]SIZE :找出比SIZE还要大(+)或小(-)的文件  
  22. -tpye TYPE :查找文件的类型为TYPE的文件,TYPE的值主要有:一般文件(f)、设备文件(b、c)、  
  23.              目录(d)、连接文件(l)、socket(s)、FIFO管道文件(p);  
  24. -perm mode :查找文件权限刚好等于mode的文件,mode用数字表示,如0755;  
  25. -perm -mode :查找文件权限必须要全部包括mode权限的文件,mode用数字表示  
  26. -perm +mode :查找文件权限包含任一mode的权限的文件,mode用数字表示  
  27. # 例如:  
  28. find / -name passwd # 查找文件名为passwd的文件  
  29. find . -perm 0755 # 查找当前目录中文件权限的0755的文件  
  30. find . -size +12k # 查找当前目录中大于12KB的文件,注意c表示byte 
 
5.mkdir命令,创建文件夹
  1. -m(--mode) 指定文件、目录的权限,注意这里只能赋予当前用户支持的最高权限。如当前用户只支持755,-m指定777,则结果为755。
  2. -p(--parents)  递归创建目录,可以一次性创建多级目录  
  3. -v(-verbose) 每次创建目录都展示信息
递归创建目录,即一次性创建多级目录:mkdir -p /aaa/bbb 
 
6.rm命令,删除文件、目录,rm不带参数只允许删除空目录,我们一般都使用rm -rf来删除文件,一种习惯。
  1. -f :就是force的意思,忽略不存在的文件,不会出现警告消息  
  2. -i :互动模式,在删除前会询问用户是否操作  
  3. -r :递归删除,最常用于目录删除,它是一个非常危险的参数 
 
7.cp命令,复制一个文件到一个目录,复制目录需要带-r参数
  1. -a :将文件的特性一起复制  
  2. -p :连同文件的属性一起复制,而非使用默认方式,与-a相似,常用于备份  
  3. -i :若目标文件已经存在时,在覆盖时会先询问操作的进行  
  4. -r :递归持续复制,用于目录的复制行为  
  5. -u :目标文件与源文件有差异时才会复制  
 
8.mv命令:
    1.剪切一个文件到一个目录
       2.如果目录是当前目录,则意味着重名名当前文件
   -b                           类似--backup 但不接受参数
  -f, --force                  覆盖前不询问
  -i, --interactive            覆盖前询问
  -n, --no-clobber             不覆盖已存在文件
如果您指定了-i、-f、-n 中的多个,仅最后一个生效。
 
9.  ps命令:管理当前进程的命令,将某个时刻的当前进程列出来。
  1. -A :所有的进程均显示出来  
  2. -a :不与terminal有关的所有进程  
  3. -u :有效用户的相关进程  
  4. -x :一般与a参数一起使用,可列出较完整的信息  
  5. -l :较长,较详细地将PID的信息列出  
   常用搭配如下:
  1. ps aux # 查看系统所有的进程数据  
  2. ps ax # 查看不与terminal有关的所有进程  
  3. ps -lA # 查看系统所有的进程数据  
  4. ps axjf # 查看连同一部分进程树状态  
 
10.file命令:用于查看当前文件的类型,包含文件、目录、硬链接、软连接等~
    命令格式: file 文件名,如 file /home/wang/sb234
 
11.kill命令:杀死某个进程。
     该命令用于向某个工作(%jobnumber)或者是某个PID(数字)传送一个信号,它通常与ps和jobs命令一起使用,它的基本语法如下:
   kill -signal PID
   signal的常用参数如下:
   注:最前面的数字为信号的代号,使用时可以用代号代替相应的信号。
     
  1. 1:SIGHUP,启动被终止的进程  
  2. 2:SIGINT,相当于输入ctrl+c,中断一个程序的进行  
  3. 9:SIGKILL,强制中断一个进程的进行  
  4. 15:SIGTERM,以正常的结束进程方式来终止进程  
  5. 17:SIGSTOP,相当于输入ctrl+z,暂停一个进程的进行  
例如:
  1. # 以正常的结束进程方式来终于第一个后台工作,可用jobs命令查看后台中的第一个工作进程  
  2. kill -SIGTERM %1   
  3. # 重新改动进程ID为PID的进程,PID可用ps命令通过管道命令加上grep命令进行筛选获得  
  4. kill -SIGHUP PID  
 
12.killall命令:该命令用于向一个命令启动的进程发送一个信号,它的一般语法如下:
    killall [-iIe] [command name]
    它的参数如下:
    
  1. -i :交互式的意思,若需要删除时,会询问用户  
  2. -e :表示后面接的command name要一致,但command name不能超过15个字符  
  3. -I :命令名称忽略大小写  
  4. # 例如:  
  5. killall -SIGHUP syslogd # 重新启动syslogd  
 
13.lsblk命令,以树状图的方式整齐的列出除了RAM之外的块设备。
    lsblk -l 以非树状图方式展示。
 
14.uname命令,显示机器名等信息。
        uname -a 展示机器内核名、分支名、内核发布版本、内核版本、处理器架构、操作系统名。如我本地的虚拟机:
        Linux localhost.localdomain 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
 
15.history命令:展示所有执行过的命令,使用CTRL+R可以检索执行过的命令,并可以自动补全。
 
16.sudo命令:使用超级管理员权限来执行命令。注意:sudo是允许用户借用超级用户的权限,然而“su”是允许用户以root用户登录。所以sudo比su更安全。不建议使用此命令来处理日常用途。
 
17.touch命令:将文件的访问时间和修改时间改为当前时间,如果文件不存在,则创建一个新文件。我们经常使用这个命令在用户有权限的目录下创建不存在的文件。
 
18.cal、date等日期相关的命令。
    cal以日历的形式展示时间,不带参数展示当前日期,带参数展示指定日期,如:cal 2 5 1830 展示1830年5月2日。
    date展示年月日时分秒星期等,也可以设置时间,如 date --set='29 Dec 2015 11:07:00' 将时间设置为2015年12月29日。
 
19.echo命令:
    1.在终端中输出一段字符串,可以使用引号或者不使用引号。
    2.在文件末尾追加内容。
参数:-n 文字末尾不换行
          -e 特殊符号特别处理、
   a 发出警告声;

    删除前一个字符;
   c 最后不加上换行符号;
   f 换行但光标仍旧停留在原来的位置;
   换行且光标移至行首;
   光标移至行首,但不换行;
   插入tab;
   v 与f相同;
   \ 插入字符;
   nn 插入nnn(八进制)所代表的ASCII字符;

示例:
    echo -e 'haha haha        结果:haha        haha
    echo who am i >> homewangsb234     结果向sb234文件末尾追加字符串who am i 
 
20.cat命令这个命令有三大功能。
    1.查看文件内容        cat filename    
    2.创建一个新文件并写入多行内容,要以EOF或STOP结束 (这里后面写的是什么,就以什么结束。不一定写成EOF,自己测试的)      cat >newfilename <<EOF
    3.合并几个文件为一个新文件    cat file1 file2 > newfile
    参数:
    -n    对内容加上行号并展示
    -b    对非空行加上行号并展示
    -e/E 对每行末尾追加$符号并展示
    -s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
     -v 或 --show-nonprinting
    
    可做操作:
        1.将多个文件合并为一个文件    cat sb2 sb3 > sb4
        2.将文件内容清空    cat /dev/null > sb234
        3.将文件加上行号(可以用-n或-e参数控制空行是否加入行号)并展示到新文件中    cat -n sb > sb400
        4.创建不存在的文件并写入内容        cat >sb <<EOF    写入多行内容并以EOF结束
        5.向已存在的文件中追加内容            cat >>sb <<EOF 追加多行内容并以EOF结束
        6.将多个文件内容追加到一个已存在的文件中    cat sb3 sb4 >> sb5
    总的来说>代表创建,>>代表追加。这里一定不要搞错了
 
21.whereis 命令,是命令的搜索命令。用于定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或者是帮助文件。whereis命令还具有搜索源代码、指定备用搜索路径和搜索不同寻常项的能力。
            -b   定位可执行文件。

-m   定位帮助文件。

-s   定位源代码文件。

-u   搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。

-B   指定搜索可执行文件的路径。

-M   指定搜索帮助文件的路径。

-S   指定搜索源代码文件的路径。

    比如:whereis ls   这条命令会列出ls这个命令可执行文件、源代码文件(这个实际结果中没有)、帮助文件在文件系统中的位置
 
22.whatis命令,这个命令比较有意思,是用于查询一个系统命令是干什么的。比如刚才提到的whereis命令。
    执行命令:whatis whereis      查询whereis这个命令是干什么的。
    结果:whereis              (1)  - locate the binary, source, and manual page files for a command
 
23.which命令,在PATH变量指定的路径中搜索某个命令可执行文件的位置,并返回第一个结果。可以查看某个命令是否存在。
            -n  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。

-p  与-n参数相同,但此处的包括了文件的路径。

-w  指定输出时栏位的宽度。

-V  显示版本信息

    执行命令:which ll   会查询到ls命令可执行文件的位置,并展示执行命令的详细内容。
    结果:       alias ll='ls -l --color=auto'
             /bin/ls    
    
24.locate命令,用于搜索文件。由于其并非遍历整个文件目录,而是从后台数据库中搜索(/var/lib/mlocate/mlocate.db),所有速度最快。但可能会查不到最近新增或修改的文件,需要更新一下后台数据库才行(执行命令updatedb)。
另外注意:locate命令是有搜索限制的,文件位置:/etc/updatedb.conf
    # 开启搜索限制
    PRUNE_BIND_MOUNTS = "yes"
   #不搜索的文件系统
    PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fusectl gfs gfs2 hugetlbfs inotifyfs iso9660 jffs2     lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs"
    #不搜索的文件类型
    PRUNENAMES = ".git .hg .svn"
    #不搜索的文件路径
    PRUNEPATHS = "/afs /media /net /sfs /tmp /udev /var/cache/ccache /var/spool/cups /var/spool/squid /var/tmp"
            -e   将排除在寻找的范围之外。

-1  如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的权限资料。

-f   将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案放在资料库中。

-q  安静模式,不会显示任何错误讯息。

-n 至多显示 n个输出。

-r 使用正规运算式 做寻找的条件。

-o 指定资料库存的名称。

-d 指定资料库的路径

-h 显示辅助讯息

-V 显示程式的版本讯息

 25.type命令,用于查看某个命令是shell自带的还是shell外部独立二进制文件提供的。如果一个命令是外部命令,那么使用-p参数,会显示该文件的路径,相当于which命令。
    type cd
26.help命令,用于查询系统自带命令的帮助文档
        -s    以简短方式展示命令的帮助文档
 
27.head命令,默认展示行头的10条数据。
 
28.tail命令,默认展示行尾的10条数据,与head命令相对应。

-f 循环读取(监视文件是否动态改变)

-q 不显示处理信息

-v 显示详细的处理信息

-c<数目> 显示的字节数

-n<行数> 显示行数

--pid=PID 与-f合用,表示在进程ID,PID死掉之后结束. 

-q, --quiet, --silent 从不输出给出文件名的首部 

-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒 

    
29.cut命令,为文件中的每一行提取符合条件的字符并输出。
         -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f  :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />范围之内,该字符将被写出;否则,该字符将被排除。
        针对行操作:
          -b和-c一个是字节,一个是字符,在英文和数字看来取得的结果没有什么区别,然而当内容为中文时就有区别了。-b可能会乱码,-b的中文,一个中文占用3个字节,-c一个字符就是一个字符。所以,对于中文而言,-b -3等同于-c 1。另外遇到中文这种多字节字符时,可以用-n参数,告诉其不要把多字节字符拆开。(-nb可以,-bn不行,测试发现的)
        针对域操作:
        这个地方需要举一个例子来说明域的概念,比如/etc/passwd文件中保存的数据不是特别整齐有规律,但是整体是以:隔开的,cut命令支持对于这种文件的操作。需要结合-b和-f,-b代表以什么作为分隔符,-f代表第几块区域。
        /etc/passwd文件内容:
  1. root:x:0:0:root:/root:/bin/bash
  2. bin:x:1:1:bin:/bin:/sbin/nologin
  3. daemon:x:2:2:daemon:/sbin:/sbin/nologin
  4. adm:x:3:4:adm:/var/adm:/sbin/nologin
  5. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  6. sync:x:5:0:sync:/sbin:/bin/sync
  7. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  8. halt:x:7:0:halt:/sbin:/sbin/halt
  9. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
  10. uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
  11. operator:x:11:0:operator:/root:/sbin/nologin
  12. games:x:12:100:games:/usr/games:/sbin/nologin
  13. gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
  14. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
  15. nobody:x:99:99:Nobody:/:/sbin/nologin
  16. dbus:x:81:81:System message bus:/:/sbin/nologin
  17. vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
  18. rtkit:x:499:496:RealtimeKit:/proc:/sbin/nologin
  19. avahi-autoipd:x:170:170:AvahiIPv4LLStack:/var/lib/avahi-autoipd:/sbin/nologin
  20. ntp:x:38:38::/etc/ntp:/sbin/nologin
  21. saslauth:x:498:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
  22. postfix:x:89:89::/var/spool/postfix:/sbin/nologin
  23. haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
  24. pulse:x:497:495:PulseAudioSystemDaemon:/var/run/pulse:/sbin/nologin
  25. gdm:x:42:42::/var/lib/gdm:/sbin/nologin
  26. sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
  27. tcpdump:x:72:72::/:/sbin/nologin
  28. wang:x:500:500:wang1:/home/wang:/bin/bash
  29. wangftp:x:501:501::/home/wangftp:/sbin/nologin
  30. ftpadmin:x:502:502::/home/ftpadmin:/sbin/nologin
        测试: 
  1. head -n 5/etc/passwd | cut -d :-f 5
        输出结果:
  1. root
  2. bin
  3. daemon
  4. adm
  5. lp
 
30.nl命令,对文件内容指定行号格式化输出。
            -b  :指定行号指定的方式,主要有两种:

-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);

-b t :如果有空行,空的那一行不要列出行号(默认值);

-n  :列出行号表示的方法,主要有三种:

-n ln :行号在萤幕的最左方显示;

-n rn :行号在自己栏位的最右方显示,且不加 0 ;

-n rz :行号在自己栏位的最右方显示,且加 0 ;

-w  :行号栏位的占用的位数。

-p 在逻辑定界符处不重新开始计算。 

DEMO:
  1. #将文件内容非空行标识3位行号,在右方显示(前面可以空行,如果用-n ln的方式(行号在最左侧)和-w是不兼容的,-w指定的值不会生效)。
  2. nl -b t -n rz -w 3 test.log
  3.  
  4. #输出结果:
  5. 001 坎坎伐檀兮, 002 置之河之干兮。 003 河水清且涟猗, 004 不稼不穑, 005 故取禾三百潺兮。 006 两个黄鹂鸣翠柳, 007 一行白鹭上青天。 008 窗含西岭千秋雪, 009 门泊东吴万里船。
 
 
 
 
 
 
 
 
 
 





原文地址:https://www.cnblogs.com/douJiangYouTiao888/p/6474038.html