-
8) clear
-
9) help 选项
-
10) whatis
-
11) man
-
12) Info
-
Linux文件系统命令
-
- 13) cd
-
14) ls
-
创建文件和目录
-
- 15) mkdir
-
16) touch
-
复制、移动和删除
-
- 17) cp
-
18) mv
-
19) rmdir、rm
-
其它的文件命令
-
- 20) file
-
21) stat
-
22) cat
-
23) pagers
-
24) head
-
25) tail
-
26) wc
-
27) grep
-
28) ln
-
文本编辑
-
- 29) Pico & Nano
-
30) VI editor
-
其余常用命令
-
- 31) alias
-
32) w
-
33) last
-
34) du
-
35) df
-
36) fdisk
-
37) netstat
-
38) history
-
39) passwd
-
40) shutdown
在本教程中,我将展示一些非常基本的Linux命令,并提供一些示例,这些示例能使你更加熟悉Linux命令行。 要成为Linux专家,对于初学者来说,第一步就是开始学习基本命令。
该命令后跟选项(当然是可选的)和参数列表。 这些选项可以修改命令的行为。 参数可以是文件或目录,也可以是命令所作用的其他数据。 每个命令可能不需要参数。 某些命令可以使用或不使用它们(例如“ ls”命令)。 可以通过两种方式提供选项:带 - 的全单词选项(例如–help),或带-的单字母选项( 例如-a -b -c或多个选项-abc)。
语法:
Linux中的命令语法如下:
$command options arguments
===========================================================================
让我们从一些简单地命令开始。
“ pwd”命令显示当前工作目录的绝对路径。
$ pwd
/home/raghu
显示当前月份的日历。
$ cal
July 2012
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
“ cal”用来显示指定月份和年份的日历。
$ cal 08 1991
August 1991
Su Mo Tu We Th Fr Sa
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
’ echo '命令将回显你提供的任何内容。
$ echo “linoxide.com”
linoxide.com
“ echo”命令用于显示变量的值。例如变量“ HOME”。 要查看变量的值,需要在变量前加上$符号。
$ echo $HOME
/home/raghu
显示当前的时间和日期。
$ date
Fri Jul 6 01:07:09 IST 2012
如果你只想显示时间,你可以使用 ‘date +%T’ (in hh:mm:ss):
$ date +%T
01:13:14
显示当前终端。
$ tty
/dev/pts/0
此命令显示当前登录的用户。
$ whoami
raghu
此命令显示当前用户的用户和组(UID和GID)。
$ id
uid=1000(raghu) gid=1000(raghu) groups=1000(raghu),4(adm),20(dialout),24(cdrom),46(plugdev),112(lpadmin),120(admin),122(sambashare)
默认情况下,显示有关当前用户的信息。 如果提供另一个用户名作为参数,则将打印有关该用户的信息:
$ id root
uid=0(root) gid=0(root) groups=0(root)
该命令清空当前屏幕。
对于几乎所有命令,“-help”选项都会显示该命令的使用摘要。
$ date --help
Usage: date [OPTION]… [+FORMAT] or: date [-u|–utc|–universal] [MMDDhhmm[[CC]YY][.ss]] Display the current time in the given FORMAT, or set the system date.
此命令提供有关某个命令的一行描述。 它可以用作任何命令的快速参考。
$ whatis date
date (1) - print or set the system date and time
$ whatis whatis
whatis (1) - display manual page descriptions
“ --help”选项和“ whatis”命令未提供有关命令的详尽信息。 有关更多详细信息,Linux提供了手册页和信息页。 要查看命令的手册页,可以使用man命令。
$ man date
手册比较充分地对命令做出了说明。 它们包括以下部分:
-
NAME:命令的名称和一行描述。
-
SYNOPSIS::命令语法。
-
DESCRIPTION:有关命令功能的详细描述。
-
OPTIONS:所有命令选项的列表和说明。
-
EXAMPLES:命令用法示例。
-
FILES:与命令关联的任何文件。
-
AUTHOR:手册页的作者
-
REPORTING BUGS:您可以报告任何错误的网站或邮件ID的链接。
-
SEE ALSO:与该命令有关的任何命令,以供进一步参考。
使用-k选项,可以搜索手册页。
$ man -k gzip
gzip (1) - compress or expand files
lz (1) - gunzips and shows a listing of a gzip’d tar’d archive
tgz (1) - makes a gzip’d tar archive
uz (1) - gunzips and extracts a gzip’d tar’d archive
zforce (1) - force a ‘.gz’ extension on all gzip files
信息文档有时比手册页更为详尽。 但是对于某些命令,信息页与手册页相同。 这些就像网页一样。 内部链接位于信息页面内。 这些链接称为节点。 可以通过这些节点将信息页面从一页导航到另一页。
$ info date
=============================================================================
该命令用于切换目录。
$ cd [path-to-directory]
将当前工作目录更改为作为参数提供的目录。 如果没有为“ cd”提供参数,它将目录更改为用户的主目录。 目录路径可以是绝对路径,也可以是相对于当前目录的路径。 绝对路径始终以 / 开头。 可以使用“ pwd”命令检查当前目录:
$ pwd
/home/raghu
$ cd /usr/share/
$ pwd
/usr/share
$ cd doc
$ pwd
/usr/share/doc
在第一个“ cd”命令中,使用绝对路径(/ usr / share),在第二个命令中,使用相对路径(doc)。
该命令用于列出文件和目录。
$ ls [files-or-directories]
列出文件和/或目录。 如果未提供任何参数,则显示当前目录的内容。
$ ls
example file1.txt file2.txt file3.txt
如果将目录作为参数,则显示该目录中的文件和目录。
$ ls /usr
bin games include lib lib64 local sbin share src
“ ls -l”显示文件的详细信息。
$ ls -l
total 4
drwxr-xr-x 2 raghu raghu 4096 2012-07-06 12:52 example
-rw-r–r-- 1 raghu raghu 0 2012-07-06 12:52 file1.txt
-rw-r–r-- 1 raghu raghu 0 2012-07-06 12:52 file2.txt
-rw-r–r-- 1 raghu raghu 0 2012-07-06 12:52 file3.txt
第一个字符为’d’或’-’。 它区分文件类型。 带“-”(破折号)的条目是常规文件,带“ d”的条目是目录。 接下来的9个字符是权限(在第一个列表中为“ rwxr-xr-x”)。 权限后面的数字是链接数。 链接计数跟随用户和组所有者。 在上面的示例中,文件所有者是“ raghu”,组所有者也是“ raghu”。 接下来是文件的大小。 然后在文件(或目录)名称之前添加时间戳。
缺省情况下,不显示隐藏文件或目录,也可以使用-a选项查看隐藏文件。 Linux中的隐藏文件以点号(。)开头。 任何以句点开头的文件都是隐藏的。 因此,要隐藏文件,你只需要重命名它(并在文件名前加上句点)。
$ ls -la odesk
total 16
drwxr-xr-x 4 raghu raghu 4096 2012-07-06 13:46 .
drwxr-xr-x 11 raghu raghu 4096 2012-07-06 13:15 …
drwxr-xr-x 2 raghu raghu 4096 2012-07-06 12:52 example
-rw-r–r-- 1 raghu raghu 0 2012-07-06 12:52 file1.txt
-rw-r–r-- 1 raghu raghu 0 2012-07-06 12:52 file2.txt
-rw-r–r-- 1 raghu raghu 0 2012-07-06 12:52 file3.txt
drwxr-xr-x 2 raghu raghu 4096 2012-07-06 13:46 .hiddendir
-rw-r–r-- 1 raghu raghu 0 2012-07-06 13:46 .hiddenfile1.txt
-rw-r–r-- 1 raghu raghu 0 2012-07-06 13:46 .hiddenfile2.txt
如果要查看目录的属性而不是包含目录中的文件,使用-d(带有-l)选项:
$ ls -ld odesk/
drwxr-xr-x 4 raghu raghu 4096 2012-07-06 13:46 odesk/
=========================================================================
该命令用于创建目录。
$ mkdir example
$ ls -l
total 4
drwxr-xr-x 2 raghu raghu 4096 2012-07-06 14:09 example
该命令用于创建一个空的文件。
$ touch file1 file2 file3
$ ls -l
total 4
drwxr-xr-x 2 raghu raghu 4096 2012-07-06 14:09 example
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file1
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file2
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file3
如果文件已经存在,touch命令将更新其时间戳。 还有许多其他方法可以创建新文件,例如 使用vi或gedit之类的文本编辑器,或使用重定向。
这是使用重定向创建文件的示例:
$ ls -l /usr > usrlisting
$ ls -l
total 8
drwxr-xr-x 2 raghu raghu 4096 2012-07-06 14:09 example
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file1
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file2
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file3
-rw-r–r-- 1 raghu raghu 491 2012-07-06 14:23 usrlisting
在本示例中,创建了一个名为usrlisting的文件。
==========================================================================
该命令用于复制文件和目录。
$cp source destination
复制的是文件,
$ cp usrlisting listing_copy.txt
$ ls -l
total 12
drwxr-xr-x 2 raghu raghu 4096 2012-07-06 14:09 example
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file1
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file2
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file3
-rw-r–r-- 1 raghu raghu 491 2012-07-06 16:02 listing_copy.txt
-rw-r–r-- 1 raghu raghu 491 2012-07-06 14:23 usrlisting
如果目标是目录,则将文件以其原始名称复制到该目录中。
$ cp listing_copy.txt example/
$ ls -l example/
total 4
-rw-r–r-- 1 raghu raghu 491 2012-07-06 16:07 listing_copy.txt
也可以复制多个文件,但是在这种情况下,最后一个参数应该是要复制所有文件的目录。 其余参数将被视为文件名。
$ cp file1 file2 example/
$ ls -l example/
total 4
-rw-r–r-- 1 raghu raghu 0 2012-07-06 16:10 file1
-rw-r–r-- 1 raghu raghu 0 2012-07-06 16:10 file2
-rw-r–r-- 1 raghu raghu 491 2012-07-06 16:07 listing_copy.txt
如果要复制目录,则必须使用其中包含的文件递归复制它。 要递归复制目录,需要在“ cp”命令中使用-r选项:
$ cp -r example /tmp/expertslogin/
$ ls -l /tmp/expertslogin
total 4
drwxr-xr-x 2 raghu raghu 4096 2012-07-06 16:12 example
该命令用于移动文件或目录。
$ mv source destination
移动文件或目录。 “ mv”命令的工作方式类似于“ cp”命令,不同之处在于移动时原始文件已删除。 而且,可以使用mv命令重命名文件(或目录)。
$ mv listing_copy.txt usrcopy
$ ls -l
total 12
drwxr-xr-x 2 raghu raghu 4096 2012-07-06 16:10 example
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file1
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file2
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file3
-rw-r–r-- 1 raghu raghu 491 2012-07-06 16:02 usrcopy
-rw-r–r-- 1 raghu raghu 491 2012-07-06 14:23 usrlisting
在这里,“ listing_copy.txt”以名称“ usrcopy”移动到同一目录中(或者可以说它已被重命名)。
- ‘rmdir’ 命令删除所有空目录
$ rmdir
但是如果其中存在文件,则无法删除该目录。 要使用“ rmdir”命令,必须首先删除要删除的目录(可能还有目录,如果有)中的所有文件。
- ‘rm’ 命令用于删除文件和目录
$ rm files|directories
必须使用-r选项以递归方式删除目录。
$ rm file2
$ rm -r example/
$ ls -l
total 8
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file1
-rw-r–r-- 1 raghu raghu 0 2012-07-06 14:20 file3
-rw-r–r-- 1 raghu raghu 491 2012-07-06 16:02 usrcopy
-rw-r–r-- 1 raghu raghu 491 2012-07-06 14:23 usrlisting
在这里,首先删除名为“ file2”的文件,然后递归删除目录“ example”。 可以在“ ls -l”命令的输出中看到,这两个不再存在。
=========================================================================
file命令确定给定文件的文件类型。
$ file /etc/passwd
/etc/passwd: ASCII text
可以提供一个或多个文件作为file命令的参数。
$ file td.c td.out ARP.java Screenshot.png StringTokenizing.class
idl.rar List.pdf
td.c: ASCII C program text, with CRLF line terminators
td.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped
ARP.java: ASCII Java program text, with CRLF line terminators
Screenshot.png: PNG image data, 1366 x 768, 8-bit/color RGB, non-interlaced
StringTokenizing.class: compiled Java class data, version 50.0 (Java 1.6)
idl.rar: RAR archive data, v1d, os: Win32
List.pdf: PDF document, version 1.4
该命令用于检查文件的状态。
这比“ ls -l”输出提供了有关文件的更多详细信息。
$ stat usrcopy
File: `usrcopy’
Size: 491 Blocks: 8 IO Block: 4096 regular file
Device: 808h/2056d Inode: 149452 Links: 1
Access: (0644/-rw-r–r–) Uid: ( 1000/ raghu) Gid: ( 1000/ raghu)
Access: 2012-07-06 16:07:06.413522009 +0530
Modify: 2012-07-06 16:02:30.204152386 +0530
Change: 2012-07-06 16:17:18.992559654 +0530
“ cat”命令实际上是连接器,但可用于查看文件的内容。
$ cat /etc/passwd
root❌0:0:root:/root:/bin/bash
daemon❌1:1:daemon:/usr/sbin:/bin/sh
bin❌2:2:bin:/bin:/bin/sh
sys❌3:3:sys:/dev:/bin/sh
sync❌4:65534:sync:/bin:/bin/sync
games❌5:60:games:/usr/games:/bin/sh
cat命令将文件整体列出。 但是,如果文件足够大以适合一个屏幕,那么我们将只能看到文件的最后一页。 命令’less’ 和’more’ 一次显示一个文件。 因此,它们也称为pagers。 可以使用箭头键浏览文件。 要退出pagers,按“ q”。
显示文件的前几行。 默认情况下,“ head”命令显示文件的前10行。 但是,使用-n选项,可以指定要查看的行数。
$ head /etc/passwd
root❌0:0:root:/root:/bin/bash
daemon❌1:1:daemon:/usr/sbin:/bin/sh
bin❌2:2:bin:/bin:/bin/sh
sys❌3:3:sys:/dev:/bin/sh
sync❌4:65534:sync:/bin:/bin/sync
games❌5:60:games:/usr/games:/bin/sh
man❌6:12👨/var/cache/man:/bin/sh
lp❌7:7:lp:/var/spool/lpd:/bin/sh
mail❌8:8:mail:/var/mail:/bin/sh
news❌9:9:news:/var/spool/news:/bin/sh
类似于“头”; 默认情况下,“ tail”命令显示最后10行,并且-n选项也可用。
$ tail -n 4 /etc/passwd
raghu❌1000:1000:Raghu Sharma,:/home/raghu:/bin/bash
sshd❌113:65534::/var/run/sshd:/usr/sbin/nologin
dictd❌114:123:Dictd Server,:/var/lib/dictd:/bin/false
mysql❌115:124:MySQL Server,:/nonexistent:/bin/false
此命令对输入的行,单词和字母进行计数。
$ wc /etc/passwd
35 57 1698 /etc/passwd
/ etc / passwd文件中包含35行,57个单词和1698个字母。
“ grep”命令可在文件(或标准输入)中搜索模式。 它支持正则表达式。 如果与该行中的模式匹配,则返回该行。 因此,如果我们希望找到包含“ nologin”一词的行,可以使用“ grep”,如下所示:
$ grep nologin /etc/passwd
sshd❌113:65534::/var/run/sshd:/usr/sbin/nologin
ln命令在Linux中用于创建链接。 链接是指向其他文件的一种快捷方式。
$ ln TARGET LINK_NAME
链接有两种类型,软链接和硬链接。 默认情况下,将创建硬链接。 如果要创建软链接,请使用-s选项。 在此示例中,为文件usrlisting创建了两种类型的链接。
$ ln usrlisting hard_link
$ ln -s usrlisting soft_link