linux初步学习

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux初步学习相关的知识,希望对你有一定的参考价值。

1linux终端可以分为以下几类:

(1)设备终端:键盘,鼠标,显示器。

(2)物理终端(/dev/console):控制台console

(3)虚拟终端:共有6个,其中有一个是图形化终端(Ctrl+Alt+F1),其余终端分别对应Ctrl+Alt+F2~F6

(4)串行终端/dev/ttyS#):通过串行端口登录,终端名为、dev/ttys

(5)伪终端(pty):字符或图形化界面打开的终端。

(6)通过tty命令可以查看当前终端的终端名。

2SSHSecure Shell的缩写,由IETF的网络工作小组(Network Working Group)所制定;SSH为建立在应用层和传输层基础上的安全协议

SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。透过SSH可以对所有传输的数据进行加密,也能够防止DNS欺骗IP欺骗。

SSH之另一项优点为其传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTPPOP、甚至为PPP提供一个安全的“通道”。

想要远程控制服务器就要安装SSH的客户端:x-shellSecureCRT

3shell是一种人机交互语言,是用户和Linux操作系统之间的接口。它接收用户输入的命令并把它送入内核。Shell也被称为Linux的命令解释器,是一种高级程序语言。

  windows shell

    powershell

    dos

 

linux  unix like

   sh

   bash (default) rhel/suse/ubuntu/fedora/debian/macOS

   ksh

   csh

   zsh

   nologin

 

mobile

   ios

   android

echo $SHELL 查看当前的shell类型

cat /etc/shells  查看当前系统所安装的Shell

命令提示符

whoami 显示当前用户名

who am/are/is 任意字符  显示当前的终端信息

who 显示所有终端的信息

w 显示所有终端的详细信息及所做的操作

id 显示当前用户信息(包含用户名、uid、组名、gid)

pwd显示当前所在目录的绝对路径。

[[email protected] ~]#

[用户名@主机名前缀 目录路径后缀]#|$  (root是为#,普通用户时为$)

echo $PS1显示当前的提示符格式

PS1="\[\e[32m\][\[email protected]\h \W]\\$\[\e[0m\] ":将命令提示符颜色改为红色。(如果想要命令提示符一直变色则要讲此命令存在/etc/bashrc文件下)

4:内部与外部命令(重点)

内部命令:集成在内存中的命令,这类命令使用频率非常高。

外部命令:存储在硬盘中的命令,这类命令使用频率不高。

那么如何知道一条命令是外部还是内部命令呢?我们可以通过type command 命令来查询该命令是内部还是外部命令。

我们还可以用enable命令来激活,禁用,显示内部命令:

enable 显示所有已激活的内部命令

        enable command 激活被禁用的内部命令

        enable |wc -l 显示激活中的内部命令的数量

        enable -a 显示所有的内部命令

        enable -a |wc -l 显示所有的内部命令的数量

        enable -n 显示所有被禁用的内部命令

        enable -n command 禁用某个内部命令

命令的执行顺序问题:

例子:

1)执行echo 123

(2)禁用echo

(3)执行echo 456

结果发现echo虽然被禁用了,但依旧打印出456在上了,接着用type命令查询echo,发现echohash在了/bin/echo目录。Echo被禁用后变为外部命令,系统会根据PATH变量从左到右寻找echo,最终在/bin/下找到了echo,并存储在hash中。

4)将 /sbin/ifconfig 移到/usr/bin下取名为echo

5)创建一个/root/bin目录,并将/bin/echo移入/root/bin下,再执行echo命令结果出错,这是什么原因呢?首先当执行命令时,系统先到内存中查找被激活的内部命令,如果找不到就到外部中查找,但由于之前已经查找过一遍,并将查找结果(路径)存到hash中,由于我们已经移走了,系统就找不到了。

6hash -r 清空所用的hash表,再执行echo命令

结果我们发现系统给我们的是IP地址。这是因为我们清空了hash表系统重新从PATH变量中寻找echo,并在/usr/bin下找到了echo,不过这是我们改的用来查IP的。并重新存在hash表中。

(7)enable echo 激活echo后运行echo命令。发现输出空行,这是因为内部命令激活,系统重新从内存中找,不在找hash表。

总结来看系统以已下顺序查找命令:

内部命令

外部命令

hash

PATH

hash

hash 显示所有被hash的命令路径

hash -l 显示所有被hash的命令路径,包含别名

hash -d 别名 删除指定别名的hash条目

hash -r 清空所有的hash

hash -t 别名 显示别名的hash路径

hash -p 路径 别名 手工增加一条hash

 

help 内部命令  查看内部命令的帮助信息

5别名:

alias 显示所有的别名信息

alias 别名='command -选项 参数'

unalias 别名

unalias -a 取消所有别名

别名的保存 nano /etc/bashrc

使命令不受别名影响的方式

\command

'command'

"command"

/path/command

6简单命令及其执行语法

Command 【选项】 【参数】

  ;命令连接符,用来连接两个命令,前一个执行完,再执行后一个

  \ 命令换行

     date

+%Y

+%m

+%d

+%H

+%M

+%S

+%w 星期

+%F --

+%T ::

 

 设置时间

 date 102013112020.45  月日时分年[.]

 date -s '--日 时::'

 

poweroff关机

reboot重启

init 0 关机

init 6 重启

shutdown -r 重启

shutdown -h 关机

shutdown +1

shutdown 20:00

shutdown -c 取消计划关机

screen

screen 生成默认命令方式的screen即终端名.主机名前缀

screen -S 会话名 创建指定名的screen

screen -x 会话名 加入已创建的screen

screen -ls 查看所有已打开的Screen

 

echo

-E 不开始解释功能,默认

-n 不自动换行

-e 开启解释功能 ""

\a 警告声

\b 退格

\c 不换行

\n 回车换行

\r 回车,即光标移至行首,但不换行

\t 插入tab

\\ 插入\

7history

history 查询历史记录

!n  重复执行某条历史

!!  重复执行上一条命令

ctrl+p 等于上箭头

ctrl+n 等于下箭头

ctrl+j 等于回车

!string  重复前一个以“string”开头的命令

!?string

ctrl+r 命令历史中搜索命令

 

history -c 清空当前的所有历史记录

history -d 删除某条历史

history -a 将当前终端新执行的命令写入历史记录文件   (文件由变量HISTFILE决定,默认为用户家目录下的.bash_history

history -w /path/filename.txt 将历史记录写入指定文件

history -n 将未读过的历史从文件中读取

history -r 将所有的历史从文件中读取\

 

history显示当前终端的历史记录

!! 重复执行上一条命令

!-n 重复执行倒数第n条命令

!n 重复执行第n条命令

ctrl+p 等于向上方向键,翻出上一条命令。

ctrl+n 等于向下方向键,翻出下一条命令。

ctrl+j 等于enter 执行当前命令

!:0 执行前一条命令(去除参数)

!string 重复前一个以“string”开头的命令

!?string 重复前一个包含string的命令

!string:p 仅打印以string开头的命令历史,而不执行

!$:p 打印输出 !$ (上一条命令的最后一个参数)的内容

!*:p 打印输出 !*(上一条命令的所有参数)的内容

^string 删除上一条命令中的第一个string

^string1^string2 将上一条命令中的第一个string1替换为string2

!:gs/string1/string2 将上一条命令中所有的string1都替换为string2

ctrl-r来在命令历史中搜索命令

reverse-i-search`’:

Ctrl+g:从历史搜索模式退出

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

!$ 表示

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

8$3个作用:

$() ``引用命令执行的结果

$(()) $[]进行运算

使用${}"$变量名" 划定变量名的起止范围。

9;bash快捷键

Ctrl+L 清屏

Ctrl+O 执行当前命令,并重新显示本命令

Ctrl+s 锁定,但仍可以运行命令。

Ctrl+q 解锁

Ctrl+C 强制结束

Ctrl+D 正常终止

Ctrl+Z 挂起(暂停)命令

Ctrl + a 光标移到命令行首,相当于Home

Ctrl + e 光标移到命令行尾,相当于End

Ctrl + f 光标向右移动一个字符

Ctrl + b 光标向左移动一个字符

Alt + f 向右移动一个单词

Alt + b 向左移动一个单词

Ctrl + xx 光标在命令行首和光标之间移动

Ctrl + u 删除光标之前的内容

Ctrl + k 删除光标这后的内容

Alt + r 清除全部内容

Ctrl + w 从光标处向左删除至单词首

Alt + d 从光标处向右删除至单词尾

Ctrl + d 删除光标后的一个字符

Ctrl + h 删除光标前的一个字符

Ctrl + y 将删除的字符粘贴至光标后

Alt + c 从光标处开始向右更改为首字母大写的单词

Alt + u 从光标处开始,将右边一个单词更改为大写

Alt + l 从光标处开始,将右边一个单词更改为小写

Ctrl + t 交换光标处和之前的字符位置

Alt + t 交换光标处和之前的单词位置

Alt + N 提示输入指定字符后,重复显示该字符N次(N表示具体的数字)

Ctrl-Shift-n 创建新窗口

Ctrl-Shift-q 关闭当前窗口

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

Ctrl-Shift-w 关闭一个标签页

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

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

Ctrl-Shift-v 把文本粘帖到当前光标处

10:查找帮助:

当我们遇到忘记一些指令时,我们可以通过linux系统来查找命令的用法

  对于内部命令我们可以用help command 来查找该命令的用法。

  对于外部命令我们可以用command --help来查找

  但这种方式有一些问题,查找不全面,触发方式不一,所以我们可以用man来查找

Man:共分为9个章节,分别是用户命令,系统调用,C库调用,设备文件及特殊文件,配置文件格式,游戏,杂项,管理类命令还有Linux内核API

查找命令格式为man0-9command 。用该命令还可以提取关键字,翻页也方便。

11:目录结构

1)文件有两类数据:数据和元数据,元数据是指文件的权限,文件类型,UIDgid,数据区位置,大小,时间,文件链接数等等。

2Linux文件的后缀名并不重要。

3linux中的各个目录及作用

/boot:引导文件存放目录,内核文件,引导加载器存放在这里

/bin:二进制文件存放的地方,也就是执行文件存放的地方

/sbin:管理员才能进入并sbin下执行命令

/lib:库文件,方便调用

/home:家目录,除管理员外别的用户不能访问。软件的个性化配置。

/root: 管理员的家目录

/etc:配置文件

/dev:设备文件存储位置

/media:移动设备挂载点

12.时间戳

atime 访问时间

mtime 文件数据修改时间

ctime 文件元数据修改时间

stat filename

 

touch filename 当文件不存在时,则创建一个空文件,名为filename

   当文件已存在时,则更新期时间戳

     -a 仅更新atimectime

     -m 仅更新mtime, ctime

   touch filename 更新全部时间戳。

 

 

 

 

 


以上是关于linux初步学习的主要内容,如果未能解决你的问题,请参考以下文章

linux初步学习有感

linux初步学习之用户和用户组及权限管理浅谈

深度学习入门初步总结

Linux RPM 初步学习

Git 初步学习

运维初步学习进度1