linux命令有内部命令和外部命令之分。内部命令实际上是shell程序的一部分,其中包含的是一些比较简练的linux系统命令,这些命令由shell程序识别并在shell程序内部完成运行,通常在linux系统加载运行时shell就被加载并驻留在系统内存中。外部命令是linux系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以它们包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调进内存。通常外部命令的实体并不包含在shell中,但是其命令执行过程是由shell 程序控制的。shell程序管理外部命令执行的路径查找、加载存放,并控制命令的执行。
成都创新互联公司一直在为企业提供服务,多年的磨炼,使我们在创意设计,网络营销推广到技术研发拥有了开发经验。我们擅长倾听企业需求,挖掘用户对产品需求服务价值,为企业制作有用的创意设计体验。核心团队拥有超过十载以上行业经验,涵盖创意,策化,开发等专业领域,公司涉及领域有基础互联网服务德阳服务器托管、app软件开发公司、手机移动建站、网页设计、网络整合营销。
所有命令的参数都是使用空格分隔的,例如 ls -l 。在这里ls即为命令名, -l 为此命令的参数,在 ls 与 -l 之间有一个空格,但是在 -l 内部不能有空格。
由于Linux继承于Unix,而Unix操作系统在当初设计的时候,键盘并不可靠,而且敲键盘比较费劲(比如容易卡住),因此大部分命令都非常简短,一般是完整的英文单词去掉元音字母(aeiou)后的缩写,这是一个历史问题。
整个操作系统的磁盘都被划分为很多个目录(directory)或称文件夹(folder),还有文件(file)。每个目录下还可以有子目录(sub direcotory)与文件,这样就形成了一个树状结构,树根为 / ,被称为根目录(root directory)。
在 任何时候 ,你都有一个 当前目录 (Working Directory),你所有的操作都是相对于当前目录做出的,以当前目录为基准的目录名或者文件名叫做相对目录。例如若你的当前目录是/home/alex,在/home/alex目录下有一个叫Public的子目录,还有一个叫log.txt的文件,则Public与log.txt就是相对目录名与相对文件名。
每个目录与文件都有一个全路径(full path)名,这个全路径以/开头,遍历整个目录,直到最终的目录名或者文件名为止。例如在Linux中,/下有etc、home、usr、lib等子目录,而home目录下有alex目录,alex目录下有Public目录。则在这里Public的全路径名就是 /home/alex/Public ,注意在这里必须大小写一致。
当然也有可能在其它的名叫Public的目录或者文件,但是它们的全路径肯定是不一样的。就像在中国有一个叫Alex的人,在美国也有一个叫Alex的人,他们可以分别称为中国的Alex与美国的Alex,这就是他们的全路径 ;)。全路径又叫绝对路径(absolute path)。
在Linux里,每个用户都有一个家目录(home directory),一般情况下用户的家目录就是/home目录下相应的用户名,例如alex用户的家目录就是/home/alex。
大部分文件都有扩展名(extension name),扩展名即为文件名最后一个点号(.)后面的文字,扩展名一般都表示了文件的类型。例如在log.txt这个文件名中,txt是扩展名,表示这个文件是一个文本文件(TeXT file),而文本文件一般都是可以直接查看内容的。而在house.1.jpg这个文件名中,其扩展名为jpg,表示这个文件是一个JPG格式的图形文件,而图形文件一般都是需要使用图形软件打开才能看到其内容的。
pwd 是Pring Working Directory的缩写,此命令的作用是打印(print)当前的(working)目录(directory)的全路径名。
当你打开终端或者切换目录之后,你最好运行一下 pwd 命令,确认当前的目录是不是你想要切换的目录。
pwd 命令一般不需要参数。
ls 是LiSt的缩写,此命令的作用是列举目录下的文件与子目录。
当你不带参数运行 ls 命令时,此命令将列举出当前目录下的文件与子目录的名称。
当你加上-l参数运行 ls 命令时,此命令将列举出当前目录下的文件与子目录的名称,以及它们的修改时间、大小等信息。
你也可以使用 ls 命令列举其它目录下的文件与子目录的名称,例如,运行 ls / 即可列举出根目录下的文件与子目录名,运行 ls -l / 即可列举出根目录下的文件与子目录名,以及它们的修改时间、大小等信息。
cd 是Change Directory的缩写,此命令的作用是切换当前的工作目录。
例如,运行 cd /home/alex 将把当前目录切换为 /home/alex 。当然,cd后面的参数也可以是相对目录。例如若当前目录为 /home/alex ,而 /home/alex 目录下有一个目录叫Public,则运行 cd Public 则会将当前目录变为 /home/alex/Public 。
如果cd命令后面不接任何参数,则将把当前目录设置为用户的家目录。
cp 是CoPy的缩写,此命令的作用是复制文件或者文件夹。
例如,运行 cp 1.txt 2.txt 将把当前目录下的 1.txt 文件复制成 2.txt 文件。运行 cp 1.txt /tmp/2.txt 将把当前目录下的 1.txt 复制成 /tmp/2.txt 文件,运行 cp 1.txt /home/alex/ 将把 1.txt 文件复制到 /home/alex/ 目录下。
rm 是ReMove的缩写,此命令的作用是删除文件或者文件夹。
例如,运行 rm 2.txt 将删除当前目录下的 2.txt 文件,运行 rm /tmp/2.txt 将删除 /tmp/2.txt 文件。
你也可以使用 rm 来删除目录,此时需要带上-R参数(recursive,即递归的意思),例如 rm -R /tmp/abc 将删除整个 /tmp/abc 目录。
删除时一般都会询问你让你确认是否要删除,如果你不需要被提问确认,可以加上-f参数,例如 rm -f /tmp/1.txt 。
mv 是MoVe的缩写,此命令的作用是移动文件或者文件夹,或说是为文件或者文件夹改名。注意,一旦移动成功,则原来的文件或者文件夹就不存在了。
例如,运行 mv 1.txt 2.txt 将把当前目录下的 1.txt 改名为 2.txt ,运行 mv 1.txt /tmp/2.txt 将把当前目录下的 1.txt 移动成为 /tmp/2.txt 文件。
mkdir 是MaKe DIRectory的缩写,此命令的作用是创建目录。
例如 mkdir abc 将在当前目录下创建一个名为 abc 的目录, mkdir /tmp/xyz123 将在 /tmp 目录下创建一个名为 xyz123 的目录。
mkdir 可以带-p参数,这样即可同时创建多层目录,例如 mkdir -p a/b/c/123 将在当前目录下创建a目录,在a目录下创建b目录,在b目录下创建c目录,在c目录下创建123目录。
在Linux下还有几个特殊的目录,它们分别是:
有一个特殊的符号表示文件名匹配,即 * 。例如 cp *.txt /tmp/ 将把当前目录下的以 .txt 结尾的文件名都复制到 /tmp/ 目录下, ls a*.txt 将列举出当前目录下所有以 a 开头,以 .txt 结尾的文件名与目录, rm /tmp/1*log 将删除 /tmp 目录下所有文件名以 1 开头,以 log 结尾的文件。
所有以 . 开头的文件与目录都表示是隐藏文件 / 目录,例如 .vimrc ,例如 .. ,在 ls 时一般是看不到这些文件与目录的,如果想要看到,需要使用 ls 的 -a 参数,例如 ls -al 。
Linux下有大量命令/软件,在此我们仅列举几个可能会用到的,可以在使用过程中慢慢熟悉。
1.列出文件清单命令:ls
ls命令能够列出当前目录下的所有内容。ls 命令的执行方式为:
# ls [-选项] [文件名或者目录名]
进入到Linux命令行中后,我们至少要知道当前所处的位置有哪些内容,这些信息就可以使用ls命令来获得。
在Linux中,ls命令是最常使用的命令之一,因为在命令行下要随时查看目录内容。如果不加任何选项的话,ls命令仅列出当前目录下的文件和目录名,例如,想要查看/etc目录下的内容,可以使用下列命令:
# ls /etc
如果想要列出当前目录下所有文件,则可以使用下列命令:
# ls -a
2、cat命令
功能:在标准输出上显示文件。
语法:cat [-vTEuAte] 文件
例子: cat example.txt
cat -A exam2.txt
cat file1 file2 file2
3、more命令
功能:在终端屏幕按屏显示文本文件。
语法: more [-pcdls] 文件
例子: more example.c
more -dc example.c
more -c -10 example.c
4、less命令
less命令的功能几乎和more命令一样,也是用来按页显示文件,不同之处在于less命令在显示文件时允许用户既
可以向前又可以向后翻阅文件。
5、head命令
功能:显示指定文件的前若干行。缺省设置为显示10行
语法:head [-n] 文件
例子: head example.c
head -3 example.c
6、tail命令
功能:显示指定文件的末尾若干行。缺省设置为显示10行
语法:tail [+ / - num ] [参数] 文件
+num 从第num行以后开始显示。- num 从距文件尾num行处开始显示。
例子: tail example.c
tail -4 example.c
7、grep、fgrep和egrep命令
功能:
这组命令以指定模式搜索文件,并通知用户在什么文件中搜索到与指定的模式匹配的字符串,并打印出所有包含该字符串的文本行,在该文本行的最前面是该行所在的文件名。grep命令一次只能搜索一个指定的模式;egrep命令检索扩展的正则表达式(包括表达式组和可选项);fgrep命令检索固定字符串,它不识别正则表达式,是快速搜索命令。
语法:
grep [-EFbcihlnvxef] [查找模式] [文件名1,文件名2,……]
egrep [选项] [查找模式] [文件名1,文件名2,……]
fgrep [选项] [查找模式] [文件名1,文件名2,……]
例子: grep "text file" example
grep data *
grep goto *.c
在linux中grep命令是非常有用的,它和管道(|)配合使用,非常强大,用于搜索文本文件.如果想要在几个文本文件中查找一字符串,可以使用‘grep’命令。‘grep’在文本中搜索指定的字符串。
假设您正在‘/usr/src/linux/Documentation’目录下搜索带字符串‘magic’的文件:
$ grep magic /usr/src/linux/Documentation/*
sysrq.txt:* How do I enable the magic SysRQ key?
sysrq.txt:* How do I use the magic SysRQ key?
其中文件‘sysrp.txt’包含该字符串,讨论的是 SysRQ 的功能。
默认情况下,‘grep’只搜索当前目录。如果此目录下有许多子目录,‘grep’会以如下形式列出:
grep: sound: Is a directory
这可能会使‘grep’的输出难于阅读。这里有两种解决的办法:
明确要求搜索子目录:grep -r
或忽略子目录:grep -d skip
当然,如果预料到有许多输出,您可以通过 管道 将其转到‘less’上阅读:
$ grep magic /usr/src/linux/Documentation/* | less
这样,您就可以更方便地阅读。
有一点要注意,您必需提供一个文件过滤方式(搜索全部文件的话用 *)。如果您忘了,‘grep’会一直等着,直到该程序被中断。如果您遇到了这样的情况,按 ,然后再试。
下面是一些有意思的命令行参数:
grep -i pattern files :不区分大小写地搜索。默认情况区分大小写,
grep -l pattern files :只列出匹配的文件名,
grep -L pattern files :列出不匹配的文件名,
grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),
grep -C number pattern files :匹配的上下文分别显示[number]行,
grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行,
grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。
这里还有些用于搜索的特殊符号:
\ 分别标注单词的开始与结尾。
例如:
grep man * 会匹配 ‘Batman’、‘manic’、‘man’等,
grep '\grep '\' 只匹配‘man’,而不是‘Batman’或‘manic’等其他的字符串。
'^':指匹配的字符串在行首,
'$':指匹配的字符串在行尾,
如果您不习惯命令行参数,可以试试图形界面的‘grep’,如 reXgrep 。这个软件提供 AND、OR、NOT 等语法,还有漂亮的按钮 :-) 。如果您只是需要更清楚的输出,不妨试试 fungrep 。