Ubuntu学习笔记(二)

1.重复指令

1.1 重复执行先前的指令,可以使用!!命令

运行如下

[email protected]:~$ ls -l Music
total 0
[email protected]:~$ !!
ls -l Music
total 0
[email protected]:~$ 

1.2 .!String则是重新执行最近执行的,以String为起始的命令,而!?String[?]则表示最近执行的,包含String的字符串。!n则表示重复执行命另历史缓冲区或文件中的第n号命令。

示例如下

[email protected]:~/Desktop$ cd ..
[email protected]:~$ !cd
cd ..
[email protected]:/home$ 

另外利用“!!:[g]s/old/new[/]”可以对命令进行修正后再执行。如果全部需要替换吗、,则在s前面加一个g。当然,最后一个/可以省略。

[email protected]:~$ sudo mkdir test
[email protected]:~$ !!:s/test/test2/
sudo mkdir test2
[email protected]:~$ ls
Desktop    Downloads         Music     Public     test   Videos
Documents  examples.desktop  Pictures  Templates  test2
[email protected]:~$ 

1.3 在Korn Shell中,可以使用命令r重复执行先前的一个指令。

如果没有安装ksh那么就先安装一下。在学习的时候,我看了一下我的系统可以使用什么命令,

[email protected]:~$ sudo cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash

很不巧,没有ksh命令,我尝试装了一下,没装上去。但是为了使用这个命令,我们在这里也可以使用r命令。如下所示。

[email protected]:~$ alias r='fc -s'
[email protected]:~$ ls
Desktop    Downloads         Music     Public     test   Videos
Documents  examples.desktop  Pictures  Templates  test2
[email protected]:~$ r
ls
Desktop    Downloads         Music     Public     test   Videos
Documents  examples.desktop  Pictures  Templates  test2

2.补充命令

2.1 命令补充,如果有的时候命令记不住了可以使用命令补充,输入bz 按两个tab后出现如下命令,

[email protected]:~$ bz
bzcat         bzegrep       bzgrep        bzless
bzcmp         bzexe         bzip2         bzmore
bzdiff        bzfgrep       bzip2recover  

加C后再按两次tab如下

[email protected]:~$ bzc
bzcat  bzcmp  

输入a后按tab会自动补全

[email protected]:~$ bzcat

2.2 文件名补充,输入一部分文件名后,按tab键进行补充。

2.3 变量名补充,Bash也支持变量名的补充功能,当输入一个变量名的起始地址后,输入tab键,Bash将会提供变量名的另一部分。

[email protected]:~$ echo $HO
$HOME      $HOSTNAME  $HOSTTYPE
[email protected]:~$ echo $HOME
/home/zjq

2.4 命令别名,这个相对比较容易,在Windows的dos窗口下,在做数字证书的时候,我也曾经使用过这个别名设置的方法。下面是一个把ls -l 起一个别名叫ll

[email protected]:~$ alias ll="ls -l"
[email protected]:~$ ll
total 52
drwxr-xr-x 2 zjq  zjq  4096 Oct 23 08:54 Desktop
drwxr-xr-x 2 zjq  zjq  4096 Oct 23 08:54 Documents
drwxr-xr-x 2 zjq  zjq  4096 Oct 23 08:54 Downloads

在定义命令别名时,还需要注意的是,如果别名中含有Value之类的值的话,单双引号的使用就会有一些区别,请看下面两个例子。

双引号

[email protected]:~$ alias mydir="echo current directory is $PWD"
[email protected]:~$ alias mydir
alias mydir='echo current directory is /home/zjq'

别名里面的value已经被提前解释了,里面的目录就是当前的目录,跳转到其他目录下面去了也不会改变。下面我跳转一下路径然后执行mydir

[email protected]:~$ cd Public
[email protected]:~/Public$ mydir
current directory is /home/zjq

字符串的值完全没有变过

单引号

[email protected]:~$ alias mydir='echo current directory is $PWD'
[email protected]:~$ alias mydir
alias mydir='echo current directory is $PWD'

我执行一下mydir看看。

[email protected]:~$ mydir
current directory is /home/zjq

我先跳转一个目录再执行mydir

[email protected]:~$ cd Public
[email protected]:~/Public$ mydir
current directory is /home/zjq/Public
[email protected]:~/Public$ 

取消别名,下面使用unalias取消别名,再使用alias查看别名,别名已经取消了。

[email protected]:~/Public$ unalias mydir
[email protected]:~/Public$ alais mydir
alais: command not found

3.作业控制

3.1 作业控制,当在命名的后面输&是时,shell会出现下列信息,一个数字表示作业号、另一个是进程ID

[email protected]:~$ ls &
[1] 4445

我这里没有需要运行很长时间的作业,所以暂时只是记录一下命令的用法。

当作业在后台运行后,可以使用jobs命令查看后台正在运行的作业。

当一个作业过大我们想把它停止时,可以使用Ctrl+Z

要把一个停止的命令放到后台运行,使用bg %n (n为作业号)

要让后台作业回到前台运行,使用fg %n(n为作业号)

要停止一个后台作业,使用kill %n (n为作业号)

要等待一个作业运行,使用wait %n (n为作业号)

当然有的时候我们可能还想把终端关掉,但是不影响作业的运行,直到作业结束。可以使用呢nohup命令。例如运行一个脚本 nohup load.sh

3.2会话记录与命令确认。

使用script会保存在在当前目录的typescript中,可以再script后指定不同的文件名,当然如果使用一个文件,在script后面加-a参数也可以,这样就不会覆盖之前的内容。

[email protected]:~$ script
Script started, file is typescript
[email protected]:~$ date
Thu Nov 27 04:07:09 PST 2014
[email protected]:~$ k
k: command not found
[email protected]:~$ ls
Desktop    Downloads         Music     Public     test   typescript
Documents  examples.desktop  Pictures  Templates  test2  Videos
[email protected]:~$ uptime
 04:07:22 up  5:16,  2 users,  load average: 0.00, 0.01, 0.05
[email protected]:~$ exit
exit
Script done, file is typescript
[email protected]:~$ 

使用exit终止会话记录功能,并不是退出终端!

下面就可以查看记录的内容了

[email protected]:~$ cat tyoescript
cat: tyoescript: No such file or directory
[email protected]:~$ cat typescript
Script started on Thu 27 Nov 2014 04:07:04 AM PST
[email protected]:~$ date
Thu Nov 27 04:07:09 PST 2014
[email protected]:~$ k
k: command not found
[email protected]:~$ ls
Desktop    Downloads         Music     Public     test   typescript
Documents  examples.desktop  Pictures  Templates  test2  Videos
[email protected]:~$ uptime
 04:07:22 up  5:16,  2 users,  load average: 0.00, 0.01, 0.05
[email protected]:~$ exit
exit

Script done on Thu 27 Nov 2014 04:07:27 AM PST
[email protected]:~$ 

3.3 如何验证Ubuntu的命令。输入一个liux命令时,Shell会按path变量列出的目录顺序,也就是所谓的检索路径,检索出与其

相匹配的命令。有时候可能不经意间修改可检索的顺序,这个时候就需要看看到底执行的是哪一个命令,

whichis命令:

[email protected]:~$ which tar
/bin/tar

whereis命令

[email protected]:~$ whereis tar
tar: /bin/tar /usr/include/tar.h /usr/share/man/man1/tar.1.gz

3.4 当需要执行某个特定的处理任务,又不知道确切的命令名字时,可以使用apropos命令

起始它和man -k完全一样。

[email protected]:~$ apropos who
at.allow (5)         - determine who can submit jobs via at or batch
at.deny (5)          - determine who can submit jobs via at or batch
bsd-from (1)         - print names of those who have sent mail
from (1)             - print names of those who have sent mail
w (1)                - Show who is logged on and what they are doing.
w.procps (1)         - Show who is logged on and what they are doing.
who (1)              - show who is logged on
whoami (1)           - print effective userid
whois (1)            - client for the whois directory service

当然如果你知道了某一个命令却又不知道他的确切用途时,可以使用whatis命令

[email protected]:~$ whatis who
who (1)              - show who is logged on
时间: 2024-10-10 02:42:38

Ubuntu学习笔记(二)的相关文章

NFC学习笔记二——Libnfc简介与安装

一直想把自己对过的英文文章做一下翻译记录下来,趁着学习NFC,现将libnfc首页的对libnfc介绍和在不同操作系统上对libnfc安装的文章做一下翻译,一方面提高一下自己的英语,另一方面学习一下libnfc. 原文地址:http://nfc-tools.org/index.php?title=Libnfc 公共平台独立的近场通讯(NFC)库 libnfc是GNU公共许可正下发布的第一个免费的底层的NFC开发包和编程API.它对任何人事完全免费和公开的.这个列表显示了libnfc支持的功能.l

spidering hacks 学习笔记(二)

看过去很乱,学习的记录东西而已,等我读完这本书,就把笔记给整理下!嘿嘿 ? 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74

Ubuntu学习笔记-win7&Ubuntu双系统简单搭建系统指南

win7&Ubuntu双系统简单搭建系统指南 本文是自己老本子折腾Ubuntu的一些记录,主要是搭建了一个能够足够娱乐(不玩游戏)专注练习自己编程能力的内容.只是简单的写了关于系统的安装和一些配置环境的简单搭建.并没有深入探讨系统地各项内容.希望可以给香简单使用的同学参考. 一.准备工作 打开UltraISO ,依次点击"文件"--"打开"--选择Ubuntu14.04系统镜像文件,确认打开后就能在软件界面内看到整个镜像的全部文件信息. 接下来开始制作系统安

Caliburn.Micro学习笔记(二)----Actions

Caliburn.Micro学习笔记(二)----Actions 上一篇已经简单说了一下引导类和简单的控件绑定 我的上一个例子里的button自动匹配到ViewModel事件你一定感觉很好玩吧 今天说一下它的Actions,看一下Caliburn.Micro给我们提供了多强大的支持 我们还是从做例子开始 demo的源码下载在文章的最后 例子1.无参数方法调用 点击button把textBox输入的文本弹出来 如果textbox里没有文本button不可点,看一下效果图 看一下前台代码 <Stac

2. 蛤蟆Python脚本学习笔记二基本命令畅玩

2. 蛤蟆Python脚本学习笔记二基本命令畅玩 本篇名言:"成功源于发现细节,没有细节就没有机遇,留心细节意味着创造机遇.一件司空见惯的小事或许就可能是打开机遇宝库的钥匙!" 下班回家,咱先来看下一些常用的基本命令. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/48092873 1.  数字和表达式 看下图1一就能说明很多问题: 加法,整除,浮点除,取模,幂乘方等.是不是很直接也很粗暴. 关于上限,蛤蟆不太清楚

小猪的数据结构学习笔记(二)

小猪的数据结构学习笔记(二) 线性表中的顺序表 本节引言: 在上个章节中,我们对数据结构与算法的相关概念进行了了解,知道数据结构的 逻辑结构与物理结构的区别,算法的特性以及设计要求;还学了如何去衡量一个算法 的好坏,以及时间复杂度的计算!在本节中我们将接触第一个数据结构--线性表; 而线性表有两种表现形式,分别是顺序表和链表;学好这一章很重要,是学习后面的基石; 这一节我们会重点学习下顺序表,在这里给大家一个忠告,学编程切忌眼高手低,看懂不代表自己 写得出来,给出的实现代码,自己要理解思路,自己

JavaScript--基于对象的脚本语言学习笔记(二)

第二部分:DOM编程 1.文档象模型(DOM)提供了访问结构化文档的一种方式,很多语言自己的DOM解析器. DOM解析器就是完成结构化文档和DOM树之间的转换关系. DOM解析器解析结构化文档:将磁盘上的结构化文档转换成内存中的DOM树 从DOM树输出结构化文档:将内存中的DOM树转换成磁盘上的结构化文档 2.DOM模型扩展了HTML元素,为几乎所有的HTML元素都新增了innerHTML属性,该属性代表该元素的"内容",即返回的某个元素的开始标签.结束标签之间的字符串内容(不包含其它

马哥学习笔记二十四——分布式复制快设备drbd

DRBD: 主从 primary: 可执行读.写操作 secondary: 文件系统不能挂载 DRBD: dual primay, 双主(基于集群文件系统的高可用集群) 磁盘调度器:合并读请求,合并写请求: Procotol:drbd数据同步协议 A: Async, 异步  数据发送到本机tcp/ip协议栈 B:semi sync, 半同步  数据发送到对方tcp/ip协议 C:sync, 同步  数据到达对方存储设备 DRBD Source: DRBD资源 资源名称:可以是除了空白字符外的任意

【Unity 3D】学习笔记二十八:unity工具类

unity为开发者提供了很多方便开发的工具,他们都是由系统封装的一些功能和方法.比如说:实现时间的time类,获取随机数的Random.Range( )方法等等. 时间类 time类,主要用来获取当前的系统时间. using UnityEngine; using System.Collections; public class Script_04_13 : MonoBehaviour { void OnGUI() { GUILayout.Label("当前游戏时间:" + Time.t