对于初学者而言,命令行可能有些晦涩难懂。确实,对于一个早已适应windows下鼠标点点就完成一切的用户来说,在一个比dos好不了多少的终端里输入一堆不知道怎么放到到一块的字符,的确不是一个很舒服的事情。但是,至少对于看这本书的读者而言,以后将要从事的工作和计算机都是分不开的。如果你把电脑当作很简单的工具的而不下功夫了解的话,估计一辈子都学不好计算机。所以,虽然命令行看似很古董,看似很落后,它是你了解计算机最好的窗口,当你有一天入门之后,你会发现,哇,原来计算机是这个样子啊。
我在学习linux的过程发现,很多讲授命令行的书,会把大量平时很少用到(仅仅指linux下编程,系统运维除外)或者新手不可能接触的命令一一罗列出来,这就如同学英语一样,拿一本牛津词典让你从头到尾背到尾,可能你的英语水平会因此提高很多,但这绝不是学习的最佳手段。况且,在初期,你只需要记住最常用的命令,在以此为基础慢慢拓展。当你遇到不熟悉的命令时,你只需要man一下,或者利用搜索引擎找到相关用法就可以了。
因此,我下面所罗列的命令,基本上属于最常用的,而且相对比较容易理解。可能这些内容既少又简单,不能让你感受到命令行的强大和魅力,但是当你熟悉了这些基本的命令之后,会更容易接受其它相对复杂的命令。因为不管做什么事情,都有一个循序渐进的过程,一口吃个大胖子的想法不仅不现实,还有可能造成厌食症。况且事物之间都是有联系的,当你熟悉一些东西之后,会帮助你更好的理解其它的问题。(以下命令均在终端输入)
1.1联机文档
开始就讲联机命令的目的,是帮助你培养一种习惯:当你遇到不熟悉的命令或功能时,随时可以在终端输入man/info + 命令进行查询。虽然多数的帮助文档是英文的(我在ubuntu下遇到的基本全是),它们的阅读难度都很小,既没有复杂的语法,也不会故意设置长难句考察你的英语阅读能力。所以,刚开始可能你不会太适应,但是慢慢的你就会习惯了,并且,在这个过程中,你的英语阅读水平会不断的提高,这也是一种进步和收获。
联机命令的作用,就是可以帮助你查看每一个命令的所有功能选项,能帮助你更好地理解和应用。linux下的联机命令有man,info和help,其中最常用的就是man,用法就是在它们后面直接加上命令。相比于man,info命令具有更强的交互性,并且更详细;而help则比较简洁。
下面是一个典型的应用:
lishuo@lishuo-Rev-1-0:~$ man ls
LS(1) User Commands LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
DESCRIPTION
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
Mandatory arguments to long options are mandatory for short options
too.
-a, --all
do not ignore entries starting with .
-A, --almost-all
do not list implied . and ..
--author
........
........
1.2文件系统
文件系统这个词听着很吓人,但我不会罗列一大堆晦涩的概念放在那里让你消化,下面要讲的仅仅是一个实用的命令,这些命令在平时用到的比较多,基本上都是对文件目录的操作。这也是我开始就讲文件系统的原因,我们在进行某项工作的时候都是在特定的目录下,如果不熟悉文件系统的话,你可能连你操作的文件都找不到。linux的文件系统和windows差别比较大,你无法找到D.E.F盘去存储或打开你需要的文件,尤其是使用一些命令行工具时,鼠标不能再帮你找到你所需要的文件或路径。因此,只有当你熟悉linux的基本文件系统之后,你才能更好的开展其它的工作。
下面是一个典型的linux文件系统的目录层次,熟悉它会帮助你理解后面的讲解。
例如我自己的桌面的目录是: /home/lishuo/桌面
注:lishuo是我的用户名,后面可能会涉及到
1:pwd : 显示当前的工作目录
2:ls/dir:显示当前目录下所有文件名
3:cat:显示文本文件的内容
less/more:分屏显示文件内容,适合超过一屏的文件
4:cd:更改工作目录。
例如: cd 绝对路径: cd /home/lishuo/桌面
cd 相对路径: cd 桌面
cd ..:进入上一级
cd ~ :进入主目录
5:cp:复制文件或目录
cp 源文件 目标文件
cp -R dir1 dir2
例如:cp test.txt 001.txt 把test复制一份生成001
cp hic ~/home/文档 把当前目录下的hic复制到文档中
6:mv:移动或重命名文件或目录
mv 存在文件 新文件
mv file_lists directory
例如:mv a.txt b.txt 把a重命名为b
7:rm : 删除文件或目录(加选项-r删除目录)
rmdir:删除目录。通常情况加上-i实现交互,防止误删。
例如:rm -i test.txt
rm -i -r test
8:touch:创建新文件或改变文件的访问和修改时间。
例如:touch test.txt 如果不存在test,则在当前目录下创建它。
9:mkdir:创建目录
例如:mkdir test 在当前目录下创建目录test
10:diff:对两个文件进行比较,显示两者的不同之处,但是不会改变文件内容。
11:file: 查看文件的状态和信息
12:ls -l:显示访问权限
13:find:在用户指定的目录下查找指定的文件或目录
语法格式:
find [起始目录] [搜索条件] [操作]
例如:
find . -name '*.txt' -print
会在当前目录下查找所有的以.txt结尾的文件并显示出来。
14: head:显示文件的头部信息
15: tail:显示文件的尾部信息
16:wc命令:统计给动文件中的字节数,字数和行数。
wc -m filename : 显示一个文件的字符数。
wc -l filename : 显示一个文件的行数
wc -L filename : 显示一个文件中最长行的长度。
wc -w filename : 显示一个文件的字数。
17: sort命令:对文件中的各行进行排序
18: chmod 命令:修改文件的权限
19:mount/unmount:加载或卸载文件系统
下面是三种比较常用的命令:
mount -v -t auto /dev/hdb3 mnt/dir
自动检测文件系统并加载/dev/hdb3到目录mnt/dir下,执行时显示详细信息
umount -v /mnt/dir
卸载当前挂载在mnt/dir中的文件系统,执行时显示详细信息
mount -o loop a.img /mnt/floppy_img
将镜像文件a.img挂载到/mnt/floppy_img下
1.3其它常用命令
1:定位命令
whereis:在标准路径下搜索,与用户设定的路径无关,它会显示所有搜索到的文件。
which:在设定的搜索路径下按顺序搜索目录,定位命令并执行。
2:显示日期和时间
date:设定系统时间
cal:显示日历
3:显示文本
echo
echo工具可将其后的任何内容显示在屏幕上。它在解释shell变量的工作机制以及在屏幕上显示shell脚本时非常有用。
4:格式转换
unix2dos test.txt 将其转换为dos格式的文本文件
dos2unix test.txt 将其转换为linux格式的文本文件
5:系统信息
cat /proc/meminfo:查看内存使用
cat /proc/cpuinfo:CPU使用率
top:显示所有进程信息
ps:显示进程的PID号
free:显示内存信息
kill:杀死进程
time:显示进程的执行时间
&:将命令放在后台执行
6:终端
打开终端:Ctrl + Alt + T(或着是Ctrl + Shirt + T)
关闭终端:Ctrl + Shift + Q
复制:Ctrl + Shift + C
粘贴:Ctrl + Shift + V
clrear:清屏(会保留以前输入的命令)
reset:重新初始化终端,效果和clear差不多
小技巧:在输入的时候,TAB键可以帮你补全命令,两次TAB会列出所有的可能。
7:重定向和管道
1:重定向:改变shell标准输入来源和标准输出去向的各种方式。
通过重定向符号(>)可以将shell命令的输出重定向到指定的文件而非屏幕。
例如: commmand > filename
通过重定向符号(<)可以将shell命令的输入重定向到指定的文件而非键盘。
例如:command < filename
2:管道:管道的功能类似于下面的过程:将一个命令的标准输出重定向到
一个文件,然后将该文件作为另一个命令的标准输入。
命令行语法格式:commandA | commandB
其类似与:commandA > temp
commandB < temp
rm temp
8:备份与压缩
.tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
.gz
解压:gunzip FileName.gz
压缩:gzip FileName
.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
.bz2
解压:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
.bz
解压:bzip2 -d FileName.bz
.tar.bz
解压:tar jxvf FileName.tar.bz
.Z
解压:uncompress FileName.Z
压缩:compress FileName
.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName
.zip
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
8:安装卸载软件:apt和dpkg
APT:
1.apt-get install 软件包名称:安装或者升级指定软件包
2.apt-get remove 软件包名:移除指定软件包
3.apt-get upgrade:对系统的软件全面升级
5.apt-get clean:清理apt-get 后下载下来的包和未完成的包(安装源程序被清理)
dpkg:底层一些的包管理工具,用上apt(高级包管理工具)之后,一般是不需要处理单个的deb文件的。如果需要,就要用dpkg命令
1.dpkg -i gedit-2.12.1.deb:安装gedit-2.12.1.deb
2.dpkg -r gedit:卸载gedit,但不删除配置文件
3.dpkg -P gedit:这会连同gedit的配置文件一起删除,只用-r的话是不删除配置文件的
9:dd:转换并复制文件
dd主要用来像在磁带或者软盘驱动器之间复制文件。dd可以在不同的操作系统之间传递信息而其它方法都不行。
例如:将test.bin文件写入a.img软盘中。
dd if=test.bin of=a.img bs=1 count=512 comv=notrunc
具体用法请使用联机命令。
11:开关机
由于关机重启之类的命令需要root权限,所以需要在命令前面加上sudo提权,或者输入sudo -s -E和密码进入root然后执行相关命令。
关机:
sudo halt
sudo shutdown now
重启:
sudo reboot
sudo shutdown -r