您的位置:首页 > 运维架构 > Linux

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

2018-02-27 00:00 911 查看

[b][b][b][b][b][b][b][b][b][b][b]

[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b]



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


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


图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可查看帮助。如图:



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 =7 rx=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 >> outfile2> 将stderr重定向到文件(覆盖模式)例:ls nothere 2> errout2>&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云计算免费课程火热开讲中,5天免费运维干货内容免费听,点击文末[b][b]“阅读原文”[/b][/b]即可免费听运维课[b]![/b]速速来抢~~~~
[b][b]PS:记得查收小编送你的免费大礼包呦~[/b][/b][b]福利 | 一万多套PPT模板等你免费来拿!无条件领取![/b][b][b]免费送 | 1000多套简历模板免费拿,附赠简历制作教程![/b][/b]免费领 | 《Shell脚本 100例》电子书免费拿,运维必备干货~



▼▼点击【阅读原文】,免费听5天Linux运维干货分享课,火热开讲中,速来抢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: