Linux 入门篇第四章

Linux 入门篇第四章

文章导航

  • 上一章说了很多常用命令和一些Linux入门
  • 这一章继续linux入门

命令类别

  • 在Linux使用命令,命令他是有类别的,也就是我们所说的内部命令外部命令
  • 那什么时候内部命令,所谓内部命令就是集成到shell,也就是集成在bash里面的命令就是内部命令
  • 有些命令是集成在硬盘里面的,叫外部命令
  • 那怎么查看内部命令
[root@CentOS6 ~]#type cd   这是查看是否是内部命令
cd is a shell builtin   出现这个就表示他是内部命令

[root@CentOS6 ~]#type ifconfig   
ifconfig is /sbin/ifconfig     出现这个就表示他是外部命令

  • 内部命令和shell集成在一块,外部命令都是一些的小程序
  • 内部命令依赖于shell类型,如果不是你要的shell,你可以自己安装一个
  • 大部分都是外部命令,内部命令都是一些常见命令
[root@CentOS6 ~]#help    列出所有内部命令,help本身是内部命令

[root@CentOS6 ~]#enable   也可以列出所有内部命令

[root@CentOS6 ~]#type -a pwd  显示出所有内部和外部命令
pwd is a shell builtin
pwd is /bin/pwd 

[root@CentOS6 ~]#type -P ls  显示外部命令的路径
/bin/ls

[root@CentOS7 ~]# which  ls         来查看外部命令的路径
alias ls='ls --color=auto'
        /usr/bin/ls 
[root@CentOS6 ~]#which -a pwd   显示所有PATH变量
/bin/pwd

[root@CentOS6 ~]#whereis ls  列出外部命令已经帮助文档路径
ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

  • 内部命令不想用了还可以来禁用
[root@CentOS6 ~]#enable -n   来禁用命令  还可以禁用多个命令

[root@CentOS6 ~]#enable   在输入命令不需要加-n就启用被禁用的命令了

[root@CentOS7 ~]# enable -n   列出所有被禁用的命令

  • 如果一个命令,内部和外部都有,内部命令优先级最高
  • 外部命令一般是存在硬盘的某个路径下
  • 外部命令都是一个一个的文件,那我敲一个命令他为什么这么块找到这么命令
  • 那是因为他是依靠下面这个路径
[root@CentOS7 ~]# echo $PATH  这个很重要PATH路径
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

他依靠这写路径,如果找不到他就报错说找不到,如果他执行过一次以后他就放在内存里面了
  • 有的时候会出现这样的情况
[root@CentOS7 ~]# which ls   如果出现这样的情况,这就是别名
alias ls='ls --color=auto'
        /usr/bin/ls      

[root@CentOS7 ~]# which --skip-alias ls  这个选项可以忽略别名
/usr/bin/ls
  • 别名稍后在介绍

Hash缓存表

  • 系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行之,如果不存在,将会去PATH路径下寻找。
  • 利用hash缓存表可大大提高命令的调用速率
[root@CentOS7 ~]# hash  这就是我用过的命令次数
hits    command
   1    /usr/bin/tty
   2    /usr/bin/nano
   1    /usr/bin/rz
   1    /usr/sbin/init
   5    /usr/bin/cat
   2    /usr/bin/id
   3    /usr/bin/w
   2    /usr/bin/ls
   4    /usr/bin/clear

  • hash常见用法:

    • hash 显示hash缓存
      • hash –l 显示hash缓存,可作为输入使用
      • hash –p path name 将命令全路径path起别名为name
      • hash –t name 打印缓存中name的路径
      • hash –d name 清除name缓存
      • hash –r 清除所有缓存
  • 命令执行规律,首先看是外部命令还是内部命令,如果是内部命令就直接执行了,如果是外部命令就看哈希表根据缓存表里面去找,如果有就执行了,如果没有,就去PATH变量里面一个一个去找,找到了就执行,如果找不到就报错了

别名

  • 所谓别名就是小名,昵称
  • 别名就是给别秒长的路径或经常用的路径给他取个名字,方便记忆
[root@CentOS7 ~]# cd /etc/sysconfig/network-scripts/  比如我给这个路径取一个别名

[root@CentOS7 ~]# alias cdnet="cd /etc/sysconfig/network-scripts/"    这就是我给他取的一个别名,cdnet,让后回车就可以了

[root@CentOS7 ~]# cdnet
[root@CentOS7 network-scripts]#   看直接来这个路径下了
  • alias 他本身是内部命令,如果直接输入alias他会显示出所有定义好的别名
[root@CentOS7 ~]# alias  所有别名
alias cdnet='cd /etc/sysconfig/network-scripts/'   这个是我刚加的
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

  • 但是一退出就没有了,所以需要重新定义,我们要写到文件里
[root@CentOS7 ~]# nano .bashrc    进入这个文件,在里面输入

# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias cdnet='cd /etc/sysconfig/network-scripts'

用 .  .bashrc  可以让你的文件生肖 不需要退出了

[root@CentOS7 ~]# . .bashrc    必须要区分空格,让别名生效

unalias   取消别名   -a取消所有别名
  • 让后保存,就可以了就算退出了,别名照样在
  • 也可以在下面这个路径下加,但是所有用户都会生效,不建议使用这个路径
[root@CentOS6 ~]#vi /etc/bashrc   这个路径下,不建议改,如果改了会全部用户生效
  • 如果你使用了别名,一定要使用命运本身,你可以使用下面方式
[root@CentOS6 ~]#'grep'      第一种方法

[root@CentOS6 ~]#\grep        第二种方法

命令语法格式

  • 命令格式总结
    • 执行命令的时候有时候他解决不了根本的问题,所以我们有时候我们就需要参数来帮我们来解决
    • 也就是参数方案 ,也就是命令 选项 参数
    • 选项在Linux里面有两种语法,一种是短格式,一种是长格式
COMMAND [OPTIONS...] [ARGUMENTS...]
选项:用于启用或关闭命令的某个或某些功能
短选项:-c 例如:-l, -h
长选项:--word 例如:--all, --human-readable
参数:命令的作用对象,比如文件名,用户名等
  • 长格式用的很少,短格式用的很多
  • 比如我来实验一个短格式
[root@CentOS6 ~]#ls
anaconda-ks.cfg  Downloads           Music     Templates
Desktop          install.log         Pictures  Videos
Documents        install.log.syslog  Public    新建文本文档.txt
  • 长格式选项
[root@CentOS6 ~]#ls --all
.                .cshrc     .gtk-bookmarks      Public
..               .dbus      .gvfs               .pulse
.abrt            Desktop    .ICEauthority       .pulse-cookie
anaconda-ks.cfg  Documents  .imsettings.log     .ssh
.bash_history    Downloads  install.log         .tcshrc
.bash_logout     .esd_auth  install.log.syslog  Templates
.bash_profile    .gconf     .local              Videos
.bashrc          .gnome2    Music               .viminfo
.cache           .gnote     .nautilus           .Xauthority
.config          .gnupg     Pictures            新建文本文档.txt

  • 功能虽然一样,一般是短格式居多,容易理解
  • 但是不是所有命令都有短格式和长格式,注意区分
  • 有时候选项是可以写在一块的,注意区分,在有些场合下前后是由区别的,大部分没有区别
  • 选项和参数大部分是不区分,但是大部分区别如:
[root@CentOS6 ~]#ls -l install.log
-rw-r--r--. 1 root root 50698 Oct 20 19:13 install.log
[root@CentOS6 ~]#ls  install.log  -l
-rw-r--r--. 1 root root 50698 Oct 20 19:13 install.log
  • 但是为了习惯就,经量不要这么写
  • 短格式可以写到一起
[root@CentOS6 ~]#ls -lh
total 104K
-rw-------. 1 root root 1.4K Oct 20 19:13 anaconda-ks.cfg
drwxr-xr-x. 2 root root 4.0K Oct 20 23:46 Desktop
drwxr-xr-x. 2 root root 4.0K Oct 20 23:46 Documents
drwxr-xr-x. 2 root root 4.0K Oct 20 23:46 Downloads
-rw-r--r--. 1 root root  50K Oct 20 19:13 install.log
-rw-r--r--. 1 root root  10K Oct 20 19:11 install.log.syslog
drwxr-xr-x. 2 root root 4.0K Oct 20 23:46 Music
drwxr-xr-x. 2 root root 4.0K Oct 20 23:46 Pictures
drwxr-xr-x. 2 root root 4.0K Oct 20 23:46 Public
  • 但是长格式和短格式是不能写到一起
  • 文件参数一般是文件比较多,还可以用用户,比如:
[root@CentOS6 ~]#id -u root
0
  • 如果要一直执行多条命令,如:
[root@CentOS6 ~]#ls;pwd;hostname;alias
anaconda-ks.cfg  Documents  install.log         Music     Public     Videos
Desktop          Downloads  install.log.syslog  Pictures  Templates
/root
CentOS6.9
alias cdnet='vi /etc/sysconfig/network-scripts/ifcfg-eth0'
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias vi='vim'
  • 如果我一个命令写错了会出现这样结果
[root@CentOS6 ~]#ls;pwd;hoame;aias    
anaconda-ks.cfg  Documents  install.log         Music     Public     Videos
Desktop          Downloads  install.log.syslog  Pictures  Templates
/root
-bash: hoame: command not found
-bash: aias: command not found
  • 那我可以不可以一个命令一行,要这么干,但是这么做慎用
[root@CentOS6 ~]#ls\
> alias\
> hostname\

简单命令

[root@CentOS6 ~]#clock        硬件时间  -s  覆盖内核时间  -w  覆盖硬件服务器

[root@CentOS6 ~]#date       软件时间    

[root@CentOS6 ~]#ntpdate  ntp1.aliyun.com   时间同步服务器  这个网址是阿里云的时间服务器,你额可以同步其他的时间服务器

如果你想看中文时间需这样搞:
[root@CentOS6 ~]#LANG="zh_CN.UTF-8"
[root@CentOS6 ~]#date
2019年 10月 22日 星期二 20:24:55 CST
一般不用

[root@CentOS6 ~]#cal        日历
    October 2019    
Su Mo Tu We Th Fr Sa
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

由一个1752年的可以去查找下为什么,有一个很有意思的故事
[root@CentOS6 ~]#cal 09 1752 
   September 1752   
Su Mo Tu We Th Fr Sa
       1  2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

重启命令
[root@CentOS6 ~]#reboot    -f 强制重启   -p  切断电源

关机或重启:shutdown
shutdown [OPTION]... TIME [MESSAGE]
-r: 重启  now  马上重启
-h: 定时关机  一分钟后关机   如果有+号就是特点时间管理 如  +10就是1你分钟以后关机   还可以定时关机 如18:00 关机  还可以发消息  如

-c:取消关机

其他链接

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 2,182评论 0 4
  • linux基础入门 linux是一门开源稳定性高实用的全文本的操作系统,一般实用于服务器,我们国家大多数互联网公司...
    O感悟人生O阅读 91评论 0 0
  • 一、用户登录 root 用户一个特殊的管理帐户也被称为超级用户。 Centos7中root的id是0 普通(非特权...
    不知岁月惜阅读 354评论 0 0
  • 一、VMware的使用和Linux系统的安装1、VMware的快照、挂起的作用 快照:保存某一个状态,连命令行的输...
    seeiy阅读 664评论 0 1
  • Linux学习任重道远,对于初学者来说,看到多如繁星的命令,就让人望而却步,接下来就说说Linux命令的一些入门学...
    靜默阅读 98评论 0 0