Linux 中常用的基础命令

==============================================================================

概述:


==============================================================================

Linux 基础命令

 1.目录相关命令的使用

pwd:printing working directory

  • 显示工作目录

对于pwd命令,其还有一些相关的环境变量:

  • PWD:保存了当前目录路径

  • OLDPWD:保存了上一次所在目录的路径

 每次执行pwd命令的时候其实就是在读取PWD的值

cd:change directory 改变工作目录

语法格式:cd [/PATH/TO/SOMEDIR]

  • cd或cd~:切换回当前用户的家目录;注意:bash中~表示家目录;

  • cd ~USERNAME:切换至指定用户的家目录;(只被管理员允许)

  • cd -:在上一次所在目录与当前目录之间来回切换;

      相关的环境变量:

          $PWD:当前的工作目录

          $OLDPWD:上一次的工作目录

  • cd ..:返回上一级目录

演示:

 1.pwd和cd命令

[root@CentOS6 ~]# pwd
/root
[root@CentOS6 ~]# cd ~

# 切换至指定用户的家目录
[root@CentOS6 ~]# cd ~centos
[root@CentOS6 centos]# pwd
/home/centos

[root@CentOS6 ~]# cd /etc/sysconfig
[root@CentOS6 sysconfig]# pwd
/etc/sysconfig
[root@CentOS6 sysconfig]# cd ..

ls:list 显示指定路径下的文件列表

语法格式:

  • ls [OPTION]... [FILE]...

选项:

  • -a:--all 显示所有文件,包括隐藏文件;

  • -A:--almost-all:显示除 . 和 .. 之外的所有文件;

  • -l:--long 长格式列表,即显示文件的详细属性信息

    wKioL1iab1vRM2_EAACWv-UHc-U594.png

  • -h,--human-readable:对文件单位大小换算:换算后的结果可能会非精确值;(通常以 ll -h 方式使用)

  • -d:查看目录自身而非其内部文件列表(通常以 ll -d 方式使用

  • -r:reverse 逆序显示;默认是以升序显示

  • -R:recursive,递归显示;如果一个目录里有子目录,则同时也显示其子目录中的文件;

  • -Sl : 文件由大到小排序

  • -Slr文件由小到大排序 配合 l

  • -t 修改时间排序,-Slt 等配合l,S,r等排序

演示:

[root@CentOS6 ~]# ls -a
.                .bash_logout   .cshrc   Documents  .gnome2          .gvfs               .lesshst        .nautilus      splash.jpg  .viminfo
..               .bash_profile  .dbus    Downloads  .gnome2_private  .ICEauthority       .local          Pictures       .ssh        .vimrc
anaconda-ks.cfg  .bashrc        Desktop  .esd_auth  .gnote           .imsettings.log     .mozilla        Public         .tcshrc     .Xauthority
.ansible         .cache         discuz   .gconf     .gnupg           install.log         Music           .pulse         Templates   .xsession-errors
.bash_history    .config        .dmrc    .gconfd    .gtk-bookmarks   install.log.syslog  .mysql_history  .pulse-cookie  Videos

[root@CentOS6 ~]# ls -A
anaconda-ks.cfg  .bashrc  Desktop    .esd_auth        .gnote          .imsettings.log     .mozilla        Public         .tcshrc    .Xauthority
.ansible         .cache   discuz     .gconf           .gnupg          install.log         Music           .pulse         Templates  .xsession-errors
.bash_history    .config  .dmrc      .gconfd          .gtk-bookmarks  install.log.syslog  .mysql_history  .pulse-cookie  Videos
.bash_logout     .cshrc   Documents  .gnome2          .gvfs           .lesshst            .nautilus       splash.jpg     .viminfo
.bash_profile    .dbus    Downloads  .gnome2_private  .ICEauthority   .local              Pictures        .ssh           .vimrc

# 显示详细信息
[root@CentOS6 ~]# ls -l
total 252
-rw-------. 1 root root   2429 Nov  6 12:11 anaconda-ks.cfg
drwxr-xr-x  2 root root   4096 Nov 23 08:50 Desktop
drwxr-xr-x  4 root root   4096 Nov 23 16:44 discuz
drwxr-xr-x  2 root root   4096 Nov 23 08:50 Documents
drwxr-xr-x  2 root root   4096 Nov 23 08:50 Downloads
-rw-r--r--. 1 root root  45324 Nov  6 12:11 install.log
-rw-r--r--. 1 root root   9963 Nov  6 12:07 install.log.syslog
drwxr-xr-x  2 root root   4096 Nov 23 08:50 Music
drwxr-xr-x  2 root root   4096 Nov 23 08:50 Pictures
drwxr-xr-x  2 root root   4096 Nov 23 08:50 Public
-r--r--r--  1 root root 151230 Nov 23 12:26 splash.jpg
drwxr-xr-x  2 root root   4096 Nov 23 08:50 Templates
drwxr-xr-x  2 root root   4096 Nov 23 08:50 Videos

  2.只显示某目录下的隐藏文件

[root@centos7 ~]# ls -d /.*
/.  /..  /.autorelabel

[root@centos7 ~]# ls -d .*
.   .ansible       .bash_logout   .bashrc  .config  .esd_auth        .gtkrc-2.0-kde4  .local    .mysql_history  .tcshrc   .vimrc
..  .bash_history  .bash_profile  .cache   .cshrc   .gstreamer-0.10  .kde             .mozilla  .ssh            .viminfo  .Xauthority

[root@centos7 ~]# ls -d /etc/.*
/etc/.  /etc/..  /etc/.pwd.lock  /etc/.updated

 3.只显示某目录下的目录

Linux 中常用的基础命令_第1张图片 

 3.文件查看类命令

cat:文件查看类工具 

格式:cat [OPTION]... [FILE]...

选项:

  • -A:显示所有非正常的所有符号;

  • -E:显示行结束符$;

  • -T:显示制表符;

  • -v:显示其他的非打印字符;

  • -n:对显示的行进行编号,与文件内容没有联系;

  • -b:打印出行号(空白行不标行号)

tac,rev命令(同cat命令,显示顺序不同)

  • tac 命令同cat命令,逆序显示(列)

  • rev 命令逆序显示行字符

直接输入cat命令表示等待用户的输入并打印显示,结束Ctrl+c

文件内容类型查看命令:file

  • 格式:file [file]...

  • 通过file命令可以获知改文件是什么类型的,如普通文件、目录、链接文件等

演示:

 1.cat命令

[root@centos7 ~]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Sun Nov  6 10:30:14 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe /                       xfs     defaults        0 0
UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot                   xfs     defaults        0 0
UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr                    xfs     defaults        0 0
UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap                    swap    defaults        0 0
[root@centos7 ~]# cat /etc/issue
\S
Kernel \r on an \m

Mage Education Learning Services
http://www.magedu.com

# 连接显示多个文件
[root@centos7 ~]# cat /etc/fstab /etc/issue  

#
# /etc/fstab
# Created by anaconda on Sun Nov  6 10:30:14 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe /                       xfs     defaults        0 0
UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot                   xfs     defaults        0 0
UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr                    xfs     defaults        0 0
UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap                    swap    defaults        0 0
\S
Kernel \r on an \m

Mage Education Learning Services
http://www.magedu.com

# 对显示的行进行编号
[root@centos7 ~]# cat -n /etc/fstab 
     1	
     2	#
     3	# /etc/fstab
     4	# Created by anaconda on Sun Nov  6 10:30:14 2016
     5	#
     6	# Accessible filesystems, by reference, are maintained under '/dev/disk'
     7	# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
     8	#
     9	UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe /                       xfs     defaults        0 0
    10	UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot                   xfs     defaults        0 0
    11	UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr                    xfs     defaults        0 0
    12	UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap                    swap    defaults        0 0

#打印出行号,空白字符不标行号
[root@centos7 ~]# cat -b /etc/fstab 

     1	#
     2	# /etc/fstab
     3	# Created by anaconda on Sun Nov  6 10:30:14 2016
     4	#
     5	# Accessible filesystems, by reference, are maintained under '/dev/disk'
     6	# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
     7	#
     8	UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe /                       xfs     defaults        0 0
     9	UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot                   xfs     defaults        0 0
    10	UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr                    xfs     defaults        0 0
    11	UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap                    swap    defaults        0 0
# 显示行结束符
[root@centos7 ~]# cat -E /etc/fstab 
$
#$
# /etc/fstab$
# Created by anaconda on Sun Nov  6 10:30:14 2016$
#$
# Accessible filesystems, by reference, are maintained under '/dev/disk'$
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info$
#$
UUID=7bdf8e89-59c8-425e-a108-5c7c115e0afe /                       xfs     defaults        0 0$
UUID=3360e49a-d492-4f98-9957-edcb4db93384 /boot                   xfs     defaults        0 0$
UUID=eb3cdf15-b9e4-4ea6-b28b-75d4b4a54df8 /usr                    xfs     defaults        0 0$
UUID=18deb1ed-ee42-4269-94f3-6791304344e8 swap                    swap    defaults        0 0$

 2.cat,tac,和rev命令的区别

[root@centos7 ~]# echo "123456789" > /testdir/f1
[root@centos7 ~]# ll /testdir/f1
-rw-r--r-- 1 root root 10 2月  11 16:29 /testdir/f1

[root@centos7 ~]# cat /testdir/f1
123456789
[root@centos7 ~]# tac /testdir/f1
123456789
[root@centos7 ~]# rev /testdir/f1
987654321

[root@centos7 ~]# ls > /testdir/f2
[root@centos7 ~]# cat /testdir/f2
anaconda-ks.cfg
Desktop
Discuz
Documents
Downloads
lnamp
MHA
Music
nginx
Pictures
Public
Templates
Videos
zabbix-agent
zabbix-proxy

[root@centos7 ~]# tac /testdir/f2
zabbix-proxy
zabbix-agent
Videos
Templates
Public
Pictures
nginx
Music
MHA
lnamp
Downloads
Documents
Discuz
Desktop
anaconda-ks.cfg

[root@centos7 ~]# rev /testdir/f2
gfc.sk-adnocana
potkseD
zucsiD
stnemucoD
sdaolnwoD
pmanl
AHM
cisuM
xnign
serutciP
cilbuP
setalpmeT
soediV
tnega-xibbaz
yxorp-xibbaz

 3.file命令

[root@centos7 ~]# file /etc/fstab
/etc/fstab: ASCII text

[root@centos7 ~]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=aa7ff68f13de25936a098016243ce57c3c982e06, stripped

 4.echo回显命令

echo是个内建命令,因此可以使用帮助来获得echo的帮助。

功能:显示字符

语法:echo [-neE] [字符串]

说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开并在最后加上换行号

  • # echo -n :关闭自动换行功能

echo 需要使用-e 参数来使转义字符生效(字符串一定要加引号)

 wKioL1iZ9iCB19LOAACKUbdfUyk172.png

字符串可以使用引号,单引号和双引号均可使用

  • 单引号:强引用,变量引用不执行替换(最傻)

           如:echo "$SHELL" ---> 同:echo "${SHELL}"  变量引用的正规符号:${name}

  • 双引号:弱引用,变量引用会被替换(居中)    如:echo '$SHELL'

另外:

  • 反向单引号{也可使用$()}:为命令引用(最聪明)

  • 用途:当一个命令调用第二个命令的结果的时候才会用到。

演示:

[root@centos7 ~]# echo "hello word"
hello word
[root@centos7 ~]# echo -n "hello word"
hello word[root@centos7 ~]# 
[root@centos7 ~]# echo  "hello \nword"
hello \nword
[root@centos7 ~]# echo -e  "hello \nword"
hello 
word
[root@centos7 ~]# echo -e  "hello \tword"
hello 	word

  变量中单引号,双引号和反向单引号的使用

# 双引号变量被替换,弱引用
[root@centos7 ~]# echo "echo $USER"
echo root

# 单引号变量不被替换,强引用
[root@centos7 ~]# echo 'echo $USER'
echo $USER

# 反向单引号,一个命令调用第二个命令的结果
[root@centos7 ~]# echo `echo $USER`
root
[root@centos7 ~]# echo $(echo $USER)
root

 4.关机或重启命令

管理类命令

  • 关机:halt,poweroff,shutdown,init0

  • 重启:reboot,shutdown,init6

  • 跟用户登录相关:who,whoami,w

halt和poweroff

两者都是关机命令

  • -f 强制关机,相当于切断电源

reboot:重启

  • -f 强制

  • -p 切断电源

shutdown:关机或重启

 格式:shutdown [OPTION...] [TIME] [WALL...]

  • -r :reboot 重启;

  • -h :halt 关机;

  • -c :cancle 取消关机

TIME:

  • now:立刻;

  • +m:相对时间表示法,从命令提交开始多久后,例如:+3 分钟;

  • hh:mm:绝对时间表示,到具体时间后关机 

WALL:

  • wall 命令会在所有终端显示其输入的内容,例如:wall "taotao ai xiuxiu"

演示:

# 在5分钟后关机,会通知给所有人
[root@centos7 ~]# shutdown -r +5
Shutdown scheduled for 三 2017-02-08 09:35:05 CST, use 'shutdown -c' to cancel.
[root@centos7 ~]# 
Broadcast message from root@centos7 (Wed 2017-02-08 09:30:05 CST):

The system is going down for reboot at Wed 2017-02-08 09:35:05 CST!

#取消关机,也会通知给所有人
[root@centos7 ~]# shutdown -c
[root@centos7 ~]# 
Broadcast message from root@centos7 (Wed 2017-02-08 09:30:45 CST):

The system shutdown has been cancelled at Wed 2017-02-08 09:31:45 CST!

# 加wall可显示自定义的语句
[root@centos7 ~]# shutdown -r +5  "hello everyone"
Shutdown scheduled for 三 2017-02-08 09:41:27 CST, use 'shutdown -c' to cancel.
[root@centos7 ~]# 
Broadcast message from root@centos7 (Wed 2017-02-08 09:36:27 CST):

hello everyone
The system is going down for reboot at Wed 2017-02-08 09:41:27 CST!

 5.与登录相关的命令

whoami

  • 显示当前登录有效用户

who

作用:系统当前所有的登录会话

格式:who [OPTION]...

  • -b:系统此次启动的时间;

  • -r:运行级别

w

  • 系统当前所有的登录会话及所做的操作;

演示:

[root@centos7 ~]# whoami
root

[root@centos7 ~]# who
root     tty1         2017-02-08 09:26
root     pts/0        2017-02-08 08:57 (192.168.1.104)
root     pts/1        2017-02-08 09:30 (192.168.1.104)
root     pts/2        2017-02-08 10:15 (192.168.1.104)
root     pts/3        2017-02-08 10:18 (192.168.43.174)
root     pts/4        2018-07-07 10:10 (192.168.1.104)
[root@centos7 ~]# who -b
         系统引导 2017-02-08 15:48
[root@centos7 ~]# who -r
         运行级别 3 2017-02-08 08:29

[root@centos7 ~]# w
 11:02:39 up  2:32,  6 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1                      09:26    1:02m  0.08s  0.08s -bash
root     pts/0    192.168.1.104    08:57    1:25m  0.17s  0.17s -bash
root     pts/1    192.168.1.104    09:30    1:32m  0.04s  0.04s -bash
root     pts/2    192.168.1.104    10:15   47:11   0.05s  0.05s -bash
root     pts/3    192.168.43.174   10:18     ?     0.26s  0.26s -bash
root     pts/4    192.168.1.104    10:10     ?     0.10s  0.01s w

 6.与日期相关的命令

date命令:显示时间和日期

格式:date[OPTION]...[+FORMAT] 

date命令可以按照指定格式显示日期,只键入date,则以默认格式显示当前时间,如下:

wKioL1iaf_OTg-knAAAOVjM0UTo200.png

如果需要以指定格式显示日期,可以使用“+”开头的字符串指定其格式,详细格式如下(常用):

  • %D:直接显示日期 mm/dd/yy (“Y”长格式年,“y”短格式年)

  • %F:直接显示日期 (YY-mm-dd) ;

  • %T:直接显示时间(24小时制);

  • %Y:完整年份(0000-9999);

  • %m显示月份;

  • %d:日;

  • %A:星期几(Sunday-Saturday);

  • %a:星期几(Sun-Sat);

  • %w:一周中的第几天

  • %H:显示小时;

  • %M:显示分钟 ;

  • %S:显示秒;

  • %s:从1970年到现在经过的秒数;

设置时间

格式:date [MMDDhhmm[[CC]YY][.ss]]   

  • MM:月份;

  • DD:几号;

  • hh:小时;

  • mm:分钟;

  • CC:两位年份;

  • CCYY:四位年份;

  • ss:秒;

用 -s 可以设置系统时间

Linux的两个时钟

系统时钟

  • 由Linux内核通过cpu的工作频率进行计时

硬件时钟:

  • 就是主板bios提供的时钟,由主板电池供电来维持运行

命令

  • date命令显示的是系统时间;

  • clock或者hwclock显示的是硬件时钟

        -s, --hctosys以硬件时钟为准,校正系统时钟

        -w, --systohc以系统时钟为准,校正硬件时钟

演示:

  1.常用格式的日期显示

[root@centos7 ~]# date +%D
02/08/17
[root@centos7 ~]# date +%F
2017-02-08
[root@centos7 ~]# date +%T
10:20:00
[root@centos7 ~]# date +%Y
2017
[root@centos7 ~]# date +%m
02
[root@centos7 ~]# date +%d
08
[root@centos7 ~]# date +%A
星期三
[root@centos7 ~]# date +%a
三
[root@centos7 ~]# date +%w
3
[root@centos7 ~]# date +%H
10
[root@centos7 ~]# date +%M
21
[root@centos7 ~]# date +%S
24
[root@centos7 ~]# date +%s
1486520492

 2.完整格式的日期显示:

[root@centos7 ~]# date "+现在的时间是:%Y-%m-%d %H:%M:%S"
现在的时间是:2017-02-08 10:23:29

[root@centos7 ~]# date "+现在的时间是:%F %H:%M:%S"
现在的时间是:2017-02-08 10:24:33

[root@centos7 ~]# date "+现在的时间是:%F %H:%M:%S %A"
现在的时间是:2017-02-08 10:24:51 星期三

 3.如果要显示的时间不是当前时间,而是经过运算的时间,则可以使用-d选项,如下:

# 显示3年前的时间
[root@centos7 ~]# date "+%F %H:%M:%S" -d "-3 year"
2014-02-08 10:26:08

# 显示3个月后的时间
[root@centos7 ~]# date "+%F %H:%M:%S" -d "+3 month"
2017-05-08 10:26:24

# 显示10天后的时间
[root@centos7 ~]# date "+%F %H:%M:%S" -d "+10 day"
2017-02-18 10:26:42

 4.有时候需要获取当前时间距离1970年0时0分0秒经历的秒数,保存在变量中,如下:

[root@centos7 ~]# time=`date "+%s"`
[root@centos7 ~]# echo $time
1486520847

 5.设置时间

[root@centos7 ~]# date -s "20180707 10:10:10"
2018年 07月 07日 星期六 10:10:10 CST

[root@centos7 ~]# date -s "2018-07-07 10:10:10"
2018年 07月 07日 星期六 10:10:10 CST

[root@centos7 ~]# date -s "2018/07/07 10:10:10"
2018年 07月 07日 星期六 10:10:10 CST

  6.系统时钟和硬件时钟

# 系统时钟
[root@centos7 ~]# date
2018年 07月 07日 星期六 10:26:42 CST

#硬件时钟
[root@centos7 ~]# clock
2017年02月08日 星期三 10时47分46秒  -0.292560 秒

[root@centos7 ~]# hwclock
2017年02月08日 星期三 10时47分53秒  -0.479196 秒

# 硬件时钟校正系统时钟
[root@centos7 ~]# clock -s
[root@centos7 ~]# date
2017年 02月 08日 星期三 10:48:24 CST

cal命令

  • 显示当前日历,默认显示当前月份的日历;

  • cal [YY]:显示年份的日历 如: # cal 09 2017 (注意书写顺序)

演示:

[root@centos7 ~]# cal
      二月 2017     
日 一 二 三 四 五 六
          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

[root@centos7 ~]# cal 2017
                               2017                               

        一月                   二月                   三月        
日 一 二 三 四 五 六   日 一 二 三 四 五 六   日 一 二 三 四 五 六
 1  2  3  4  5  6  7             1  2  3  4             1  2  3  4
 8  9 10 11 12 13 14    5  6  7  8  9 10 11    5  6  7  8  9 10 11
15 16 17 18 19 20 21   12 13 14 15 16 17 18   12 13 14 15 16 17 18
22 23 24 25 26 27 28   19 20 21 22 23 24 25   19 20 21 22 23 24 25
29 30 31               26 27 28               26 27 28 29 30 31

        四月                   五月                   六月        
日 一 二 三 四 五 六   日 一 二 三 四 五 六   日 一 二 三 四 五 六
                   1       1  2  3  4  5  6                1  2  3
 2  3  4  5  6  7  8    7  8  9 10 11 12 13    4  5  6  7  8  9 10
 9 10 11 12 13 14 15   14 15 16 17 18 19 20   11 12 13 14 15 16 17
16 17 18 19 20 21 22   21 22 23 24 25 26 27   18 19 20 21 22 23 24
23 24 25 26 27 28 29   28 29 30 31            25 26 27 28 29 30
30
        七月                   八月                   九月        
日 一 二 三 四 五 六   日 一 二 三 四 五 六   日 一 二 三 四 五 六
                   1          1  2  3  4  5                   1  2
 2  3  4  5  6  7  8    6  7  8  9 10 11 12    3  4  5  6  7  8  9
 9 10 11 12 13 14 15   13 14 15 16 17 18 19   10 11 12 13 14 15 16
16 17 18 19 20 21 22   20 21 22 23 24 25 26   17 18 19 20 21 22 23
23 24 25 26 27 28 29   27 28 29 30 31         24 25 26 27 28 29 30
30 31
        十月                  十一月                 十二月       
日 一 二 三 四 五 六   日 一 二 三 四 五 六   日 一 二 三 四 五 六
 1  2  3  4  5  6  7             1  2  3  4                   1  2
 8  9 10 11 12 13 14    5  6  7  8  9 10 11    3  4  5  6  7  8  9
15 16 17 18 19 20 21   12 13 14 15 16 17 18   10 11 12 13 14 15 16
22 23 24 25 26 27 28   19 20 21 22 23 24 25   17 18 19 20 21 22 23
29 30 31               26 27 28 29 30         24 25 26 27 28 29 30
                                              31

[root@centos7 ~]# cal 09 2017
      九月 2017     
日 一 二 三 四 五 六
                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

 7.type、alias、which和whereis命令

type 

格式:type COMMAND

  • 内部命令:builtin

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

    注意:

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

alias 命令别名

  • 获取所有可用别名的定义:~]# alias

  • 定义别名:~]# alias NAME='COMMAND'   (仅对当前shell有效)

  • 撤销别名:~]# unalias NAME

which 显示应用程序文件位置

格式:which COMMAND

注意:

  • 有时候一个命令还有其他的别名,但我们先看命令本身,而非别名,此时可以使用:

    which --skip-alias 禁止使用别名,直接使用原始命令

whereis命令:

作用:whereis - locate the binary, source, and manual page files for a command

格式:whereis [options] name...

选项:

  • -b:仅搜索二进制程序路径;

  • -m:仅搜索使用手册文件路径;

演示:

 1.type

[root@centos7 ~]# type cd
cd 是 shell 内嵌

[root@centos7 ~]# type date
date 已被哈希 (/usr/bin/date)

[root@centos7 ~]# type tree
tree 是 /usr/bin/tree

[root@centos7 ~]# type ls
ls 是 `ls --color=auto' 的别名

wKioL1iazijg7shYAAAse_IY3-U276.png

 2.which

[root@centos7 ~]# which ls
alias ls='ls --color=auto'
	/usr/bin/ls
[root@centos7 ~]# which --skip-alias ls
/usr/bin/ls

   3.whereis

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

  4.别名alias

[root@centos7 ~]# 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'


7.screen命令远程控制

使用方法:

  • 打开screen:   # screen -S [session 会话]

  • 加入screen:   # screen -x [session 会话]

  • 退出并关闭screen: exit

  • 剥离当前screen:  Ctrl+a+d

  • 显示所有已经打开的screen: # screen -ls

  • 恢复某screen: screen -r [screen]

bash的基础特性(一)

 1.命令历史

命令历史:

  • shell进程会在其会话中保存此前用户提交执行过的命令

history:

作用:

  • history 是管理命令历史,每次执行的命令都会放置在内存的缓存当中,直到退出当前终端后会被保存在命令历史文件当中

命令历史文件位置:

  • 登录shall后,新执行的命令只会记录在缓存当中

  • 登录shall后,会读取命令历史文件中的记录命令 

  • .bash_history  放置在家目录下的隐藏文件中

history命令用法

格式:

  • history [-c] [-d 偏移量] [n]

  • 或 history -anrw [文件名]

  •  history -ps 参数 [参数...]

选项:

  • -c:清空命令历史

  • -d:删除历史中指定的命令; eg:history -d 3

  • #:显示最近的#条历史      eg:history 5

  • -a:追加本次会话新执行的命令历史列表至历史文件

  • -n:读历史文件中未读过的(其他终端用户)行到历史列表

  • -r:读历史文件附加到历史列表

  • -w:保存历史列表到指定的历史文件

  • -p:展开历史参数成多个行,但不存在历史列表中

  • -s:展开历史参数成一行,附加在历史列表后 (伪造命令)

history 中的相关变量

  • HISTSIZE:shell进程可保留的命令历史的条数;

  • HISTFILE:指定持久保存命令历史的文件,默认为~/.bash_history;

  • HISTFILESIZE:指定历史文件记录历史的大小(条数);

  • HISTTIMEFORMAT=“%F %T“ 显示时间 

  • HISTIGNORE=“str1:str2:… “ 忽略string1,string2历史

控制命令历史的记录方式:

 环境变量:HISTCONTROL

  • ignoredups:忽略重复的命令;连续且相同方为“重复”

  • ignorespace:忽略所有以空白开头的命令

  • ignoreboth:ignoredups和ignorespace的组合

  • erasedups:  删除重复命令

注意:

  • 修改变量的值:NAME='VALUE'

  • 我们修改的命令只是记录在缓存中,要想永久生效就必须 在 /etc/profile~/.bash_profile 文件中修改保存。

重复前一个命令的方法:

  • 使用上方向键,并回车执行。

  • 按 !! 并回车执行

  • 输入!-1 并回车执行。

  • 按Ctrl+p 并回车执行。

重复之前命令的方法:

  • !字符串:重复前一个以“字符串”开头的命令

  • !num: 按照history命令输出中的序号重复对应命令

  • !?字符串:执行包含字符串的命令

  • !-n:执行倒数第n个命令

命令行历史的查看和搜索

  • 使用up(向上)和down(向下)键来上下浏览从前输入的命令;

  • 键入ctrl-r来在命令历史中搜索命令    (reverse-i-search)`':

要重新调用前一个命令中最后一个参数:

  • !$ 表示

  • Esc .(点击Esc键后松开,然后点击. 键)

  • Alt+ .(按住Alt键的同时点击. 键)

命令调用的方法:

  • #cmd !^ : 利用上一个命令的第一个参数做cmd的参数

  • #cmd !$ : 利用上一个命令的最后一个参数做cmd的参数

  • #cmd !* : 利用上一个命令的全部参数做cmd的参数

  • #cmd !:n : 利用上一个命令的第n个参数做cmd的参数

组合:

  • !n:^ :调用第n条命令的第一个参数

  • !n:$ :调用第n条命令的最后一个参数

  • !m:n :调用第m条命令的第n个参数

  • !n:* :调用第n条命令的所有参数

搜索历史中的参数:

  • !string:^  : 从命令历史中搜索以string 开头的命令,并 获取它的第一个参数;

  • !string:$  :从命令历史中搜索以string 开头的命令,并获取它的最后一个参数;

  • !string:n  :从命令历史中搜索以string 开头的命令,并获取它的第n个参数;

  • !string:*  :从命令历史中搜索以string 开头的命令,并获取它的所有参数;

 2.命令及路径补全

命令补全方法

 shell程序在接收到用户执行命令的请求,分析完成之后,最左侧的字符串会被当做命令;

 命令查找机制

  • 内部命令:内部命令没有具体的二进制文件,是由内核提供的;

  • 外部命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文件,第一次找到的命令即为要执行的命令。

 补全方法:

  • 直接补全:用户给定的大头字符串如果能唯一标识某命令程序文件,则直接补全;

  • 用户给定的字符串为开头的命令不唯一时,则再次按Tab键会给出以字符串开头的命令列表。

路径补全

  • 把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名,如果惟一,则直接补全;否则:再次Tab给出列表

 3.bash常用的快捷方式

  • Ctrl+l :清屏,相当于clear命令

  • Ctrl+c :取消命令的执行

  • Ctrl+a :会移动到命令行的最前面

  • Ctrl+e :会移动到命令行的最后面

  • Ctrl+u :会删除到行首

  • Ctrl+k :会删除到行尾

  • Ctrl+b :向左 Ctrl-f 向右移动一个字符

  • Esc+b :左移一个单词

  • Esc+f  :右移一个单词