Linux入门第二天——基本命令入门(上)

一、常用命令介绍

  常见命令可参考:http://man.linuxde.net/

  常用的快捷键:http://blog.csdn.net/avilifans/article/details/11847371

Tab: 单击补全,双击列出所有
↑↓:历史命令翻阅
Ctrl+C:强制终止Ctrl+D:相当于输入exit,退出
Ctrl+L:清屏
Ctrl+A/E:移动光标到行首/尾
...

   常用帮助指令(学习Linux哪些复杂的选项都可以通过帮助进行查找:)

  http://blog.csdn.net/chenghuikai/article/details/45219017

  常见命令的完整英文全称:

  https://www.cnblogs.com/DreamDrive/p/6945523.html

  

二、命令格式

  在介绍命令之前,先介绍一下$PATH这个东西,这个就是我们之前在win平台介绍过的“系统路径变量”,输入的命令在PATH变量所指定的目录中,所以我们可以在任意位置使用ls这样的路径了

  就像我们配置了Java的PATH环境变量后可以在任意cmd窗口任意目录下使用java这个命令,Linux的PATH类似,里面也是一堆目录,我们可以使用echo $PATH进行查看:

  

  PATH中多个路径使用冒号:进行分割,并且是有先后之分的(不同用户PATH不同),若有相同的命令在不同的目录下,则优先匹配使用先找到的那个。

  若要增加自定义的目录,可以使用:PATH="${PATH}:/root"

  看格式之前先了解一下天天见的登陆提示字符的含义:

  

  其中:

     root  代表用户名,Linux中的管理员是root

    localhost  表主机名

    ~  代表当前所在位置(家目录,其中root用户所在的家目录是 /root,为一级目录,其它为 /home/user1 等二级目录)

    # 超级用户提示符

      $ 普通用户提示符

  命令格式

    命令 [选项]  [参数]

      个别命令不遵循此格式

      有多个选项时可以写在一起

      简化选项与完整选项:-a 与--all

  我们通过学习第一个命令来了解命令的格式:

    查询目录中内容:ls

    

    实例:

  

  其中,前面的 -rw-------代表的是权限,权限分为10位,具体的如下:

  第一位为文件类型(主要7种)

d:文件夹
-:普通文件
l:链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如猫等串口设备)
s:套接口文件/数据接口文件(例如启动一个MySql服务器时会产生一个mysql.sock文件)

 后9位分为三组,三个一组,分别表示:所有者,所属组,其他人(指代的都是用户和文件之间的关系),例如这里按照u g o 匹配

  要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。

  所有者是 root (具有读写权限),所属组是 root所在的组 (具有读权限),其它人(具有读权限)

  1 表示连接数,后面root root分别表示所有者 所属组,再往后就是数字表示的文件大小

  这里后面的大小是一串数字,我们使用上面提到的人性化显示大小(human)的命令选项 -h,使用显示详细信息与人性化大小的组合选项 -lh:

  

后面的依次为最后修改时间和文件名

注意:如果文件名之前多一个“ . ”,则代表这个文件为“隐藏文件

  参数信息如查看指定目录(如etc目录): ls -lh /etc/

注:对一般文件来说,rwx 主要是针对“文件的内容”来设计权限,
  对目录来说,rwx则是针对“目录内的文件名列表”来设计权限。稍微抽象的目录的权限解读如下:

r (read contents in directory):
表示具有读取目录结构清单的权限,所以当你具有读取(r)一个目录的权限时,表示你
可以查询该目录下的文件名数据。 所以你就可以利用 ls 这个指令将该目录的内容列表显
示出来!
w (modify contents of directory):
这个可写入的权限对目录来说,是很了不起的! 因为他表示你具有异动该目录结构清单
的权限,也就是下面这些权限:
创建新的文件与目录;
删除已经存在的文件与目录(不论该文件的权限为何!)
将已存在的文件或目录进行更名;
搬移该目录内的文件、目录位置。 总之,目录的w权限就与该目录下面的文件名异
动有关就对了啦!
x (access directory):
咦!目录的执行权限有啥用途啊?目录只是记录文件名而已,总不能拿来执行吧?没
错!目录不可以被执行,目录的x代表的是使用者能否进入该目录成为工作目录的用途!
所谓的工作目录(work directory)就是你目前所在的目录啦!举例来说,当你登陆Linux
鸟哥的 Linux 私房菜:基础学习篇 第四版
272 5.2 Linux 文件权限概念
时, 你所在的主文件夹就是你当下的工作目录。而变换目录的指令是“cd”(change
directory)啰!

  【更新】:改变文件权限:

    知道如何查看权限后,我们来看如何修改权限(权限在Linux十分重要)

chgrp :改变文件所属群组
chown :改变文件拥有者
chmod :改变文件的权限, SUID, SGID, SBIT等等的特性

    实例:改变所有者:chown root:root -R /home/java/jdk1.8.0_131/

  如果要改变权限,可以采用以下两种方式:

  1.数字式

  rwx分别对应421,这样我们的rwx权限就是分别的相加结果,例如rwx为7,rw-为6,这样就可以得出形如下列形式的权限命令:

[[email protected] ~]# chmod [-R] xyz 文件或目录
选项与参数:
xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
-R : 进行递回(recursive)的持续变更,亦即连同次目录下的所有文件都会变更

  实例:chmod 777 .bashrc

  2.符号式  

  形式如下:

chmod | u g o a | +(加入) -(除去) =(设置) | r w x | 文件或目录
###
    其中,u g o 分别代表前面的user group others,而a则表示all
    可用的操作有直接赋值(使用=),或者不知道原来的权限,但是只想给每个人增加一个权限,则使用+

  实例:设置权限为如下:-rwxr-xr-x(注意rwx的顺序是不会变的,也就是说rx其实就是r-x)

     chmod u=rwx,go=rx .bashrc

      chmod a+w .bashrc

  参见http://www.cnblogs.com/peida/archive/2012/12/04/2800684.html

  关于文件的默认权限umask,其中umask的后三位表示的是“拿掉的权限,这里注意文件默认只有rw,目录有rwx可以拿”

  所以对于文件Umask最大值为666,而目录则为777(这部分建议参见鸟哥的私房菜介绍)

  如要修改umask,直接输入数字即可,如umask 002——通常情况下,root会拿掉比较多的权限,一般为022,而普通用户为002

  当然,除了常规属性外,还可以设置一些文件的隐藏属性(例如让文件只能增加不能减少--如日志文件),这里暂时不拓展文件的隐藏属性的操作。

  特殊权限s&t将在后续进行补充!

三、文件处理命令

  1.目录处理命令

    类似于windows中的文件夹的概念

  常见特殊目录:

. 代表此层目录
.. 代表上一层目录
- 代表前一个工作目录
~ 代表“目前使用者身份”所在的主文件夹
~account 代表 account 这个使用者的主文件夹(account是个帐号名称)

    建立目录mkdir

  

  //递归创建就是类似创建一个目录后再创建一个子目录

  实例:

  

  //可以看到,若不适用-p直接创建两级目录将会报错

  默认创建的目录是使用的默认权限,需要限定权限请使用-m参数:

mkdir -m 777 testdir1

    切换目录cd

  (ctrl + L 清屏)

  实例:

  

  //其中 ../user等为相对路径  /etc/为绝对路径

  【Tab键】:在linux中,按一下tab会有提示(若只有一个,将会自动补全,若有多个,按两次tab将会列出所有可选项)

        并且,除了目录补全,命令也是可以自动补全的!

    查询所在目录位置pwd

  实例:

  

    删除空目录:rmdir

  //由于其智能删除空目录,实际使用时频率是非常之少,我们使用的是下面的 rm 命令

    删除文件或目录:rm

  实例:

  

  //如果不想让他一直提示,可以使用上面说的,rm -rf jiangxi/,可以强制删除不提示(命令行将无法恢复)

  注意:Linux中的root是真正的root,它可以执行 : rm -rf / (删除根目录),这样也就是让 Linux "自杀",它是会执行的。

  所以我们应该推荐的删除命令是:rm -r jiangxi/这种形式(即使是删文件,也带上 -r)

    2.文件处理命令

    复制命令:cp

  实例:

  //注意这里,复制单个文件直接使用基本命令即可,若后面直接跟 /tmp/,则原名复制,若自定义名字,则按自定义复制

    若要复制目录,请跟上 -r ,否则将报图中错误!

  复制的文件这里值得注意的是修改时间会有问题(不像真实机一样,断电还有主板的点继续计时,这里不深入展开,待补充)

    显示系统时间:

       

  复制文件时添加了 -a选项,将会使得副本与源文件一模一样,通常,当我们需要将权限一起复制时使用-a选项,而普通复制时文件权限默认是指令操作者的(包括时间属性以及其它隐藏属性)

  另外,当需要创建链接时,可以分别使用-l -s创建硬软链接,关于hard link 与 symbolic link,请参见http://blog.csdn.net/niluchen/article/details/8049304

  最后,必须谨慎思考以下问题,在你准备使用cp的时候:

是否需要完整的保留来源文件的信息?
来源文件是否为链接文件 (symbolic link file)?
来源文件是否为特殊的文件,例如 FIFO, socket 等?
来源文件是否为目录?

 注:ls -l 的别名是 ll 

    剪切或改名:mv

  实例:

  

  //特别注意这里 mv 剪切不管是否是目录或者文件都不需要加 -r (多人开发导致的不一致原因)

  如果源文件和目标文件在同一目录,则是改名: mv ana ana001 ;则是修改文件名称

  常见一级目录作用

  

    //亮色的请谨慎修改!

  

  参考http://blog.csdn.net/u013239236/article/details/48845251

  

//一般可以使用 mnt 挂载

  

//空白的均为同上

  一般Linux是严谨的操作系统,一般推荐操作 家目录 /root 或 /home (对应管理员和普通用户)

  【更新】:2.5.文件内容查看

  可以使用常用的More来进行相关分页的文件内容查看,相关选项请参阅手册

  【touch指令】:“摸一下文件”,更新文件的时间或者创建新文件

  关于文件的时间,参考:

modification time (mtime): 当该文件的“内容数据”变更时,就会更新这个时间!内
容数据指的是文件的内容,而不是文件的属性或权限喔!
status time (ctime): 当该文件的“状态 (status)”改变时,就会更新这个时间,举
例来说,像是权限与属性被更改了,都会更新这个时间啊。
access time (atime): 当“该文件的内容被取用”时,就会更新这个读取时间
(access)。举例来说,我们使用 cat 去读取 /etc/man_db.conf , 就会更新该文件的
atime 了。

  【file指令】除了可以查看文件外,还可以查看文件属性,具体用法请man file

   3.链接命令

  链接命令:ln

  既然有软硬之分,那我们来看看具体软硬的区分

  //前后门都进同一个教室,关了一扇门,还可以从另一扇门打开,教室依旧正常打开。不建议使用

  实例:

//创建硬链接无需选项

  

  实例:

  //特别注意软链接颜色不一样,并且,标记出了源文件位置

  如果做软链接,请使用绝对路径!

时间: 2024-11-14 12:35:15

Linux入门第二天——基本命令入门(上)的相关文章

Linux入门第二天——基本命令入门(中)

一.文件搜索命令 1.文件搜索命令:locate 速度很快(具体见Linux工具网址的对比),注意无法找到新建的文件(原理暂不展开) 帅选规则: 实例: 2.命令搜索命令:whereis which 实例: 实例: which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果. [补充知识]: 3.文件搜索命令:find 实例: 通配符: 搜索实例: 其它常见参数: //(千字节小写k,兆字节大写M) //将前面命令的结果放到第二个命令里的{}进行执行(ex

第二课 GCC入门之静态库以及共享库

序言: 前面一课讲了gcc的简单入门,包括gcc编译步骤:预处理:编译:汇编:链接.今天这节课就来讲下linux的库也欢迎大家吐糟共同学习. 原理: linux系统中分为2种库:静态库和共享库.静态库是以.a后缀结尾的文件,通常是在编译的链接阶段指定静态库的位置进行编译生成可执行文件,因此生成的可执行文件在执行的时候不需要静态库的参与.动态库共享库是以.so后缀结尾的文件,通常情况下代码中有需要用到共享库的地方在编译链接阶段指定共享库的路径在执行可执行文件的时候从内存表中读取代码,内存中只有一份

Linux下的shell编程入门

通常情况下,我们从命令行输入命令每输入一次就能够得到系统的一次响应.一旦需要我们一个接着一个的输入命令而最后才得到结果的时候,这样的做法显然就没有效率.要达到这样的目的,通常我们利用shell程序或者shell脚本来实现. 一.简介 Shell编程有很多类似C语言和其他程序语言的特征,但是又没有编程语言那样复杂.Shell程序就是放在一个文件中的一系列Linux命令和实用程序,在执行的时候,通过Linux一个接着一个地解释和执行每个命令. 下面我们来看一个简单的shell程序: 1.首先建立一个

Mybatis最入门---ResultMaps高级用法(上)

[一步是咫尺,一步即天涯] 接上文,我们基本的单表查询使用上文中的方式已经能够达到目的.但是,我们日常的业务中也存在着多表关联查询,结果是复杂的数据集合等等.本文我们就来介绍ResultMaps的高级用法,本文,我们先介绍基本的概念,具体用法实例在下一篇中专门演示给大家.敬请期待! ------------------------------------------------------------------------------------------------------------

算法导论(Introduction to Algorithms )— 第二章 算法入门 — 2.1 插入排序

一.插入排序:INSERTION-SORT 1.适用范围: which is an efficient algorithm for sorting a small number of elements. 对于少量元素的排序,插入排序是一种高效的算法. 2.原理: Insertion sort works the way many people sort a hand of playing cards. We start with an empty left hand and the cards

《ECMAScript 6 入门- 第二章 变量的解构赋值》 —— 摘抄

1.数组的解构赋值 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 旧做法: var a = 1; var b = 2; var c = 3; ES6做法: var [a,b,c] = [1,2,3]; 上面代码表示,可以从数组中提取值,按照对应位置,对变量赋值. 本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值.下面是一些使用嵌套数组进行解构的例子. var [foo,[[bar],bad]] =

python入门第二十六天--网络通信

网络编程 自从互联网诞生以来,现在基本上所有的程序都是网络程序,很少有单机版的程序了. 计算机网络就是把各个计算机连接到一起,让网络中的计算机可以互相通信.网络编程就是如何在程序中实现两台计算机的通信. 举个例子,当你使用浏览器访问新浪网时,你的计算机就和新浪的某台服务器通过互联网连接起来了,然后,新浪的服务器把网页内容作为数据通过互联网传输到你的电脑上. 由于你的电脑上可能不止浏览器,还有QQ.Skype.Dropbox.邮件客户端等,不同的程序连接的别的计算机也会不同,所以,更确切地说,网络

Java入门第二季学习总结

课程总概 该门课程作为java入门学习的第二季,是在有一定的java基础上进行的进一步学习.由于该季涉及到了java的一些核心内容,所以相对第一季来说,课程难度有所提升.大致可将该季的课程分为五部分:第一部分,类和对象(第一章):第二部分,封装(第二章):第三部分,继承(第三章):第四部分,封装(第四章4-1~4-6):第五部分,项目练习(第四章4-7.第五章.第六章).(课程来源:慕课网Java入门第二季) 一.类和对象 1.面向对象 即人关注事物信息. 2.类和对象 (1)类:即模子,确定对

解析Mybatis入门第二天

入门第二天 目的:使用Mybatis对数据库中的数据进行简单的操作.例如:增.删.改.查. 前言:同样是使用idea创建一个普通的maven工程(如何创建一个普通的Maven工程可以参考入门第一天的详解). 数据库中的表仍然使用第一天的数据库表(新建表和添加数据的sql语句见第一天的分析). 代码来了.............. 首先看一下所有的文件的路径和结构 在pom.xml文件中导入坐标 1 <?xml version="1.0" encoding="UTF-8&