Linux 常用命令,详细解析


进入系统,我们会看到这样的字符: [root@localhost ~]#,其中#代表当前是 root用户登录,如果是$表示当前为普通用户。我们了解 linux 由很多目录文件构成,那我们来学习第一个 Linux 命令:

cd 命令, cd /home ;解析:进入/home 目录cd /root 进入/root 目录 ;cd ../返回上一级目录;cd ./当前目录;(.和..可以理解为相对路径;例如 cd /hom/test ,cd 加完整的路径,可以理解为绝对路径)

ls ./ 查看当前目录所有的文件和目录。ls -a 查看所有的文件,包括隐藏文件,以.开头的文件。

pwd 显示当前所在的目录。

mkdir 创建目录,用法 mkdir test ,命令后接目录的名称。rmdir 删除空目录rm 删除文件或者目录,用法 rm –rf test.txt (-r 表示递归,-f 表示强制)。cp 拷贝文件,用法,cp old.txt /tmp/new.txt ,常用来备份;如果拷贝目录需要加 –r 参数。

mv 重命名或者移动文件或者目录,用法, mv old.txt new.txt

touch 创建文件,用法,touch test.txt,如果文件存在,则表示修改当前文件时间。

Useradd 创建用户,用法 useradd wugk ,userdel 删除用户。

Groupadd 创建组,用法 groupadd wugk1 ,groupdel 删除组。

find 查找文件或目录,用法 find /home -name “test.txt”,命令格式为:find 后接查找的目录,-name 指定需要查找的文件名称,名称可以使用*表示所有。find /home -name “*.txt” ;查找/home 目录下,所有以.txt 结尾的文件或者目录。

vi 修改某个文件,vi 有三种模式:命令行模式、文本输入模式、末行模式。默认 vi 打开一个文件,首先是命令行模式,然后按 i 进入文本输入模式,可以在文件里写入字符等等信息。写完后,按 esc 进入命令模式,然后输入:进入末行模式,例如输入:wq 表示保存退出。如果想直接退出,不保存,可以执行:q!, q!叹号表示强制退出。

cat 查看文件内容,用法 cat test.txt 可以看到 test.txt 内容

more 查看文件内容,分页查看,cat 是全部查看,如果篇幅很多,只能看到最后的篇幅。可以使用 cat 和 more 同时使用,例如:cat test.txt |more 分页显示 text 内容,|符号是管道符,用于把|前的输出作为后面命令的输入,可以点击空格向下看

echo 回显,用法 echo ok,会显示 ok,输入什么就打印什么。echo ok > test.txt ;把 ok 字符覆盖 test.txt 内容,>表示追加并覆盖的意思。>>两个大于符号,表示追加,echo ok >> test.txt,表示向 test.txt 文件追加 OK 字符,不覆盖原文件里的内容。

初学者常见的命令就如上所示,当然还有很多深入的命令需要学习,可以在下文了解一下!

扩展资料,可以看看一下对命令的积累有帮助

date 显示当前时间和日期

cal 显示当前月份的日历

df 查看磁盘剩余空间的数量

free 显示空闲内存的数量

pwd 打印当前工作目录

cd 切换目录

ls 列出文件夹内容

绝对路径:开始于根目录

相对路径:开始于工作目录 .工作目录 ..工作目录的父目录

cd – 更改目录到先前的工作目录

cd ~ 切换到家目录

ls

-l 结果以长模式输出

-t 选项按文件的修改时间的先后来排序

–reverse 结果会以相反的顺序输出

-h 更友好的方式显示

-a 列出所有文件包括隐藏文件

file filename

打印文件内容的简单描述

less filename

查看文件的内容,可以前后滚动,按q可退出

目录 评论

/ 根目录,万物起源。

/bin 包含系统启动和运行所必须的二进制程序。

/boot 包含 Linux 内核、初始 RAM 磁盘映像(用于启动时所需的驱动)和 启动加载程序。

有趣的文件:

/boot/grub/grub.conf or menu.lst, 被用来配置启动加载程序。

/boot/vmlinuz,Linux 内核。

/dev 这是一个包含设备结点的特殊目录。“一切都是文件”,也适用于设备。在这个目录里,内核维护着所有设备的列表。

/etc 这个目录包含所有系统层面的配置文件。

它也包含一系列的 shell 脚本, 在系统启动时,这些脚本会开启每个系统服务。这个目录中的任何文件应该是可读的文本文件。

有趣的文件:虽然/etc 目录中的任何文件都有趣,但这里只列出了一些我一直喜欢的文件:

/etc/crontab, 定义自动运行的任务。

/etc/fstab,包含存储设备的列表,以及与他们相关的挂载点。

/etc/passwd,包含用户帐号列表。

/home 在通常的配置环境下,系统会在/home 下,给每个用户分配一个目录。普通用户只能 在自己的目录下写文件。这个限制保护系统免受错误的用户活动破坏。

/lib 包含核心系统程序所使用的共享库文件。这些文件与 Windows 中的动态链接库相似。

/lost+found 每个使用 Linux 文件系统的格式化分区或设备,例如 ext3文件系统, 都会有这个目录。当部分恢复一个损坏的文件系统时,会用到这个目录。除非文件系统 真正的损坏了,那么这个目录会是个空目录。

/media 在现在的 Linux 系统中,/media 目录会包含可移动介质的挂载点, 例如 USB 驱动器,CD-ROMs 等等。这些介质连接到计算机之后,会自动地挂载到这个目录结点下。

/mnt 在早些的 Linux 系统中,/mnt 目录包含可移动介质的挂载点。

/opt 这个/opt 目录被用来安装“可选的”软件。这个主要用来存储可能 安装在系统中的商业软件产品。

/proc 这个/proc 目录很特殊。从存储在硬盘上的文件的意义上说,它不是真正的文件系统。相反,它是一个由 Linux 内核维护的虚拟文件系统。它所包含的文件是内核的窥视孔。这些文件是可读的, 它们会告诉你内核是怎样监管计算机的。

/root root 帐户的家目录。

/sbin 这个目录包含“系统”二进制文件。它们是完成重大系统任务的程序,通常为超级用户保留。

/tmp 这个/tmp 目录,是用来存储由各种程序创建的临时文件的地方。一些配置导致系统每次 重新启动时,都会清空这个目录。

/usr 在 Linux 系统中,/usr 目录可能是最大的一个。它包含普通用户所需要的所有程序和文件。

/usr/bin /usr/bin 目录包含系统安装的可执行程序。通常,这个目录会包含许多程序。

/usr/lib 包含由/usr/bin 目录中的程序所用的共享库。

/usr/local 这个/usr/local 目录,是非系统发行版自带,却打算让系统使用的程序的安装目录。通常,由源码编译的程序会安装在/usr/local/bin 目录下。新安装的 Linux 系统中,会存在这个目录, 但却是空目录,直到系统管理员放些东西到它里面。

/usr/sbin 包含许多系统管理程序。

/usr/share /usr/share 目录包含许多由/usr/bin 目录中的程序使用的共享数据。其中包括像默认的配置文件、图标、桌面背景、音频文件等等。

/usr/share/doc 大多数安装在系统中的软件包会包含一些文档。在/usr/share/doc 目录下, 我们可以找到按照软件包分类的文档。

/

var

除了/tmp 和/home 目录之外,相对来说,目前我们看到的目录是静态的,这是说, 它们的内容不会改变。/

var

目录是可能需要改动的文件存储的地方。各种数据库,假脱机文件, 用户邮件等等,都位于在这里。

/

var

/log 这个/

var

/log 目录包含日志文件、各种系统活动的记录。这些文件非常重要,并且 应该时时监测它们。其中最重要的一个文件是/

var

/log/messages。注意,为了系统安全,在一些系统中, 你必须是超级用户才能查看这些日志文件。

通配符

* 匹配任意多个字符(包括零个或一个)

? 匹配任意一个字符(不包括零个)

[characters] 匹配任意一个属于字符集中的字符

[!characters] 匹配任意一个不是字符集中的字符

[[:

class

:]] 匹配任意一个属于指定字符类中的字符

常用字符类别:

[:alnum:] 匹配任意一个字母或数字

[:alpha:] 匹配任意一个字母

[:digit:] 匹配任意一个数字

[:lower:] 匹配任意一个小写字母

[:upper:] 匹配任意一个大写字母

mkdir directory 创建目录 mkdir dir1 dir2 dir3 创建三个目录

cp file1 file2

复制文件 file1 内容到文件 file2。

如果 file2 已经存在, file2 的内容会被 file1 的内容重写。如果 file2 不存在,则会创建 file2。

cp -i file1 file2

这条命令和上面的命令一样,除了如果文件 file2 存在的话,在文件 file2 被重写之前, 会提示用户确认信息。

cp file1 file2 dir1

复制文件 file1 和文件 file2 到目录 dir1。目录 dir1 必须存在。

cp dir1/* dir2

使用一个通配符,在目录 dir1 中的所有文件都被复制到目录 dir2 中。dir2 必须已经存在。

cp -r dir1 dir2

复制目录 dir1 中的内容到目录 dir2。如果目录 dir2 不存在, 创建目录 dir2,操作完成后,目录 dir2 中的内容和 dir1 中的一样。

如果目录 dir2 存在,则目录 dir1 (和目录中的内容)将会被复制到 dir2 中。

mv file1 file2

移动 file1 到 file2。

如果 file2 存在,它的内容会被 file1 的内容重写。如果 file2 不存在,则创建 file2。每种情况下,file1 不再存在。

mv -i file1 file2

除了如果 file2 存在的话,在 file2 被重写之前,用户会得到 提示信息外,这个和上面的选项一样。

mv file1 file2 dir1

移动 file1 和 file2 到目录 dir1 中。dir1 必须已经存在。

mv dir1 dir2

如果目录 dir2 不存在,创建目录 dir2,并且移动目录 dir1 的内容到 目录 dir2 中,同时删除目录 dir1。

如果目录 dir2 存在,移动目录 dir1(及它的内容)到目录 dir2。

rm file1 默默地删除文件

rm -i file1 除了在删除文件之前,提示用户确认信息之外,和上面的命令作用一样。

rm -r file1 dir1 删除文件 file1, 目录 dir1,及 dir1 中的内容。

rm -rf file1 dir1 同上,除了如果文件 file1,或目录 dir1 不存在的话,rm 仍会继续执行。

ln — 创建硬链接和符号链接

ln file link 创建硬链接

ln -s file line 创建软链接

硬链接与更加现代的符号链接相比,硬链接是最初 Unix 创建链接的方式。每个文件默认会有一个硬链接, 这个硬链接给予文件名字。我们每创建一个硬链接,就为一个文件创建了一个额外的目录项。硬链接有两个重要局限性:

1、一个硬链接不能关联它所在文件系统之外的文件。这是说一个链接不能关联 与链接本身不在同一个磁盘分区上的文件。

2、一个硬链接不能关联一个目录。

当一个硬链接被删除时,这个链接 被删除,但是文件本身的内容仍然存在。

符号链接类似于windows的快捷方式,如果你往一个符号链接里面写入东西,那么相关联的文件也被写入。

然而, 当你删除一个符号链接时,只有这个链接被删除,而不是文件自身。

如果先于符号链接 删除文件,这个链接仍然存在,但是不指向任何东西。在这种情况下,这个链接被称为坏链接。

type command 显示命令的类型

which command 显示一个可执行程序的位置

ls –help –help 选项,这个选项是显示命令所支持的语法和选项说明

man command 查看命令的参考手册

whatis command 显示非常简洁的命令说明

info command info info文件是树型结构,分化为各个结点,每一个包含一个题目。

whatis command 显示非常简洁的命令说明

alias name=

‘command string’

给命令取别名

ls -l /usr/bin > ls-output.txt 重定向输出

less ls-output.txt 查看输出的内容

ls -l /usr/bin >> ls-output.txt 使用”>>“重定向符,追加内容

一个程序可以在几个编号的文件流中的任一个上产生输出。

虽然我们已经将这些文件流的前 三个称作标准输入、输出和错误,shell 内部分别将其称为文件描述符0、1和2。

shell 使用文件描述符提供 了一种表示法来重定向文件。因为标准错误和文件描述符2一样,我们用这种 表示法来重定向标准错误:

cat movie.mpeg.0* > movie.mpeg 追加连接符合条件的文件

ls -l /usr/bin | less

命令从标准输入读取数据并输送到标准输出的能力被一个称为管道线的shell特性所利用。

管道中添加过滤器 sort

ls /bin /usr/bin | sort | less

wc(字计数)命令是用来显示文件所包含的行数、字数和字节数。

例如:

wc ls-output.txt

7902 64566 503634 ls-output.txt

grep pattern [file…] 找到匹配的文本

ls /bin /usr/bin | sort | uniq | grep zip 区分大小写

ls /bin /usr/bin | sort | uniq | grep -i zip 忽略大小写

grep “standard” standard.txt > grep.

out

在文件standard.txt中查找standard这个字符串,如果找到则将查找结果重定向到grep.

out

,如果找不到,则把错误信息重定向到grep.

out

中。

head -n 5 ls-output.txt 查看开头五行内容

tail -n 5 ls-output.txt 查看结尾五行内容

波浪线字符(“~”)有特殊的含义。

当它用在 一个单词的开头时,它会展开成指定用户的家目录名。

如果没有指定用户名,则展开成当前用户的家目录。

[me@linuxbox ~]$ echo ~foo

/home/foo

算术表达式展开使用这种格式:

$((expression))

[me@linuxbox ~]$ echo $((2 + 2))

4

在算术表达式中空格并不重要,并且表达式可以嵌套。

[me@linuxbox ~] echo $(($((5**2)) * 3))

75

通过它,你可以从一个包含花括号的模式中 创建多个文本字符串。

[me@linuxbox ~]$ echo Front–Back

Front-A-Back Front-B-Back Front-C-Back

[me@linuxbox ~]$ echo Number_

Number_1 Number_2 Number_3 Number_4 Number_5

[me@linuxbox ~]$ echo

Z Y X W V U T S R Q P O N M L K J I H G F E D C B A

花括号嵌套:

[me@linuxbox ~]$ echo a,B}b

aA1b aA2b aB3b aB4b

批量创建以数值”年-月”形式命名的目录

[me@linuxbox ~]$ mkdir Pics

[me@linuxbox ~]$ cd Pics

[me@linuxbox Pics]$ mkdir -0 –

[me@linuxbox Pics]$ ls

2007-01 2007-07 2008-01 2008-07 2009-01 2009-07

2007-02 2007-08 2008-02 2008-08 2009-02 2009-08

2007-03 2007-09 2008-03 2008-09 2009-03 2009-09

2007-04 2007-10 2008-04 2008-10 2009-04 2009-10

2007-05 2007-11 2008-05 2008-11 2009-05 2009-11

2007-06 2007-12 2008-06 2008-12 2009-06 2009-12

命令替换允许我们把一个命令的输出作为一个展开模式来使用:

[me@linuxbox ~]$ echo $(ls)

Desktop Documents ls-output.txt Music Pictures Public Templates

Videos

bash 也支持这种语法。它使用倒引号来代替美元符号和括号:

[me@linuxbox ~]$ ls -l `which cp`

-rwxr-xr-x 1 root root 71516 2007-12-05 08:58 /bin/cp

记住,在双引号中,参数展开、算术表达式展开和命令替换仍然有效:

[me@linuxbox ~]$ echo

“$USER $((2+2)) $(cal)”

me 4 February 2008

Su Mo Tu We Th Fr Sa

以下例子是无引用,双引号,和单引号的比较结果:

[me@linuxbox ~]$ echo text ~/*.txt $(echo foo) $((2+2)) $USER

text /home/me/ls-output.txt a b foo 4 me

[me@linuxbox ~]$ echo

“text ~/*.txt $(echo foo) $((2+2)) $USER”

text ~/*.txt foo 4 me

[me@linuxbox ~]$ echo

‘text ~/*.txt $(echo foo) $((2+2)) $USER’

text ~/*.txt $(echo foo) $((2+2)) $USER

反斜杠转义符

[me@linuxbox ~]$ mv bad&filename good_filename

查看历史信息

history | less

历史命令执行

!! 重复最后一次执行的命令。可能按下上箭头按键和 enter 键更容易些。

!number 重复历史列表中第 number 行的命令。

!

string

重复最近历史列表中,以这个字符串开头的命令。

!?

string

重复最近历史列表中,包含这个字符串的命令。

ps – 报告当前进程快照

top – 显示任务

jobs – 列出活跃的任务

bg – 把一个任务放到后台执行

fg – 把一个任务放到前台执行

kill – 给一个进程发送信号

killall – 杀死指定名字的进程

shutdown – 关机或重启系统

进程状态:

R 运行中。这意味着,进程正在运行或准备运行。

S 正在睡眠。进程没有运行,而是,正在等待一个事件, 比如说,一个按键或者网络分组。

D 不可中断睡眠。进程正在等待 I/O,比方说,一个磁盘驱动器的 I/O。

T 已停止. 已经指示进程停止运行。稍后介绍更多。

Z 一个死进程或“僵尸”进程。这是一个已经终止的子进程,但是它的父进程还没有清空它。(父进程没有把子进程从进程表中删除)

具有高优先级的进程据说是不好的(less nice), 因为它占用了比较多的 CPU 时间,这样就给其它进程留下很少时间。

N 低优先级进程。一个低优先级进程(一个“好”进程)只有当其它高优先级进程被服务了之后,才会得到处理器时间。

另一个流行的选项组合是 “aux”(不带开头的”-“字符)。这会给我们更多信息:

[me@linuxbox ~]$ ps aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.0 2136 644 ? Ss Mar05 0:31 init

root 2 0.0 0.0 0 0 ? S

用 top 命令动态查看进程

后台执行:在程序命令之后,加上”&”字符

[me@linuxbox ~]$ xlogo &

[1] 28236

后台命令对与键盘输入免疫,无法中断,使用fg将命令转到前端。

fg 命令之后,跟随着一个百分号和任务序号(叫做 jobspec)就可以。

[me@linuxbox ~]$ jobs

[1]+ Running xlogo &

[me@linuxbox ~]$ fg %1

xlogo