linux基本命令

 

操作系统中用来管理文件的系统称为"文件系统",文件系统以分组的方式管理文件,具体的就是通过目录(或者称为文件夹)来管理成千上万的文件。 Linux的文件系统只有一个根目录(/)而Windows的文件系统可以有若干个根目录(例如C、D、E)。目录是通过目录路径来描述的,可以简单分为 两类描述方式,一是绝对路径,二是相对路径。
   

终端窗口的当前工作目录可以随时修改,用户在任何时候都有一个当前工作目录,用户首次登陆使用时的初始当前目录是~
whoami命令可以知道当前用户是谁;

pwd命令可以知道当前工作目录,pwd以目录的绝对路径显示出当前工作目录;

linux系统中目录、文件大都以路径描述字符串的形式给出。

绝对路径  从文件系统的根目录开始描述目录路径,例如/home/libin。所有的绝对路径都是以根目录(/)做开头的路径
相对路径  从某一个目录(一般是当前目录)开始描述目录路径。
相对路径的使用更为普遍,通常情况下:
    .    表示当前目录自己
    ..    表示当前目录的父目录。
    temp    表示当前目录的一个名叫temp的子目录

注意:“目录”就是一个目录,就是一个windows里面被称为文件夹的东东,“目录路径”就是“路径描述字符串”,它描述了从一个目录到达另外一个目录的路径,这个描述有绝对路径和相对路径两种方式。


例如:文件结构如图:

              xyz

            /        \

        abc        def

那么,

      若当前目录是xyz,则相对路径方式描述def目录可以直接写作def

      若当前目录是abc,则相对路径方式描述xyz目录可以直接写作..
      若当前目录是abc,则相对路径方式描述def目录可以写作../def


clear命令可以把屏幕上的所有内容清除掉

ls命令单独使用就可以直接显示当前目录下的文件
ls StandardC命令可以显示路径为StandardC的目录下的文件,一般用法是ls directory
ls -a directory命令可以显示路径为directory的目录下的所有文件
ls -l directory命令可以详细显示路径为directory的目录下的文件
可以看出,ls命令可以查看指定目录里的文件,使用方法是ls <目录路径> ,如果要查看的是当前目录下的内容,可以省略路径。
ls命令支持-a和-l选项,添加-a选项可以显示指定目录里的所有内容,-l选项可以列出详细情况,-a和-l选项可以合并为-al

cd命令可以把任何一个目录调整成当前目录,使用方法如下
cd <目录路径>

mkdir命令可以创建目录,使用方法如下
mkdir <目录路径>   注意:这里的目录路径终点必须是一个还未存在的目录名,否则mkdir命令会提示使用错误。

当前目录是/home/libin/StandardC,ls命令查看后发现有子目录day01,ls day01查看发现day01没有子目录了,那么命令mkdir day01/note day01/code的作用是?

答:给目录day01创建子目录note和code


当前目录是/home/libin/StandardC/day01,ls ..命令查看后发现只有子目录day01,那么mkdir -p ../day02/note ../day02/code的作用是?

答:给目录day01的父目录StandardC创建子目录day02,同时创建day02的子目录note和code

rmdir命令可以删除目录,它只能删除空目录,Usage:rmdir <目录路径>
rmdir -p a/b/c 等效于连续执行命令rmdir a/b/c rmdir a/b rmdir a 也等效于执行命令rmdir a/b/c a/b a


rm命令可以用于删除一个非空目录,Usage: rm -rf <目录路径>

touch <文件路径>可以创建一个空文件,例如touch abc.txt。touch命令有两个作用:一是可以创建一个空文件,二是可以更新一个已经存在的文件的修改时间,当然这时touch后面给出的文件路径应该描述了一个已经存在的文件。


rm命令单独使用就可以删除一个已存在文件,Usage: rm <文件路径>
cp命令可以把一个文件复制一份,Usage: cp <文件路径1> <文件路径2>
mv命令可以实现对文件的剪切效果,Usage: mv <文件路径1> <文件路径2>
tar命令可以用来打包归档若干文件或目录。Usage: tar zcvf archive.tar.gz <directory> <directory> <directory> ....
tar命令本来制作出来就是为了打包归档若干文件或目录,简言之其功能就是合并若干个文件或目录,之后tar命令又增加了压缩功能,所以往往tar命令打 包归档若干文件或目录后又会进行压缩(例如gz压缩算法),所以我们往往看到的tar命令打包归档所创建文件命名都是*.tar.gz
tar命令同时也可以对压缩文件进行解压缩处理, Usage: zxvf archive.tar.gz  

shell脚本文件可以包含多条操作命令,执行脚本文件就相当于顺序执行内部的所有操作命令。


ln命令可以制作链接文件,使用方法如下:
ln 文件路径1 文件路径2
文件路径1代表一个已经存在的文件,文件路径2代表一个还不存在的文件。
这样使用ln命令所制作的链接叫做硬链接。叫法上与硬链接对应的还有一种“软链接”,命令ln -s 文件路径1 文件路径2 制作的链接称为软链接。
(PS:每一个文件都由两部分组成:一是文件内容,二是文件名称,文件名称和文件内容中间存在一种连接,文件内容是文件名称存在且有效的必要条件,也就是 说可以草率地说"文件"="文件名称->文件内容"。一般的操作系统为了提高磁盘操作效率,删除文件操作都只是删除了文件名称,取消了文件名称和文 件内容的连接,文件内容不会被立即清理。
 那么可以试验得出,
ln硬链接只制作文件名称,制作了一个新文件名称,使得其和原来的文件的文件内容连接。
ln软链接制作了一个文件名称,同时还制作了一个新文件内容,这新的文件内容里面记录了原来的文件的文件名称连接,所以软链接是否有效依赖于原文件名称是否有效。
可以看出,windows操作系统中提供的“快捷方式”制作操作,其实质就是制作ln软链接。
cp命令创建了新文件(既包括文件名称,也包括文件内容),cp命令执行同时拷贝了文件内容和文件名;
)

ps命令,ps命令在终端中单独使用,可以查看当前终端运行的所有程序,每一个程序都会有进程ID,显示结果会显示各命令的PID TTY 和 COMMAND

查看进程命令ps的常用选项:

-a 列出所有的进程。

-w 列出进程时加宽显示以显示较多信息。

-au显示较详细的信息。

-aux显示所有进程较详细信息,包括其他使用者的进程。

附:ps -aux 或者 ps -au命令执行结果各列意思:



 

kill命令可以终止一个程序的运行,使用时候需要指明程序的进程ID。

kill可以添加选项-s 用来向操作系统发送信号。例如kill -9就可以发送代号为9的信号给操作系统,以图强制终止指定进程。


kill -l 可以列出linux系统的信号。编号为1~31的为传统UNIX支持的信号,称 为不可靠信号(非实时的),编号为32~63的是后来扩充的,称为可靠信号(实时信号)。

 

 

cat, cat命令可以用来显示整个文件的内容, Usage: cat <directory>
head, head命令可以显示文件自文件头起的若干行,默认10行。Usage: head -N <directory>
tail,tail命令可以显示文件自尾部起向上若干行,默认10行。Usage: tail -N <directory>
more, more命令可以用来显示整个文件内容,但是一次只会显示一屏内容,敲击空格键可以显示下一屏。

find, find命令,例如:"find StandardC -name note.txt"是在目录路径"StandardC"所描述的目录下查找名字为"note.txt"的文件.

    find命令是基于文件外在属性的查找,例如可以依据文件大小、文件名称等查找。也就是这样,她并不能依据文件内容查找.Usage: find <开始查找的目录> 查找选项(-name选项表示文件名称 -perm选项表示文件其他属性)

(p.s. linux中提供了grep命令,这个命令可以给予文件内部内容进行查找。要提一下的是Windows,windows中Find命令可以基于文件内部内容的查找哦,例如FIND /I diary.txt "I love you "就可以实现在diary.txt文件里面查找I love you 所在行)

命令find的命令选项-name最为常用,除此之外还可以选用其他一些更为灵活的命令选项,find命令选项简介如下:

-name 按照文件名查找文件。

-perm 按照文件权限属性查找文件。

-depth 首先在当前指定的目录查找,然后再查找其子目录。

-prune 使用这一选项可以实现不在当前指定目录中查找。当find命令同时有-prune和-depth两个选项时,-prune选项将被find命令自动忽略。

-mtime -n +n 实现按照文件更改时间查找。-n表示文件更改时间在n天以内,+n表示文件更改时间在n天以前

-user 按照文件属主查找文件。

-group 按照文件属组查找文件。

-nouser 查找无有效属主的文件,也就是说文件属主在/etc/passwd中不存在。

-nogroup 查找无有效属组的文件,也就是说文件属组在/etc/groups中不存在。

-newer file1 !file2 查找比文件file1新但是比文件file2旧的文件。

-type 按照文件类型查找。

             b 是块设备。

             c 是字符设备。

             p 是管道文件。

             d 是目录文件。

             l  是符号链接(symbol)文件,也成"软链接"

             f  是普通文件。

-size n : [c] 查找文件长度为n块的文件。加c表示文件长度以字节计。


grep, grep命令。grep(global search regular expression(RE) and print out the line, 全面搜索正则表达式并把行打印出来)是一个强大的基于文件内容的搜索工具,她能通过正则表达式搜索文本并把所在行打印出来。

grep命令选项:

-? 表示打印所在行的同时还需要打印所在行上下?行,例如grep -5 version mysql-5.0.45/Makefile

-c,--count表示只打印出匹配的行数,不打印匹配的内容。

-n, --line-number表示需要打印出匹配行的行号。

-v, --revert-match反检索,只打印不匹配的行。

grep命令举例:  "grep versions mysql-5.0.45/Makefile"是在文件路径"mysql-5.0.45/Makefile"所描述的文件内容里面查找包含字符 串"versions"的行.grep命令进行的是文件内容的查找。Usage: grep 要查找的字符串 文件路径




  在命令行中可以使用通配符描述路径的规律以图简化命令的编写,我们不追求严格地说:
    ?    表示任意的一个字母或数字
    *    表示任意长度的字符串,也就是任意多个任意字母或数字
    []    表示某一个范围内的字母或数字,例如[2-4]表示2、3、4其中一个字符。
可以看出,?*以及[]事实上就是一个集合,?就是任意一个字符的集合,*就是任意多个字符组成的集合, [2-4]就是元素为2、3、4的一个集合.

  输入输出重定向。linux系统有默认的标准输入设备(stdin),有默认的标准输出设备(stdout)。我们可以通过输入/输出重定向来更改输入/输出设备。其中:
    <    可以更改输入设备
    >或者>>    可以更改输出设备
  管道。使用管道'|'可以把多个命令连接起来,管道'|'前面的命令的输出会作为管道后面的命令的输入,例如: ls -l | grep day01

  在命令行中可以一次执行多条命令, 书写时命令之间须用';'隔开,敲击回车键后命令会以此执行。例如:pwd;ls

  在命令行中可以通过使用'\'来把一条命令书写在多个连续的行中,当命令书写完成后,敲击回车键后命令会被执行。


上面了解了基本shell语句,需要注意的是:

          操作系统可以划分出两部分"kernel"和"shell"。kernel是俗称内核,完成计算机资源的管理,主要包括CPU管理、内存管理、文件管理以 及其他i/o设备资源管理。shell俗称外壳,她是一种程序设计语言,她可以交互式滴解释执行命令。作为程序设计语言,她也有自己的语言字符集,有自己 的控制流语句用以控制程序各个运算的执行顺序(控制流结构包括1、顺序结构 2、分支结构3、循环结构)。当然她也允许定义变量。

          终端中执行echo $SHELL可以查看当前用户在用的shell类型。shell分好多种,简介下:

<1>Bourne Shell

       bsh(Bourne Shell)是伯恩(Bourne)为AT&T UNIX所写,简称b-sh(读作b-shell或者Bourne Shell)是最早最知名的unix shell。如果使用的是Bourne Shell,那么在终端(Terminal)上往往命令提示符为$。Bourne Shell的下一版本是Bourne Shell again,简称bash

<2>C Shell

      csh(C Shell)是vi作者乔恩在美国加州大学伯克利分校为BSD UNIX创建。相比Bourne Shell,她更类似于C语言。要注意的是语法上C Shell并不兼容Bourne Shell。如果使用的是C Shell,那么在终端(Terminal)上往往命令提示符为%。C Shell也有一个增强版,名叫tcsh(TC Shell)


注意:一般unix系统终端(Terminal)上root用户命令提示符总是#。


  接下来,一个神一样的工具vi将要出场,初来乍到请你一遍又一遍地通过vimtutor练习vi的使用。基本上通过vi编辑代码(以抄代码的速度衡量)速度可以在15分钟/百行就可以说熟练使用vi了。


vi还有这样操作,你知道么?

(1)光标所在英文字符,敲上一个波浪~可以改变英文字符的大小写。
(2)敲上一个大写的J就可以将下一行合并到当前行行末,成为同一行。
(3)
1,2co3 拷贝1、2行到第三行之后。
1,2m3  移动1、2行到第三行之后。
1,2d   删除第1-2行。
1,2y   拷贝1、2行。

posted on 2014-11-16 00:48  來時的路  阅读(204)  评论(1编辑  收藏  举报