本文出自 “” 博客,请务必保留此出处

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 ..:返回上一级目录

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

语法格式:

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

选项:

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

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

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

    

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

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

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

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

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

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

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

3.文件查看类命令

cat:文件查看类工具 

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

选项:

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

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

  • -T:显示制表符;

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

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

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

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

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

  • rev 命令逆序显示行字符

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

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

  • 格式:file [file]...

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

4.echo回显命令

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

功能:显示字符

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

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

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

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

 

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

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

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

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

另外:

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

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

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.与登录相关的命令

whoami

  • 显示当前登录有效用户

who

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

格式:who [OPTION]...

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

  • -r:运行级别

w

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

6.与日期相关的命令

date命令:显示时间和日期

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

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

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

  • %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以系统时钟为准,校正硬件时钟

cal命令

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

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

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:仅搜索使用手册文件路径;

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  :右移一个单词