Linux常用命令 1. Linux下有两种用户:超级用户(root)、普通用户。 2. 添加用户。 3. 设置密码 4. 查看文件或目录 5. 改变工作目录。 6. 显示当前工作目录。 7. 创建目录 8. 删除目录 9. 拷贝文件或目录 10. 移动文件或目录。 11. 删除文件或目录 12.查看文件内容 13.显示文件内容的前几行 14. 显示文件的后几行 15.管道与命令替换 16.文件或目录的创建掩码 17.改变目录或文件的权限 18.文件查找 19.搜索文件内容grep 20. 文档管理 21.文件压缩解压

a) 超级用户:可以再linux系统下做任何事情,不受限制。

b) 普通用户:在linux下做有限的事情。

超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

命令:su  [用户名] 

功能:切换用户。

例如,要从root用户切换到普通用户user,则使用 su user

要从普通用户user切换到root用户则使用 su rootroot可以省略),此时系统会提示输入root用户的口令。

2. 添加用户。

命令:useradd 用户名

功能:添加一个普通用户。

例如,要想添加一个普通用户user1 , 则可以使用

useradd  user1。使用该命令后,系统会在 目录“/home”下建立一个名为 user1 的目录。

3. 设置密码

命令:passwd 用户名

功能:设置或修改用户名的密码。

例如,我们要给刚才创建的user1用户设置一个密码123456,则使用 passwd user1,然后系统会提示你输入新密码。

4. 查看文件或目录

命令:ls [选项] [目录或文件]

功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。Linux文件系统不是根据后缀名来执行文件的,而是根据此文件是否有可执行权限。

常用的选项有:

-a  显示指定目录下所有子目录与文件。例如 列出“/root/home”目录下的所有子目录及文件,则使用 

ls –a  /root/home 。

 -l  列出指定目录下所有目录及文件的详细信息。例如 列出“/root/home”目录下的所有子目录及文件,则使用 

ls  –l  /root/home 。每行列出的详细信息依次是:

文件类型与权限 连接数 文件所有者 文件所属组 文件大小 最近修改时间 文件名字。

使用ls –l 命令显示的信息中 ,开头是由10个字母构成的字符串,其中第一个字符表示文件类型,它可以是下列类型之一:

- :普通文件

d : 目录

l :符号链接

b :块设备文件

c :字符设备文件

p :命名管道

s :socket文件

后面的9个字符表示文件的访问权限,分为3组,每组3位。

第一组表示文件创建者的权限,第二组表示同组用户的权限,第三组表示其他用户的权限。每一组的三个字符分别表示对文件的读、写、执行权限。

各权限如下:r(读)、w(写)、x(执行)、_(没有设置权限)。每一组可以用一个数字表示,例如 r_x : 5 , rw_:6

r__:4,那么这三组就可以用3个数字表示,例如rwxr_xr_x:755  , rw_r__r__:644。

ls输出内容是有颜色的,比如:目录是蓝色,压缩文件是红色的显示,如果没有颜色,可以加上参数--color=never 表示输出没有彩色,而--color=auto 表示自动,--color=always表示始终有颜色。

如果需要更加详细的参数描述,可以通过如下方式获得ls的帮助:man  ls

5. 改变工作目录。

命令:cd 目录名

功能:改变工作目录。将当前工作目录改变到指定的目录下,例如要切换当前目录到“/home/user/0718”目录,则使用

cd  /home/user/0718。

常用的切换目录命令:

cd .. 到父目录

cd / 到根目录
cd ~ 到用户主目录下~ 与直接执行cd 效果一样

cd – 到上一次目录

6. 显示当前工作目录。

命令 : pwd

功能 : 显示用户当前所在的目录。例如当我们使用命令

cd  /home/user/0718 时,再使用命令 pwd 则命令行会显示

/home/user/0718。

7. 创建目录

命令:mkdir [选项] dirname

功能:在当前目录下创建一个名为 “dirname”的目录。例如要在当前目录下创建一个名为“07181”的目录,则使用命令

mkdir 07181。系统就会在当前目录下,创建一个07181的目录,此时可以使用 ls –l 查看。

8. 删除目录

命令:rmdir [选项] dirname

功能:在当前工作目录下删除目录名为“dirname”的子目录。此时该子目录必须是个空目录。我们刚才创建了一个空目录07181,如果我们想把它删掉,则使用 rmdir 07181 。此时再使用ls –l 列举一下,这时发现07181 已经被删掉了。如果使用该命令删除一个非空的目录,则删除失败。

9. 拷贝文件或目录

命令cp [选项] 源文件或目录 目标文件或目录

功能:把指定的源文件复制到目标文件或把多个源文件复制到目标目录中。

常用参数:

-f  若目标目录中存在与源文件同名的文件,则直接覆盖,不提示。例如将当前目录下的main.c文件拷贝到“/home/user/0718”下,并且若存在同名的则进行覆盖,使用:

cp –f ./main.c  /home/user/0718 。

如果在拷贝的同时将源文件重命名,例如将当前目录下的main.c文件拷贝到“/home/user/0718”目录下并命名为main1.c,则使用:

 cp  –f  ./main.c  /home/user/0718/main1.c。

 -i 和-f相反,当目标文件中存在于源文件同名的文件,copy时系统会提示是否进行覆盖。里如上例,若在拷贝过程中,目标文件中存在与源文件同名的文件,需要提示是否覆盖,则只需要将上例中的-f 改为 –I 即可。例如

cp  –i  ./main.c  /home/user/0718 。

cp  –i  ./main.c  /home/user/0718/main1.c。

-r 如果要拷贝的是一个目录,此时将同时拷贝该目录下的子目录和文件。此时目标文件必须为一个目录。例如,将”/home/user/0718”目录下的所有文件及目录拷贝到“/home/user1”目录下,则使用 

cp  –r  /home/user/0718  /home/user1 。

10. 移动文件或目录。

命令:mv [选项] 源文件或目录 目标文件或目录

功能:视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。

参数:

-i 如果在移动的过程中存在重名的,则进行提示是否覆盖。

-f 若果在移动的过程中存在重名的,则直接进行覆盖,不会给出提示。

例如 要将 “/home/user/0718”下的main.c 文件重命名为main.cpp,则使用 

mv  /home/user/0718/main.c   /home/user/0718/main.cpp。

要将“/home/user/0718”下的所有内容移动到 “/home/user/0719”,则使用

mv  –f  /home/user/0718  /home/user/0719。

11. 删除文件或目录

命令:rm [选项] 文件或目录

功能:在linux中创建文件很容易,系统中随时会有文件变得过时且毫无用处。用户可以用rm命令将其删除。该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。如果删除时没有-r选项则不会杀出目录。

参数:

-f 删除过程中不会给出提示。

-i 删除过程中会给出交互式提示。

-r 如果删除的是一个目录,则将该目录下的目录及子目录均删除掉。

例如要删除 “/home/user/0718”目录下的main.cc  main.exe

则使用,

rm  -f  /home/user/0718/main.cc  /home/user/0718/main.exe 

 若果要删除“/home/user/0718”这个目录,则使用

rm  –rf  /home/user/0718。

12.查看文件内容

命令: cat [选项] [文件]

功能: 查看目标文件的内容

参数:

-b 对非空输出行编号

-E 在每行结束处显示$

-n 对输出的所有行编号

-s 不输出多行空行。

例如 要查看当前目录下的main.cc 的内容

则使用,cat  main.cc。

标准的输入输出与重定向:

文件描述符是一个整数,它代表一个打开的文件,标准的三个描述符号:

标准输入:一般指键盘,描述符为:0

标准输出:一般指屏幕输出,描述符为:1

错误输出:也是屏幕,描述符为:2

重定向符号:

<重定向输入 、 >重定向输出 、 >>添加输出 、 2>错误重定向 、 &>错误和信息重定向

cat常常与重定向一起使用。其中>表示创建,>>表示追加,<<表示以什么结束

如果cat的命令行中没有参数,它就会从标准输入中读取数据,并将其送到标准输出。

linux中创建空文件的四种方式:

方式1: echo > a.txt(好像会有一个字节)

方式2: touch b.txt

方式3: cat > c.txt 按ctrl+c组合键退出;或Ctrl+d

方式4: vim d.txt 进入之后:wq退出。

13.显示文件内容的前几行

命令:head –n 行数值 文件名

功能:显示目标文件的前几行。

例如 要显示 当前目录下main.cc 的前10行,则使用

head –n  10 main.cc。

14 显示文件的后几行

命令: tail –n 行数值 文件名。

功能:显示目标文件的最后几行。

例如 要显示“/home/user/0718/”目录下的main.cc 文件的最后10行。则使用 tail  –n  10  /home/user/0718/main.cc。

15.管道与命令替换

管道:是重定向的一种,就像一个导管一样,将一个程序或命令的输出作为另一个程序或命令的输入。eg: #ls –l /etc | wc –w

命令替换:和重定向有点相似,但区别在于命令替换是将一个命令的输出作为另一个命令的参数。常用的格式为 : command1 `command2`command1 $(command2)

举例:

首先列出当前的所有信息,并重定向到aa文件中:

#ls | cat > aa 或ls > aa

然后,通过命令替换,列出aa文件中所有的文件信息

#ls –l `cat aa` 或者用 ls –l $(cat aa)

 

16.文件或目录的创建掩码

umask指文件(0666)或目录(0777)创建时在全部权限中要去掉的一些权限,普通用户缺省时umask的值为002,超级用户为022

002表示创建目录时所有者的权限不去掉, 所属组权限不去掉,其他组权限写属性去掉

创建一文件以后,普通用户缺省的权限为664                   超级用户:  644

创建一目录以后,普通用户缺省的权限为775                   超级用户:  755

可以通过umask查看默认的缺省的掩码值。通过umask 001修改掩码值。

17.改变目录或文件的权限

功能:chmod命令是非常重要的,用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。
语法:该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。

说明:我们利用ls –l长格式列出文件或目录的基本信息如下:

文件类型与权限 链接数 文件所有者 文件属组 文件大小 最近修改的时间 名字

对于权限,有第一组表示文件所有者的权限,第二组表示同组用户的权限,第三组表示其他用户的权限。每一组的三个字符分别表示对文件的读、写和执行权限。可以通过chmod来修改权限。

1. 文字设定法
chmod [who][+|-|=][mode] 文件名 //修改指定文件名中who的权限增加/去除/赋值为mode

参数:
操作对象who可是下述字母中的任一个或者它们的组合:
表示用户(user,即文件或目录的所有者。
表示同组(group)用户,即与文件所有者有相同组ID的所有用户。
表示其他(others)用户
表示所有(all)用户。它是系统默认值。chmod +x 1.c表示所有人都有可执行的权限。
操作符号可以是:
添加某个权限。
 取消某个权限。
 赋予给定权限并取消其他所有权限(如果有的话)。

设置mode所表示的权限可用下述字母的任意组合(当组合的时候,who不能少)
  可读
  可写
  可执行
文件名:以空格分开的要改变权限的文件列表,支持通配符。
在一个命令行中可给出多个权限方式,其间用逗号隔开。例如:chmod g+ro+r example使同组和其他用户对文件example 有读权限。

2. 数字设定法
我们必须首先了解用数字表示的属性的含义:0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,然后将其相加。所以数字属性的格式应为3个从07的八进制数,其顺序是(u)(g)(o)。
例如,如果想让某个文件的所有者有"/"二种权限,需要把4(可读)+2(可写)=6(读/).

数字设定法的一般形式为:chmod [mode] 文件名
  例子:
  (1)文字设定法:
  例1$ chmod a+x sort
  即设定文件sort的属性为:
  文件所有者(u) 增加执行权限
  与文件所有者同组用户(g) 增加执行权限
  其他用户(o) 增加执行权限
  例2chmod ug+wo-x text
  即设定文件text的属性为:
  文件所有者(u) 增加写权限
  与文件所有者同组用户(g) 增加写权限
  其他用户(o) 删除执行权限
  例3:$ chmod a–x mm.txt
  $ chmod –x mm.txt
  $ chmod ugo–x mm.txt
  以上这三个命令都是将文件mm.txt的执行权限删除,它设定的对象为所有使用者。
  (2)数字设定法:
  例1: chmod 644 mm.txt
  $ ls –l
  即设定文件mm.txt的属性为:
  -rw-r--r-- 1 inin users 1155 Nov 5 11:22 mm.txt
  文件所有者(uinin 拥有读、写权限
  与文件所有者同组人用户(g) 拥有读权限
  其他人(o) 拥有读权限
  例2: $ chmod 750 wch.txt
  $ ls –l
  -rwxr-x--- 1 inin users 44137 Nov 12 9:22 wchtxt
  即设定wchtxt这个文件的属性为:
  文件主本人(uinin 可读/可写/可执行权
  与文件主同组人(g) 可读/可执行权
  其他人(o) 没有任何权限

18.文件查找

命令:find 起始目录 查找条件 操作

功能:在指定目录结构中搜索问价,并执行指定的操作。

该命令的查找条件可以是一个逻辑运算符notandor组成的复合条件。

(1) and:逻辑与,在命令中用-a表示,表示只有当所给的条件都满足时,查找条件才满足。例如在 “/home/user”目录下查找名为0718 类型是一个目录的文件。则使用

find  /home/user –name  0718  –a  -type  d

(2) or:逻辑或,在命令中用-o表示,表示只要所给的条有一个满足,查找条件就满足。例如在“/home/user”目录下查找名字为main.cc 或名字为 main.c的文件。则使用

find  /home/user  -name main.cc  -o  -name main.c。

(3) not:逻辑非,在命令中用!表示查找不满足所给条件的文件。例如在“/home/user“下查找名字不是main.c的文件,则使用

find  /home/user  ! –name main.cc 。     

常用的查找条件有:

(1) 根据名称和文件属性查找。

-name ’字串’ 查找文件名匹配所给字串的所有文件,字串内可用通配符*?[ ]
 -gid n 查找属于ID号为n的用户组的所有文件。
 -uid n 查找属于ID号为n的用户的所有文件。
 -group ’字串’ 查找属于用户组名为所给字串的所有的文件。 
 -user ’字串’ 查找属于用户名为所给字串的所有的文件。
 -empty 查找大小为0的目录或文件。
 -perm 权限 查找具有指定权限的文件和目录,权限的表示可以如711644。 
 -size n[bckw] 查找指定文件大小的文件,n后面的字符表示单位,缺省为b,代表512字节的块。
 -type x 查找类型为x的文件,x为下列字符之一:
  块设备文件 
  字符设备文件
  目录文件 
  命名管道(FIFO) 
  普通文件
  符号链接文件(symbolic links
  s socket文件

(2) 根据时间查找

- amin  n 查找n分钟以前被访问过的所有文件。+表示n分钟之前,-或者不写表示n分钟之内
- cmin  n 查找n分钟以前文件状态被修改过的所有文件。
- mmin  n 查找n分钟以前文件内容被修改过的所有文件。
- atime n 查找n天以前被访问过的所有文件。
- ctime n 查找n天以前文件状态被修改过的所有文件。
- mtime n 查找n天以前文件内容被修改过的所有文件。

(3) 可执行的操作。

- exec 命令名称 {}   :对符合条件的文件执行所给的Linux 命令,而不询问用户是否需要执行该命令。{}表示命令的参数即为所找到的文件;命令的末尾必须以“ ;”结束。

例如,在“/home/user“目录下查找名为main.c文件并显示这些文件的详细信息,则使用

find  /home/user –name  main.c  -exec ls –l {}  ;
 - ok 命令名称 { }   :对符合条件的文件执行所给的Linux 命令,与exec不同的是,它会询问用户是否需要执行该命令

19.搜索文件内容grep

命令:grep [选项][查找模式][文件名1,文件名2…]

功能:grep过滤器查找指定字符模式的文件,并显示含有此模式的所有行。被寻找的模式称为正则表达式。

常用的一些正则表达式

^  :以什么开头 ,例如 ls –l  |  grep ^d  显示当前目录下的所有子目录的详细信息。

   $ :以什么结尾 。例如 ls  –l  |  grep  c$ 显示当前目录下以c结尾的文件。

常用的参数:

-E 每个模式作为一个扩展的正则表达式对待。

-F 每个模式作为固定的字符串对待

-c  只显示匹配行的数量。

-i  比较式不区分大小写。

-n 在输出前加上匹配串所在的行号。

20. 文档管理

命令:tar [主选项+辅选项] 目标文档 源文件或目录  

功能:tar可以为文件和目录创建档案。利用tar,用户可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上创建档案, 现在,用户可以在任何设备上创建档案,如软盘。

利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。

   常用参数:

c:创建新的档案文件。

r: 要把存档的文件追加到档案文件的末尾。

x:从档案文件中释放文件。

f:使用档案文件或设备。

v:在归档过程中显示处理的文件。

z:用gzip来压缩/解压缩文件,后缀名为.gz,加上该选项后可以将档案文件进行压缩。

例如,把“/home/user/0718”下的所有后缀为.c 的归档到source.tar,则使用 tar  cvf source.tar  /home/user/0718/*.c

若果在归档的过程中还要进行压缩,则使用

tar  czvf source.tar.gz  /home/user/0718/*.c。

如果要将归档的文件source.tar释放掉,则使用

tar  xvf  source.tar

若果将归档后的压缩文件释放掉,则使用

 tar  xzvf  source.tar.gz。

21.文件压缩解压

命令:gzip/bzip2  [选项]压缩或解压缩的文件名 

功能:gzip用来将文件压缩成后缀为.gz的压缩文件,或者将后缀为.gz的文件进行解压。Bzip2用来将文件压缩成后缀名为.bz2的压缩文件,或者将后缀为.bz2的压缩文件解压。

 常用参数:

-d: 将压缩文件进行解压。

-v: 在压缩或解压过程中显示解压或压缩的文件。

 例如,将main.c 进行压缩,则使用

gzip/bzip2 –v  main.c。

则就会将main.c 压缩成 main.c.gz 或者 main.c.bz2 。

如果将刚才的压缩文件解压,则使用

gzip  –dv  main.c.gz,或者 bzip2 –dv  main.c.bz2。