Linux常用命令(未完成)

 

一、导航命令

1.查看当前目录的内容

ls

选 项 说 明
按字母顺序列出当前目录下的所有非隐藏文件(包括目录)
-a 按字母顺列出当前目录下的所有文件,包括隐藏文件
-l 列出当前目录下的所有文件,包括文件长度、拥有者、权限和时间戳等信息
-t 按文件最后修改时间列出文件
-F 按类型列出所有文件,在文件末尾用不同符号区分:
斜线(/) 表示目录
星号(*) 表示可执行文件
@符号 表示链接文件
--color 以不同颜色显示目录、普通文件、可执行文件、压缩文件以及链接文件等


ls -la 结果中,以点号(.)开始的是隐藏文件。
在 Linux 下,隐藏一个文件只需将文件改名为点号(.)开始的文件名即可,而 Windows
下, 通常需要修改文件属性

2.切换工作目录

cd

cd 命令是 change directory的缩写,用于改变工作目录,与 MS-DOS 的 cd 命令类似。

用法:

$cd 目标路径

                                                                                           Linux 下路径的表示方法

表示方法 说明
/ 根目录
句点(.) 当前目录
句点 2(..) 上一层目录
~ 当前用户的主目录,一般为/home/username,如当前登录用户为 user,则~表示/home/user
目录, cd 命令不加任何参数,将切换到用户主目录(~)
短横线(-) 上一次工作目录, cd -可切换至切换之前的工作目录

说明:
(1) Linux 下目录、计算机名和域名之间都是用斜线(/)分开,而非反斜线(\);
(2) Linux 下切换目录,可用相对路径,亦可用绝对路径。
假定当前在用户主目录(~)下,先进入目录“/etc/network”目录,然后切换到
“/etc/network/if-down.d”目录,接下来在“/etc/network/if-post-down.d”和
“/etc/network/if-down.d”目录间切换,操作过程的命令如下:

Linux-host:~$ cd /etc/network/
Linux-host:/etc/network$ cd if-down.d/
Linux-host:/etc/network/if-down.d$ cd ../if-down.d/
Linux-host:/etc/network/if-down.d$ cd

3.查看当前路径

pwm打印路径

pwd 命令是一个导航辅助命令,功能是打印当前所在路径,告知用户当前所处位置用法很简单,在 Shell终端中输入 pwd 即可:

[email protected]: drivers$ pwd

二、目录操作命令

1.创建目录

mkdir创建目录

在命令行下,用 mkdir 命令可以更简单快速的创建一个或者多个目录,甚至多级目录。

用法:

$mkdir [选项] [参数] 目录


                                                                                     mkdir 命令支持的选项

参数 说明
-m 创建目录的同时指定访问权限
-p 如果所创建目录的父目录不存在,则一同创建父目录

创建多个目录。假如要在当前目录下一次性创建 d1、 d2、 d3 这 3 个目录,只需在
mkdir 命令后面依次写目录名即可,命令如下:

$ mkdir d1 d2 d3

创建多级目录。假如需要创建 dir1 目录,并在其中创建 apps 子目录,同时在 apps 目录下再创建 hello 子目录,只需加上-p 参数,操作命令如下:

Linux-host: test$ mkdir –p dir1/apps/hello

2.删除目录

rm、rmdir


(1) 用 rmdir 删除空目录
rmdir 命令只能删除空目录,也可删除多级空目录。

用法:

$rmdir d1 d2

注意: rmdir 命令只能删除空目录,无法删除非空目录。
范例,删除空目录:

Linux-host: test$ rmdir dir1 dir2


rmdir 也支持参数-p,表示删除某个目录后,如果父目录也成了空目录,则连父目录一并删除。

范例:

Linux-host: test$ rmdir -p dir4/dir5/dir6/


(2) 用 rm 命令删除
用 rmdir 命令很安全,不会误删数据,但是实际上用的不是很多,更常用的是用 rm 命令。 rm 命令既可以删除文件,也可以删除目录而不管目录是否非空。

用法:

$rm [选项] 文件/目录

rm 命令支持选项,用户可以控制删除过程。
                                                                                             rm 命令选项

选项 说明
-f 强制删除文件或者目录,无需用户确认
-i 删除文件或者目录之前,需用户确认
-r 递归删除,删除指定目录以及子目录下的文件
-v 显示删除过程


注意:删除命令,无论是删除目录还是文件,一旦删除,都将不可恢复,并不像 Windows 下或者桌面下会移动到回收站暂存。特别是一般的嵌入式并不设定“回收站”,所以在删除的时候请特别小心。为了确保不误删文件,可使用 alias 别名,将 rm 命令设置为“rm -i”,这样每次删除都会有确认过程。

用法: alias rm=”rm -i”。
使用示例,强制删除某些文件和目录:

Linux-host: test$ rm -fr dir3 video1.mpeg


如果加上-i 参数,则需要用户确认:

Linux-host: test$ rm -i config.gz


rm:是否删除有写保护的 普通文件 “config.gz” ?
这样, 只有用户输入 y 后方可删除, 输入 n 则保留文件。

说明:讲删除命令的时候,提到删除的文件不会在回收站暂存,在通用桌面 Linux,一般都设有回收
站,在桌面下删除一般会暂存在回收站,在命令行下若要想将某个文件暂存回收站,只能用 mv 命令,将文
件移动到回收站中。 Linux 下的回收站,一般在主目录下,为隐藏文件.Trash,不同发行版回收站的路径
也各不相同。 Ubuntu 的回收站目录是“~/.local/share/Trash”。
Ubuntu 图形界面下的删除,实际上都是 mv 指令,将“删除”的文件移动到回收站,清空垃圾桶才是
用 rm 命令彻底删除。

 

三、文件操作命令

1.创建空文件

touch 

用法:

[email protected]: ~$ touch a

2.创建一个有内容的文件

echo内容回显

命令将内容回显到标准输出,使用 echo 命令加上重定向可以创建一个带内容的非空文件,用法:

$echo 内容 或者 “内容” #输出到标准输出
$echo 内容 或者 “内容” > 文件 #重定向到文件,如果文件不存在则创建新文件

3.查看文件类型

file读取文件

file 命令能读取文件头并识别文件类型,包括目录。用法:
 

$ file 文件

4.查看文件内容

(1)用 more 和 less 命令查看

more 和 less 两个命令都可用来浏览文本文件,可以分页查看文件内容,空格翻页。文件浏览完毕,按键盘 q 退出。

用法:

$more/less 文件

(2)用 head/tail 命令查看


head 和 tail 这两个命令可分别查看文件头部和文件尾部,一般用于查看 ASCII 文件。默认显示 10 行,可加上参数指定显示内容的多少,支持的参数如表 3.6 所列。

用法:

$head/tail [选项][参数] 文件


                                                                                  head 和 tail 支持的选项

参数 说明
-n [数字] 显示[数字]所指定的行数
-c [数字] 显示[数字]所指定的字节数


说明,数字的表示方法: b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024 等。
指定显示多少行,如查看文件头 20 行:

Linux-host: hello$ head -n 20 install.cf


指定显示多少字节,例如,指定查看 300 字节:

Linux-host: hello$ head -c 300 install.cf


查看文件开头的 512 字节:
 

Linux-host: hello$ head -c 1b install.cf

(3)用 cat 命令查看

cat 命令可以将一个或者多个文件输出到标准输出上,可以用于文件查看。

5.文件合并

cat 命令可以将一个或者多个文件输出到标准输出,如果将标准输出重定位到某个文件,则将多个文件合并一个文件。

用法:

$ cat [选项] 文件 1 文件 2 … [>文件 3]


如果不加选项,则原封不动的显示各个文件,加上一些参数的话,可以对原文件进行一
些处理。
cat 命令常用选项

选项 说明
-n 从 1 开始对输出行进行编号
-b 类似于-n,从 1 开始编号,但是忽略空白行
-s 遇到连续两行或以上的空白行,就替换为一行空白行


使用示例 1,查看 hello.c 文件并编号:

Linux-host: hello$ cat -n hello.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <unistd.h>
4 #include <fcntl.h>
5
6 int main(int argc, char **argv)
7 {
......


使用示例 2,查看 hello.c 文件并忽略空白行编号:
 

Linux-host: hello$ cat -b hello.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <unistd.h>
4 #include <fcntl.h>
5 int main(int argc, char **argv)
6 {
......


如果使用重定向符(>)可以将屏幕输出保存到另一个文件中,或者追加符(>>)可以将屏幕输出添加到某个文件末尾。

示例,将 hello.c 和 Makefile 文件增加行号后合并为 test
文件:
Linux-host: hello$ cat -n hello.c Makefile > test
说明:
(1)重定向符(>)可以将标准输出重定向到其它输出或者文件,文件不存在则会创建新文件;
(2)追加符(>>)则将标准输出追加到文件末尾,如果文件不存在则创建新文件;

 

6.文件压缩/解压

Tar压缩和解压

tar 是 UNIX 系统的一个文件打包工具,只是连续首尾相连的将文件堆放起来,并不具备压缩功能,但是加上选项, tar 可以调用其它压缩/解压工具,能够实现文件的压缩和解压。
用法:

$tar [选项] 文件

tar 常用选项

选项 说明
-c 创建存档文件,与-x 相斥
-t 列出档案文件的文件列表
-x 解包存档文件,与-c 相斥
-A 合并存档文件
-d 比较存档文件与源文件
-r 追加文件到存档文件末尾
-u 更新存档文件
-f 指定存档文件,与其它选项同时使用时,必须在最后,如 tar -xjvf a.tar.bz2
-v 显示详细处理信息
-C 转到指定目录,常用于解开存档文件
-j 调用 bzip2 程序
-z 调用 gzip 程序
-Z 调用 compress 程序
--exclude=PATH 排除指定文件/目录,常用于打包文件


使用示例:
(1)解压 a.tar.bz2 文件,并显示详细信息:

Linux-host: ~$ tar -xjvf a.tar.bz2


(2)解压 b.tar.gz 文件,并指定解压到/home/chenxibing/目录:

Linux-host: ~$ tar -xzvf b.tar.gz -C /home/chenxibing


紧跟 tar 命令选项的“-”可以不需要,但是-C 的“-”是必须的,例如上一条命令等价于:

Linux-host: ~$ tar xzvf b.tar.gz -C /home/chenxibing


(3)将 drivers 目录的文件打包,创建一个.tar.bz2 压缩文件:
 

Linux-host: ~$ tar -cjvf drivers.tar.bz2 drivers

7. 删除文件

rm删除文件

删除文件用 rm 命令,用法与删除目录相同。
 

8. 文件改名和移动

mv文件移动和改名

在 Linux 下,文件移动和改名都是通过 mv 命令实现的,且移动和改名可以同时实现。

用法:

$mv 源文件/目录 目的文件/目录


若目的路径与源路径不相同,则进行移动操作,如相同则进行改名操作
Linux常用命令(未完成)

9. 文件复制

cp文件复制

用法:

$cp [选项] 源文件/目录 目的文件/目录

cp 命令支持多种选项,可实现多种不同操作。
cp 命令常用选项

选项 说明
-a 保留链接、文件属性并递归复制,等同于-dpR 组合,常用语复制目录
-d 复制时保留链接
-f 若目标文件已经存在,则直接删除而不提示
-i 若目标文件已经存在,需要用户确认操作,与-f 相反
-p 除复制文件内容外,把访问权限和修改时间也复制到新文件中
-r 递归复制,递归复制指定目录下的文件和目录
-v 显示文件复制过程


通过 cp 命令,可以在同一目录下将文件/目录复制为另外一个文件/目录,也可将文件/目录复制到其它目录,还可用其它文件名, 范例演示了这些操作。
Linux常用命令(未完成)

10. 创建链接

ln 创建链接的命令

用法:

$ ln 选项 源文件/目录 目标文件


Linux 下的链接分软链接和硬链接两种,默认创建硬链接,选项加上-s 则创建软链接。硬链接通过索引节点进行链接,相当于源文件的镜像,占用源文件一样大小的空间,修改其中任何一个,另外一个都会进行同样的改动。给一个文件创建硬链接后,文件属性的硬连接数会增加。

hello.c 原有硬链接数是 1,创建硬链接 main.c 后,main.c 和 hello.c文件大小一样,两者的硬连接数都增加为 2。

Linux常用命令(未完成)
硬链接不能跨文件系统,只能在同一个文件系统内进行链接,且不能对目录文件建立硬链接。给目录创建硬链接会出错,如图 Linux常用命令(未完成)
软链接和硬链接不同,软链接是产生一个新文件,这个文件指向另一个文件的位置,类似于 Windows 下的快捷方式。通常用的更多的是软链接,软链接可以跨文件系统,且可用于任何文件,包括目录文件。
假定为了使用方便,需要给 dir1 目录创建一个软链接 lpc,创建和结果如图 所示。

Linux常用命令(未完成)

11. 改变文件和目录权限

chmod文件权限

Linux常用命令(未完成)

输出信息第一列表示文件访问权限,该示例详细说明
第一个字符是-,表示这是一个普通文件,如果是 b 则表示是块设备,是 c 则表示是字符设备,是 d 则表示是目录,是 l 则表示是链接文件, p 表示命名管道, s 表示 Socket 文件。接下来的 9 个字符 rwxr-xr-x,分成三组,各含义如表

Linux常用命令(未完成)

权限字符中, ls -l 结果中,用 r/w/x 表示的则表示拥有相应的权限,用“-”表示的则表示没有相应的权限,拥有权限的用数字表示结果为“读/写/执行” 3 个数字相或得到,如 rwx可用 7 表示, r-x 可用 5 表示, rwxr-xr-x 则可用 755 表示。

chmod 用于改变或者设置文件/目录的权限。用法:

$chmod [参数] 文件/目录


设置或者改变文件/目录的权限,可直接用八进制表示,如将 hello 文件设置为任何人都可以读写并执行:

[email protected]: hello$ chmod 777 hello

更常用的是用字符方式设定文件/目录的权限,分别用 u/g/o 表示文件的拥有者/组内用户/其它用户,用 rwx 分别表示读/写/执行权限,用+/-表示增加或去除某种权限。例如,将hello 文件的其它用户权限可执行属性去掉:

[email protected]: hello$ chmod o-x hello


如果同时设置 u/g/o,可用 a 表示,例如为 hello 增加全部用户可执行权限:

[email protected]: ~$ chmod a+x hello


拥有可执行权限的文件,在 Linux 终端下通常呈现为绿色。如果在运行程序的时候遇到 permission dennied 这样的错误提示,可在终端输入 chmod +x file,为将要运行的程序增加可执行权限。
 

ifconfig 命令是 Linux 系统配置网卡的命令工具,可用于查看和更改网络接口的地址和参数,包括 IP 地址、广播地址、子网掩码和物理地址,也可**和关闭网卡。

用法:

$ifconfig 网络接口 [选项] 地址/参数
选项/参数 说明 示例
-a 查看系统拥有的全部网络接口 ifconfig -a
网络接口 指定操作某个网口 ifconfig eth0 192.168.1.136
broadcast 设置网口的广播地址 ifconfig eth0 broadcast 192.168.1.255
netmask 设置网口的子网掩码 ifconfig eth0 netmask 255.255.255.0
hw ether 设置网卡物理地址(如果驱动不支持则无效) ifconfig eth0 hw ether 00:11:00:00:11:22
up **指定网卡 ifconfig eth0 up
down 关闭指定的网卡 ifconfig eth0 down

说明:
(1)使用 ifconfig 命令操作网口需要 root 权限;
(2)使用 ifconfig 修改网卡配置无需重启系统,也不能复位保存;
(3)可以同时配置网口的多个参数。

使用 ifconfig 同时配置网卡多个参数的范例:
 

[email protected]: ~$ sudo ifconfig eth1 192.168.1.136 netmask 255.255.255.0 broadcast 192.168.1.255 up

ping 命令检查网络是否通畅


mount
Linux 允许多个文件系统存在于同一个系统中,也允许用户在系统运行中安装内核所支持的文件系统。例如,将一个 FAT 格式的 U 盘插入到 Linux 系统中。
往系统安装文件系统需要用到 mount 命令,并且需要 root 权限。

用法:

# mount [-参数] [设备名称] [挂载点]


Linux常用命令(未完成)

 

Linux常用命令(未完成)

说明:
(1)挂载点必须是一个已经存在的目录;
(2)如果挂载点非空,则挂载后之前的内容将不可用,卸载后方可用;
(3)一个挂载点可被多个设备/文件重复挂载,只是后一次挂载将覆盖前一次内容,卸载后可用;
(4)使用多个-o 参数的时候, -o 只用一次,参数之间用半角逗号隔开。

假如需要在 Linux 系统中使用 FAT 格式的 U 盘,则需要进行挂载,实现文件系统安装:

#mount –t vfat /dev/sda1 /mnt


在进行嵌入式 Linux 开发过程中, mount 命令经常被使用,特别是进行 NFS 连接和调试的时候,通过 NFS 挂载,将远程主机 Linux 的某个共享目录挂载到嵌入式系统本地,当成本地设备进行操作。 NFS 挂载范例:

[[email protected] /]#mount -t nfs 192.168.1.138:/home/chenxibing/lpc3250 /mnt -o nolock


nolock 表示禁用文件锁,当连接到一个旧版本的 NFS 服务器时常加该选项。此外,嵌入式开发中常用的文件系统还有 cramfs、 jffs2、 yaffs/yaffs2 以及 ubifs 等,特别是用于 NOR Flash 的 jffs2 和用于 NAND Flash 的 yaffs/yaffs2、 ubifs 等,在进行系统操作中通常需要对各设备进行挂载或者卸载,需要在挂载的时候指定正确的文件系统类型。挂载yaffs2 分区的命令示例:

#mount -t yaffs2 /dev/mtdblock2 /mnt


*使用条件:需要内核已经支持 yaffs2 文件系统。挂载 ubifs 分区的命令示例:

#mount -t ubifs ubi0:rootfs /mnt


*使用条件:需要内核已经支持 ubifs 文件系统。
当不再需要某个文件系统的时候,可以将其卸载。 umount 用于卸载已经挂载的设备或者文件。用法:

#umount 挂载点


如果已经将 U 盘挂载到/mnt 目录下,用完后的卸载命令为:

[[email protected] /]# umount /mnt

insmod 加载(插入) 模块

通过 insmod 命令可以往正在运行中的内核插入某些模块而无需重启系统。

用法:

# insmod [选项] 模块 [符号名称=值]
选项 说明
-f 强制将模块载入,不检查目前 kernel 版本与模块编译时的 kernel 版本是否一致
-k 将模块设置为自动卸载
-p 测试模块是否能正确插入
-x 不导出模块符号
-X 导出模块所有外部符号(默认)
-v 显示执行过程

  一般情况下,如果一个模块的版本与所运行的内核不一致,模块将无法插入系统。就算是同一版本内核编译得到,如果内核配置文件不同,也有可能无法插入。使用-f 选项强制插入后,可能会出现运行不正确的情况。插入和卸载模块需要 root 权限。插入模块比较简单,如需要往系统插入 beep.ko 驱动模块,可用:

[[email protected] beep]# insmod beepdrv.ko


有些驱动/模块可以接受外部参数,在插入模块的时候为相应的符号赋值。一个模块/驱动能否接受外部参数,能够接受几个外部参数,取决于模块/驱动的具体实现,符号以及赋值请参考相应模块/驱动的说明。这是一个范例, pcm-8032a.ko 模块能接收 irq 和 addr 两个符号参数,插入模块的时候指定:

# insmod pcm-8032a.ko irq=3 addr=0x300

lsmod
如果想要知道某个模块是否已经插入系统,或者想知道系统加已经载了哪些模块,可用lsmod 命令查看。

Lsmod 命令用法:
 

[email protected]: ~$lsmod

rmmod

卸载模块用 rmmod 命令, 用法:

# rmmod [选项] 模块
选项 说明
-f 强制卸载正在被使用的模块,非常危险!需要内核支持(CONFIG_MODULE_FORCE
_UNLOAD 使能),否则无效
-w 通常情况下不能卸载正在被使用的模块,加上-w 选项,指定模块将会被孤立,直到不再被
使用
-s 将错误信息写入 syslog,而不是标准错误
-v 显示执行过程

如果一个模块正在被另外一个模块所依赖,或者正在被某个应用程序使用,则一般情况下无法卸载这个模块。如果内核支持强制卸载模块功能,加上-f 可以卸载,但是不要轻易使用,否则有可能会带来严重错误。

假定系统的 beep.ko 不再需要,卸载命令:

[[email protected] beep]# rmmod beepdrv.ko