一、Linux系统上的文件类型

  1、- :常规文件:在其它程序中用f表示。比如我们用ls -l命令查看的第一个内容

[root@localhost ~]# ls -l
total
-rw-------. root root Oct anaconda-ks.cfg

  2、d:directory,目录文件

  3、b:block device,块设备文件,以"block"为单位进行随机访问

[root@localhost ~]# ls -l /dev/sda*
brw-rw---- root disk , Dec : /dev/sda
brw-rw---- root disk , Dec : /dev/sda1
brw-rw---- root disk , Dec : /dev/sda2

  4、c:character device,字符设备文件,支持以“character”为单位进行线性访问

      major number:主设备号,用来标识设备类型,进而确定要加载的驱动程序

      minor number:次设备号,用来标识同一类型中的不同的设备

        8位二进制:0-255

  5、l:symbolic link,符号链接文件,也叫软连接文件

  6、p:pipe,命名管道

  7、s:socker,套接字文件,主要用于服务提供

    

二、常用的基本命令

  1、外部命令和内部命令

    a、linux上的命令根据其是否在文件系统上存在一个与之对应的同名的文件。在我们文件系统上某一个路径下是否与这个命令本身有一个独立的文件我们可以把命令分为内建命令和外部命令。在我们文件系统的路径上有一个独立的文件而命令名就是文件名,这种就叫外部命令其实所有的文件都必然是外部命令,那么为什么会出现内建命令呢?是因为有一个外部命令自带有很多命令,我们有一个外部命令叫bash,bash就是外部的,但是bash自身很强大,他自带有很多小命令,所以这些小命令就是内部命令。

    b、我们如何去区分内部命令还是外部命令呢?我们可以用type来查看

    type COMMAND:

      内部: builtin

[root@localhost /]# type cd
cd is a shell builtin

      外部:显示为命令文件路径

        注意,命令可以有别名,别名可以与原名相同,此时原名被隐藏,此时如果要运行原命令,则使用 \COMMAND

[root@localhost /]# type bash
bash is /usr/bin/bash
[root@localhost /]# type ls  #表示ls其实是 ls --color的简称
ls is aliased to `ls --color=auto'
[root@localhost /]# ls
application bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@localhost /]# \ls #表示只运行ls
application bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var

    c、命令别名

      获取所有可用别名的定义:

[root@localhost /]# alias
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'

      定义别名,注意,此定义方式只对当前shell有效

[root@localhost /]# alias cls="clear"
[root@localhost /]# alias
alias cls='clear'
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@localhost /]# unalias cls
[root@localhost /]# alias
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'

  2、which,显示命令的完整路径

    a、which --skip-alias  COMMAND  && \which COMMAND ,忽略别名

[root@localhost /]# which --skip-alias ls
/usr/bin/ls
[root@localhost /]# \which ls
/usr/bin/ls

  3、whereis命令,显示命令文件,源码文件及手册页

[root@localhost /]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls..gz /usr/share/man/man1p/ls.1p.gz

    a、-b,仅搜索二进制程序路径

    b、-m,仅搜索使用手册文件路径

  4、who命令,查看登陆当前系统的相关用户信息

[root@localhost /]# who
root pts/ -- : (192.168.10.1)
root pts/ -- : (192.168.10.1)

    a、-b,系统此次启动的时间

[root@localhost /]# who -b
system boot -- :

    b、-d,显示死亡的进程

    c、-l,显示登陆进程

[root@localhost /]# who -l
LOGIN tty1 -- : id=tty1

    d、-r,查看进程级别

[root@localhost /]# who -r
run-level -- :

  5、w 命令,他不但能显示谁登陆了还能显示他们在干嘛,相当于增强版的who命令

[root@localhost /]# w
:: up :, users, load average: 0.06, 0.03, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/ 192.168.10.1 : .00s .12s .00s w
root pts/ 192.168.10.1 : : .02s .00s less -s

三、bash的基础特性

  1、命令历史:shell进程会在其会话中保存此前用户提交执行过的命令

    a、history命令可用查看

[root@localhost /]# type history
history is a shell builtin

      定制history的功能,可通过环境变量实现:

        HISTSIZE:shell进程可保留的命令历史的条数,默认为1000条

[root@localhost /]# echo $HISTSIZE

        HISTFILE:持久保存命令历史的文件,每一个用户登陆时命令历史会首先从历史文件中加载此前所有的命令到内存中,而后新的命令就补充在附加在这个内存中历史命令后面,所以使用history命令看到的是整个内存中的历史,使用cat看到的是文件中的内容。当我们用户shell登出时会自动保存相应命令

[root@localhost ~]# echo $HISTFILE
/root/.bash_history

        HISTFILESIZE:命令历史文件的大小,文件保存一千条命令

[root@localhost ~]# echo $HISTFILESIZE

  2、history命令用法

    a、history [-c] [-d offset] [n]:操纵命令历史中多少条的

    b、history -anrw [filename]:操纵历史文件的

    c、history -ps arg [arg...]:定义history自己的工作特性的

      history -c:清空历史命令,只清空内存中不会清空文件中。

      history -d  offset:删除某一个历史命令

        删除id为200的历史命令

[root@localhost ~]# history -d 

        从id为200的历史命令开始删除,删除5条

[root@localhost ~]# history -d  

      history -r:读取历史文件并将内容追加到历史列表中

      history -w:将当前历史写入到历史文件中,并追加到历史列表中

    d、显示最近10条的命令历史

[root@localhost ~]# history
cat /root/.bash_history |wc -l
cat /root/.bash_history
cat /root/.bash_history |wc -l
history -w
history
history -d
history
history -d
history
history

  3、调用命令历史列表中的命令

    a、!#:再一次执行历史列表中的第#条命令

[root@localhost ~]# history
ls
history
history
history
[root@localhost ~]# !
ls
anaconda-ks.cfg

    b、!!:再一次执行上一条命令(或者按上键也可以)

    c、!STRING:再一次执行命令历史列表中最近一个以STRING开头的命令

      注意:命令的重复执行有时候需要依赖于幂等性;

  4、调用上一条命令的最后一个参数

    a、ESC,.

    b、!$

[root@localhost ~]# ls /etc/sysconfig/network-scripts/ifcfg-ens33
/etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]# cat !$
cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
...

  5、控制命令历史纪录的方式

    a、环境变量:HISTCONTROL

[root@localhost ~]# echo $HISTCONTROL
ignoredups #忽略重复的,连续的就是重复的,比如多次执行某一个命令

      ignoredups:忽略重复的命令

      ignorespace:忽略以空白字符开头的命令

      ignoreboth:以上两者同时生效

    b、修改变量的值

      NAME='VALUE',这种修改只对当前shell进程有效

linux学习11 Linux基础命令及命令历史的更多相关文章

  1. Linux学习之路-Linux-at及cron命令【7】---20171215

    Linux学习之路-Linux-at及cron命令[7]---20171215 DannyExia000人评论986人阅读2017-12-24 17:28:03   ntpdate 命令 [root@ ...

  2. Linux学习之十四、管线命令

    Linux学习之十四.管线命令 地址:http://vbird.dic.ksu.edu.tw/linux_basic/0320bash_6.php

  3. Linux学习之RPM包管理-rpm命令管理(十六)

    Linux学习之RPM包管理-rpm命令管理 目录 简介 RPM包依赖性 包全名与包名 rpm软件包安装 rpm软件包卸载 升级降级rpm软件包 rpm软件包的查询 rpm软件包校验 简介 RPM是R ...

  4. Linux学习之三-Linux系统的一些重要配置文件

    Linux学习之三-Linux系统的一些重要配置文件 1.网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0 说明: DEVICE=eth0        ...

  5. Linux学习笔记-Linux系统简介

    Linux学习笔记-Linux系统简介 UNIX与Linux发展史 UNIX是父亲,Linux是儿子. UNIX发行版本 操作系统 公司 硬件平台 AIX IBM PowerPC HP-UX HP P ...

  6. [转帖]Linux教程(11)- linux中的计划作业

    Linux教程(11)- linux中的计划作业 2018-08-21 17:13:36 钱婷婷 阅读数 160更多 分类专栏: Linux教程与操作 Linux教程与使用   版权声明:本文为博主原 ...

  7. linux学习笔记(1) -- 关于命令的一些操作

    Linux 目录 /:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录.所有的东西都是从这里开始.当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到ho ...

  8. Linux学习笔记(3)-常用命令

    江湖传言,Linux和Windows不同,他主要的用途是在一些服务器,或者片内系统上,所以人机交互界面自然就没有Windows那么漂亮,其实也没有那个必要. 所以,学习Linux的第一步,就是学习他那 ...

  9. Linux学习笔记:常用100条命令(三)

    linux常用命令 1.查看当前yum源 yum list 2.查看电脑以及操作系统的相关信息 uname -a 3.查看当前版本信息 cat /proc/version 4.查看发行版本信息 cat ...

随机推荐

  1. C语言输入单字符避免回车的四种方法

    在scanf()中使用'\n'屏蔽回车符号. scanf("%d\n", &n); scanf("%c", &c); 2.在scanf()格式串 ...

  2. Oracel 数据库表操作

    表结构操作 创建表 create table tableName (id varchar2(36) primary key, name varchar2(36), age number(12,2), ...

  3. ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(一)(转载)

    本文结构 ASP.NET Core应用程序的构建 ASP.NET Core应用程序容器化所需注意的问题 应用程序的配置信息 端口侦听 ASP.NET Core的容器版本 docker镜像构建上下文(B ...

  4. bootstrap-switch使用,small、mini设置

    1.首先需要引用https://www.bootcss.com/p/bootstrap-switch/. bootstrap-switch插件库 2.先引用jquery文件,在引用bootstrap. ...

  5. <!DOCTYPE html> 详解

    前段时间的.netcore web应用程序的项目里面使用Frameset与Frame时候出现了一个问题就是使用不了,今晚准备测试一个bug却得到意外收获o(∩_∩)o 哈哈, 找到了最终原因funny ...

  6. Jenkins首次进入的一些设置及配置

    1.将Jenkins显示页面修改为中文环境 首先安装中文的插件:在manage Jenkins-Manage Plugins-可选插件 下载完成之后,在系统设置里边,修改为中文格式:manage Je ...

  7. 1.ZooKeeper ACL权限控制

    参考:https://blog.csdn.net/liuxiao723846/article/details/79391650 ZK 类似文件系统,Client 可以在上面创建节点.更新节点.删除节点 ...

  8. unable to retrieve container logs for docker kubernetes

    参考 https://github.com/knative/docs/issues/300 This is what happens when the build is successful and ...

  9. android中app卡顿优化问题

     所谓app卡顿原因就是在运行时出现了丢帧,还可能是UI线程被阻塞.首先来一下丢帧现象,android每16ms会对界面进行一次渲染,如果app的绘制.计算等超过了16ms那么只能等下一个16ms才能 ...

  10. Golang: 解析JSON数据之二

    上次我们介绍了 Go 语言中序列化和反序列化 JSON 数据的两个方法 Marshal() 和 Unmarshal(),并以示例演示了它们的用法. 我们在例子中看到,需要事先声明好对应的结构体,才能跟 ...