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 清除所有缓存
- hash 显示hash缓存
命令执行规律,首先看是外部命令还是内部命令,如果是内部命令就直接执行了,如果是外部命令就看哈希表根据缓存表里面去找,如果有就执行了,如果没有,就去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:取消关机
其他链接
- www.net881.com 我网址
- https://www.jianshu.com/u/98e051b1da9e 链接
- https://blog.csdn.net/weixin_42867227 CSDN博客
- QQ交流群:796161469