基本的bash shell命令

大多数linux发行版的默认都是GUNbash shell,本次将介绍bash shell的一些基本特征,bashshell基本命令来操作linux文件和目录。

1.启动shell

Gun bash能提供对linux系统的交互式访问,它是作为普通的程序运行的,通常是在用户登录终端启动,登录时系统启动的shell依赖于用户账户配置。

/etc/passwd文件包含了所有系统用户列表,以及每个用户的基本配置信息,以下是从/etc/passwd中取出的样例条目。


每个条目有七个字段,字段之间用冒号分隔。系统使用字段中的数据来赋予用户账户某些特定特性。现在先将注意力放在后一个字段上, 该字段指定了用户使用的shell程序

在前面的/etc/passwd样例条目中,用户root使用/bin/bash作为自己的默认shell程序。这意 味着当root登录Linux系统后,bash shell会自动启动。 尽管bash shell会在登录时自动启动,但是,是否会出现shell命令行界面(CLI)则依赖于所使用的登录方式。如果采用虚拟控制台终端登录,CLI提示符会自动出现,你可以输入shell命令。 但如果是通过图形化桌面环境登录Linux系统,你就需要启动一个图形化终端仿真器来访问shell CLI提示符。

2.shell提示符

一旦启动了终端仿真软件包或者登录Linux虚拟控制台,你就会看到shell CLI提示符。提示符 就是进入shell世界的大门,是你输入shell命令的地方。 默认bash shell提示符是美元符号($),这个符号表明shell在等待用户输入。不同的Linux发 行版采用不同格式的提示符。在Ubuntu Linux系统上,shell提示符看起来是这样的:

[root@shell-yk ~]# #号代表管理员 $代表普通用户

除了作为shell的入口,提示符还能够提供其他的辅助信息。在上面的两个例子中,提示符中 显示了当前用户ID名shell-yk。

hell提示符并非一成不变。你可根据自己的需要改变它,shell中另一个大有帮助的东西是bash手册。

3.bash手册

大多数Linux发行版自带用以查找shell命令及其他GNU工具信息的在线手册。熟悉手册对使用各种Linux工具大有裨益,尤其是在你要弄清各种命令行参数的时候。man命令用来访问存储在Linux系统上的手册页面。在想要查找的工具的名称前面输入man命令,就可以找到那个工具相应的手册条目输入命令man xterm就可以进入该页面。例如我们要看ping的手册页面 输入:man ping

如下:


当使用man命令查看命令手册页的时候,这些手册页是由分页程序(pager)来显示的。分页 程序是一种实用工具,能够逐页显示文本。可以通过点击空格键进行翻页,或是使用回车键逐行 查看。另外还可以使用箭头键向前向后滚动手册页的内容(假设你用的终端仿真软件包支持箭头 键功能)。 读完了手册页,可以点击q键退出。退出手册页之后,你会重新获得shell CLI提示符,这表 示shell正在等待接受下一条命令。

手册页将与命令相关的信息分成了不同的节。每一节惯用的命名标准如下:


并不是每一个命令的手册页都包含表图中列出的所有节。还有一些命令的节名并没有在上面的节名惯用标准中列出。

一个命令偶尔会在多个内容区域都有对应的手册页。比如说,有个叫作hostname的命令。 手册页中既包括该命令的相关信息,也包括对系统主机名的概述。要想查看所需要的页面,可以 输入man section# topic。对手册页中的第1部分而言,就是输入man 1 hostname。对于手 册页中的第7部分,就是输入man 7 hostname。 你也可以只看各部分内容的简介:输入man 1 intro阅读第1部分,输入man 2 intro阅读 第2部分,输入man 3 intro阅读第3部分,等等。 手册页不是唯一的参考资料。还有另一种叫作info页面的信息。可以输入info info来了解 info页面的相关内容。 另外,大多数命令都可以接受-help或--help选项。例如你可以输入hostname -help来 查看帮助。关于帮助的更多信息,可以输入help。(看出这里面的门道没?) 显然有不少有用的资源可供参考。不过,很多基本的shell概念还是需要详细的解释。在下一 节中,我们要讲讲如何浏览Linux文件系统。

4.浏览文件系统
当登录系统并获得shell命令提示符后,你通常位于自己的主目录中。一般情况下,你会想去逛逛主目录之外的其他地方。先了解一下Linux文件系统。

Linux文件系统 如果你刚接触Linux系统,可能就很难弄清楚Linux如何引用文件和目录,对已经习惯 Microsoft Windows操作系统方式的人来说更是如此。在继续探索Linux系统之前,先了解一下它 的布局是有好处的。 你将注意到的第一个不同点是,Linux在路径名中不使用驱动器盘符。在Windows中,PC上 安装的物理驱动器决定了文件的路径名。Windows会为每个物理磁盘驱动器分配一个盘符,每个驱动器都会有自己的目录结构,以便访问存储其中的文件。

举个例子,在Windows中经常看到这样的文件路径:
c:\Users\Rich\Documents\test.doc

这种Windows文件路径表明了文件test.doc究竟位于哪个磁盘分区中。如果你将test.doc保存在 闪存上,该闪存由J来标识,那么文件的路径就是J:\test.doc。该路径表明文件位于J盘的根目录下。
Linux则采用了一种不同的方式。Linux将文件存储在单个目录结构中,这个目录被称为虚拟 目录(virtual directory)。虚拟目录将安装在PC上的所有存储设备的文件路径纳入单个目录结构中。
Linux虚拟目录结构只包含一个称为根(root)目录的基础目录。根目录下的目录和文件会按 照访问它们的目录路径一一列出,这点跟Windows类似。

在Linux中,你会看到下面这种路径:
/home/Rich/Documents/test.doc

这表明文件test.doc位于Documents目录,Documents又位于rich目录中,rich则在home目录中。 要注意的是,路径本身并没有提供任何有关文件究竟存放在哪个物理磁盘上的信息。 Linux虚拟目录中比较复杂的部分是它如何协调管理各个存储设备。在Linux PC上安装的第 一块硬盘称为根驱动器。根驱动器包含了虚拟目录的核心,其他目录都是从那里开始构建的。 Linux会在根驱动器上创建一些特别的目录,我们称之为挂载点(mount point)。挂载点是虚 拟目录中用于分配额外存储设备的目录。虚拟目录会让文件和目录出现在这些挂载点目录中,然 而实际上它们却存储在另外一个驱动器中。 通常系统文件会存储在根驱动器中,而用户文件则存储在另一驱动器中如下:


上图展示了计算机中的两块硬盘。一块硬盘和虚拟目录的根目录(由正斜线/表示)关联起 来。剩下的硬盘就可以挂载到虚拟目录结构中的任何地方。在这个例子中,第二块硬盘被挂载到 了/home位置,用户目录都位于这个位置。 Linux文件系统结构是从Unix文件结构演进过来的。在Linux文件系统中,通用的目录名用于 表示一些常见的功能。

常见的linux目录名称如下:

常见的目录名均基于文件系统层级标准(filesystem hierarchy standard,FHS)。很多Linux发 行版都遵循了FHS。这样一来,你就能够在任何兼容FHS的Linux系统中轻而易举地查找文件。

在登录系统并获得一个shell CLI提示符后,会话将从主目录开始。主目录是分配给用户账户 的一个特有目录。用户账户在创建之后,系统通常会为其分配一个特有的目录。 可以使用图形界面在虚拟目录中跳转。要想在CLI提示符下切换虚拟目录,需要使用cd命令。

5.绝对文件路径

用户可在虚拟目录中采用绝对文件路径引用目录名。绝对文件路径定义了在虚拟目录结构中 该目录的确切位置,以虚拟目录的根目录开始,相当于目录的全名。 绝对文件路径总是以正斜线(/)作为起始,指明虚拟文件系统的根目录。因此,如果要指 向usr目录所包含的bin目录下的用户二进制文件,可以使用如下绝对文件路径:

/usr/bin

使用绝对文件路径可以清晰表明用户想切换到的确切位置。要用绝对文件路径来切换到文件 系统中的某个特定位置,只需在cd命令后指定全路径名:

[root@shell-yk ~]# cd /usr/bin

在上面的例子中,提示符中一开始有一个波浪号(~)。在切换到另一个目录之后,这 个波浪号被/usr/bin替代了。CLI提示符正是用它来帮助你跟踪当前所在虚拟目录结构中的位置。 波浪号表明shell会话位于你的主目录中。在切换出主目录之后,如果提示符已经进行了相关配置 的话,绝对文件路径就会显示在提示符中。

如果没有配置好提示符来显示当前shell会话的绝对文件路径,也可以使用shell命令来显示所 处的位置。pwd命令可以显示出shell会话的当前目录,这个目录被称为当前工作目录。pwd命令 的用法如下

[root@shell-yk bin]# pwd
/usr/bin

还可以从Linux虚拟目录中的任何一级跳回主目录


6.文件和目录列表

要想知道系统中有哪些文件,可以使用列表命令(ls)。

基本列表功能 ls命令基本的形式会显示当前目录下的文件和目录:


注意,ls命令输出的列表是按字母排序的(按列排序而不是按行排序)。如果用户用的是支 持彩色的终端仿真器,ls命令还可以用不同的颜色来区分不同类型的文件。LS_COLORS环境变 量控制着这个功能。(第6章中会讲到环境变量。)不同的Linux发行版根据各自终端仿真器的能力 设置这个环境变量。 如果没安装彩色终端仿真器,可用带-F参数的ls命令轻松区分文件和目录。使用-F参数可 以得到如下输出:


-F参数在目录名后加了正斜线(/),以方便用户在输出中分辨它们。类似地,它会在可执行 文件,以便用户找出可在系统上运行的文件。 基本的ls命令在某种意义上有点容易让人误解。它显示了当前目录下的文件和目录,但并没有 将全部都显示出来。Linux经常采用隐藏文件来保存配置信息。在Linux上,隐藏文件通常是文件名 以点号开始的文件。这些文件并没有在默认的ls命令输出中显示出来,因此我们称其为隐藏文件。要把隐藏文件和普通文件及目录一起显示出来,就得用到-a参数。下面是一个带有-a参数 的ls命令的例子:


所有以点号开头的隐藏文件现在都显示出来了。注意,有三个以.bash开始的文件。它们是bash shell环境所使用的隐藏文件, -R参数是ls命令可用的另一个参数,叫作递归选项。它列出了当前目录下包含的子目录中 的文件。如果目录很多,这个输出就会很长。以下是-R参数输出的简单例子


注意,首先-R参数显示了当前目录下的内容,也就是之前例子中用户home目录下的那些文 件。另外,它还显示出了用户home目录下所有子目录及其内容

显示长列表

在基本的输出列表中,ls命令并未输出太多每个文件的相关信息。要显示附加信息,另一个 常用的参数是-l。-l参数会产生长列表格式的输出,包含了目录中每个文件的更多相关信息


这种长列表格式的输出在每一行中列出了单个文件或目录。除了文件名,输出中还有其他有 用信息。输出的第一行显示了在目录中包含的总块数。在此之后,每一行都包含了关于文件(或 目录)的下述信息: 文件类型,比如目录(d)、文件(-)、字符型文件(c)或块设备(b); 文件的权限; 文件的硬链接总数; 文件属主的用户名; 文件属组的组名; 文件的大小(以字节为单位); 文件的上次修改时间; 文件名或目录名。 -l参数是一个强大的工具。有了它,你几乎可以看到系统上任何文件或目录的大部分信息。
在进行文件管理时,ls命令的很多参数都能派上用场。如果在shell提示符中输入man ls, 就能看到可用来修改ls命令输出的参数有好几页。 别忘了可以将多个参数结合起来使用。你不时地会发现一些参数组合不仅能够显示出所需的 内容,而且还容易记忆,例如ls –alF。

过滤输出列表
由前面的例子可知,默认情况下,ls命令会输出目录下的所有非隐藏文件。有时这个输出会 显得过多,当你只需要查看单个少数文件信息时更是如此。 幸而ls命令还支持在命令行中定义过滤器。它会用过滤器来决定应该在输出中显示哪些文件 或目录。 这个过滤器就是一个进行简单文本匹配的字符串。可以在要用的命令行参数之后添加这个过 滤器


7.处理文件(下面简单介绍常用的命令)

1)我们创建一个文件,比如创建一个qq.txt,可以用touch命令创建


2)复制文件

对系统管理员来说,在文件系统中将文件和目录从一个位置复制到另一个位置可谓家常便 饭。cp命令可以完成这个任务。


3)重命名文件


4)删除文件


5)创建目录(创建一个csdn目录)


6)删除csdn目录


查看整个文件 如果手头有一个很大的文本文件,你可能会想看看里面是什么内容。在Linux上有3个不同的 命令可以完成这个任务。

1. cat命令 cat命令是显示文本文件中所有数据的得力工具。


没什么特别的,就是文本文件的内容而已。这里还有一些可以和cat命令一起用的参数,可 能对你有所帮助。

-n参数会给所有的行加上行号。


这个功能在检查脚本时很有用。如果只想给有文本的行加上行号,可以用-b参数。


如果不想让制表符出现,可以用-T参数。


希望对您有所帮助,再见

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2280端口映射到公网,发现经常被暴力破解,自己写了个临时封禁ip功能的脚本,实现5分钟内同一个ip登录密码错误10次就封禁这个ip5分钟,并且进行邮件通知使用步骤openwrt为19.07.03版本,其他版本没有测试过安装bashmsmtpopkg
#!/bin/bashcommand1&command2&wait从Shell脚本并行运行多个程序–杨河老李(kviccn.github.io)
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/phpls-ls 2.编辑修改.bash_profile文件(没有.bash_profile文件的情况下回自动创建)sudovim~/.bash_profile在文件的最后输入以下信息,然后保存退出exportPATH="/Applications/MAMP/bin/php/php7.2.20/b
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如zh_CN之类的语言包,进行中文语言包装:apt-getinstalllanguage-pack-zh-hans3、安装好后我们可以进行临时修改:然后添加中文支持: locale-genzh_CN.UTF-8临时修改> export LC_ALL='zh_CN.utf8'> locale永久
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexadecimalbash2#[0~1]0[0~7]0x[0~f]or0X[0~f]perl0b[0~1]0[0~7]0x[0~f]tcl0b[0~1]0o[0~7]0x[0~f]bashdifferentbaserepresntationreference2.StringlengthLanguageStr
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全命令补全方法:yum-yinstallbash-completionsource/usr/share/bash-completion/bash_completionsource<(kubectlcompletionbash)echo"source<(kubectlcompletionbash)">>~/.bashrc 
参考这里启动jar包shell脚本修改过来的#!/bin/bash#默认应用名称defaultAppName='./gadmin'appName=''if[[$1&&$1!=0]]thenappName=$1elseappName=$defaultAppNamefiecho">>>>>>本次重启的应用:$appName<
#一个数字的行#!/bin/bashwhilereadlinedon=`echo$line|sed's/[^0-9]//g'|wc-L`if[$n-eq1]thenecho$linefidone<1.txt#日志切割归档#!/bin/bashcd/data/logslog=1.logmv_log(){[-f$1]&&mv$1$2
#文件增加内容#!/bin/bashn=0cat1.txt|whilereadlinedon=[$n+1]if[$n-eq5]thenecho$lineecho-e"#Thisisatestfile.\n#Testinsertlineintothisfile."elseecho$linefidone#备份/etc目录#
# su - oraclesu: /usr/bin/ksh: No such file or directory根据报错信息:显示无法找到文件 /usr/bin/ksh果然没有该文件,但是发现存在文件/bin/ksh,于是创建了一个软连接,可以规避问题,可以成功切换到用户下,但无法执行系统自带命令。$. .bash_profile-ksh: .: .b
history显示历史指令记录内容,下达历史纪录中的指令主要的使用方法如果你想禁用history,可以将HISTSIZE设置为0:#exportHISTSIZE=0使用HISTIGNORE忽略历史中的特定命令下面的例子,将忽略pwd、ls、ls-ltr等命令:#exportHISTIGNORE=”pwd:ls:ls-ltr:”使用HIS
一.命令历史  1.history环境变量:    HISTSIZE:输出的命令历史条数,如history的记录数    HISTFILESIZE:~/.bash_history保存的命令历史记录数    HISTFILLE:历史记录的文件路径    HISTCONTROL:     ignorespace:忽略以空格开头的命令
之前在网上看到很多师傅们总结的linux反弹shell的一些方法,为了更熟练的去运用这些技术,于是自己花精力查了很多资料去理解这些命令的含义,将研究的成果记录在这里,所谓的反弹shell,指的是我们在自己的机器上开启监听,然后在被攻击者的机器上发送连接请求去连接我们的机器,将被攻击者的she
BashOne-LinersExplained,PartI:Workingwithfileshttps://catonmat.net/bash-one-liners-explained-part-oneBashOne-LinersExplained,PartII:Workingwithstringshttps://catonmat.net/bash-one-liners-explained-part-twoBashOne-LinersExplained,PartII
Shell中变量的作用域:在当前Shell会话中使用,全局变量。在函数内部使用,局部变量。可以在其他Shell会话中使用,环境变量。局部变量:默认情况下函数内的变量也是全局变量#!/bin/bashfunctionfunc(){a=99}funcecho$a输出>>99为了让全局变量变成局部变量
1、多命令顺序执行;  命令1;命令2  多个命令顺序执行,命令之间没有任何逻辑联系&&  命令1&&命令2  逻辑与,当命令1正确执行,才会执行命令2||  命令1||命令2  逻辑或,当命令1执行不正确,才会执行命令2例如:ls;date;cd/home/lsx;pwd;who ddif=输入文件of=输
原博文使用Linux或者unix系统的同学可能都对#!这个符号并不陌生,但是你真的了解它吗?首先,这个符号(#!)的名称,叫做"Shebang"或者"Sha-bang"。Linux执行文件时发现这个格式,会把!后的内容提取出来拼接在脚本文件或路径之前,当作实际执行的命令。 Shebang这个符号通常在Unix系统的脚本
1、历史命令history[选项][历史命令保存文件]选项:-c:  清空历史命令-w:  把缓存中的历史命令写入历史命令保存文件 ~/.bash_historyvim/etc/profile中的Histsize可改存储历史命令数量历史命令的调用使用上、下箭头调用以前的历史命令使用“!n”重复执行第n条历史
目录1.Shell脚本规范2.Shell脚本执行3.Shell脚本变量3.1环境变量3.1.1自定义环境变量3.1.2显示与取消环境变量3.1.3环境变量初始化与对应文件的生效顺序3.2普通变量3.2.1定义本地变量3.2.2shell调用变量3.2.3grep调用变量3.2.4awk调用变量3.3
   http://www.voidcn.com/blog/wszzdanm/article/p-6145895.html命令功能:显示登录用户的信息命令格式:常用选项:举例:w显示已经登录的用户及正在进行的操作[root@localhost~]#w 11:22:01up4days,21:22, 3users, loadaverage:0.00,0.00,0.00USER