Linux命令全训练

一、实验目的

为后续上机实验做准备,熟悉常用的Linux操作。

二、实验平台

操作系统:Ubuntu14.04

三、实验内容和要求

1、Linux系统中的常用快捷键

Tab 自动补全
上下箭头 显示历史命令
Ctrl+a 光标移动到开始位置
Ctrl+c 终止进程/命令
Ctrl+e 光标移动到最末尾
Ctrl+k 删除此处至末尾的所有内容
Ctrl+u 删除此处至开始的所有内容
Ctrl+d 删除当前字符
Ctrl+h 删除当前字符前一个字符
Ctrl+w 删除此处到左边的单词
Ctrl+y 粘贴由Ctrl+u, Ctrl+d, Ctrl+w删除的单词
Ctrl+l 相当于clear,即清屏
Ctrl+b 向回移动光标
Ctrl+f 向前移动光标
Ctrl+t 将光标位置的字符和前一个字符进行位置交换
Ctrl+& 恢复 ctrl+h 或者 ctrl+d 或者 ctrl+w 删除的内容
Ctrl+S 暂停屏幕输出
Ctrl+Q 继续屏幕输出
Ctrl+p 向上显示缓存命令
Ctrl+n 向下显示缓存命令
Shift+Ctrl+C 复制
Shift+Ctrl+V 粘贴

2、cd命令:切换目录

(1)切换到指定目录

  1. # 切换到目录/usr/local,注意/usr/local是绝对路径,绝对路径是以“/”开头的
  2. cd /usr/local
  3. # 你当然也可以使用相对路径,但是要确保先进入上一级目录,才可以正确的切换到该目录下的某个路径,也就是相对当前路径下的路径,相对路径和绝对路径的区别是什么?思考一下。
  4. cd /usr
  5. cd local

(2)切换到当前目录的上层目录

  1. cd /home/hadoop
  2. cd ..

(3)从当前目录向上级返回两层

  1. cd /home/hadoop
  2. cd ../../

(4)切换到当前目录的上一个目录,不同于上层目录哦,体会一下

  1. cd /usr/local
  2. cd /home
  3. cd -

(5)从任何目录返回到当前用户的home目录

  1. cd ~
  2. ls

(6)切换到整个文件系统的根目录
用ls命令显示当前目录下的内容,对比一下当前用户的home目录和系统根目录有什么不同?

  1. cd /
  2. ls

3、ls命令:查看文件与目录

命令格式:ls [选项] [文件名]
主要选项参数如下:

  1. -a:全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
  2. -A:全部的文件,连同隐藏文件,但不包括 . 与 .. 这两个目录
  3. -d:仅列出目录本身,而不是列出目录内的文件数据(常用)
  4. -f:直接列出结果,而不进行排序 (ls 默认会以文件名排序!)
  5. -F:根据文件、目录等信息,给予附加数据结构,例如: *:代表可可执行文件; /:代表目录; =:代表 socket 文件; |:代表 FIFO 文件;
  6. -h:将文件大小以人类较易读的方式(例如 GB, KB 等等)列出来;
  7. -i:列出 inode 号码;
  8. -l:长数据串行出,包含文件的属性与权限等等数据;(常用)
  9. -r:将排序结果反向输出,例如:原本文件名由小到大,反向则为由大到小;
  10. -R:连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来;
  11. -S:以文件大小大小排序,而不是用文件名排序;
  12. -t:依时间排序,而不是用文件名。

       我们主要练习以下几个常用的ls命令,你也可以自己使用上述参数进行练习。
(7)不跟任何选项与目录,表示列举当前目录的文件信息

  1. cd /usr/local/hadoop
  2. ls

(8)使用长格式列举文件和目录信息

  1. ls -l # 注意是字母L的小写

(9)列出所有文件,包括隐藏文件,在linux下,用’.’开头的表示隐藏文件:

  1. ls -a
  2. ls -A # 跟ls -a结果差不多,只不过-A不包括 . 和 ..
  3. ls -al # 多个选项也可以组合

(10)ls -F 如果是目录,会加上反斜线

  1. ls -alF

(11)ls -d 列举目录本身信息,而不是查看目录下的文件信息

  1. ls -ld

4、mkdir命令:新建新目录

命令格式:mkdir [选项] [目录]
主要选项参数如下:

  • -m:—mode=模式,设定权限<模式>
  • -p:—parents 递归创建目录
  • -v:—verbose 每次创建新目录都显示信息

常用的mkdir命令:
(12)进入/tmp目录,创建一个名为a的目录,并查看有多少目录存在

  1. cd /tmp
  2. mkdir a
  3. ls -al

(13)创建目录a1/a2/a3/a4

  1. mkdir -p a1/a2/a3/a4
  2. # 使用ls命令可以查看到新建的a1目录,那如何查看a2、a3、a4目录呢?自己思考一下
  3. ls -al

(14)创建目录mydir并显示信息

  1. mkdir -v mydir

(15)创建权限为777的目录,也可以是其他权限,详见下面的小贴士

  1. mkdir -m 777 abc
  2. # 执行ls -al命令时,可以看到每个目录或文件前,都有一串类似“rwxrwxrwx”或者“rwxrw-r-x”的字符,那么这串字符是什么意思呢?详见下面的小贴士。
  3. ls -al


help4.pnguploading.4e448015.gif转存失败重新上传取消 小贴士:关于Linux系统的777权限
       Linux/Unix 的文件存取权限分为三级 : 文件拥有者(Owner)、群组(Group)、其他(Other)。通常用一个九位的字符串来依次表示Owner、Group和Other的文件操作权限,如rwxrwxrwx。从左至右,1-3位字符代表文件所有者的权限,4-6位字符代表同组用户的权限,7-9字符代表其他用户的权限。而具体的权限是由数字来表示的,读取的权限等于4,用r表示;写入的权限等于2,用w表示;执行的权限等于1,用x表示。通过4、2、1的组合,得到以下几种权限:0(没有权限);4(读取权限);5(4+1 | 读取+执行);6(4+2 | 读取+写入);7(4+2+1 | 读取+写入+执行)。

       以755为例:
       (1)1-3位7等于4+2+1,rwx,所有者(Owner)具有读取、写入、执行权限;
       (2)4-6位5等于4+1+0,r-x,同组用户(group)具有读取、执行权限但没有写入权限;
       (3)7-9位5,同上,也是r-x,其他用户(Other)具有读取、执行权限但没有写入权限。

5、rmdir命令:删除空的目录

命令格式:rmdir [选项] [目录]
主要选项参数如下:

  • -p:递归删除目录dirname, 当子目录删除后其父目录为空时,也一同被删除。如果整个路径被删除或者由于某种原因保留部分路径,则系统在标准输出上显示相应的信息。
  • -v:—verbose  显示指令执行过程

常用的rmdir命令:
(16)将上例创建的目录a(/tmp下面)删除

  1. rmdir a

(17)删除目录a1/a2/a3/a4,查看有多少目录存在

  1. rmdir -p a1/a2/a3/a4
  2. ls -al

6、cp命令:复制文件或目录

命令格式:cp [选项] 源文件或目录 目标文件或目录
主要选项参数如下:

  • -a :该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,其作用等于dpR选项的组合。
  • -d :拷贝时保留链接。
  • -f :删除已经存在的目标文件而不提示。
  • -i :和f选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。
  • -p :此时cp除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。
  • -r :若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。
  • -l :不作拷贝,只是链接文件。

常用的cp命令:

(18)将主文件夹下的.bashrc复制到/usr下,命名为bashrc1

  1. cp ~/.bashrc /usr/bashrc1
  2. cd /usr
  3. ls -al

(19)在/tmp下新建目录test,再复制这个目录内容到/usr

  1. cd /tmp
  2. mkdir test
  3. cp -r /tmp/test /usr

7、mv命令:移动文件与目录,或更名

命令格式:mv [选项] 源文件或目录 目标文件或目录
主要选项参数如下:

  • -b :若需覆盖文件,则覆盖前先行备份。
  • -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
  • -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
  • -u :若目标文件已经存在,且 source 比较新,才会更新(update)

常用的mv命令:
(20)将上例文件bashrc1移动到目录/usr/test

  1. mv /usr/bashrc1 /usr/test

(21)将上例test目录重命名为test2

  1. mv /usr/test /usr/test2

8、rm命令:移除文件或目录

命令格式:rm [选项] 文件或目录
主要选项参数如下:

  • -d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
  • -f:强制删除文件或目录;
  • -i:删除已有文件或目录之前先询问用户;
  • -r或-R:递归处理,将指定目录下的所有文件与子目录一并处理

常用的rm命令:
(22)将上例复制的bashrc1文件删除

  1. rm /usr/test2/bashrc1

(23)将上例的test2目录删除

  1. rm -r /usr/test2

9、cat命令:查看文件内容

命令格式:cat [选项] 文件名
主要选项参数如下:

  • -n :由 1 开始对所有输出的行数编号
  • -b :-n 相似,只不过对于空白行不编号
  • -s :当遇到有连续两行以上的空白行,就代换为一行的空白行

常用的cat命令:

(24)查看主文件夹下的.bashrc文件内容

  1. cat ~/.bashrc
  2. cat -n ~/.bashrc

10、tac命令:反向列示文件内容

命令格式:tac [选项] 文件名

(25)反向查看主文件夹下.bashrc文件内容

  1. # tac实际上是cat反过来写对吗?看看运行结果是什么样的吧
  2. tac ~/.bashrc

11、more命令:一页一页翻动查看,只能向后翻页

命令格式:more 文件名
(26)翻页查看主文件夹下.bashrc文件内容

  1. # 使用空格或回车键翻页
  2. more ~/.bashrc
  3. # more还可以配合管道符“|”(pipe)使用
  4. ls -al | more

12、less命令:一页一页翻动查看,可以前后翻页

命令格式:less 文件名
(27)翻页查看主文件夹下.bashrc文件内容

  1. # 可以使用【pageup】和【pagedown】键进行前翻页和后翻页
  2. less ~/.bashrc
  3. # less还有一个功能,可以在文件中进行搜索你想找的内容,假设你想在passwd文件中查找有没有config字符串,那么你可以在打开文件内容之后,输入以下命令
  4. /weblogic
  5. # 退出查看文件状态,按字母“Q”键即可

13、head命令:取出前面几行

命令格式:head -n number 文件名
(28)查看主文件夹下.bashrc文件内容前20行

  1. head -n 20 ~/.bashrc

(29)查看主文件夹下.bashrc文件内容,后面50行不显示,只显示前面几行

  1. # 如果在number前面加减号,则不显示文件最后相应的行数
  2. head -n -50 ~/.bashrc

14、tail命令:取出后面几行

命令格式:tail -n number 文件名
(30)查看主文件夹下.bashrc文件内容最后20行

  1. tail -n 20 ~/.bashrc

(31) 查看主文件夹下.bashrc文件内容,只列出50行以后的数据

  1. # 如果在number前面加加号,则不显示文件最前面相应的行数
  2. tail -n +50 ~/.bashrc

15、touch命令:修改文件时间或创建新文件

命令格式:touch 【选项】 文件名
主要选项参数如下:

  • -a: 只更改访问时间
  • -d: 使用指定字符串表示时间而非当前时间
  • -m : 只更改修改时间
  • -t STAMP: 使用[[CC]YY]MMDDhhmm[.ss] 格式的时间而非当前时间

常用的touch命令:
(32)在/tmp下创建一个空文件hello并查看时间

  1. cd /tmp
  2. touch hello
  3. ls -l hello

(33)修改hello文件,将日期调整为5天前

  1. touch -d "5 days ago" hello

16、chown命令:修改文件所有者权限

命令格式:chown 【选项】 user[:group] 文件名
主要选项参数如下:

  • -c : 若该文件拥有者确实已经更改,才显示其更改动作
  • -f : 若该文件拥有者无法被更改也不要显示错误讯息
  • -h : 只对于连结(link)进行变更,而非该 link 真正指向的文件
  • -v : 显示拥有者变更的详细资料
  • -R : 对目前目录下的所有文件与子目录进行相同的拥有者变更(即以递回的方式逐个变更)

常用的chown命令:
(34)将hello文件所有者改为root帐号,并查看属性

  1. chown root /tmp/hello
  2. ls -l /tmp/hello

17、find命令:文件查找

命令格式:find 目录 【选项】
主要选项参数如下:

  • -name 按照文件名查找文件
  • -perm 按照文件权限来查找文件
  • -user 按照文件属主来查找文件
  • -group 按照文件所属的组来查找文件

常用的find命令:
(35)找出主文件夹下文件名为.bashrc的文件

  1. # 运行结果会返回文件所在目录以及文件名
  2. find ~ -name .bashrc

18、tar命令:压缩命令

命令格式:tar [主选项+辅选项] 文件或目录
主要选项参数如下:
主选项参数:

  • -c 创建新的文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。
  • -r 把要存档的文件追加到文件的未尾。例如用户已经做好备份文件,又发现还有一个目录或是一些文件忘记备份了,这时可以使用该选项,将忘记的目录或文件追加到备份文件中。
  • -t 列出文件的内容,查看已经备份了哪些文件。
  • -u 更新文件。就是说,用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。
  • -x 从文件中释放文件,也就是解压缩。

辅选项参数:

  • -b 该选项是为磁带机设定的,其后跟一数字,用来说明区块的大小,系统预设值为20(20×512 bytes)。
  • -f 指定档案文件名或设备名,这个选项通常是必选的。
  • -k 保存已经存在的文件。例如把某个文件还原,在还原的过程中遇到相同的文件,不会进行覆盖。
  • -m 在还原文件时,把所有文件的修改时间设定为现在。
  • -M 创建多卷的档案文件,以便在几个磁盘中存放。
  • -v 详细报告tar处理的文件信息。如无此选项,tar不报告文件信息。
  • -w 每一步都要求确认。
  • -z 用gzip来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。

常用的tar命令:

(36)在/目录下新建文件夹test,然后在“/”目录下打包成test.tar.gz

  1. mkdir /test #在/目录下新建文件夹test
  2. cd / # 进入“/”目录
  3. tar -zcv -f /test.tar.gz test #打包test子目录

(37)解压缩到/tmp目录

  1. tar -zxv -f /test.tar.gz -C /tmp
  2. cd /tmp
  3. ls -al

19、grep命令:查找字符串

命令格式:grep [选项]
主要选项参数如下:

  • -a :将 binary 文件以 text 文件的方式搜寻数据
  • -c :计算找到 ‘搜寻字符串’ 的次数
  • -i :忽略大小写的不同,所以大小写视为相同
  • -n :顺便输出行号
  • -v :反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行!

常用的grep命令:

(38)从~/.bashrc文件中查找字符串’examples’

  1. grep -n 'examples' ~/.bashrc

20、vi/vim命令:Linux文件编辑器

       vi/vim编辑器是所有Unix及Linux系统下标准的编辑器,vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode):

  • 1) 命令行模式command mode)
    控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。
  • 2) 插入模式(Insert mode)
    只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。
  • 3) 底行模式(last line mode)
    将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。

vi的基本操作:

(39)进入vi
在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:

  1. vi myfile

进入vi之后,是处于「命令行模式(command mode)」,需要切换到「插入模式(Insert mode)」才能够输入文字。

(40)切换至插入模式(Insert mode)编辑文件

在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。

(41)切换到命令行模式

你目前处于「插入模式(Insert mode)」,可以对文件进行插入、删除、修改等操作,如果此时你想保存退出,首先需要切换到命令行方式,就要先按一下「ESC」键转到「命令行模式(command mode)」。

(42)退出vi及保存文件

在「命令行模式(command mode)」下,按一下「:」冒号键进入「Last line mode」,例如:

  • :w filename 输入 「w filename」将文件以指定的文件名filename保存)
  • :wq (输入「wq」,存盘并退出vi)
  • :q! (输入q!, 不存盘强制退出vi)

21、用户及权限相关命令

(43)useradd命令:新建用户

命令格式:useradd [选项] 用户名
主要选项参数如下:

  • -d<登入目录> 指定用户登入时的目录。
  • -g<群组> 初始群组。
  • -G<群组> 非初始群组。
  • -m 自动创建用户的家目录(Home目录)。
  • -M 不要创建用户的家目录(Home目录)。
  • -N 不要创建以用户名称为名的群组。
  • -s 指定用户登入后所使用的shell。
    常用的grep命令:
  1. # 不使用任何群组相关的参数,默认在创建用户 tester1 的同时会创建一个同名的群组。用户 tester1 的初始群组就是这个新建的群组
  2. sudo useradd tester1
  3. # -N参数表示不生成与用户同名的群组。查看下 /etc/passwd 文件,发现 tester2 用户的初始群组ID是100。这个100是哪来的?有ID为100的群组吗?其实100作为 -N 的默认值是写在配置文件中的。不管有没有ID为100的群组,都是这个值。
  4. sudo useradd tester2 -N
  5. # -g参数将用户创建在一个初始群组sudo。现在去查看一下 /etc/passwd 和 /etc/group 文件,可以看到用户 tester3 的初始群组变成了sudo。sudo是什么群组?别着急,下面会讲到。
  6. sudo useradd tester3 -g sudo

(44)password命令:设置密码

       好,新建了用户之后,我们需要为其设置密码:
命令格式:passwd [选项] 用户名
主要选项参数如下:

  • -d 删除密码
  • -f 强制执行
  • -k 更新只能发送在过期之后
  • -l 停止账号使用
  • -S 显示密码信息
  • -u 启用已被停止的账户
  • -x 设置密码的有效期
  • -g 修改群组密码
  • -i 过期后停止用户账号
  1. passwd tester1 # 根据提示需输入两次密码
  2. passwd -S tester1 #显示用户密码
  3. passwd -d tester1 #删除用户密码

(45)su命令:切换用户

       我们也可以根据需要选择切换用户,命令很简单:

  1. su tester1
  2. su tester2

(46)sudo命令

       从root用户切换到普通用户之后(而且这个用户普通到没有在sudo组里),假如我们需要执行一些root用户才可以执行的命令怎么办?来回切换用户似乎太麻烦了。这时候,sudo命令可以帮你解决这个问题。
       简单的说,sudo 是一种权限管理机制,管理员可以授权于一些普通用户去执行一些 root 执行的操作,而不需要知道 root 的密码。
       严谨些说,sudo 允许一个已授权用户以超级用户或者其它用户的角色运行一个命令。当然,能做什么不能做什么都是通过安全策略来指定的。sudo 支持插件架构的安全策略,并能把输入输出写入日志。默认的安全策略记录在 /etc/sudoers 文件中。而安全策略可能需要用户通过密码来验证他们自己。也就是在用户执行 sudo 命令时要求用户输入自己账号的密码。如果验证失败,sudo 命令将会退出。
       系统默认创建了一个名为 sudo 的组。只要把用户加入这个组,用户就具有了 sudo 的权限。当然,必须有具有sudo权限的用户来执行这个操作,比如root用户,所执行的命令为adduser username sudo

  1. # 将hadoop用户增加到sudo组,使其具有某些命令的管理员权限
  2. adduser tester1 sudo
原文地址:https://www.cnblogs.com/zhangguangxiang/p/14232559.html