Linux基础学习

写在前面

一方面,为了阿里云服务器的续费,开始学习Linux。另一方面, 近期学的很多东西都需要装到Linux服务器上,那么一些基本命令的学习显然是必要的。最近就抽了个时间来学习一下基本的Linux命令。写一篇博客权当记录,方便以后自己查询。

命令的基本格式

基本格式如下:

COMMAND [OPTIONS..] [ARGUMENTS..]

其中,COMANND代表命令的名字,如type,cd等等,option代表选项,分为短选项和长选项,如-l,-h 为短选项,--all,--human为长选项。arguments为参数,表示命令的作用对象,如文件名,用户名等等。

多个选项以及多参数和命令之间用空白字符分割。

要取消和结束命令的执行,可以使用ctrl+c或者ctrl+d,多个命令可以用分号(;)隔开,一个命令也可以用分成多行来输入

Linux中的命令执行顺序

在Linux中,通过Shell来将命令转换为计算机可以识别的二进制流,而在Shell中,不同的shell有不同的内部命令,我们可以通过type来查看,如:

type cd

就可以发现cd是一个shell的内部命令。当我们输入一条命令(在没有定义别名的前提下)时,shell会先寻找内部命令,如果没有则去hash表里寻找有没有已缓存的命令路径,如果没有则去$PATH下寻找命令。找不到则会报错。我们可以通过以下命令查看PATH变量的值

echo $PATH

日期和时间

Linux中有两种时钟:

  • 系统时钟:由Linux内核通过CPU的工作频率进行的
  • 硬件时钟:主板

相关的命令操作:

data 显示和设置系统时间
 date +%s
 date -d
hwclock ,clock:显示硬件时钟
-s(--hctosys) 以硬件时钟为准,校正系统时钟
-w(--systohc) 以系统时钟为准,校正硬件时钟
时区: /etc/localtime 在centos7上还可以用timedatectl命令
显示日历:cal (-y) 不加-y显示是当月,加了-y显示的是整年的日历 可以查看某年的日历,如cal 2019,可以显示某月的日历,如:cal 08 2008

简单的基础命令

  • 关机:halt(不断电) poweroff

  • 重启:reboot -f(强制,不调用shutdown),-p(切断电源)

  • 关机或重启:shutdown[OPTION]...[TIME] [MESSAGE]

    -r:reboot,-h:halt,-c:cancel TIME:无指定,默认相当于+1。now:立刻,相当于+0。+m,相对时间表示法,几分钟之后。如+3。hh:mm 绝对时间表示,指明具体时间

  • whoami:显示当前登录的有效用户

    who:系统当前所有的登录会话

    w:系统当前所有的登录会话及所做的操作

  • nano:文本编辑器

  • init:

    • init 0 关机
    • init 3 切换到命令行
    • init 5 切换到图形化界面
    • init 6 重启
  • alias:

    定义别名的命令,格式如下:

    alias aplianame=cmd
    

    其中alias是命令 aplianame是别名,等号后面的为原名

    如果想重启shell后还能使用,需要保存到文件(对当前用户就在~/.bashrc文件中定义,对于所有用户则在/etc/bashrc中定义。)中

    我们通过alias命令也可以直接查看已定义的别名

    我们也可以通过unalias来取消别名(但定义在文件里的需要删掉,若不删掉则重启shell后照样能用)

    如果别名和原命令同名,要执行原命令,可以使用:

    aliasname
    "aliasname"
    'aliasname'
    command aliasname
    /path/command
    

    其中最后一种只能在外部命令使用。

  • echo:

    echo命令用来显示字符,默认会换行。我们可以通过-n来不自动换行,输入-e来启动字符的解释功能,如a(警告声), (换行),类似于转义字符。

    在我们使用echo时,对字符串加单引号或双引号是不一样的意义的。单引号,被称作强引用,变量不会替换,如echo '$PATH' ,双引号被称作弱引用,变量会被替换。

    Tips:还有一种反向单引号(``),效果要更为强大,会把反单引号内的命令也执行。可以执行下列命令看看:

    echo `echo $PATH`
    

    执行结果如下:

    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    

    这种写法一般用于命令嵌套的时候,前面的命令调用后面的结果,如:

    ls -l `echo $SHELL`
    

    同样的$()和反向单引号是同样的效果

tab键补全

在linux中命令过长时,可以使用tab键进行自动补全。如果命令只有一条,那么就会自动补全。如果有很多,则会弹出提示是否显示列表。

同样的,路径也可以补全。如果唯一则会直接补全,不唯一则会提示是否显示列表

获得帮助

在Linux里的命令,有很多可以获得帮助的命令,如:

whatis cd

在whatis后面写上要查询的命令名称,就会显示出简短的解释了。

但需要注意的是,whatis依赖于一个特别的数据库,在我们刚装上系统的时候是无法执行的。我们可以通过mandb(centos7)或者makewhatis(centos6)来立即构建数据库。

对于内部命令,我们可以使用help命令,如下:

help enable

help后面加上命名名称,就会显示出详细的解释了。

对于外部命令,我们可以使用命令后+ --help的方式获取帮助,如:

date --help

也可以使用man命令查看帮助,显示的要更为全面:

man date

man的用法有很多,具体可以通过搜素引擎查看,这里不再赘述了。

查看历史命令

要查看历史命令,我们直接使用history命令即可。当我们退出用户后,Linux系统会自动把我们这次登陆时写的命令存储到硬盘上,位置在(~/.bash_history),用于方便我们使用。要使用历史记录,用感叹号!加上命令的行数即可,如我通过history命令查看到:

   91  whatis xx
   92  whatis lang
   93  whatis cd
   94  whatis rem
   95  whatis rm
   96  makewhatis
   97  whatis ls
   98  mandb
   99  help enable

我想要使用第91行的命令,我直接输入!91即可。

我想要使用上一个命令,有四种方式:

  1. 使用上方向键,然后按回车执行
  2. 输入!!并按回车执行
  3. 输入!-1并回车执行
  4. 按ctrl+p回车执行

其实,我们可以用上下方向键非常方便的选择历史记录。

另外的,如果我想要使用man开头的命令,如上述的例子,则可以直接使用!man,因为历史里只有这一条的前缀是man。这就给我们的使用带来了很大的方便。

但历史命令不可能永久的存储下去,我们可以通过查看HISTSIZE这个变量来查看内存中最大可存储的历史记录的量:

echo $HISTSIZE

默认值为一千,说明内存中只能存储最近一千条的历史记录。

还有一个表示历史文件中存放的历史的条数的变量:

echo $HISTFILESIZE

要更改值当然也是可以的。我们可以修改在~/.bashrc里修改HISTSIZE和HISTFILESIZE的大小。

原文地址:https://www.cnblogs.com/wushenjiang/p/13388593.html