在介绍Linux命令之前,先简单了解下操作系统的作用,操作系统是应用程序与硬件之间插入的一层软件,所有应用对硬件的操作都必须经过操作系统。操作系统的两个最主要的作用是
目录 | 用途 |
---|---|
/bin | 这个目录是系统中最主要的可执行文件的存放位置,这些可执行文件大都是Linux系统中最常用的命令。 |
/boot | 这个目录是存放系统启动时的内核文件和其他一些信息文件。 |
/dev | 这个目录中的所有文件都是特殊文件,Linux系统把所有的外设备都看成是一个文件。 |
/home | 这是系统缺省普通用户的主目录的根目录,一般与系统关系十分密切的配置文件都放在该目录下。 |
/initrd | 使用RAMDisk方式启动时用于挂载RAM设备文件。 |
/lib | 这个目录是存放系统的链接库文件。 |
/lost+found | 这个目录是文件系统恢复时使用。 |
/misc | 这个目录是备用目录。 |
/mnt | 这是系统提供安装额外文件系统时候的安装目录,如挂载软驱、光驱等。 |
/opt | 用于安装一些给所有用户使用的文件或程序。 |
/proc | 该目录的文件系统叫做porc文件系统,是系统内核的映像,该目录的文件存放在内存中。 |
/root | 超级用户root的缺省目录,对一般用户来说,是没有对该目录写入权限的。 |
/sbin | 与/bin一样,主要是存放可执行文件,只不过这里的可执行文件主要是给超用户管理系统时使用的,普通用户几乎没有权限执行其中的程序。 |
Linux系统中,一切皆文件,对数据文件(.mp3,.bmp),程序文件(.c,.o,*.h),设备文件(LED,触摸屏,鼠标),网络文件(socket)等的管理都抽象为文件,使用统一的方式进行管理。
Linux中将文件主要分为以下几类
普通文件
普通文件在系统中是用一横杠来表示的”-“,是操作系统用来存放数据,程序等信息的文件。一般都长期地保存在外部存储器中,例如硬盘中。普通文件一般包含文本文件,数据文件,可执行的二进制程序文件等。(可以使用 file 命令来查看文件类型,file 后接文件名可以查看相应文件的文件类型,如果file 命令后直接加“通配符”,则可以查看当前目录下的所有文件的类型。)
目录文件
Linux中的目录文件用”d“来表示,是一种特殊的文件,用于构建文件系统的树形结构。而且目录文件只允许系统管理员对其进行修改,普通用户只能对其进行访问,不允许修改。每个目录至少包含两个条目,一个是“.“,表示当前目录,一个是”…“,表示上级目录。
设备文件
Linux把所有的设备都抽象为文件,用”c“表示字符设备(char),用”b“表示块设备(block),它是用于向IO设备提供连接的一种文件,文件均存放在 /dev 目录下。
管道文件
管道文件是Linux中特殊文件,基本上用于进程间通信。
链接文件
链接文件在Linux中用”l“表示,类似于Windows下的快捷方式,分为软链接与硬链接。
Linux中用户分为三类
系统对上述三类用户于一个文件定义了读,写,执行三种权限,分别为 r,w,x。
上图中,- 表示该文件为普通文件,第一组rwx表示当前用户拥有读写执行权力,第二组rwx表示当前组用户也拥有读写执行权力,第三组rwx表示其他用户拥有读写执行权力,即所有用户对此文件均有读写执行权限。
对于软件开发人员来说,只需要掌握基础的Linux的命令即可应付绝大部分的Linux环境下开发工作了。
Linux中所有目录名和文件名对大小写敏感。
cd命令后可以跟相对路径,也可以跟绝对路径。如果省略路径参数,则切换到当前用户的主目录(home目录)。
cd命令 | 切换到的目录 |
---|---|
cd | 切换到当前用户的主目录,也就是登录系统时所进入的目录 |
cd ~ | 切换到当前用户的主目录,也就是登录系统时所进入的目录(同上) |
cd . | 切换到当前目录 |
cd … | 切换到当前目录的上一级目录 |
cd - | 切换到上一次进入的目录 |
ls命令是list的缩写,类似于Dos系统下的dir命令,Linux系统允许最长255个字符,在 /usr/include/linux/limits.h 有定义。
#define NAME_MAX 255 //usr/include/linux/limits.h
ls命令默认情况下会列出当前目录下所有文件以及目录的名称。可以附加以下参数增加显示的内容
参数 | 作用 |
---|---|
-a | 显示指定目录下所有子目录及文件,包括隐藏文件 |
-l | 以列表的形式显示详细信息 |
-h | 配合-l参数,以人性化的方式显示文件的大小 |
在文件数量非常大的时候,可以使用通配符只显示特定的文件
通配符 | 含义 |
---|---|
* | 匹配文件名中所有字符 |
ls te* | 显示当前目录下所有以 te 为开头的文件 |
ls *html | 显示当前目录下所有以html结尾的文件 |
? | 匹配文件名中的任意一字符 |
ls ?.c | 匹配任意以.c且前面有且仅有一个字符的文件 |
ls c.? | 匹配以c.打头,后缀有且仅有一个字符的文件 |
[] | 将字符括起来,表示匹配其中的任意一个字符 |
[abc] | 匹配a,b,c中的任意一个字符 |
[a-f] | 匹配a到f中的任意一个字符 |
ls [a-f]* | 列出以a到f中任意一个字母开头的文件 |
\ | 如果要把通配符作为普通字符使用,可以在其前面加上转义字符\来取消对通配符的解析 |
mkdir命令可以创建一个目录,使用-p参数可以递归创建目录。但是创建的目录不能与欲创建目录下所存在的目录同名,而且创建者必须对创建目录所在的父目录具有写权限。
rmdir命令可以删除一个目录,但不加参数的话仅仅只可以删除一个空目录,加上-r参数后可以删除一个非空目录。Linux下删除文件后无法复原。
rm命令后接文件名,可将指定文件删除,删除后不可恢复。后接 -i 参数可以进行提示后删除。
使用touch命令可以创建一个空文件,如果文件不存在,则touch的时候就是文件创建的时间,如果文件已经存在,touch一个文件则更新文件的创建时间。
cp命令是copy的缩写,用于将给出的文件或者目录拷贝到指定的目录。
参数 | 作用 |
---|---|
-a | 该选项一般在复制目录的时候使用,它保留链接文件属性,并递归地复制目录,简单说就是复制目录所有属性 |
-f | 删除已经存在的目标文件而不提示 |
-i | 交互式复制,复制之前会进行询问 |
-r | 若给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标路径必须是一个目录名 |
-v | 显示拷贝进度,每拷贝一个文件均会打印出记录 |
mv命令可以将文件和目录进行移动,或者重命名。
参数 | 作用 |
---|---|
-f | 禁止交互式操作,如有覆盖也不给予提示 |
-i | 确认交互式操作,如果mv操作会导致已存在的文件被覆盖,系统会提示是否重写,要求用户回答误以免覆盖文件 |
-v | 显示移动进度,打印移动的记录 |
find命令用于在特定的目录下查询符合条件的文件,也可以用来搜索特定属主的文件。
命令 | 含义 |
---|---|
find ./ -name test.txt | 查找当前目录下名为 test.txt的文件 |
find ./ -name *.sh | 查找当前目录下后缀为.sh的文件 |
find ./ [A-Z]* | 查找当前目录下以大写字母开头的文件 |
find ./tmp -size 2M | 查找tmp目录下大小正好等于2M的文件 |
find ./tmp -size +2M | 查找tmp目录下大小大于2M的文件 |
find ./tmp -size -2M | 查找tmp目录下大小小于2M的文件 |
find ./tmp +4k -size -5M | 查找tmp目录下大小大于4k,且小于5M的文件(k小写,M大写) |
find ./tmp -perm 0777 | 查找tmp目录下权限为777的文件或者目录 |
cat
归档管理 tar是Linux最常用的备份工具。它可以将一系列文件归档到一个大文件中,也可以将档案解开以恢复数据。tar只负责打包,解包,并不做压缩,当文件的大小较小的时候,打包出来的文件可以大小超过之前所有文件的总和。
打包:tar -cvf xxx.tar 打包进档案的文件
解包:tar -xvf xxx.tar -C 解包档案的路径
归档以后,可以使用gzip或者bzip2来进行压缩。只需要添加一个参数即可
使用gzip压缩与解压缩
压缩:tar -czvf xxx.tar 欲压缩文件
解压缩:tar -xzvf xxx.tar -C 解压缩的路径
使用bzip2压缩与解压缩
压缩:tar -cjvf xxx.tar 欲压缩文件
解压缩:tar -xjvf xxx.tar -C 解压缩的路径
也有单纯的压缩解压缩
zip -r 压缩包文件 加入压缩包的文件
unzip -d 解压路径 压缩包文件
chmod
文件权限 | 说明 |
---|---|
x | 执行权限,没有此权限的话,将无法执行程序,如果是文件夹的话,将无法进入 |
r | 读权限,没有此权限的话,文件将无法打开查看,如果是文件夹的话,将无法查看文件夹的内容 |
w | 写权限,没有此权限的话,文件将无法被修改或删除,文件夹是同样的 |
一般常用是数字修改法 r为4,w为2,x为1,所以设置一个文件具备有读写执行的权限的话 可以这么写
chmod 777 filename
chown可以修改文件的所有者
chown 文件新属有者 文件名
grep允许对文本文件进行模式查找。如果找到匹配模式,grep将打印包含匹配模式的所有行。
使用方法
grep 查询词 查询文件名 -n
(最后的 -n是显示查找到的行的行号)查询的词如果包括空格的话需要用引号引起来,grep命令的查询词部分也可插入正则表达式。
其他一些参数
参数 | 作用 |
---|---|
-v | 显示不包含查询词的所有行,相当于原命令的取反 |
-n | 显示匹配行的行号 |
-i | 忽略大小写 |
如果不打算编辑文件,仅仅知识查看文件内容时,可以使用cat来读取文件,如果文件内容太多,会使得文件内容一下子滚屏而过,不方便阅读,则可以使用less 或者more 命令来实现内容的分屏显示。
两者的区别:
软连接即快捷方式,里面存放的是源文件的地址,通过软连接改变文件内容,源文件内容会随之改变,当源文件被删除的时候,软链接文件即失效,再也无法通过软链接去访问源文件了。
创建方式
ln -s 源文件 链接文件
硬链接为文件的另一个入口,可以建立多个硬链接,目录文件不允许建立硬链接,修改任意一个硬链接都会修改源文件内容,但是删除任意硬链接并不会删除源文件,即使把源文件删除也不会导致文件被删除,相当于对源文件做了一个备份,但此备份并不是我们通常理解的那个备份,它的内容也是会随着任意一个硬链接的修改而发生改变,只是删除的时候,需要所有的硬链接全部被删除后,文件才能真正被删除。
创建方式
ln 源文件 链接文件
./ filename 然后ctrl + C退出
useradd命令用来添加系统用户
useradd [参数] 用户名
参数 | 含义 |
---|---|
-d 目录名 | 指定用户登录系统时的主目录,如果不使用此参数的话,系统将自动在home目录下创建一个与用户名同名的目录作为用户的主目录 |
-g | 指定组名称 |
作为管理员(不是管理员,没有权限)如果想删除一个用户,则可以使用 userdel 命令。
userdel -r 用户名
命令中添加了 -r 参数,指明删除用户的同时,将用户的家目录也同时予以删除。
在文件 /etc/passwd中,保存着系统中所有的用户和用户的主要信息,以下面的形式列出
starxiang:x:1000:1000:starxiang:/home/starxiang:/bin/bash
含义分别为(用冒号隔开):
last可以查看用户的登录记录
shutdown -h now
reboot
将命令的执行结果重定向到一个文件,本应该在终端显示的结果保存在文件中。
ls > test.txt
则 ls的输出结果将写入到test.txt文件中,如果test.txt文件本身已经存在,则文件原有内容将会被覆盖掉。
一个命令的输出可以通过管道作为另一个命令的输入。
例如:
ls -ahl | more
则将ls执行的结果作为输入传递给more命令,然后more命令会对ls的结果执行分屏显示。
清除终端上的显示内容,命令行移到最上端。(相当于Dos系统中的cls命令)也可以使用快捷键 Ctrl + l来实现相同功能。
显示当前的工作目录
查看命令存在的目录
which 命令名称
该命令可以让用户查看当前系统当前账户的用户名,可通过 cat /etc/passwd 来查看系统用户信息,也可以通过执行who命令来看登录的历史记录。
退出终端,退回到上一个登录账号
可以通过su命令切换用户,su后面可以加 - ,su和su - 的区别在于 su - 切换到对应的用户时会将当前的工作目录自动转换切换后的用户主目录(su - 会切换工作目录)
su的一些用法
命令 | 含义 |
---|---|
su | 切换到root用户 |
su root | 切换到root用户 |
su - | 切换到root用户,同时切换目录到 /root |
su - root | 切换到root用户,同时切换目录到 /root |
su 普通用户 | 切换到普通用户 |
su - 普通用户 | 切换到普通用户,同时切换到普通用户所在的主目录 |
Linux系统中,不是根据文件后缀名来区分文件类型的,使用file加文件名可以打印出文件类型。
top
kill
&
jobs
fg
df
history
ifconfig
ping-
查看主机CPU信息
more /proc/cpuinfo
查看主机PCI信息
lspci
查看当前的Linux操作系统所使用的内核模块
more /prco/modules
查看shell环境变量
ECHO $SHELL
time
date
cal\bc
du
dmesg
uptime
who/w
whoami/hostname
top
free