Linux系统编程(14)——shell常用命令

时间:2024-05-21 10:03:44

1. ls命令

ls命令是列出目录内容(ListDirectory Contents)的意思。运行它就是列出文件夹里的内容,可能是文件也可能是文件夹。

“ls -l”命令已详情模式(longlisting fashion)列出文件夹的内容。

“ls -a”命令会列出文件夹里的所有内容,包括以”.”开头的隐藏文件。

注意:在Linux中,文件以“.”开头的就是隐藏文件,并且每个文件,文件夹,设备或者命令都是以文件对待。ls -l 命令输出:

1、d (代表了是目录).

2、rwxr-xr-x 是文件或者目录对所属用户,同一组用户和其它用户的权限。

3、上面例子中第一个ravisaive 代表了文件文件属于用户ravisaive

4、上面例子中的第二个ravisaive代表了文件文件属于用户组ravisaive

5、4096 代表了文件大小为4096字节.

6、May 8 01:06 代表了文件最后一次修改的日期和时间.

7、最后面的就是文件/文件夹的名字

2. lsblk命令

“lsblk”就是列出块设备。除了RAM外,以标准的树状输出格式,整齐地显示块设备。

“lsblk -l”命令以列表格式显示块设备(而不是树状格式)。

注意:lsblk是最有用和最简单的方式来了解新插入的USB设备的名字,特别是当你在终端上处理磁盘/块设备时。

3. md5sum命令

“md5sum”就是计算和检验MD5信息签名。md5 checksum(通常叫做哈希)使用匹配或者验证文件的文件的完整性,因为文件可能因为传输错误,磁盘错误或者无恶意的干扰等原因而发生改变。

注意:用户可以使用官方提供的和md5sum生成签名信息匹对以此检测文件是否改变。Md5sum没有sha1sum安全,这点我们稍后讨论。

4. dd命令

“dd”命令代表了转换和复制文件。可以用来转换和复制文件,大多数时间是用来复制iso文件(或任何其它文件)到一个usb设备(或任何其它地方)中去,所以可以用来制作USB启动器。

注意:dd 命令在执行中会根据文件的大小和类型以及 usb设备的读写速度,消耗几秒到几分钟不等。

5. uname命令

“uname”命令就是Unix Name的简写。显示机器名,操作系统和内核的详细信息。

注意: uname显示内核类别, uname -a显示详细信息。

6. history命令

“history”命令就是历史记录。它显示了在终端中所执行过的所有命令的历史。

注意:按住“CTRL + R”就可以搜索已经执行过的命令,它可以你写命令时自动补全。

7. sudo命令

“sudo”(super user do)命令允许授权用户执行超级用户或者其它用户的命令。通过在sudoers列表的安全策略来指定。

注意:sudo 允许用户借用超级用户的权限,然而”su”命令实际上是允许用户以超级用户登录。所以sudo比su更安全。

并不建议使用sudo或者su来处理日常用途,因为它可能导致严重的错误如果你意外的做错了事。”

8. mkdir命令

“mkdir”(Make directory)命令在命名路径下创建新的目录。然而如果目录已经存在了,那么它就会返回一个错误信息”不能创建文件夹,文件夹已经存在了”(“cannot create folder, folder already exists”)

注意:目录只能在用户拥有写权限的目录下才能创建。mkdir:不能创建目录`tecmint`,因为文件已经存在了。(上面的输出中不要被文件迷惑了,你应该记住我开头所说的-在linux中,文件,文件夹,驱动,命令,脚本都视为文件)

9. touch 命令

“touch”命令代表了将文件的访问和修改时间更新为当前时间。touch命令只会在文件不存在的时候才会创建它。如果文件已经存在了,它会更新时间戳,但是并不会改变文件的内容。

注意:touch 可以用来在用户拥有写权限的目录下创建不存在的文件。

10. chmod 命令

“chmod”命令就是改变文件的模式位。chmod会根据要求的模式来改变每个所给的文件,文件夹,脚本等等的文件模式(权限)。

在文件(文件夹或者其它,为了简单起见,我们就使用文件)中存在3中类型的权限

Read (r)=4

Write(w)=2

Execute(x)=1

所以如果你想给文件只读权限,就设置为’4′;只写权限,设置权限为’2′;只执行权限,设置为1; 读写权限,就是4+2 = 6, 以此类推。

注意:对于系统管理员和用户来说,这个命令是最有用的命令之一了。在多用户环境或者服务器上,对于某个用户,如果设置了文件不可访问,那么这个命令就可以解决,如果设置了错误的权限,那么也就提供了为授权的访问。

11. chown命令

“chown”命令就是改变文件拥有者和所在用户组。每个文件都属于一个用户组和一个用户。在你的目录下,使用”ls -l”,你就会看到像这样的东西。

在这里,目录Binary属于用户”server”,和用户组”root”,而目录”Desktop”属于用户“server”和用户组”server”

“chown”命令用来改变文件的所有权,所以仅仅用来管理和提供文件的用户和用户组授权。

注意:“chown”所给的文件改变用户和组的所有权到新的拥有者或者已经存在的用户或者用户组。

12. apt命令

Debian系列以“apt”命令为基础,“apt”代表了AdvancedPackage Tool。APT是一个为Debian系列系统(Ubuntu,Kubuntu等等)开发的高级包管理器,在Gnu/Linux系统上,它会为包自动地,智能地搜索,安装,升级以及解决依赖。

见名知义,apt-cache用来搜索包中是否包含子包mplayer, apt-get用来安装,升级所有的已安装的包到最新版。

关于apt-get 和 apt-cache命令更多信息,请查看 25 APT-GET和APT-CACHE命令

13. tar命令

“tar”命令是磁带归档(Tape Archive),对创建一些文件的的归档和它们的解压很有用。

注意:“tar.gz“代表了使用gzip归档,“bar.bz2”使用bzip压缩的,它压缩的更好但是也更慢。

了解更多”tar 命令”的例子,请查看18 Tar命名例子

14. cal 命令

“cal”(Calender),它用来显示当前月份或者未来或者过去任何年份中的月份。

注意:你不需要往回调整日历50年,既不用复杂的数据计算你出生那天,也不用计算你的生日在哪天到来,[因为它的最小单位是月,而不是日]。

15. date命令

“date”命令使用标准的输出打印当前的日期和时间,也可以深入设置。

注意:这个命令在脚本中十分有用,以及基于时间和日期的脚本更完美。而且在终端中改变日期和时间,让你更专业!!!(当然你需要root权限才能操作这个,因为它是系统整体改变)

16. cat命令

“cat”代表了连结(Concatenation),连接两个或者更多文本文件或者以标准输出形式打印文件的内容。

注意:“>>”和“>”调用了追加符号。它们用来追加到文件里,而不是显示在标准输出上。“>”符号会删除已存在的文件,然后创建一个新的文件。所以因为安全的原因,建议使用“>>”,它会写入到文件中,而不是覆盖或者删除。

17. cp 命令

“copy”就是复制。它会从一个地方复制一个文件到另外一个地方。

注意: cp,在shell脚本中是最常用的一个命令,而且它可以使用通配符(在前面一块中有所描述),来定制所需的文件的复制。

18. mv 命令

“mv”命令将一个地方的文件移动到另外一个地方去。

注意:mv 命令可以使用通配符。mv需谨慎使用,因为易懂系统的或者未授权的文件不但会导致安全性问题,而且可能系统崩溃。

19. pwd 命令

“pwd”(print working directory),在终端中显示当前工作目录的全路径。

注意:这个命令并不会在脚本中经常使用,但是对于新手,当从连接到nux很久后在终端中迷失了路径,这绝对是救命稻草。

20. cd 命令

最后,经常使用的“cd”命令代表了改变目录。它在终端中改变工作目录来执行,复制,移动,读,写等等操作。

注意:在终端中切换目录时,cd就大显身手了。“cd ~”会改变工作目录为用户的家目录,而且当用户发现自己在终端中迷失了路径时,非常有用。“cd ..”从当前工作目录切换到(当前工作目录的)父目录。

21. 命令: Find

搜索指定目录下的文件,从开始于父目录,然后搜索子目录。

注意: `-name‘选项是搜索大小写敏感。可以使用`-iname‘选项,这样在搜索中可以忽略大小写。(*是通配符,可以搜索所有的文件;‘.sh‘你可以使用文件名或者文件名的一部分来制定输出结果)

22. 命令: grep

‘grep‘命令搜索指定文件中包含给定字符串或者单词的行。举例搜索‘/etc/passwd‘文件中的‘tecmint’

可以使用以下选项:

1 -w搜索单词 (egrep -w ‘word1|word2‘/path/to/file).

2 -c用于统计满足要求的行 (i.e.,total number of times the pattern matched) (grep -c ‘word‘/path/to/file).

3 –color彩色输出 (grep –color server/etc/passwd).

23. 命令: man

‘man‘是系统帮助页。Man提供命令所有选项及用法的在线文档。几乎所有的命令都有它们的帮助页

注意:系统帮助页是为了命令的使用和学习而设计的。

24. 命令: ps

ps命令给出正在运行的某个进程的状态,每个进程有特定的id成为PID。

使用‘-A‘选项可以列出所有的进程及其PID。

注意:当你要知道有哪些进程在运行或者需要知道想杀死的进程PID时ps命令很管用。你可以把它与‘grep‘合用来查询指定的输出结果。

25. 命令: kill

也许你从命令的名字已经猜出是做什么的了,kill是用来杀死已经无关紧要或者没有响应的进程.它是一个非常有用的命令,而不是非常非常有用.你可能很熟悉Windows下要杀死进程可能需要频繁重启机器因为一个在运行的进程大部分情况下不能够杀死,即使杀死了进程也需要重新启动操作系统才能生效.但在linux环境下,事情不是这样的.你可以杀死一个进程并且重启它而不是重启整个操作系统.

杀死一个进程需要知道进程的PID.

注意:每次你重新运行一个进程或者启动系统,每个进程都会生成一个新的PID.你可以使用ps命令获得当前运行进程的PID.

27. 命令: service

‘service‘命令控制服务的启动、停止和重启,它让你能够不重启整个系统就可以让配置生效以开启、停止或者重启某个服务。

注意:要想使用service命令,进程的脚本必须放在‘/etc/init.d‘,并且路径必须在指定的位置。

如果要运行“service apache2 start”实际上实在执行“service /etc/init.d/apache2 start”.

28. 命令: alias

alias是一个系统自建的shell命令,允许你为名字比较长的或者经常使用的命令指定别名。

29.命令: df

报告系统的磁盘使用情况。在跟踪磁盘使用情况方面对于普通用户和系统管理员都很有用。‘df‘通过检查目录大小工作,但这一数值仅当文件关闭时才得到更新。

30. 命令: du

估计文件的空间占用。逐层统计文件(例如以递归方式)并输出摘要。

注意: ‘df‘只显示文件系统的使用统计,但‘du‘统计目录内容。

31. 命令: rm

‘rm’标准移除命令。 rm 可以用来删除文件和目录。

警告: ”rm -rf”命令是一个破坏性的命令,假如你不小心删除一个错误的目录。一旦你使用’rm -rf’删除一个目录,在目录中所有的文件包括目录本身会被永久的删除,所以使用这个命令要非常小心。

32. 命令: echo

echo 的功能正如其名,就是基于标准输出打印一段文本。它和shell无关,shell也不读取通过echo命令打印出的内容。然而在一种交互式脚本中,echo通过终端将信息传递给用户。它是在脚本语言,交互式脚本语言中经常用到的命令。

33. 命令: passwd

这是一个很重要的命令,在终端中用来改变自己密码很有用。显然的,因为安全的原因,你需要知道当前的密码。

34. 命令: lpr

这个命令用来在命令行上将指定的文件在指定的打印机上打印。

注意:”lpq”命令让你查看打印机的状态(是开启状态还是关闭状态)和等待打印中的工作(文件)的状态。

35. 命令: cmp

比较两个任意类型的文件并将结果输出至标准输出。如果两个文件相同,‘cmp‘默认返回0;如果不同,将显示不同的字节数和第一处不同的位置。

36. 命令: wget

Wget是用于非交互式(例如后台)下载文件的免费工具.支持HTTP, HTTPS, FTP协议和 HTTP 代理。

37 命令: mount

mount 是一个很重要的命令,用来挂载不能自动挂载的文件系统。你需要root权限挂载设备。