Linux基础入门之(常用命令)

1.命令行构成

命令提示符一般有GUIGLI两种接口

1.1命令行组成:命令提示符、promptbash(使用的shell)

1.1.1  提示符格式默认为系统变量设置

   使用echo命令输出PS1系统本地变量

[root@mzf testdir]# echo $PS1

[\u@\h \W]\$

1.1.2  用户登录提示符:

$:表示普通用户

#:表示系统用户

pwd 显示当前用户所在目录

[root@mzf testdir]# pwd

/testdir

1.1.3  shell:命令程序翻译,系统调用~kernel 之间 (命令解释器)

同时也是一种高级程序语言

shell有多种分类: sh csh tcsh ksh zsh 一般linux常用为bash

  查看shell

  查看当前使用的

echo ${SHELL}  -----  解释:调用变量时+$变量名

      查看当前支持的所有shell

    cat /etc/shells

    查看用户的默认shell

    getent passwd [username]

提示:bash也是一种程序

 

 

2.命令格式

2.1 命令的组成

 一般为

command [option] [args]

命令名   选项   参数

<>    : 必选   

[]    : 可选    

|    : 多选一  

{}   :分组   

2.1.1选项

作用:用于启动后关闭某些或者某个功能

选项分类:

短选项:-c ,例如 -l -h

长选项:--world ,例如 --all --human-readable

2.1.2参数:

命令的作用域对象,常见的有文件名、用户名等

注意事项:

1、多选项,以及多参数和命令之间使用空白字符分隔

2、取消和结束命令执行:Ctrl + C Ctrl + D

3、多个命令可以用;符号分开

4、一个命令可以用\分成多行

 

3.命令分类

提示: 命令运行在shell下,linux默认为bash

3.1 命令分类内部命令和外部命令

3.1.1

  类型区别:

   内部命令:操作系统自带的命令,系统内部的格式来执行

   外部命令:在当前系统路径下有对应的可以执行的目录以及文件

3.1.2

  禁用和启用内部命令: 使用enable 命令

用法:   enable - n [command]

例子: 禁用和启用cd 内部命令

默认切换到家目录

[root@mzf testdir]# cd

禁用 cd 命令

[root@mzf ~]# enable -n cd

再次使用cd 命令切换到上次所在目录,提示当前shell找不到此命令

[root@mzf ~]# cd -

-bash: cd: command not found

启用 cd 命令

[root@mzf ~]# enable cd

cd又可以使用了,切换到上次所在目录成功

[root@mzf ~]# cd -

/testdir

 

3.1.3

   判断一个命令的类型: 使用 type 命令

用法: type [command]

例子:

    显示cd 为shell内置命令

[root@mzf testdir]# type cd

cd is a shell builtin

显示ls 为命令别名

[root@mzf testdir]# type ls

ls is aliased to `ls --color=auto'

显示 touch 为外部命令,执行文件在/bin/touch

[root@mzf testdir]# type touch

touch is hashed (/bin/touch)

 

3.1.4

找到外部命令的执行文件: 使用 which

用法: which [command]

例子:

[root@mzf testdir]# which ls

alias ls='ls --color=auto'

        /bin/ls

 

找到外部命令的帮助文件: 使用whereis

用法:whereis [command]

[root@mzf testdir]# whereis ls

ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz

3.1.5

外部命令执行过后会将命令路径缓存到kv(key-value)中

查看和清除外部命令的缓存: 使用hash

hash [option] [args]

例子:

查看当前执行过的命令缓存

[root@mzf testdir]# hash

hits    command

4    /usr/bin/tty

1    /bin/hostname

1    /bin/df

注; hits 表示执行的次数

 

清空所有缓存命令缓存 remove

[root@mzf testdir]# hash -r

[root@mzf testdir]# hash

hash: hash table empty

 

清除指定命令缓存

    [root@mzf testdir]# hash

hits    command

   1    /sbin/ifconfig

   2    /bin/ls

    [root@mzf testdir]# hash -d ls

    [root@mzf testdir]# hash

hits    command

   1    /sbin/ifconfig

3.2 自动补全

  命令补全

内部命令:会直接调用系统内部shell进行查找

外部命令: 系统会想到hash缓存表中查找,找不到会向bash会操作PATH环境变量中的路径去查找,按从左往右的顺序进行查询

  路径补全

把用户给的的字符当作开头,如果唯一将自动补全,多个将列开头符合的文件列表

  使用方法: 按一次或2次Tab键,CentOS7中支持命令的长选项自动补全

 

 

 

4.常用命令

系统和硬件时间

系统和硬件时间的区别

  硬件时间:主板blos cmos上的时间 (开机工地的纽扣电池)

时间管理

   linux : 使用rtc 实时时间

         硬件时钟 (比如开机的供电纽扣电池)

            hwclock or clock

                   -w   把系统时间写入硬件

                   -s   把硬件时间写入系统

         系统时钟 (与硬件时钟有点误差)

            date

系统时间和硬件时间相互转换 clock 命令

查看当前系统时间

[root@mzf testdir]# date

Sat Jul 23 14:00:38 CST 2016

查看当前硬件时间

[root@mzf testdir]# clock

Sat 23 Jul 2016 01:57:37 PM CST  -0.155398 seconds

把系统时间写入硬件时间

[root@mzf testdir]# clock -w

查看当前硬件时间

[root@mzf testdir]# clock

Sat 23 Jul 2016 02:01:13 PM CST  -1.056194 seconds

修改系统时间

[root@mzf testdir]# date '100110102001.10'

Mon Oct  1 10:10:10 CST 2001

将硬件时间写入系统时间

[root@mzf testdir]# clock -s

[root@mzf testdir]# date

Sat Jul 23 14:04:00 CST 2016

 

注: hwclock 的用法和clock的以上用法一样

设置系统时间 date 命令

用法:date [[MMDDhhmm[[CC]YY][.ss]]

例子:设置当前系统时间为2016723135559

[root@mzf testdir]# date  '072313552016.59'

Sat Jul 23 13:55:59 CST 2016

显示系统时间 date 命令

  例子

显示当前系统时间

[root@mzf testdir]# date

Sat Jul 23 13:23:51 CST 2016

显示当前系统时间为年月日

[root@mzf testdir]# date +%F

2016-07-23

显示当前系统时间为年月日 小时分钟秒

[root@mzf testdir]# date +%Y-%m-%d%t%H:%M:%S

2016-07-23      13:24:59

[root@mzf testdir]# date

Sat Jul 23 13:26:29 CST 2016

    显示前10天的年月日

[root@mzf testdir]# date -d '-10 day'

Wed Jul 13 13:27:08 CST 2016

  显示后20天的年月日

[root@mzf testdir]# date -d '20 day'

Fri Aug 12 13:27:23 CST 2016

[root@mzf testdir]# date

Sat Jul 23 13:27:40 CST 2016

  显示前10天的年月日

显示指定日期格式的前1 天

[root@mzf testdir]# date -d '-1 day' +%F

2016-07-22

显示指定日期格式的后一天

[root@mzf testdir]# date -d '1 day' +%F

2016-07-24

显示指定日期格式的前1 天

[root@mzf testdir]# date -d '1 day ago 20140101' +%F

2013-12-31

显示指定日期格式的后1 天

[root@mzf testdir]# date -d '-1 day ago 20140101' +%F

2014-01-02

 

 

date命令

显示日历表 cal 命令

用法:cal  [CCYY]  或者 cal  [MM] [CCYY]

 例子

显示当这个月的日历

[root@mzf testdir]# cal

      July 2016     

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

显示今年的日历

[root@mzf testdir]# cal 2016

                               2016                               

 

       January               February                 March       

Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa

                1  2       1  2  3  4  5  6          1  2  3  4  5

 3  4  5  6  7  8  9    7  8  9 10 11 12 13    6  7  8  9 10 11 12

10 11 12 13 14 15 16   14 15 16 17 18 19 20   13 14 15 16 17 18 19

17 18 19 20 21 22 23   21 22 23 24 25 26 27   20 21 22 23 24 25 26

24 25 26 27 28 29 30   28 29                  27 28 29 30 31

31

显示指定年月的日历

[root@mzf testdir]# cal 07 2016

      July 2016     

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

 

 

设置多窗口会话 screen 命令

用法:

注:session为自定义的会话名称

screen -S [session]  创建会话

screen -ls 查看打开的会话

screen -x  [session] 加入会话

screen -d  远程detach 剥离会话

Ctrl+d,a  剥离当前会话

exit 退出会话

screen -r [session] 恢复某个会话

screen -d -r [session] 退出当前会话并恢复到指定会话

 

例子

创建一个会话

[root@mzf testdir]# screen -S mysession

查看当前打开的会话

[root@mzf testdir]# screen -ls

There is a screen on:

        5544.mysession  (Attached)

按Alt+d,a,暂时离开当前会话,然后可以看到

[root@mzf testdir]#

 

[detached]

然后查看已经打开的会话

[root@mzf testdir]# screen -ls

There are screens on:

        7472pxs-0.mzf  (Detached)

        5575.mysession  (Attached)

恢复到刚才创建的会话

[root@mzf testdir]# screen -r mysession

使用另外一个终端登录

[root@mzf testdir]# screen -x mysession

然后会发现输入一些命令的操作和输出结果会同屏显示

这时断开连接

[root@mzf testdir]# screen -ls

There are screens on:

        7472pxs-0.mzf  (Detached)

        5575.mysession  (Attached)

然后再次加入并剥离其它会话

[root@mzf testdir]# screen -ls

There are screens on:

        7472pxs-0.mzf  (Detached)

        5575.mysession  (Attached)

[root@mzf testdir]# screen -d -r 5575

 

 

 

输出字符 echo 命令

使用方法:echo [opption] [string]

常用选项:

-n 表示不换行输出

-e 特殊处理一些特定意义字符,并不会当成一般字符输出

      \a 表示输出是发出警报声

  \b 表示退格键

  \c 表示压缩换行

      \n 换行且光标移至行首

  \r 表示光标移至行首不换行

  \t 插入制表符

  \\ 输出 \ 符号

  \0nn  要插入的nnn(八进制)字符ACSII字符

  \xHH  插入HH(十六静止)代表的ACSII字符

注意:在模型sshtelnet终端上可能使用-e 输出ACSII可能出现乱码或者屏幕混乱

使用 reset   --- 恢复系统字符界面乱码

 

例子

输出标准字符串

[root@mzf testdir]# echo "Hello World"

Hello World

不换行输出

[root@mzf testdir]# echo -n "Hello World"

发出警报声

[root@mzf testdir]# echo -e "ssssss\a"

删除\b前面的一个字符

[root@mzf testdir]# echo -e "Hello\b World"

Hell World

压缩换行符

[root@mzf testdir]# echo -e "Hello\c World"

Hello[root@mzf testdir]# echo -e "Hello\c World"

换行且光标移动到行首

Hello[root@mzf testdir]# echo -e "Hello\n World"

Hello

 World

不换行移动光标到行首

echo -e "aaa b\rbb"

bba b

echo -e "aaa \rbbb"

bbb

echo -e "aaa \rbbb\r"

bbb

echo -e "aaa bbb\r"

aaa bbb

插入制表符(Tab键)

echo -e "aaa\tbbb"

aaa     bbb

插入\符号

echo -e "aaa\\kbbb"

aaa\kbbb

显示红色字体

echo -e "\033[43;31mred hat\033[0m"

输出闪烁的字体

echo -e “033[43;31;5m*******\033[0m”

5.命令调用

“”   表示强引用

‘’    表示弱引用

``    表示子命令

调用一个命令的执行结果

例如1: 调用并输出主机名

[root@mzf testdir]# echo "my hostname is $(hostname)"

my hostname is mzf.domain

[root@mzf testdir]# echo "my hostname is `hostname`"

my hostname is mzf.domain

例如2: 使用’’会吧命令调用当作普通字符输出

[root@mzf testdir]# echo 'my hostname is $(hostname)'

my hostname is $(hostname)

 

6.  分组调用 {}

把字符分组输出

[root@mzf testdir]# echo file{1,2,3}

列出当前目录下的file1 file2 file3

[root@mzf testdir]# ls -l file{1,2,3}

创建多个文件

[root@mzf testdir]# touch file{1,2,3}.{txt,log}

强制删除多个文件

[root@mzf testdir]# rm -f file{1,2,3}

 

7.  使用命令帮助

whatis简介命令的用途

特性:

1、显示命令的简短描述

2、每晚使用一个数据库更新

3、刚安装后不可立即使用

4、makewhatis (centos6) | madb (centos 7)重新制作数据库

5、举例: whatis cal man -f cal

whereis查看文件的帮助文档路径

whereis <command>

 

 

使用帮助文档

内部命令:  

help  <command>

man  bash

外部命令:

1、 command  --help 或者 command -h

2、 使用帮助手册

        man  <command>

3、 查看命令详细信息

info  <command>

    4、 程序自身的帮助文档

README

INSTALL

ChangeLog

5、 程序官方文档

         官方站点:Documentation

    6发行版的官方文档

    7Google

 

INSTALL

ChangeLog

(5) 程序官方文档

官方站点:Documentation

(6) 发行版的官方文档

(7) Google

 

command --help 的使用

作用: 显示命令的总结和参数列表

   使用大多数,并不是所有

举例:

date --help

Usage:date[OPTION]...[+FORMAT]or: date[-u|--utc|--universal][MMDDhhmm[[CC]YY][.ss]]

说明:

[]  可选的,可以加

CAPS 或者 <command> 是变量,必须项

... 表示一个分组的参数列表,比如user1,user2

start|status|stop|restart 表示多选一,不可同时选择

-abc同等 -a -b -c

8.  执行过的命令历史记录 history

8.1 常用命令用法

查看命令记录(记录号+命令)

history    

清除所有命令历史记录

history -wc

设置记录大小为0

export HISTSIZE=0

删除第几号记录,num为指定记录号

history -d [num]

删除从num号到upnum号的历史记录

history -d [num] [upnum]

 

关闭和开启历史记录功能

set +o history    关闭history历史记录功能

set -o history    开启history历史记录功能

 

8.2如何不关闭历史记录功能并不记录输入的命令?

1、 设置HISTCONTROL环境变量

export HISTCONTORL=ignospace

2、 在用输入的命令前面敲一个空格键

[space]echo "this is a top sercet."

注:[space]是指你敲了空格键

3、 查看历史记录是否记录上次命令

history

发令未记录echo 命令表示成功