优秀的编程知识分享平台

网站首页 > 技术文章 正文

学习Linux操作的第一步,你需要知道这些命令行!

nanyue 2024-08-08 19:12:10 技术文章 10 ℃

Linux下的命令到底有多少?大部分人可能都不清楚。其中有一些命令是大多数系统中都包含的,这些命令基本上都包含在GNU Coreutils包中。

当然,还有一些命令不包含在Coreutils包中,而是存在于一些基本且实用的软件中,如sed、awk和grep等。

很多用户可能只用过其中的部分命令,而且可能只掌握了这部分命令的部分功能。

很多Linux初学者面对这么多的命令往往不知道如何入手,于是就产生了如何学习Linux命令的疑问——到底哪些命令、哪些参数有用?



Linux系统指令目前有3000个左右,而且随着操作系统版本的不断升级,命令数量会越来越多。这样规模庞大的命令群很容易造成Linux初学者手忙脚乱,甚至一些拥有多年Linux运维经验的人员有时也需要到网络上去查询一些命令。

因此,作者就萌生了编写本书的想法,将自己多年运维工作过程中学习和积累的非常实用的命令整理出来,希望对广大的Linux初学者和有一定经验的应用运维从业者有所帮助和助益。

为什么要熟练掌握命令行操作


一般所说的“命令行”是指Linux中直接操纵操作系统的底层命令,Linux命令是对Linux系统进行管理的命令。其实,命令行就是沟通的语言,就像人与人之间沟通使用的语言。

用户和Linux内核之间沟通也需要一个双方都可以明白的语言,这就是命令行,用户输入命令后,内核就会明白用户要让它做什么。

如果一时无法理解这些概念性的东西,也没有关系,因为随着命令行知识的不断积累,加上不断的练习,读者就会构建自己的知识体系,逐渐理解和掌握。

下面来解释为什么要熟练掌握命令行操作。

1.1.1 命令行执行速度快

命令行执行速度基于毫秒,非常之快。如此快的执行速度,意味着我们在使用脚本执行一般性的任务时,返回结果的速度同样会非常快,这是命令行的优势之一。

【实例1-1】命令行执行速度演示

[root@linux_command ~]# ping qq.com -c 3
PING qq.com (14.17.32.211) 56(84) bytes of data.
64 bytes from 14.17.32.211 (14.17.32.211): icmp_seq=1 ttl=53 time=33.8 ms
64 bytes from 14.17.32.211 (14.17.32.211): icmp_seq=2 ttl=53 time=33.5 ms
64 bytes from 14.17.32.211 (14.17.32.211): icmp_seq=3 ttl=53 time=33.6 ms 
--- qq.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 33.586/33.678/33.839/0.240 ms
[root@linux_command ~]# ping qq.com -c 3 -w 3
PING qq.com (14.17.32.211) 56(84) bytes of data.
64 bytes from 14.17.32.211 (14.17.32.211): icmp_seq=1 ttl=53 time=33.6 ms
64 bytes from 14.17.32.211 (14.17.32.211): icmp_seq=2 ttl=53 time=33.4 ms
64 bytes from 14.17.32.211 (14.17.32.211): icmp_seq=3 ttl=53 time=33.4 ms
--- qq.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 33.459/33.541/33.686/0.234 ms

上述代码中,ping命令返回的结果均在毫秒级别。

1.1.2 命令行针对结果

命令行界面没有图形界面烦琐的“下一步”之类的操作,直接返回结果,干净利落。

下面的代码演示了查看当前登录服务器主机用户是谁,命令直接给出执行结果,即当前登录的用户是root,简单明了。

【实例1-2】命令行返回结果精准演示

whoami

输出当前操作系统的用户名。

[root@linux_command ~]# whoami
root

【实例1-3】打印服务器CPU的信息

cat/proc/cpuinfo

用于打印服务器CPU(中央处理器)的所有指标信息。

[root@linux_command ~]# cat /proc/cpuinfo 
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 61
model name : Intel Core Processor (Broadwell)
stepping : 2
microcode : 0x1
cpu MHz : 2099.996
cache size : 4096 KB
physical id : 0
siblings : 1
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_ 
tsc rep_good nopl eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic 
movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 
3dnowprefetch fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt
bogomips : 4199.99
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management :
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 61
model name : Intel Core Processor (Broadwell)
stepping : 2
microcode : 0x1
cpu MHz : 2099.996
cache size : 4096 KB
physical id : 1
siblings : 1
core id : 0
cpu cores : 1
apicid : 1
initial apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat 
pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc rep_good 
nopl eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt 
tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt
bogomips : 4199.99
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:

从上述代码中可以看到,中央处理器命令行返回(CPU)信息精准直观。

1.1.3 命令行反馈信息明确

命令行在执行过程中如果出错,就直接抛出错误;如果执行正确,那么默认什么都不返回。在信息的反馈力度和准确性方面毋庸置疑,非常干脆,这正是系统维护人员应该具备的素质和技术素养。

下面的指令判断/etc/passwd文件是否存在,如果存在,则打印“File Exists...”;如果不存在,则打印“File not Exists...”。

【实例1-4】判断文件是否存在

[root@linux_command ~]# [ -f /etc/passwd ] && echo 'File Exists...' || echo 'File not exists...'
File Exists...

从上述例子中可以看出,信息反馈非常明确。

下面的命令执行成功后,会返回数字0,其中,seq 10指令表示打印1~10的数字序列。

【实例1-5】命令执行成功返回数字0

[root@linux_command ~]# seq 10
[root@linux_command ~]# echo $?
0

在下面的代码演示中,命令执行失败后,返回结果为非0数字。

【实例1-6】命令执行失败返回非0数字

[root@linux_command ~]# seq abc
seq: invalid floating point argument: abc
Try 'seq --help' for more information.
[root@linux_command ~]# echo $?

1.1.4 命令行便于调试

命令行的报错信息一般都是比较直观的。另外,我们平时在编写Shell脚本的时候,一般都是多个脚本独立编写,这样的好处是便于调试,也符合Linux系统本身的设计特点,目的就是体现“组合单一专用命令,完成复杂任务”的思想。因此,这也是我们在学习Shell脚本编写过程中非常重要的一个思想。

【实例1-7】for循环打印1~15的数字序列

[root@linux_command ~]# for num in $(seq 15);do echo $num;done 

也可以采用下面的写法,和上面输出的结果是一致的。

[root@www.ansible.com ~]# for num in {1..15};do echo -e "\033[32;40m${num}\033[0m";done

核心代码解析:

echo {1..15}

和下面的代码结果一致,表示1~15的数字序列。

echo `seq 15`
echo $(seq 15)

下面来看如果命令行写错了,该怎么处理。

【实例1-8】命令执行失败演示

[root@linux_command ~]# for num in $(seq 15);do echo $num;;done
-bash: syntax error near unexpected token `;;'

上述代码中多了一个分号,从代码的报错提示中可以看到,信息提示非常准确,立刻就能识别是哪里出了问题。

命令行的意义和价值


Windows操作系统更加侧重图形界面操作,更适合一般的用户,而对于追求效率和功能性的Linux系统运维工程师而言,命令行是他们的明智之选。

何以见得?可以通过下文的例子进行说明。

1.2.1 快速文件操作

快速文件操作主要是指在日常运维过程中对文件的复制、粘贴和移动。下面分别介绍在图形界面和命令行中操作文件的步骤。

1.图形界面中的文件操作

  • file1和file2分别为文件操作的源文件夹和目标文件夹,如图1-1所示。
  • 复制file1中的图片文件,如图1-2所示。
  • 打开图1-3所示的目标文件夹,即file2。
  • 粘贴该图片文件,此时该图片将被复制到目标文件夹file2中,如图1-4所示。



图1-1 源文件夹和目标文件夹准备文件夹


图1-2 准备复制图片文件

2.命令行中的文件操作

[root@linux_command ~]#cp /path/filename /path/dest

上述命令同样可以完成文件的复制操作,而且只需要一步(一条指令即可完成文件复制操作)。



图1-3 打开目标文件夹


图1-4 复制到目标文件夹

【实例1-9】命令行文件操作演示

[root@linux_command ~]# cp -av /etc/passwd /tmp
'/etc/passwd_command ~]# cp -av[root@linux_command ~]# ls -la /tmp/passwd 
-rw-r--r--. 1 root root 1444 Aug 23 20:48 /tmp/passwd

上述代码复制/etc/passwd文件到/tmp目录下。

1.2.2 快速操作软件

Windows操作系统中安装软件通常需要经历如下3个步骤。

  • 搜索需要安装的软件。
  • 下载该软件。
  • 进行安装。

而在Linux命令行中安装软件,只需要一个步骤即可完成。

【实例1-10】命令行中安装httpd软件操作演示

yum -y install httpd

上述代码中,一条命令即可完成httpd软件的安装工作。

1.2.3 快速条件搜索

快速条件搜索在Windows操作系统中通常需要经历下面3个步骤。

  • 打开搜索界面。
  • 输入各种过滤条件。
  • 进行搜索。

Windows操作系统本身的搜索能力有限,主要体现在搜索条件的匹配及搜索速度方面,如果需要更为强大的搜索功能,可能需要借助图1-5所示的第三方搜索软件。

图1-5所示的软件功能很强大,例如搜索当前计算机中的所有以CentOS开头,中间是任意字符结尾是ISO镜像文件(*.iso为正则表达式的描述方法),如图1-6所示。



图1-5 搜索软件 


图1-6 查找ISO镜像文件

而在Linux中,功能强大的find命令可以支持各种形式的搜索,其中包含尤其强大的正则表达式。

find /root -name [文件名] 根据文件名搜索(严格匹配)
find /root -iname [文件名] 不区分大小写
find /root -user [所有者名] 根据所有者来搜索
find /root -size +100M 根据大小搜索
find /root -size +100k -a -size -50M 范围搜索
find /root -size +100k -a -size -50M -exec ls -lh {} \;

上述代码中,使用find命令可以针对文件名、文件所有者、权限、文件大小等进行快速搜索,可见命令行功能之强大。

通过一条find命令就可以达到搜索的目的,不仅快捷,而且功能比图形界面更加强大。

这样的例子其实还有很多,从开发的角度来说,命令行为Linux应用运维或者高级运维带来了不少好处。下面以3个实例来说明命令行在速度及便捷性方面的优势。

【实例1-11】查找根目录下名为passwd的文件,不区分大小写

find/-iname passwd

查找当前系统中根目录下,不区分大小写,名称为passwd的文件。

[root@linux_command ~]# find / -iname passwd
/sys/fs/selinux/class/passwd
/sys/fs/selinux/class/passwd/perms/passwd
/etc/passwd
/etc/pam.d/passwd
/tmp/passwd
/tmp/PASSWD
/usr/bin/passwd

上述代码中,“-iname”选项表示不区分大小写。

【实例1-12】查找根目录下名为passwd的文件

find/-iname passwd

查找当前系统中根目录下,名称为passwd的文件。

[root@linux_command ~]# find / -name passwd
/sys/fs/selinux/class/passwd
/sys/fs/selinux/class/passwd/perms/passwd
/etc/passwd
/etc/pam.d/passwd
/tmp/passwd
/usr/bin/passwd

上述代码中,“-name”选项代表查找根目录下名为passwd的文件。

【实例1-13】查找/data目录下,以“*.log”作为结尾并且是20天以前的所有文件。

find /data/ -type f –name "*.log" –mtime +20

查找当前系统中/data/目录下,名称为“*.log”结尾,时间是20天以前的文件。

[root@linux_command ~]# find /data/ -type f -name "*.log" -mtime +20
/data/sh/shell/grep.log
/data/1.log
/data/2.log
/data/3.log
/data/4.log
/data/5.log
/data/6.log
/data/7.log
/data/8.log
/data/9.log

上述代码中有以下几个条件。

  • /data/代表查找路径。
  • -type f代表查找的类型为文件。
  • -name“*.log”代表查找前面是任意字符,后面以log结尾。
  • -mtime +20代表查找日期为20天以前。



《跟老韩学Linux运维》

韩艳威 著

点击封面购买纸书

作者多年工作实践经验的总结,全方位系统地解读Linux运维之道,带你轻松从入门到精通。

本书特点

(1)模拟企业环境,实用至上。全书内容是作者近 10 年工作经验的总结,耗时约 500个日夜完成。书中的每个章节都精选了近百个实例,作者对每个实例进行逐步分解、进化、升级修订,读者根据需要做简单修改后,即可在企业级Linux运维生产环境部署应用。

(2)结构合理,图文并茂。每个章节采用循序渐进的方式进行讲解,由浅入深、逐步引导,让读者更容易接受和吸收书中的知识。尤其对于初学者,入门学习时就能得到来自一线企业实战的技术分享,想必是一件十分愉悦的事情吧!每章结尾都有总结和思维导图,供读者复习,在梳理知识的同时能够明确每章的架构和层次,使读者轻松入门Linux。

(3)网络及技术支持。读者在遇到问题时,可以及时联系作者,作者会尽可能地给予读者全方位的免费技术支持。

最近发表
标签列表