Linux 基本命令学习笔记

 

1. 文件管理                                                                  

Ø touch  新建文件。例: touch test.txt  新建一个test.txt 文件。

 

Ø cp 复制文件。例:cp ./user_one/test_one  ./user_two/test_two,将user_one目录下的test_one文件复制到user_two目录下面,并且命名为test_two。加参数-i会在有重名是询问是否要覆盖。

 

Ø mv 文件或目录改名,或者用于将一个文件由一个目录移动到另外一个目录。例:mv ./user_one/test_one  ./user_two ,将user_one下面的test_one 文件移动到user_two下面。

 

Ø rm  文件移除命令。 例:rm /root/test  ,将/root 目录下的名称为test的文件移除 。如果要彻底删除一个目录,加 -r这个参数,表示递归删除其全部子目录和文件。(慎用)

 

Ø chmod 更改文件/目录访问文件。文件/目录都有读(r)、写(w)、执行(x)权限。

      用户类型有三种:

               owner:文件/目录创建者,默认拥有三种权利,简写为u; 

               group:和owner同组的其他用户,简写为g; 

               other: 除以上两者的其他的用户,简称为o;

  例:给test加上o的x权限:chmod o+x test     给test减去o的x权限chmod o-x test。

此外,还可以用数字表示权限4(读)、2(写)、1(执行),可以用数字的组合 来表示权限。例:7=4+2+1表示全部权限,6=4+2表示读写权限 ;chmod 777 test (表示给u,g,o以7,7,7的权限)

 

Ø chown 更改文件的所有者或组。只有 root 用户可以更改文件的所有者。只在root 用户或拥有该文件的情况下才可以更改文件的组。如果拥有文件但不是 root 用户,则只可以将组更改为该用户所在的组。

 

Ø tail 输出文件的末尾部分。默认为输出最后10行,参数-n可以自定义输出末尾的行数。例:tail -3 test.txt,输出test.txt末尾的3行。

 

Ø cat 三大功能:

      (1)显示文件 ,例:cat test.txt,将test.txt文件中的内容显示出来。

      (2)新建一个文件,例:cat>test_two.txt,新建一个名为 test_two.txt的文件。 文件创建后可直接编辑, 编辑完成后按ctrl+c保存退出 。

      (3)将几个文件合并成一个文件,例:cat test_one.txt  test_two.txt>test.txt   将test_one.txt 与test_two.txt 合并,并输出到test.txt。

 

 

Ø more  一页一页的显示文件。space往下一页,b往回一页,enter显示下一行,h搜索字符串,q停止显示

 

Ø less  与more功能类似,除了可以按space往下一页外,还可以利用上下键来翻页

 

Ø find  查找目录或文件。命令格式:find pathname -options [-print -exec -ok ...]。pathname所查找的目录路径;-print将匹配的文件输出到标准输出;-exec对匹配的文件执行该参数所给出的shell命令;-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行;-name按照文件名查找文件。

2. 磁盘管理

Ø ls 列出目录中所有子目录和文件。加上-l参数,列出文件的详细信息。在使用-l参数后可以查看文件的类型。

      常用的几种文件类型有: 

                    普通文件,第一个字符为[-];

                    目录文件,第一个字符为[d];

                    链接文件,第一个字符为[l] ;

                    块设备文件,第一个字符为[b];

                    字符设备文件,第一个字符为[c]  

Ø md /mkdir  创建目录。 mkdir后可以带参数,mkdir [-m][-p] 目录名。 -m: 对新建目录设置存取权限,也可以用chmod命令设置; -p: 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;

Ø cd  进入目录。用“..”来指代父目录,用“.”指代当前目录,cd ~ (或者cd #)可以到用户的主目录

 

Ø df 检查文件系统的磁盘空间占用情况。查看挂载点的磁盘空间大小。

Ø du 统计目录或文件所占磁盘空间的大小,默认以k为单位。

Ø pwd 查看当前目录的完整路径。

Ø lsof 列出打开的文件。因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能。参数-i用以显示符合条件的进程情况。

    lsof输出各列信息的意义如下:

         COMMAND:进程的名称

         PID:进程标识符

         USER:进程所有者

       FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等

       TYPE:文件类型,如DIR、REG等

       DEVICE:指定磁盘的名称

       SIZE:文件的大小

       NODE:索引节点(文件在磁盘上的标识)

       NAME:打开文件的确切名称

       

 

 

 

3. 文档编辑

Ø Vi的2种模式:编辑模式和命令模式。

 

Ø 两种模式的切换:Vi启动时进入的是命令模式,在命令模式下按i可以进入编辑模式,在编辑模式中按ESC可以退回到命令模式。

 

Ø 退出vi的命令:

:wq  保存文件后退出

:x   保存文件后退出

:q! 不存盘退出

 

附:

:x与:wq的区别:

:wq   强制性写入文件并退出。即使文件没有被修改也强制写入,并更新文件的修改时间。

:x    写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间。

一般情况下两者没有什么区别,只有在编译源文件时会产生影响。":wq"强制更新文件的修改时间,这样会让make编译整个项目时以为文件被修改过了,然后就得重新编译链接生成可执行文件。这可能会产生让人误解的后果,也产生了不必要的系统资源花销。

 

Ø :set nu 设置vi中的行号。:set nonu 去掉行号

 

Ø wc 统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。- c 统计字节数;- l 统计行数;- w 统计字数。

Ø uniq  检查及删除文本中重复出现的行列。

   参数说明:

         -c或--count   在每列旁边显示该行重复出现的次数。
         -d或--repeated   仅显示重复出现的行列。
         -f<栏位>或--skip-fields=<栏位>   忽略比较指定的栏位。
         -s<字符位置>或--skip-chars=<字符位置>   忽略比较指定的字符。
         -u或--unique   仅显示出一次的行列。
         -w<字符位置>或--check-chars=<字符位置>   指定要比较的字符。
         --help   显示帮助。
         --version   显示版本信息。

Ø grep  查找内容包含指定的范本样式的文件。

Ø sed   流编辑器,自动编辑一个或多个文件,简化对文件的反复操作。

      sed的几个重要用途:

     (1)删除:d命令

          sed '2d' example-----删除example文件的第二行。
              sed '2,$d' example-----删除example文件的第二行到末尾所有行。
              sed '$d' example-----删除example文件的最后一行。
              sed '/test/'d example-----删除example文件所有包含test的行。

        (2)替换:s命令

              sed 's/test/mytest/g' example-----在整行范围内把test替换为mytest。如果没有g标记,则只有每行第一个匹配的test被替换成mytest。                                                         

              sed -n 's/^test/mytest/p' example-----(-n)选项和p标志一起使用表示只打印那些发生替换的行。也就是说,如果某一行开头的test被替换成mytest,就打印它。
              sed 's/^192.168.0.1/&localhost/' example-----&符号表示被替换的字符本身。所有以192.168.0.1开头的行都会被替换成它自己加 localhost,变成192.168.0.1localhost。
              sed -n 's/\(love\)able/\1rs/p' example-----love被标记为1,所有loveable会被替换成lovers,而且替换的行会被打印出来。
              sed 's#10#100#g' example-----不论什么字符,紧跟着s命令的都被认为是新的分隔符,所以,“#”在这里是分隔符,代替了默认的“/”分隔符。表示把所有10替换成100。

        (3)选定行的范围:逗号

             sed -n '/test/,/check/p' example-----所有在模板test和check所确定的范围内的行都被打印。
             sed -n '5,/^test/p' example-----打印从第五行开始到第一个包含以test开始的行之间的所有行。
             sed '/test/,/check/s/$/sed test/' example-----对于模板test和check之间的行,每行的末尾用字符串sed test替换。

         (4)多点编辑:e命令

               sed -e '1,5d' -e 's/test/check/' example-----(-e)选项允许在同一行里执行多条命令。如例子所示,第一条命令删除1至5行,第二条命令用check替换test。命令的执 行顺序对结果有影响。如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令的结果。
          (5) 从文件读入:r命令

                 sed '/test/r file' example-----file里的内容被读进来,显示在与test匹配的行后面,如果匹配多行,则file的内容将显示在所有匹配行的下面。

         (6)写入文件:w命令

              sed -n '/test/w file' example-----在example中所有包含test的行都被写入file里。

         (7)追加命令:a命令

              sed '/^test/a\\--->this is a example' example<-----'this is a example'被追加到以test开头的行后面,sed要求命令a后面有一个反斜杠。

         (8)插入:i命令

         sed '/test/i\\new line-------------------------' exampl如果test被匹配,则把反斜杠后面的文本插入到匹配行的前面。

     (9)下一个:n命令 

          sed '/test/{ n; s/aa/bb/; }' example-----如果test被匹配,则移动到匹配行的下一行,替换这一行的aa,变为bb,并打印该行,然后继续。

     (10) 变形:y命令

           sed '1,10y/abcde/ABCDE/' example-----把1--10行内所有abcde转变为大写,注意,正则表达式元字符不能使用这个命令。

     (11)退出:q命令

          sed '10q' example-----打印完第10行后,退出sed。

         (12)保持和获取:h命令和G命令

            sed -e '/test/h' -e '$G example,任何包含test的行都被复制并追加到该文件的末尾。

      (13)保持和互换:h命令和x命令

            sed -e '/test/h' -e '/check/x' example -----互换模式空间和保持缓冲区的内容。也就是把包含test与check的行互换。

Ø awk  文本解析器。默认以空格为分割符,也可以用-F自定义分隔符。例:awk '{ if (NF>2) {print $1"."$2"."$3"."$4} }'。

   条件操作符:<、<=、==、!=、>=、~匹配正则表达式、!~不匹配正则表达式   

   awk内容变量:

              ARGC  命令行参数个数 ;

              AGRV  命令行参数排列;

              ENVIRON   支持队列中系统环境变量的使用;

              FILENAME   awk浏览的文件名 ;

              FNR       浏览文件的记录数 ; 

              FS    设置输入域分隔符,同- F选项;

              NF  浏览记录的域个数;

              NR   已读的记录数;

              OFS   输出域分隔符;

              ORS   输出记录分隔符 ;

              RS    控制记录分隔符。

 

Ø sort 对文本文件内容加以排序。

    参  数:
   -b   忽略每行前面开始出的空格字符。
   -c   检查文件是否已经按照顺序排序。
   -d   排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
   -f   排序时,将小写字母视为大写字母。
   -i   排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
   -m   将几个排序好的文件进行合并。
   -M   将前面3个字母依照月份的缩写进行排序。
   -n   依照数值的大小排序。
   -o<输出文件>   将排序后的结果存入指定的文件。
   -r   以相反的顺序来排序。
   -t<分隔字符>   指定排序时所用的栏位分隔字符。
   +<起始栏位>-<结束栏位>   以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
   --help   显示帮助。
   --version   显示版本信息

 

      

4. 文件传输

Ø scp 远程复制文件或目录。

   复制文件: 

  (1)将本地文件拷贝到远程 

       scp 文件名 --用户名@计算机IP或者计算机名称:远程路径 

       例:scp ./test.txt root@10.6.222.195:/root  将当前目录下的test.txt 文件复制到10.6.222.195的根目录下 

  (2)从远程将文件拷回本地 

       scp --用户名@计算机IP或者计算机名称:文件名 本地路径 

         例:scp root@10.6.222.195:/root/test.txt   ./ 从10.6.122.195的根目录下下复制文件test.txt到当前目录

   复制目录: 

  (1)将本地目录拷贝到远程 

       scp -r 目录名 --用户名@计算机IP或者计算机名称:远程路径 

         例:scp -r  /root/cherie_test/  root@10.6.222.195:/root/  将本机root目录下的cherie_test目录拷贝到10.6.222.195的root目录下

  (2)从远程将目录拷回本地 

     scp -r --用户名@计算机IP或者计算机名称:目录名 本地路径

       例:scp -r root@10.6.222.195:/root/cherie_test/  /root/ 将10.6.222.195的root目录下的cherie_test目录拷贝到本机root目录下

 

Ø rsync  更好的远程拷贝文件

rsync的六种工作模式:

(1)拷贝本地文件。当文件来源路径和目的路径都是本地时就启用这种工作模式

(2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。(这个功能还不会用)

(3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。(这个功能还不会用)

(4)从远程rsync服务器中拷贝文件到本地机。当文件来源路径是服务器,目的路径是本地机时就启用该模式。命令格式与scp相同。

(5)从本地机器拷贝文件到远程rsync服务器中。当文件来源路径是本地,目的路径是服务器时就启用该模式。命令格式与scp相同。

(6)列远程机的文件列表。(这个功能还不会用)

 

 

5. 网络通讯

Ø ifconfig  查看、配置、启用或禁用网络接口。

参  数:
     del<地址>   删除网络设备IPv6的IP地址。
     <hw<网络设备类型><硬件地址>   设置网络设备的类型与硬件地址。
     irq<IRQ地址>   设置网络设备的IRQ。
     mem_start<内存地址>   设置网络设备在主内存所占用的起始地址。
     mtu<字节>   设置网络设备的MTU。
     tunnel<地址>   建立IPv4与IPv6之间的隧道通信地址。
     -broadcast<地址>   将要送往指定地址的数据包当成广播数据包来处理
     -promisc   关闭或启动指定网络设备的promiscuous模式。
     [网络设备]   指定网络设备的名称

 

Ø telnet  远端登入。

Ø ping  检查两台机器间的网是否连通。参数-c ping的次数,参数-i每次ping之间的时间间隔。例:ping -c 5 -i 2 10.6.222.195 ,表示每两秒ping一次,共ping5次。

 

 

6. 系统管理

Ø top 动态观察进程变化。最上面的六行为整个系统的资源使用状态。

第一行:显示系统已启动的时间、目前上线人数、系统整体负载。

第二行:显示目前观察的进程数量。

第三行:显示cpu整体负载。

第四行:物理内存的使用情况。

第五行:虚拟内存的使用情况。

第六行:当在top程序中是输入指令时,显示状态的地方。

Ø ps 查看进程的运行状态 。 常用的参数有:-A列出所有的进程;-au显示较详细的信息;-aux显示所有包含其他使用者的进程。

-au参数下的属性值说明:

 

    %CPU: 占用的 CPU 使用率

    %MEM: 占用的内存使用率

    VSZ: 占用的虚拟内存大小

    RSS: 占用的内存大小

TTY: 终端的次要装置号码  

STAT: 该行程的状态:(D: 不可中断的静止 ;R: 正在执行中 ;S: 静止状态;T: 暂停执行;Z: 不存在但暂时无法消除;W: 没有足够的记忆体分页可分配;<: 高优先序的行程;N: 低优先序的行程;L: 有记忆体分页分配并锁在记忆体内 )

    START: 进程开始时间

    TIME: 执行的时间

COMMAND:所执行的指令

Ø kill 终止一个进程。参数-9强制终止进程。

 

Ø vmstat  展现给定时间间隔的服务器的状态值。主要用来报告虚拟内存的统计信息。对于服务器监控有用的度量有:r(运行队列)、 bi(页导入)、us(用户cup)、sy(系统cpu)、id(空闲)。如果r经常大于4 ,且id经常少于40,表示cpu的负荷很重;如果bi,bo 长期不等于0,表示内存不足;r(运行队列)展示了正在执行和等待CPU资源的任务个数;当这个值超过了CPU数目,就会出现CPU瓶颈了。

Ø iostat 对系统的磁盘I/O操作活动进行监视。参数-c 显示cpu的使用情况;-d显示磁盘使用情况;-k某些使用block为单位的列强制使用Kilobytes为单位;

    

cpu属性值说明:

     %user:cpu在用户模式下的时间百分比。

     %nice:cpu在带nice值的用户模式下的时间比。用户空闲时间比。

     %system:cpu在系统模式下的时间百分比。 (同常%user+%nice+  %system=100) 

     %iowait:cpu等待输入输出完成时间的百分比。

     %steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无 意识等待时间百分比。

     %idle:cpu空闲时间百分比。

     如果%iowait的值过高,表示硬盘存在I/O瓶颈;%idle值高,表示CPU较空闲;如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。

磁盘属性值说明:

    tps:每秒传输次数,一次传输即为一次I/O请求。

    Blk_read/s:每秒从设备读取的数据量。

    Blk_wrtn/s:每秒向设别写入的数据量。

    Blk_read:读取的数据总量。

    Blk_wrtn:写入的数据总量。

    

使用-x参数获得更多磁盘统计信息,

 

disk属性值说明:

rrqm/s:  每秒进行 merge 的读操作数目。即 rmerge/s

wrqm/s:  每秒进行 merge 的写操作数目。即 wmerge/s

r/s:  每秒完成的读 I/O 设备次数。即 rio/s

w/s:  每秒完成的写 I/O 设备次数。即 wio/s

rsec/s:  每秒读扇区数。即 rsect/s

wsec/s:  每秒写扇区数。即 wsect/s

rkB/s:  每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。

wkB/s:  每秒写K字节数。是 wsect/s 的一半。

avgrq-sz:  平均每次设备I/O操作的数据大小 (扇区)。

avgqu-sz:  平均I/O队列长度。

await:  平均每次设备I/O操作的等待时间 (毫秒)。

svctm: 平均每次设备I/O操作的服务时间 (毫秒)。

%util:  一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比

    如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明I/O 队列太长,io响应太慢,则需要进行必要优化。如果avgqu-sz比较大,也表示有当量io在等待。

 

Ø date 显示和设置系统日期和时间。只有超级用户才能设置时间,一般用户只能显示时间。要取得几天前的日期 date -d "x days ago",x用数字代替,几天前写正数,几天后写负数。

 

 

 

7. 备份压缩

Ø tar 为文件和目录创建档案。参数-c建立一个压缩文件;-x解开一个压缩文件;-t查看压缩文件中的文件;-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!;-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!

例:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar 

    tar -cvf /tmp/etc.tar /etc ,仅打包,不压缩;

     tar -zcvf /tmp/etc.tar.gz /etc,打包后,以 gzip 压缩;

     tar -jcvf /tmp/etc.tar.bz2 /etc,打包后,以 bzip2 压缩

 

Ø zip 压缩文件 。zip [参数] [打包后的文件名] [打包的目录路径]。

    zip命令参数列表:

        -a     将文件转成ASCII模式

        -F     尝试修复损坏的压缩文件

        -h     显示帮助界面

        -m     将文件压缩之后,删除源文件

        -n 特定字符串    不压缩具有特定字尾字符串的文件

        -o     将压缩文件内的所有文件的最新变动时间设为压缩时候的时间

        -q     安静模式,在压缩的时候不显示指令的执行过程

        -r     将指定的目录下的所有子目录以及文件一起处理

        -S     包含系统文件和隐含文件(S是大写)

        -t 日期     把压缩文件的最后修改日期设为指定的日期,日期格式为mmddyyyy

例:将/home/Blinux/html/ 这个目录下所有文件和文件夹打包为当前目录下的html.zip

  zip –q –r   html.zip /home/Blinux/html

8. 辅助工具

 

Ø man 显示某一命令的详细信息和使用方法 。例: man top  将显示top的详细信息和用法 ,  使用man后按q退出。

 

 

 

 

 

posted @ 2013-07-19 11:59  gxcherie  阅读(392)  评论(0编辑  收藏  举报