linux学习11 Linux基础命令及命令历史

一、Linux系统上的文件类型

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

[[email protected] ~]# ls -l
total 4
-rw-------. 1 root root 1252 Oct 24  2018 anaconda-ks.cfg

  2、d:directory,目录文件

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

[[email protected] ~]# ls -l /dev/sda*
brw-rw---- 1 root disk 8, 0 Dec 14 17:42 /dev/sda
brw-rw---- 1 root disk 8, 1 Dec 14 17:42 /dev/sda1
brw-rw---- 1 root disk 8, 2 Dec 14 17:42 /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

[[email protected] /]# type cd
cd is a shell builtin

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

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

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

    c、命令别名

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

[[email protected] /]# 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有效

[[email protected] /]# alias cls="clear"
[[email protected] /]# 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‘

      撤销别名

[[email protected] /]# unalias cls
[[email protected] /]# 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 ,忽略别名

[[email protected] /]# which --skip-alias ls
/usr/bin/ls
[[email protected] /]# \which ls
/usr/bin/ls

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

[[email protected] /]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

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

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

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

[[email protected] /]# who
root     pts/0        2019-12-14 17:43 (192.168.10.1)
root     pts/1        2019-12-14 18:37 (192.168.10.1)

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

[[email protected] /]# who -b
         system boot  2019-12-14 17:42

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

    c、-l,显示登陆进程

[[email protected] /]# who -l
LOGIN    tty1         2019-12-14 17:43               672 id=tty1

    d、-r,查看进程级别

[[email protected] /]# who -r
         run-level 3  2019-12-14 17:43

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

[[email protected] /]# w
 18:52:24 up  1:09,  2 users,  load average: 0.06, 0.03, 0.05
USER     TTY      FROM             [email protected]   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.10.1     17:43    0.00s  0.12s  0.00s w
root     pts/1    192.168.10.1     18:37   14:39   0.02s  0.00s less -s

三、bash的基础特性

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

    a、history命令可用查看

[[email protected] /]# type history
history is a shell builtin

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

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

[[email protected] /]# echo $HISTSIZE
1000

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

[[email protected] ~]# echo $HISTFILE
/root/.bash_history

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

[[email protected] ~]# echo $HISTFILESIZE
1000

  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的历史命令

[[email protected] ~]# history -d 200

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

[[email protected] ~]# history -d 200 5

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

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

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

[[email protected] ~]# history 10
  352  cat /root/.bash_history |wc -l
  353  cat /root/.bash_history
  354  cat /root/.bash_history |wc -l
  355  history -w
  356  history
  357  history -d 351
  358  history
  359  history -d 353 5
  360  history
  361  history 10

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

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

[[email protected] ~]# history 4
  363  ls
  364  history
  365  history 2
  366  history 4
[[email protected] ~]# !363
ls
anaconda-ks.cfg

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

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

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

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

    a、ESC,.

    b、!$

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

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

    a、环境变量:HISTCONTROL

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

      ignoredups:忽略重复的命令

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

      ignoreboth:以上两者同时生效

    b、修改变量的值

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

原文地址:https://www.cnblogs.com/Presley-lpc/p/12038426.html

时间: 2024-10-21 04:34:09

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

Linux学习闲谈(一)——Shell基本操作与命令

Linux学习闲谈(一) --Shell基本操作与命令 (转载请附上本文链接--linhxx) 1.#!/bin/sh 放在程序开头,表示用/bin/sh方式来解析. 2.变量 1)变量赋值 varname='xxx',除了在变量赋值和在FOR循环语句头中,其他情况下BASH 中的变量使用必须在变量前加"$"符号,即采用 $varname使用变量.更为标准的变量引用方式是 ${STR} 这样的,$STR 自不过是对 ${STR} 的一种简化.在复杂情况下(即有可能产生歧义的地方)最好用

Linux学习笔记一 磁盘管理常用命令

Linux学习笔记一 磁盘管理常用命令 Linux系统下,一切均是文件,磁盘是一种特殊的块设备文件. 常用的硬盘接口类型 并口:IDE ,SCSI 串口:SATA,SAS 磁盘设备文件设备文件的命令规则: IDE: 设备名为/dev/hda, /dev/hdb-.  (末尾的a ,b-代表不同的IDE硬盘) SCSI:设备名为/dev/sda, /dev/sdb-.(末尾的a,b-代表不用的SCSI硬盘 机械式硬盘: track: 磁道(盘面上由外向里划分成不同的磁道) cylinder: 柱面

Linux学习系列——零基础开始

第一部分 Linux基础命令 1.查看系统信息命令 2.Linux内核版本 Linux学习系列--零基础开始,布布扣,bubuko.com

linux学习之 Linux下的Eclipse安装

①下载Eclipse的Linux版  http://www.eclipse.org/downloads/ 选择Linux版  前三个随意选择一个连接  选择系统的版本32位的还是64位的 点击下载 ②如果是用的windows系统下载的  将文件拷贝到Linux系统里面 ,如果是Linux系统直接下载跳过此步骤    拷贝的方法:①通过samba服务                    ②U盘   比如 在/home下面建立一个Eclipse文件夹   打开终端 mkdir /home/ecli

【Linux 学习】Linux 系统结构

最近一直在编译Linux内核,往TQ2440里烧写Uboot,烧内核,烧文件系统.然后就有这么几个问题. (1)Uboot和BootLoader区别 BootLoader 从字面上讲是"启动引导器",就是用来引导操作系统启动的.而Uboot是BootLoader的一种. (2)完整的Liunx操作系统组成部分 Liunx内核: Linux内核是操作系统的核心,它负责操作系统的进程.内存.驱动程序.文件系统.网络等 主要有进程管理.内存管理.文件系统.设备驱动程序.网络组成. 文件系统:

linux学习之linux的hostname修改详解《转》

linux的hostname是一个kernel变量,可以通过hostname命令来查看本机的hostname.也可以直接cat /proc/sys/kernel/hostname查看. #hostname #cat /proc/sys/kernel/hostname 上面两种输出结果相同. 修改运行时Linux系统的hostname,即不需要重启系统 hostname命令可以设置系统的hostname #hostname newname newname即要设置的新的hostname,运行后立即生

【Linux学习】Linux的文件权限(一)

Linux操作系统是一个非常优秀的操作系统,同时也是一个多用户.多任务的操作系统.那么这就意味着会有很多的人同时使用同一个操作系统的情况.这时,对于一个用户来说,保护好自己的隐私权就成了一个很关键的问题. ★用户与用户组 "用户与用户组"能很好的解决这个问题,用户可以根据自己的意愿设置自己的文件的权限. ●  文件所有者 文件所有者顾名思义就是拥有文件的用户.如果我的用户下面有一些比较隐私的文件不希望别人看见,我就可以设置文件的权限:只有自己的用户(文件所有者)可以修改或者查看这些文件

Linux学习:Linux基础命令集(1)

本次记录以下命令如date, clock, hwclock, cal,ls, cd, pwd, tty,whereis, which, stat, echo, shutdown, halt, reboot, poweroff, who, w, whoami的使用格式.常用选项及它们有哪些使用实例等. 日期与时间相关命令 1.  date 日期与时间显示设置命令 date只显示与设定系统时钟的日期与时间,它可以与互联网在线NTP服务器保持同步更新,也可以利用服务器本身自带的硬件时钟来进行同步. 日

Linux学习:Linux基础命令集(2)

本次记录以下命令如mkdir, rmdir, tree, dirname,basename, cat, tac, more, less, tail, head, touch, file, cp, mv, rm, wc, cut, sort, uniq的使用格式.常用选项及它们有哪些使用实例等. 目录管理相关命令 1. mkdir 创建新目录命令 创建新目录命令格式:mkdir[OPTION]... /PATH/TO/SOMEWHERE OPTION: -p递归创建目标目录包含上层目录 [[ema