• 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
  • 相关阅读:
    使用kendynet构建异步redis访问服务
    使用kendynet编写网关服务
    作为前端,我为什么选择 Angular 2?
    你必须知道的Javascript 系列
    JS日期(Date)处理函数总结
    JS数组(Array)处理函数总结
    消息推送之APNS
    消息推送之GCM
    Linux常用命令大全
    Sequential Container
  • 原文地址:https://www.cnblogs.com/zhangguangxiang/p/14232559.html
Copyright © 2020-2023  润新知