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(警告声),\n(换行),类似于转义字符。
在我们使用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并回车执行
- 按ctrl+p回车执行
其实,我们可以用上下方向键非常方便的选择历史记录。
另外的,如果我想要使用man开头的命令,如上述的例子,则可以直接使用!man,因为历史里只有这一条的前缀是man。这就给我们的使用带来了很大的方便。
但历史命令不可能永久的存储下去,我们可以通过查看HISTSIZE这个变量来查看内存中最大可存储的历史记录的量:
echo $HISTSIZE
默认值为一千,说明内存中只能存储最近一千条的历史记录。
还有一个表示历史文件中存放的历史的条数的变量:
echo $HISTFILESIZE
要更改值当然也是可以的。我们可以修改在~/.bashrc里修改HISTSIZE和HISTFILESIZE的大小。