Linux入门

用户登录

root用户:

一个特殊的管理帐户

也被称为超级用户

root已接近完整的系统控制

对系统损害几乎有无限的能力

除非必要,不要登录为root

普通(非特权)用户

权限有限

造成损害的能力比较有限

终端

用户与主机交互,必然用到的设备

物理终端

虚拟终端


shell介绍

shell是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。

                它接受用户输入的命令并把它送入内核去执行;

shell也被称为Linux的命令解释器

bash:GNU Bourne-Again Shell是GNU计划中重要的工具软件之一,

                目前也是Linux的标准的shell,与sh兼容

zsh

csh

tsh

显示当前使用的shell:

#echo $SHELL

显示当前系统使用的所有shell:

#cat /etc/shells

命令提示符:prompt

[root@localhost~]#

显示提示符格式:

[root@localhost~]#echo $PS1

prompt:

管理员:#

普通用户:$


执行命令

提请shell程序找到键入命令所对应的可执行程序或代码,

                并由其分析后提交给内核分配资源将其运行起来

分类:

内部命令:由shell自带的,

                        而且通过某命令形式提供enable命令可以启用或禁用内部命令

外部命令:在当前系统的某文件系统路径下有对应的可执行程序文件

        区别当前使用的命令是内部或外部命令:

#type COMMAND

hash命令:

搜寻到的外部命令路径结果缓存至kv存储中

hash 显示hash缓存

hash -r清除缓存


命令格式:

COMMAND [OPTIONS...][ARGUMENTS...]

选项:用于启用或关闭命令的某个或某些功能;

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

长选项:--word,例如:--all,--human

参数:命令的作用对象,比如文件名,用户名等

注意:

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

2)取消和结束命令执行:Ctrl+c,Ctrl+d

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

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


简单命令

dete 显示日期和时间

Linux的两种时钟:

系统时钟:由linux内核通过CPU的工作频率进行的;


硬件时钟:主板

hwclock,clock:显示硬件时钟

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

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


cal 显示日历

nano 文本编辑器


screen命令:

打开新的screen:

#screen

退出并关闭screen:

#exit

剥离当前screen:

Ctrl+a,d

显示所有已经打开的screen:

screen -ls

恢复某screen

screen -r [SESSION]


echo命令:显示字符

echo [-neE][字符串]

说明:echo会将输入的字符串送往标准输出

输出的字符串间以空白字符隔开,并在最后加上换行号

echo"$VAR_NAME":变量会替换,双引号表弱引用

echo"$VAR_NAME":变量不会替换,强引用

$echo -e "Enter the name:\c"

echo需要使用-e参数来打印转义字符

选项:

-n 不在字符的最后自动换行

         -e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:

\a 发出警告声;

\b 退格键

\c 最后不加上换行符号;

\n 换行且光标移至行首;

\r 光标移至行首,但不换行;

\t 插入tab;

\\插入\字符;

\0nnn 插入nnn(八进制)所代表的ASCII字符

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

\xHH插入HH(十六进制)所代表的ASCII字符





Tab键补全

命令补全

内部命令:

外部命令::bash根据PATH环境变量定义的路径,

                        自左而右在每个路径搜寻以给定命令名命名的文件,

                        第一次找到的命令即为要执行的命令;

用户给定的字符串只有一条惟一对应的命令,直接补全

否则,再次Tab会给出列表

命令行历史

保存你输入的命令历史。可以用它来重复执行命令;

登录shell时,会读取命令历史文件中记录下的命令~/.bash_history;

登录进shell后新执行的命令只会记录在缓存中,

                        这些命令会用户退出时“追加”至命令历史文件中;


重复前一个命令,有4种方法:

重复前一个命令使用上方向键,并回车执行。

按!! 并回车执行。

输入!-1 并回车执行。

按Ctrl+p 并回车执行。


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

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

!?字符串:重复前一个包含abc的命令

!-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 开头的命令,

                                          并获取它的所有参数


history命令:

history [-c] [-d offset] [n]

history -anrw[filename]

history -psarg[arg...]

-c: 清空命令历史

-d: 删除历史中指定的命令;

#: 显示最近的#条历史

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

-n: 读历史文件中未读过的行到历史列表

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

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

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

-s: 展开历史参数成一行,附加在历史列表后


命令历史相关环境变量

HISTSIZE:命令历史记录的条数;

HISTFILE:指定历史文件,默认为~/.bash_history;

HISTFILESIZE:命令历史文件记录历史的条数;

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

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


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

环境变量:HISTCONTROL

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

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

ignoreboth:ignoredups, ignorespace

erasedups:删除重复命令

export 变量名="值“

存放在/etc/profile 或~/.bash_profile



bash快捷键

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

Ctrl+c取消命令的执行

Ctrl-a 会移动到命令行的最前面

Ctrl-e 会移动到命令行的最后面

Ctrl-u 会删除到行首

Ctrl-k 会删除到行尾

arrow ctrl-b ctrl-f会向左或向右移动一个字符

Esc-b左移一个单词

Esc-f右移一个单词


使用gnome-ternimal

应用程序->附件->终端

支持多个“标签”shell的图形化终端模拟器

Ctrl-Shift-t 创建一个标签页

Ctrl-PaUp/PgUn切换到下一个/前一个标签页

Ctrl-Shift-c 复制选中的文本

Ctrl-Shift-v 把文本粘帖到提示符后