首页 > 系统 > Linux >

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

2017-11-07

Linux的那些基础常用命令汇总及简单剖析,Linux是一款很出色的操作系统,受到很多人追随,Linux的版本种类又很多,其中不乏在界面上非常出众的openSUSE,Ubuntu等,他们的界面做的非常之漂亮,但对于用Linux开发的人员来讲,却有必要掌握命令的使用。

Linux的那些基础常用命令汇总及简单剖析,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 =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 -ivhhttp://www.linux.net/software.rpmrpm支持通过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],当我们遇到问题的时候,不妨去问问这个“男人”。

相关文章
最新文章
热点推荐