SHELL 提示符学习汇总_2


title: SHELL 提示符学习汇总_2
data: 2018-9-7
tags: [shell , 提示符 , 学习]
categories: [SHELL,学习,命令行]
grammar_cjkRuby: true
copyright: true

上一篇更新到重定向命令,后来感觉也没怎么用到那些命令。不过既然是技术博客、为了防止忘记,我还是会把一些不一定会用到的命令记录下来,以备以后查阅!

键盘高级操作技巧

  • clear -清空屏幕
  • history -显示历史列表内容

移动光标

  • Ctrl-a 移动光标到行首。
  • Ctrl-e 移动光标到行尾。
  • 94Ctrl-f 光标前移一个字符;和右箭头作用一样。
  • Ctrl-b 光标后移一个字符;和左箭头作用一样。
  • Alt-f 光标前移一个字。
  • Alt-b 光标后移一个字。
  • Ctrl-l 清空屏幕,移动光标到左上角。clear 命令完成同样的工作。

修改文本

  • Ctrl-d 删除光标位置的字符。
  • Ctrl-t 光标位置的字符和光标前面的字符互换位置。
  • Alt-t 光标位置的字和其前面的字互换位置。
  • Alt-l 把从光标位置到字尾的字符转换成小写字母。
  • Alt-u 把从光标位置到字尾的字符转换成大写字母。

剪切和粘贴文本

  • Ctrl-k 剪切从光标位置到行尾的文本。
  • Ctrl-u 剪切从光标位置到行首的文本。
  • Alt-d 剪切从光标位置到词尾的文本。
  • Alt-Backspace 剪切从光标位置到词头的文本。如果光标在一个单词的开头,剪切前一个单词。
  • Ctrl-y把剪切环中的文本粘贴到光标位置。

利用历史命令

  • history | less浏览历史命令(在默认情况下,bash 会存储你所输入的最后 500 个命令)
  • bash 也具有按递增顺序来搜索历史列表的能力。这意味着随着字符的输入,我们可以告诉 bash 去搜索历史列表,每一个附加字符都进一步提炼我们的搜索。启动递增搜索,
    输入 Ctrl-r,其后输入你要寻找的文本。当你找到它以后,你可以敲入 Enter 来执行命令,或者输入 Ctrl-j,从历史列表中复制这一行到当前命令行。再次输入 Ctrl-r,来找到下一个匹配项(向上移动历史列表)。输入 Ctrl-g 或者 Ctrl-c,退出搜索

历史命令展开

  • !!重复最后一次执行的命令。可能按下上箭头按键和 enter 键更容易些。
  • !number 重复历史列表中第 number 行的命令。
  • !string 重复最近历史列表中,以这个字符串开头的命令。
  • !?string 重复最近历史列表中,包含这个字符串的命令。

权限

我喜欢Linux是因为这个系统主动性强,权限控制好,所以这一章看的我头皮发麻

  • id –显示用户身份号
  • chmod –更改文件模式
  • umask –设置默认的文件权限
  • su –以另一个用户的身份来运行 shell
  • sudo –以另一个用户的身份来执行命令
  • chown –更改文件所有者
  • chgrp –更改文件组所有权
  • passwd –更改用户密码

读取、写入和执行

-rw-rw-r-- _1 me_me_0 2008-03-06 14:52 foo.txt

  • - 一个普通文件
  • d 一个目录
  • l一个符号链接。注意对于符号链接文件,剩余的文件属性总是”rwxrwxrwx”,而且都是虚拟值。真正的文件属性是指符号链接所指向的文件的属性。
  • c一个字符设备文件。这种文件类型是指按照字节流,来处理数据的设备。比如说终端机,或者调制解调器
  • b一个块设备文件。这种文件类型是指按照数据块,来处理数据的设备,例如一个硬盘,或者 CD-ROM 盘。
  • 剩下的九个字符,叫做文件模式,代表着文件所有者,文件组所有者,和其他人的读,写,
    执行权限。

chmod -更改文件模式

更改文件或目录的模式(权限),可以利用 chmod 命令。注意只有文件的所有者或者超级用户才能更改文件或目录的模式。chmod 命令支持两种不同的方法来改变文件模式:八进制数字表示法,或符号表示法。

0 000 -–
1 001 –x
2 010 -w-
3 011 -wx
4 100 r–
5 101 r-x
6 110 rw-
7 111 rwx

通过使用 3 个八进制数字,我们能够设置文件所有者,用户组,和其他人的权限.

chmod 命令支持一种符号表示法,来指定文件模式。符号表示法分为三部分:更改会影响谁,要执行哪个操作,要设置哪种权限。通过字符“u”,“g”,“o”,和“a”的组合来指定要影响的对象,如下所示:

  • u ”user” 的简写,意思是文件或目录的所有者。
  • g 用户组。
  • o ”others” 的简写,意思是其他所有的人。
  • a ”all” 的简写,是”u”, ”g” 和“o”三者的联合。
    如果没有指定字符,则假定使用 “all”。执行的操作可能是一个“+”字符,表示加上一个权限,一个“-”,表示删掉一个权限,或者是一个“=”,表示只有指定的权限可用,其它所有的权限被删除。
    权限由“r”,“w”,和“x”来指定。这里是一些符号表示法的举例:
  • u+x 为文件所有者添加可执行权限。
  • u-x 删除文件所有者的可执行权限。
  • +x 为文件所有者,用户组,和其他所有人添加可执行权限。等价于 a+x。
  • o-rw 除了文件所有者和用户组,删除其他人的读权限和写权限。
  • go=rw 给群组的主人和任意文件拥有者的人读写权限。如果群组的主人或全局之前已经有了执行的权限,他们将被移除。
  • u+xgo=rw 给文件拥有者执行权限并给组和其他人读和执行的权限。多种设定可以用逗号分开。

更改身份

  • 注销系统并以其他用户身份重新登录系统。
  • 使用 su 命令。 -以其他用户身份和组 ID 运行一个 shell
  • 使用 sudo 命令。以另一个用户身份执行命令

chown -更改文件所有者和用户组

chown 命令被用来更改文件或目录的所有者和用户组。使用这个命令需要超级用户权限。chown 命令的语法:
chown [owner][:[group]] file...

  • bob把文件所有者从当前属主更改为用户 bob
  • bob:users把文件所有者改为用户 bob,文件用户组改为用户组 users
  • :admins把文件用户组改为组 admins,文件所有者不变
  • bob:文件所有者改为用户 bob,文件用户组改为,用户 bob 登录系统时,所属的用户组

chgrp -更改用户组所有权

在旧版 Unix 系统中,chown 命令只能更改文件所有权,而不是用户组所有权。为了达到目的,使用一个独立的命令,chgrp 来完成。除了限制多一点之外,chgrp 命令与 chown 命令使用起来很相似。

更改用户密码

使用 passwd 命令,来设置或更改用户密码。命令语法:
passwd [user]
passwd 命令将会试着强迫你使用“强”密码。这意味着,它会拒绝接受太短的密码,与先前相似的密码,字典中的单词作为密码,或者是太容易猜到的密码

进程

  • ps –报告当前进程快照
  • top –显示任务
  • jobs –列出活跃的任务
  • bg –把一个任务放到后台执行
  • fg –把一个任务放到前台执行
  • kill –给一个进程发送信号
  • killall –杀死指定名字的进程
  • shutdown –关机或重启系统

查看进程

比较常用的是ps命令:

[me@linuxbox ~]$ ps
PID TTY
TIME CMD
5198 pts/1 00:00:00 bash
10129 pts/1 00:00:00 ps

TTY 是 “Teletype” 的简写,是指进程的控制终端。这里,Unix 展示它的年龄。TIME 字段表示进程所消耗的 CPU 时间数量。
如果给 ps 命令加上选项,我们可以得到更多关于系统运行状态的信息:

[me@linuxbox ~]$ ps x
PID TTY STAT TIME COMMAND
2799 ? Ssl 0:00 /usr/libexec/bonobo-activation-server – ac
2820 ? Sl 0:01 /usr/libexec/evolution-data-server-1.10 --
and many more..

用 top 命令动态查看进程

虽然 ps 命令能够展示许多计算机运行状态的信息,但是它只是提供,ps 命令执行时刻的机器状态快照。为了看到更多动态的信息,我们使用 top 命令:
[me@linuxbox ~]$ top
top 程序连续显示系统进程更新的信息(默认情况下,每三分钟更新一次),“top” 这个名字来源于这个事实,top 程序是用来查看系统中“顶端”进程的。top 显示结果由两部分组成:最上面是系统概要,下面是进程列表,以 CPU 的使用率排序。

top - 14:59:20 up 6:30, 2 users, load average: 0.07, 0.02, 0.00
Tasks: 109 total,
1 running,
106 sleeping,
0 stopped,
2 zombie
Cpu(s): 0.7%us, 1.0%sy, 0.0%ni, 98.3%id, 0.0%wa, 0.0%hi, 0.0%si
Mem: 319496k total, 314860k used, 4636k free,
Swap: 875500k total, 149128k used, 726372k free,
PID
6244
USER PR NI VIRT RES SHR
me 39 19 31752 3124 2188
S %CPU
S
6.3
19392k buff
114676k cach
%MEM
1.0
TIME+
16:24.42 trackerd
....

其中系统概要包含许多有用信息。下表是对系统概要的说明:

行号 字段 意义
1 top 程序名
14:59:20 当前时间
up 6:30 这是正常运行时间。它是计算机从上次启动到现在所运行的时间。在这个例子里,系统已经运行了六个半小时
2users 有两个用户登录系统
load average: 加载平均值是指,等待运行的进程数目,也就是说,处于运行状态的进程个数,这些进程共享 CPU。展示了三个数值,每个数值对应不同的时间周期。第一个是最后 60 秒的平均值,下一个是前 5 分钟的平均值,最后一个是前 15 分钟的平均值。若平均值低于 1.0,则指示计算机工作不忙碌
2 Tasks: 总结了进程数目和各种进程状态
3 Cpu(s): 这一行描述了 CPU 正在执行的进程的特性
0.7%us 0.7% of the CPU is being used for user processes. 这意味着进程在内核之外
1.0%sy 1.0% 的 CPU 时间被用于系统(内核)进程
0.0%ni 0.0% 的 CPU 时间被用于”nice”(低优先级)进程
98.3%id 98.3% 的 CPU 时间是空闲的
0.0%wa 0.0% 的 CPU 时间来等待 I/O
4 Mem: 展示物理内存的使用情况
5 Swap: 展示交换分区(虚拟内存)的使用情况

top 程序接受一系列从键盘输入的命令。两个最有趣的命令是 h 和 q。h,显示程序的帮助屏幕,q,退出 top 程序。

中断一个进程

在一个终端中,输入 Ctrl-c,中断一个程序。这意味着,我们礼貌地要求终止这个程序。通过这个技巧,许多(但不是全部)命令行程序可以被中断。

把一个进程放置到后台 (执行)

把终端看作是一个有前台(表层放置可见的事物,像 shell 提示符)和后台(表层之下放置隐藏的事物)(的设备)。启动一个程序,让它立即在后台运行,我们在程序命令之后,加上 “&” 字符.

[me@linuxbox ~]$ xlogo &
[1] 28236
[me@linuxbox ~]$

执行命令之后,这个 xlogo 窗口出现,并且 shell 提示符返回,同时打印一些有趣的数字。这条信息是 shell 特性的一部分,叫做工作控制。通过这条信息,shell 告诉我们,已经启动了工作号为 1(“[1]”),PID 为 28236 的程序。
工作控制,这个 shell 功能可以列出从终端中启动的任务。执行 jobs 命令,我们可以看到这个输出列表:

[me@linuxbox ~]$ jobs
[1]+ Running
xlogo &

进程返回到前台

一个在后台运行的进程对一切来自键盘的输入都免疫,也不能用 Ctrl-c 来中断它。使用 fg命令,让一个进程返回前台执行:

[me@linuxbox ~]$ jobs
[1]+ Running
xlogo &
[me@linuxbox ~]$ fg %1
xlogo

fg 命令之后,跟随着一个百分号和工作序号(叫做 jobspec)。如果我们只有一个后台任务,那么 jobspec 是可有可无的。输入 Ctrl-c 来终止 xlogo 程序。

停止一个进程

有时候,我们想要停止一个进程,而没有终止它。这样会把一个前台进程移到后台等待。输入 Ctrl-z,可以停止一个前台进程。
使用 fg 命令,可以恢复已经停止的程序到前台运行,或者用 bg 命令把程序移到后台。

通过 kill 命令给进程发送信号

kill 命令被用来给程序发送信号。它最常见的语法形式看起来像这样:
kill [-signal] PID...

1 HUP 挂起。这是美好往昔的痕迹,那时候终端机通过电话线和调制解调器连接到远端的计算机。这个信号被用来告诉程序,控制的终端机已经“挂起”。通过关闭一个终端会话,可以说明这个信号的作用。发送这个信号到终端机上的前台程序,程序会终止。许多守护进程也使用这个信号,来重新初始化。这意味着,当发送这个信号到一个守护进程后,这个进程会重新启动,并且重新读取它的配置文件。Apache 网络服务器守护进程就是一个例子。
2 INT 中断。实现和 Ctrl-c 一样的功能,由终端发送。通常,它会终止一个程序。
9 KILL 杀死。这个信号很特别。鉴于进程可能会选择不同的方式,来处理发送给它的信号,其中也包含忽略信号,这样呢,从不发送 Kill 信号到目标进程。而是内核立即终止这个进程。当一个进程以这种方式终止的时候,它没有机会去做些“清理”工作,或者是保存劳动成果。因为这个原因,把 KILL 信号看作杀手锏,当其它终止信号失败后,再使用它。
15 TERM 终止。这是 kill 命令发送的默认信号。如果程序仍然“活着”,可以接受信号,那么这个信号终止。
18 CONT 继续。在停止一段时间后,进程恢复运行。
19 STOP 停止。这个信号导致进程停止运行,而没有终止。像KILL 信号,它不被发送到目标进程,因此它不能被忽略。

除了以上列出的 kill 命令最常使用的信号之外,还有一些系统频繁使用的信号。以下是其它一些常用信号列表:

QUIT 退出
11 SEGV 段错误。如果一个程序非法使用内存,就会发送这个信号。也就是说,程序试图写入内存,而这个内存空间是不允许此程序写入的。
20 TSTP 终端停止。当按下 Ctrl-z 组合键后,终端发送这个信号。不像 STOP 信号,TSTP 信号由目标进程接收,且可能被忽略。
28 WINCH 改变窗口大小。当改变窗口大小时,系统会发送这个信号。一些程序,像 top 和 less 程序会响应这个信号,按照新窗口的尺寸,刷新显示的内容。

呼,写着写着就写不完了。本来打算就写四千字左右的,没想到不小心写了七千、就这样吧,剩下的在写一篇也就差不多完了。好长时间没有写博客了,十天后我要参加计算机考试,可是现在还没学会,加油!你是最棒的!--范儿

猜你喜欢

转载自blog.csdn.net/qq_40420322/article/details/83859309