精选文章

Android下使用TCPDUMP抓包Wireshark分析数据 如果想分析Android下某个APP的网络数据交互,需要在Android手机上抓包,最常用的抓包工具非tcpdump莫属,用tcpdump生成Wireshark识别的pcap文件,然后将pcap文件下载到电脑上,用电脑上的Wireshark加载pcap文件,通过Wireshark分析tcpdump抓取的数据。...

继续阅读

Mac下部署Android开发环境附加NDK 作为开发者,我们深有体会,不管是进行什么开发,为了部署开发环境,我们往往需要折腾很长时间、查阅很多资料才能完成,而且这次折腾完了,下次到了另一台新电脑上又得重新来过,整个部署过程记得还好,要是不记得又得重新开始,而且遇到Android这种GFW阻隔了开发资源下载链接的环境部署,又尤其浪费时间。所以这也是我写下这篇教程的初衷跟动力源泉,希望大家参考了这篇教程以后可以轻轻松松在Mac系统下将Android环境部署好。...

继续阅读

稍顯嚴肅的台中 坦白說,留在腦海中的台中影像並不多,來台灣之前在Booking上只訂到了台中的一家青旅,第一次住青旅有些不習慣,幹什麼都放不開。 同屋的一個男生是台灣人,不過一年中四分之三的時間在上海跟北京,這麼說來跟我還是比較有共同話題的。得之我準備花15天的時間環島,覺得太倉促了,他們大學時期花一個半月的時間也不見得能將台灣島給逛完。我只能無奈地表示,兩岸允許的簽證時間有限,自己的空閒時間更有限,只能用打卡式的旅行了,我深知正真地旅行應該慢下來,融入當地的環境,感受他們的風土人情,但第一次只能這樣作罷,以後換成民進黨上台,形勢會變成怎樣還不得而知,能否再過來還是個未知數。而我一向信奉的人生格言是秉燭夜遊,活在當下,所以,理解自己吧。...

继续阅读

為之留戀的新竹 來新竹之前本沒有對她有過高的期待,慢慢對她加分要從桃園火車站出發前往新竹開始。 在桃園火車站的候車月台上,有醒目的旅遊資料發放處,這上面的擺放的全是新竹的旅遊宣傳資料,關鍵的是資料做得非常簡潔易懂,而接下來一天的新竹之行就全部是依據這份寶典的指引來完成的。...

继续阅读

從桃園開始台灣之行 初到台灣恰逢華夏銀行系統升級,特意準備的華夏銀聯卡在桃園機場沒能派上用場,只好用建行在機場5000塊,算下來是很不划算的,但是沒辦法,誰叫我出機場就得花錢呢。 從機場打車到桃園的酒店,花了將近六百塊新台幣,到酒店時五點多,天已經漸亮了,洗漱完等到七點吃過早餐就開始補覺囉,一覺醒來已是中午,帶著換下來的衣服外出找自助洗衣店,順便覓食。...

继续阅读

  • Prev
  • Next

Linux下Bash简介及其内嵌命令

文章分类 : Linux, 应用与编程, 教程

日常应用中,Linux 下我们接触得最多的 Shell 恐怕非 Bash 莫属了,相信熟悉使用了 Bash 以后,要掌握其他 Shell 的使用,应该易如反掌。这一节我们着重介绍一下 Bash 的基本功能、特点以及它所包含的命令。

一、Bash 的功能概述

Bash 是绝大多数版本的 Linux 系统下默认的 Shell ,全名为 Bourne Again Shell 。它功能强大,那么接下来我们将围绕 Bash 的六大优点来对其进行深入了解。    

1、历史记录:

执行 history 命令,Bash 将为我们列出最近使用的 1000 个命令,列表中编号数字越大的表示其被使用的时间越接近当前。

1171 lsof | grep Flash
1172 cat /proc/2367/fd/39 > 01.flv
1173 cat /proc/2367/fd/40 > 02.flv
1174 cat /proc/2367/fd/41 > 03.flv
1175 cat /proc/2367/fd/42 > 04.flv
1176 mencoder -ovc copy -oac mp3lame 01.flv 02.flv 03.flv 04.flv -o 每天一苹果.flv
1177 cd linux/linux100/

上图是 history 命令输出的历史命令中的一部分,前面的数字便是编号,使用“!编号”命令可以重新执行历史命令列表中指定编号所对应的命令,使用“!!”命令可以重新执行上一条命令,使用“!关键字”命令可以重新执行历史命令列表中以关键字开头且时间最接近的命令。

需要注意的是,刚装的系统或者新建用户的历史命令数量可能不足 1000 个,这里的 1000 是 Bash 的预设值,我们可以使用 “echo $HISTSIZE”命令来查询历史命令存储量上限值,也可以在 /etc/profile 中更改这个上限值。下面我们来演示一下如何更改这个上限值为 8000 。

trevor@trevor-PC:~$ echo $HISTSIZE
1000
trevor@trevor-PC:~$ sudo vi /etc/profile
trevor@trevor-PC:~$ source /etc/profile
trevor@trevor-PC:~$ echo $HISTSIZE
8000
trevor@trevor-PC:~$

 

上图中,echo 命令开始查看到历史命令存储上限值为 1000,然后使用管理员权限修改 /etc/profile 文件(若文件中已经有“HISTSIZE=”,更改等号后面的值即可,否则直接在文件最后添加一行“HISTSIZE=8000”),文件保存退出后,执行 source 命令让配置在重启系统前立马生效,再次执行 echo 命令查看历史命令存储上限值,可以看到这个上限值修改成功了。

我们不禁要问,这些历史命令究竟保存在哪个文件当中呢?它其实就保存在用户家目录下的隐藏文件“.bash_history”中,所以如果您想删除历史记录,既可以将 HISTSIZE 设置为 0,也可以删除家目录下的“.bash_history”文件。

2、命令与档案补全:

在 Shell 中执行命令的时候,有些命令、文件名或目录名太过复杂难记,这时候可以借助 Tab 键来帮忙补全。例如我们想输入 ifconfig 命令,但是只记得前两个字母 if,输入 if 后,按下 Tab 键,系统也许不会有反应,但是再按一次系统就会列出所有以 if 开头的命令;如果输入的是前四个字母 ifco ,按下 Tab 键,因为可能的命令只剩下一个,系统将自动补全 ifconfig 。除了命令之外,Tab 键还还可以补全文件名或者目录名。

3、别名:

别名的功能有些像快捷方式,即使用一个简单好记的字符串来取代过长的命令。例如,查看路由命令“netstat -nr”比较难记,想用别名 nr 来取代,则可以使用 alias 命令来创建别名,如下图所示:

trevor@trevor-PC:~$ netstat -nr
内核 IP 路由表
Destination Gateway Genmask Flags MSS Window irtt Iface
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
0.0.0.0 192.168.50.100 0.0.0.0 UG 0 0 0 eth0
trevor@trevor-PC:~$ nr
程序“nr”尚未安装。 您可以使用以下命令安装:
sudo apt-get install netrw
trevor@trevor-PC:~$ alias nr="netstat -nr"
trevor@trevor-PC:~$ nr
内核 IP 路由表
Destination Gateway Genmask Flags MSS Window irtt Iface
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
0.0.0.0 192.168.50.100 0.0.0.0 UG 0 0 0 eth0
trevor@trevor-PC:~$

另外,可以使用 alias 命令查看目前正在使用的别名列表,还可以使用“alias 别名”命令来查询指定别名所对应的真正命令。

4、工作控制:

在 Bash 中运行程序以后,倘若程序尚未退出,此时的 Bash 正关注着系统为该程序所分配的进程,在该程序未结束、终止、暂停或者被移至后台执行之前,是无法运行其他程序的。

“Ctrl+c”可以终止目前正在运行的程序;“Ctrl+z”可以暂停目前正在运行的程序,将其移至后台。前台与后台的差别在于,前台能够接受使用者的操作而后台不能。使用 jobs 命令可以查看当前后台有哪些程序,每个程序之前都对应一个编号。使用“fg %编号”命令可以将后台的程序移到前台运行,使用“bg %编号”命令则使后台暂停的程序变为后台执行状态,若不指定编号,则默认选择时间临近的一个程序执行。如果想让程序直接后台运行,可以在执行命令最后加上后台运行符“&”。

5、脚本:

脚本允许使用者将众多命令及参数集合而成一个可以一次性完成的 Shell Script 。例如管理员要在每个使用者的家目录下建立 10 个不同的文件跟目录,同时删去指定文件,这种情况下,倘若用户数量庞大,使用 Shell 脚本来批量执行命令,可以极大地提高管理员的工作效率。

6、万用字元:

万用字元即星号“*”,Bash 将“*”视为任意字符,单独的“*”被视作“所有”之意。在某些场景下,用户可以借助它来达到事半功倍的效果。例如,我们想复制当前目录下所有的 Word 文档到 Document 目录,执行 “cp *.doc Document” 即可。

二、Bash 的命令

这里要讲到的 Bash 的命令主要是指 Bash 的内嵌命令,这些命令集成在可执行文件 /bin/bash 中,故有部分命令在 /bin 跟 /usr/bin 目录中找不到,它们的执行速度比系统目录下的同名命令要快,这里简要介绍一下 Bash 的内嵌命令及其功能。

cd [arg]:切换目录,如果不带参数,则进入主目录,否则切换到参数所大指定的目录。

declare [var]:显示所有变量,或用可选属性声明变量。

dirs:显示相对路径,“~”表示家目录。

disown:从当前后台程序列表中删除任务,默认删除最近任务。

echo [args]:显示 args 指定的文件或字符串并换行。

enable:启用或禁用 Shell 内置的命令。

eval [args]:将 args 读入 Shell ,并执行产生的命令。

exec command:执行 command 命令,替换掉当前 Shell。

exit [n]:将 n 作为返回值来退出 Shell。

export [var]:使变量 var 可被子 Shell 识别。

fc:历史的修改命令,用于编辑历史命令。

fg:把后台作业放到前台。

getopts:解析并处理命令行选项。

hash:控制用于加速命令查找的内部哈希表。

help [command]:显示关于内置命令的帮助信息,如果指定了 command 命令,则将显示 commad 命令的详细信息。

history:显示或操纵历史列表。

jobs:显示任务状态。

kill [-signal] PID:向由 PID 指定的进程发送 signal 信号。

let:用来计算算术表达式的值,并把算术运算的结果赋给变量。

local:用在函数中,把变量的作用域限制在函数内部。

logout:退出登录 Shell。

popd:从栈中删除目录。

pushd:将目录添加到栈中。

pwd:打印出当前的工作目录。

read [var]:从标准输入读取一行,保存到变量 var 中。

readonly [var]:将变量 va r设为只读,不允许重置该变量。

return [n]:从函数中退出,并返回 n。

set:设置选项和位置参量。

shift [n]:将位置参量左移n次。

stop PID:暂停第 PID 号进程的运行。

suspend:挂起 Shell 执行。

test:检查文件类型,并计算条件表达式。

times:显示由当前 Shell 启动的进程运行所累计用户时间和系统时间。

trap [arg] [n]:当 Shell 收到信号 n(n为0、1、2或15)时,执行 arg。

type [command]:显示命令的类型,例如:pwd 是 Shell 的一个内置命令。

typeset:同declare,设置变量并赋予其属性。

ulimit:显示或设置进程可用资源的最大限额。

umask [八进制数字]:设置用户文件关于属主、属组和其他用户的创建模式掩码。

unalias:取消所有的命令别名设置。

unset [name]:取消指定变量的值或函数的定义。

wait [pid]:等待进程号为 pid 的后台进程结束,并报告它的结束状态。

除非注明,文章均为CppLive 编程在线原创,转载请注明出处,谢谢。

本文地址:https://www.cpplive.com/html/1703.html

这里因为你的留言而存在!!!

You must be logged in to post a comment.