Linux的那些基础常用命令汇总及简单剖析

时间:2020-12-28 02:13:05

Linux的那些基础常用命令汇总及简单剖析

导语:

Linux是一款很出色的操作系统,受到很多人追随,Linux的版本种类又很多,其中不乏在界面上非常出众的openSUSE,Ubuntu等,他们的界面做的非常之漂亮,但对于用Linux开发的人员来讲,却有必要掌握命令的使用,对于运维的人员来讲,这个就不用多说了,是重中之重。那么有Linux大牛说不懂命令的使用就等于不懂Linux,这句话是没有错的,因为,命令的功能远比图形界面强大,那么接下来我就按照类型给大家整理一下我们Linux平台下常用的命令以及常用方式。

 

我们先来看看终端窗口的样子:

Linux的那些基础常用命令汇总及简单剖析

图1:普通用户终端,$符号开始。

Linux的那些基础常用命令汇总及简单剖析

图2:根用户root,#符号开始,具有超级到无穷大到令人发指的权限。

 

在接下来我们的命令讲解大部分以普通用户为背景,如果命令需要root用户权限会高亮提示,用户命令的格式一般是(命令、选项、参数)组成,而且命令大部分都方便记忆,因为基本上都是英文的缩写,那么我们知道了这些信息,接下来就开始我们的讲解之旅。

 

写在前面的终端命令的格式以及操作规则:

用户命令的格式一般是(命令、选项、参数)组成。

!!          -重复前一个命令(用上键也可以)。

!字符    -重复前一个以“字符”开头的命令。

!num    -按照历史记录的序号执行命令。

!?abc    -重复之前包含abc的命令。

! -n       -重复n歌命令之前的那个命令。

ctrl+c    -终止当前命令。

通过上下键子可以浏览命令记录。

重新调用前一个命令中的参数Esc.(按完Esc键之后按.)。

通过ctrl+r来在历史记录中搜索命令(reverse-i-search),直接输入一个字母可以直接调出该字母开头的历史命令,比以上的命令更方便。

命令后面加上&将这个命令放到后台运行。

 

命令中通配符的使用规则:

*匹配零个或多个。

?匹配任意一个字符。

[0-9]匹配一个数字范围。

[abc]匹配列表里任何字符。

[^abc]匹配列表以外的字符。

 

接下来正式介绍命令使用。

Are you ready?Let's GO!

 

用户命令:

1.[uname] 显示系统的基本信息。

                 -r 内核版本号。

                 -a(--all) 显示所有信息。

例:uname -r

       uname -a

         

2.[history] 查看输入过的全部命令。

                 -c 删除当前用户所有的历史命令。

例:history

       history -c

 

3.[su] 切换用户,可以从普通用户切换成root用户,也可以将root用户切换成普通用户,如果su命令后面不加参数或者su-则代表切换成root用户。其中加-表示启用一个全新的终端,直接到root的家目录里。通常我们都加一个-。

例:su - Mic    从root切换成普通用户不需要密码,从普通用户切换成root用户需要密码。

 

4.[sudo] 使用管理员权限运行命令。

例:sudo date -s 01/05/2017 需要输入用户密码。

 

5.[id] 显示当前用户信息。

         -u 只显示uid。

         --c只显示context。

例:id

       id -u

       id --c

 

6.[passwd] 修改当前用户密码,首先输入当前密码,然后输入的是新密码。

                  -d 删除密码,仅有系统管理员才能使用。

例:passwd

 

 

管理后台作业命令

1.[jobs] 查看当前在后台运行的作业。

例:jobs

 

2.[sleep] s 停止参数输入的时间s秒,可使用ctrl+c终止或者使用ctrl+z暂停。

例:sleep 5000 通过ctrl+z暂停,jobs显示stop,如果重新继续运行调用下面的命令bg。

 

3.[bg] num 控制进程继续在后台运行。

例:bg 1

 

4.[fg] num 继续在前台运行。

例:fg 1

 

注:任何命令后面加上&都会跳到后台去运行,比方打开火狐程序firefox &,我们可以通过jobs查看。

 

文件目录操作命令:

1.[pwd] 显示当前的工作目录。

例:pwd

 

2.[touch] 创建一个空白文件或者更新已有文件的时间。

例:touchhello.c 如果不存在该文件则创建该文件,存在该文件则只更新该文件的时间。

 

3.[ls] 列出目录内容(list)。

        -a显示所有文件(包括隐藏文件),隐藏文件绝大多是都是配置文件,勿修改这些文件。

        -l 显示详细信息。

        -R 递归显示子目录结构。

        -ld显示目录和链接信息。

例:ls

       ls -a

       ls -l

       ls -R

       ls -ld Downloads/ Downloads是路径,如果不加路径则只打印当前目录。

 

4.[file] 查看文件类型。

例:filehello.c file命令后面可以接文件夹名称。

 

5.[cd] 用来切换目录。

例:cd/etc cd命令后可以接相对路径还有绝对路径,如果不输入路径则返回家目录。

 

6.[cp] 复制文件或目录。

          -r可以复制文件夹。

          -v显示复制的详细信息,显示复制的过程。

例:cpfile1 dir 将file1复制到file2。

       cp -r file1 dir

       cp -v file1 dir

 

7.[mv] 移动一个文件。相当于剪切,用法和cp差不多。

例:mvtest.c c++/test.c 如不指定目录,直接在当前目录相互移动就是重命名。

 

8.[rm] 删除文件或者目录。

          -r 可以删除文件和文件夹中的所有东西。

          -i 交互式的删除。(有删除提示)。

          -f 表示强制删除,没有任何警告。

例:rm file

       rm -r dir

       rm -i file

       rm -f file

 

9.[mkdir] 创建一个目录。

例:mkdirMusic Music是个目录。

 

10.[rmdir] 删除一个目录,不能删除非空文件夹。

例:rmdir Music 如果文件夹中有内容,非空,则用rm命令。

 

运维高频使用命令:

一、日期和时间

1.[date] 查看和设置系统的日期和时间。

             -u 来查看UTC时间。

             -s 设置时间,这个需要切到root用户才能有权限更改。

             +%y-%m-%d    “-”可以自定义更改,这是更改时间的显示格式。

例:date

       date -u

       date -s "10:20:36" 设置为10点20分36秒,需要管理员权限。

       date +%y-%m-%d

 

2.[clock] 查看的是操作系统的时间。

例:clock

 

3.[cal] 来打印日历。

例:cal

 

4.[uptime] 查看系统运行了多久,系统的用户,系统的负载。

例:uptime

 

二、输出,查看命令。

1.[echo] 显示输入的内容(回显)。

例:echohelloworld

 

2.[cat] 来显示文件的内容,直接显示出所有内容。

例:cathello.c

 

3.[more] 用于翻页显示内容,但是不能向上翻页。

例:morehello.c

 

4.[less] 相对于more,可以上下来回翻页。

例:lesshello.c

 

5.[head] 显示文件的头几行(默认10行)。

              -n 来指定显示开头的n行。

例:head-20 hello.c

 

6.[tail] 显示末尾的几行(默认10行)。

           -n 来指定显示末尾的n行。

           -f 在控制台卡住,追踪显示文件的更新,多用于查看日志新加内容。

例:tail-20 hello.c

 

三、查看硬件信息

1.[lspci] 用于查看PCI设备(如声卡网卡等)。

             -v 查看详细信息。

例:lspci -v

 

2.[lsusb] 查看USB设备,如摄像头等。

               -v 显示详细信息。

例:lsusb -v

 

3.[lsmod] 查看当前加载的所有模块(模块即windows中相当于驱动)。

例:lsmod

 

四、关机重启

1.[shutdown] 关机/重启。

                     -h now 立即关机=poweroff。

                     -r now 立即重启=reboot。

                     -h +n n分钟后关机。

                     -h xx:xx 定时关机。

 

五、归档和压缩

1.[zip] 用以压缩。

例:zipxxx.zip file 把file这个源文件压缩成xxx.zip目标文件。

 

2.[unzip]解压文件。

例:unzipxxx.zip

 

3.[gzip]同样是压缩文件。

例:gziphello.cpp 直接将该文件打成包。同样gunzip解压缩,同zip。

 

4.[tar]:归档命令,把许多文件打包成一个文件。压缩通常使用tar频率最高。

             -cvf out.tar liunxfile 把linuxfile这个文件夹中的文件打包归档成一个输出out.tar格式的文件,可以用来备份,但是没有压缩。

             -xvf out.tar 把一个归档的tar文件释放到当前文件下。

             -cvzf 归档并压缩一个文件。z代表调用zip。

例:tar-cvzf xxx.tar.gz dir 归档并压缩尾部是tar.gz,要这样写。

       tar -cvf xxx.tar /etc 将/etc文件夹归档为xxx.tar

 

六、查找命令

1.[locate] 快速查找。

    它需要预先建立数据库,默认每天更新一次。如果新建立了一个文件,然后用locate去查找这个命令,找不到。因为数据库没更新,用[updatedb]命令(root权限)更新数据库,然后再查找。

例:locate

 

2.[find]高级查找,支持很多查找条件。

格式:find 查找位置查找参数。下面例子中“/”代表根分区。

          find/ -name *.conf 在/根分区下查找所有.conf结尾的文件。

          find/ -perm 777 查找硬盘中所有权限是777的文件。

          find / -type d 查找目录类型文件,d是目录。

          find . -name "a*" -exec ls -l {}\; 这里面是将find找到的结果当成参数传递给ls命令,这里面后半部分除了ls -l其他的部分都是固定格式。

 

磁盘管理以及文件系统命令:

1.[fdisk] 对disk格式化,需要root用户权限。

              -l 列出当前磁盘信息。

例:fdisk/dev/sdb 对sdb进行分区。需要管理员权限。

会弹出一个交互式的界面,按照不同指令进行操作,第一步m可查看帮助。如图:

Linux的那些基础常用命令汇总及简单剖析

n为创建分区,分区创建完成后并没有写入磁盘,按w将分区表写入磁盘。

 

2.[partprobe] 刷新分区表。

例:partprobe 让内核识别分区表。

 

3.[mke2fs] 用来创建文件系统。磁盘分区不建立文件系统(格式化)不可以使用。

mke2fs -t ext4 /dev/sda3 创建一个文件系统。

                -b 指定文件系统块大小。(一个块,默认是4k)

                -c 建立文件系统时检查坏损块。

                -L label 指定卷标。

                -j 建立日志文件系统。

 

4.[dumpe2fs] 查看分区文件系统信息,用来进行计算机性能调整来使用。

例:dumpe2fs/dev/sda1

 

5.[e2label] 设置或显示文件系统标签。

例:e2label  /dev/sdb1 显示sdb1的系统标签。

       e2label /dev/sdb1 LINUX 将sda2的标签设置为LINUX(Linux中建议标签大写)。

 

6.[fsck] 检查并修复损坏的文件系统。

            -y 不提示而直接进行修复。

            -t 指定文件系统类型。

例:fsck /dev/sda2

 

7.[mount] 将格式化好的磁盘或分区挂载到一个目录上,使用不带任何参数的mount来显示已经挂载好的文件系统,ro,rw 以只读或读写形式挂载,默认是rw。(磁盘分区好后,Linux需要手动挂载,不挂在不能使用)。

                -t 指定文件系统的类型。

                -o 后接指定挂载项。

例:mount /dev/sda3(要挂载的分区) /mnt(需要挂载的地方)

 

8.[umount] 用来卸载已经挂载的文件。

例:umount  /dev/sda3

如果出现device is busy,则表示该文件系统正在被使用,无法卸载,可以使用下面的命令。

 

9.[fuser] 查看是谁在使用该设备。

              -m后面接设备名称。

例:fuser -m /dev/sda1

 

10.[lsof] 列出当前系统打开文件。

例:lsof /mnt 后面是挂载点。

 

这个内容的命令远没有这么简单,由于在平时使用的时候频率不是很高,所以略显简单,如果有需求的话可以查找这个类型命令的详细文档。

 

用户、组操作命令:

1.[whoami] 显示当前用户。

例:whoami

 

2.[who] 显示关于当前在本地系统上的所有用户的信息。

    tty1 是登录终端

    pts/0 是图形界面

例:who

 

3.[useradd] 创建一个用户名。

上面这条命令或执行以下操作:

1.在/etc/passwd中添加用户信息。

2.如果使用passwd命令创建密码,则将密码加密保存在/ect/shadow中。

3.为用户建立一个新的家目录/home/xxx。

4.将/ect/skel中的文件复制到用户的家目录中。

5.建立一个与用户名相同的组,默认的用户属于这个同名组。

            -d 指定家目录。

            -s 修改登录shell。

            -u 指定UID。

            -g 指定主组。

 

4.[usermod] 用来修改用户信息。

                    -l 更新用户名。

                    -u 更新userid 。

                    -d 用户家目录位置。

                    -g 用户所属主组。

                    -L 锁定用户使其不能登录。

                    -U 解除锁定。

                    -G 指定附属组。

 

5.[userdel] 删除一个用户。

                  -r 删除用户和用户的家目录。

例:userdel -r Mic

 

6.[groupadd] 添加一个组。

                     -n 新组名 旧组名 修改组名。

                     -g 新id 旧id 修改组ID。

 

7.[groupdel] 可以删除一个组。

 

8.[chown] 修改文件的所属用户。

                 -R 参数递归修改目录下的所有文件的相关属性。

例:chown mic host.net

 

9.[chgrp] 改变文件的所属组。

               -R 参数递归修改目录下的所有文件的相关属性。

例:chgrp mic host.net

 

权限控制命令:

1.[chmod] 修改权限。

                 -R 递归修改目录下的所有文件。

例:chmod u+rw fileordir

       chomd go+r fileordir

说明:u、g、o分别代表用户、组和其他。

      a表示ugo。

      +、-代表加入或删除对应权限。

      r、w、x代表三种权限。

 

chmod支持数字方式修改

例:chmod 660 file==>rw-rw---  r=4 w=2 x=1 rw=6 rwx =7rx=5

 

网络配置命令

以root用户登录               

1.[ifconfig](if:interface)用来查看以太网接口信息。

                   -a 查看所有接口

                   eth0 查看特定接口,eth0接口名。

例:ifconfig -a

 

2.[ifup] 启用一个接口。

例:ifupeth0

 

3.[ifdown] 禁用一个接口。

例:ifdowneth0

 

4.[ping] 测试网络连通性。

例:ping21.23.21.65

       ping www.google.com

 

5.[host] 测试DNS解析(简单解析)。

例:host www.google.com

 

6.[dig] 测试DNS解析(详细解析)。

例:dig www.google.com

 

7.[ip route] 显示路由表。

例:ip route 等同于ip route show。

 

8.[traceroute] 追踪到达目标地址的网络路径。

例:traceroutewww.google.com 出现***表示该路由服务器不允许追踪。

 

9.[mtr] 进行网络质量测试(结合traceroute和ping)。

例:mtr www.google.com 检测到目标地址的网络质量。

 

软件管理命令

1.[rpm] 安装卸载软件。

            -i 安装软件。

            -e 卸载软件。

            -v 显示详细信息。

            -h 限制进度条。

            -U 升级形式安装。

            -ivh 通过http、ftp协议安装软件。

            -qi 显示详细信息。

            -ql 列出所有包含文件。

            -qlp 未安装的包含文件。

            -K 验证文件的完整性。

            -V 验证已安装的文件完整性。

例:rpm-U software-new.rpm

       rpm -ivh http://www.linux.net/software.rpm rpm支持通过http、ftp协议安装软件。

       rpm -qi linux  显示linux的详细信息。

       rpm -ql linux  列出所有linux的包含文件。

       rpm -qlp linux  未安装的linux的包含文件。

       rpm -K linux  验证linuxqq文件的完整性。

       rpm -V linux  验证已安装的文件完整性。

 

2.[yum]

例:yuminstall software-name 安装指定软件。

       yum remove sofware-name 卸载指定软件。

       yum update software-name 升级指定软件。

       yum search keyword 搜索。

       yum list (all | installed | recent |updates) 列出全部、安装的、最近的、软件更新。

       yum info packagename 显示指定软件的信息。

       yum whatprovides filename 查询哪个rpm软件包含目标文件。

       yum clean all 清除缓存目录下的软件包。

 

帮助命令:

在使用命令的时候会为某个命令的众多参数而头疼,我们可以寻求帮助,大部分命令在后面可以加-h,但是有的命令不支持,可以尝试在命令后面加--help,会显示该命令的帮助文档。

下面介绍两个文档查询命令。

1.[man] (manual)查看某个命令的使用方式。

例:man ls

 

2.[info] 查看某个命令的使用方式以网页形式显示(比man更详细)。

例:info ls

 

最后一弹:重定向和管道

其实在写这篇文章的时候我也在考虑要不要写这个部分,因为我想写一些纯命令的文章,但是考虑到这个地方是有用的,而且和终端以及命令操作是密切相关的,所以还是加上这个部分的说明。

首先说说我们的输入输出流,这个在C语言里面也有设计,标准流有stdout(标准输出流)、stdin(标准输入流)、stderr(标准错误流)。正常终端操作命令的时候是文本操作,自然离不开输入输出流了,我们默认情况下输入一个命令返回的操作结果是显示在终端上(默认输出设备是显示器),但是我们由于需要特殊操作,我们可以将输出文本不显示在屏幕,而输出在你所指定的流中,这也叫作重定向,比方我用ls命令列出文件,正常在终端中输出,而重定向后我们可以写进指定的文件当中,由于有些命令输出文本成千上万行,我们可以用重定向保存为记录或日志,以便查看。

操作:

> 将stdout重定向到文件(覆盖模式)例:ls -l > outfile

>>将stdout重定向到文件(追加模式) 例:ls -l >> outfile

2> 将stderr重定向到文件(覆盖模式)例:ls nothere 2> errout

2>&1将stderr与stdout结合 例:ls -l 2>&1 alloutfile

< 重定向stdin例:ls < /etc(基本用处不是很常见)

介绍完重定向之后再来介绍一下管道的概念。操作符“|”将一个命令的stdout作为另一个命令的stdin,例:ls -l | grep hello 将ls -l输出的内容作为参数传递给grep hello,用于完成多命令的一个协作。

 

结语:

Linux命令的总结就先到这里,其实也是常用命令的简单总结,很多命令的参数讲解上也并非全面。命令行的掌握代表着一个人对Linux的熟悉程度。事实上Linux的命令目前成千成万,再加上不同命令有不同的参数搭配,所以这些命令的用法大得惊人。我们光凭记忆去掌握这些命令是不切实际的,别忘了我们刚才讲的一个命令[man],当我们遇到问题的时候,不妨去问问这个“男人”。


更多精彩分享,请关注微信公众号!

Linux的那些基础常用命令汇总及简单剖析