所有命令的参数都是使用空格分隔的,例如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
pwd
是Pring Working Directory的缩写,此命令的作用是打印(print)当前的(working)目录(directory)的全路径名。
当你打开终端或者切换目录之后,你最好运行一下pwd
命令,确认当前的目录是不是你想要切换的目录。
pwd
命令一般不需要参数。
列举目录内容,ls
ls
是LiSt的缩写,此命令的作用是列举目录下的文件与子目录。
当你不带参数运行ls
命令时,此命令将列举出当前目录下的文件与子目录的名称。
当你加上-l参数运行ls
命令时,此命令将列举出当前目录下的文件与子目录的名称,以及它们的修改时间、大小等信息。
你也可以使用ls
命令列举其它目录下的文件与子目录的名称,例如,运行ls /
即可列举出根目录下的文件与子目录名,运行ls -l /
即可列举出根目录下的文件与子目录名,以及它们的修改时间、大小等信息。
切换目录,cd
cd
是Change Directory的缩写,此命令的作用是切换当前的工作目录。
例如,运行cd /home/alex
将把当前目录切换为/home/alex
。当然,cd后面的参数也可以是相对目录。例如若当前目录为/home/alex
,而/home/alex
目录下有一个目录叫Public,则运行cd Public
则会将当前目录变为/home/alex/Public
。
如果cd命令后面不接任何参数,则将把当前目录设置为用户的家目录。
复制文件,cp
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
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
mv
是MoVe的缩写,此命令的作用是移动文件或者文件夹,或说是为文件或者文件夹改名。注意,一旦移动成功,则原来的文件或者文件夹就不存在了。
例如,运行mv 1.txt 2.txt
将把当前目录下的1.txt
改名为2.txt
,运行mv 1.txt /tmp/2.txt
将把当前目录下的1.txt
移动成为/tmp/2.txt
文件。
创建目录,mkdir
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下还有几个特殊的目录,它们分别是:
-
.
,即一个点号,表示当前目录,例如ls
命令不带参数时是列举出当前目录下的文件与子目录的名称,其实就与ls .
等效,cd .
则没有意义,因为cd
命令是用来改变当前目录的,cd
到当前目录就相当于没有改变当前目录。 -
..
,即两个点号,表示当前目录的上级目录,例如如果当前目录是/home/alex
,则..
就表示/home
目录,如果当前目录是/home
,则..
就表示/目录。ls ..
表示列举上级目录的子目录与文件名,cd ..
表示切换到上级目录,例如若当前目录是/home/alex
,则cd ..
将把当前目录切换到/home
目录,cp 1.txt ..
则将把当前目录下的1.txt
文件复制到上级目录下去。 -
-
,即一个中横杠,表示上一个当前目录,例如假设你当前的目录是/home/alex
,你之前的当前目录是/etc
,则-
就表示/etc
。在上例里cd -
将把当前目录设置为/etc/
,再运行cd -
则又把当前目录设置为/home/alex
,如此循环,但要注意ls
并不支持使用-
表示之前的目录。 -
~
,即波浪号,表示用户的家目录。例如ls ~
表示列举出用户家目录下的子目录与文件,cd ~
表示切换到用户的家目录(与cd
命令不带参数运行效果等同),ls ~/ac
表示列举出用户家目录下ac
子目录里的子目录与文件,cd ~/ac
表示切换到用户家目录下的ac
子目录。
有一个特殊的符号表示文件名匹配,即*
。例如cp *.txt /tmp/
将把当前目录下的以.txt
结尾的文件名都复制到/tmp/
目录下,ls a*.txt
将列举出当前目录下所有以a
开头,以.txt
结尾的文件名与目录,rm /tmp/1*log
将删除/tmp
目录下所有文件名以1
开头,以log
结尾的文件。
所有以.
开头的文件与目录都表示是隐藏文件/
目录,例如.vimrc
,例如..
,在ls
时一般是看不到这些文件与目录的,如果想要看到,需要使用ls
的-a
参数,例如ls -al
。
其它命令
Linux下有大量命令/软件,在此我们仅列举几个可能会用到的,可以在使用过程中慢慢熟悉。
-
cat
:显示文件内容 -
head
:显示文件开头几行的内容 -
tail
:显示文件结尾几行的内容 -
more
:以翻页形式显示文件内容 -
less
:以翻页形式显示文件内容,可反向翻页 -
wc
:统计文件行数与字符数 -
which
:命令的全路径文件名 -
file
:查看文件类型 -
ln
:建立文件链接 -
df
:查看分区信息 -
du
:查看文件夹/文件统计信息 -
grep
:在文件中查找字符串 -
find
:查找文件或者文件夹
网友评论