精华内容
下载资源
问答
  • Bash Shell的安装和升级(源码安装)
    千次阅读
    2021-05-11 07:26:56

    一般而言,Bash Shell 是很多 Linux 发行版的默认 Shell,所以会随着系统的安装而自动安装。不过确实有一部分读者想要安装较新版本的 Bash Shell,所以本节会具体讲一下其安装方法,希望可以作为读者全新安装 Bash Shell 或者虽然已经安装但希望升级的参考。

    确定你的 Shell 版本

    如果你安装的 Linux 是 RedHat、CentOS、Fedora、Ubuntu、Debian 等主流发行版,那么在你的系统中很可能已经预装了 Bash Shell,只需要确认一下是否确实已经安装以及预装的版本即可。具体的方法是:

    # 确认系统中使用的 Shell 是 bash

    $ echo $SHELL

    /bin/bash

    # 查看系统中 Bash Shell 的版本(方法一)

    $ bash --version

    GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu)

    Copyright (C) 2005 Free Software Foundation, Inc.

    # 查看系统中 Bash Shell 的版本(方法二)

    $ echo $BASH_VERSION

    3.2.25(1)-release

    源码方式安装 Bash

    Linux 下安装软件的方式无非是 RPM 包安装、yum 安装、源码安装三种方式,读者可以任选一种方式。

    不过,相对来说 RPM 包安装和 yum 安装方式比较简单,若再考虑各种包的依赖关系,这两种方式中又属 yum 安装更为简单。这里就不详细介绍这两种安装方法了,下面会具体示范使用源码安装 bash 的过程。

    首先访问 http://www.gnu.org/software/bash/bash.html 页面,在 Downloads 中选择一个下载的链接,笔者选择了中国科技大学提供的FTP下载目录:ftp://mirrors.ustc.edu.cn/gnu/bash/。

    当前很多生产环境的系统中使用的 bash 版本还是 3.2 版,读者可以根据实际需要选择具体的版本。在笔者撰写本教程时,最新的版本是 4.2 版本,所以这里使用这个版本来做示范。

    1) 使用wget下载最新的 bash 源码包

    具体操作如下所示:

    $ wget ftp://mirrors.ustc.edu.cn/gnu/bash/bash-4.2.tar.gz

    --2013-04-11 19:37:41-- ftp://mirrors.ustc.edu.cn/gnu/bash/bash-4.2.tar.gz

    => `bash-4.2.tar.gz'

    Resolving mirrors.ustc.edu.cn... 202.141.160.110, 2001:da8:d800:95::110

    Connecting to mirrors.ustc.edu.cn|202.141.160.110|:21... connected.

    Logging in as anonymous ... Logged in!

    ==> SYST ... done. ==> PWD ... done.

    ==> TYPE I ... done. ==> CWD /gnu/bash ... done.

    ==> SIZE bash-4.2.tar.gz ... 7009201

    ==> PASV ... done. ==> RETR bash-4.2.tar.gz ... done.

    Length: 7009201 (6.7M)

    100%[==========================================>] 7,009,201 1.93M/s in 3.5s

    2013-04-11 19:37:46 (1.89 MB/s) - `bash-4.2.tar.gz' saved [7009201]

    2) 解压源码包

    解压源码包并进入生成的目录中:

    # 解压后会在当前目录下生成一个bash-4.2目录

    $ tar zxvf bash-4.2.tar.gz

    #进入目录bash-4.2

    $ cd bash-4.2

    $

    3) 准备配置(configure)

    最简单的配置方式是直接运行当前目录下的 configure,这会将 bash 安装到 /usr/local 目录中,不过编译安装软件时,好的习惯是使用--prefix参数指定安装目录。所以这里采用下面的配置方式。该条命令将会产生大量的输出,一开始会检查系统的编译环境以及相关的依赖软件。

    最常见的错误可能是系统中没有安装 gcc 造成无法继续,如果是这个原因,使用 yum install gcc 命令进行安装。如果配置过程出现致命错误会立即退出,请读者注意输出内容中的 error 部分。

    $ ./configure --prefix=/usr/local/bash4.2

    checking build system type... i686-pc-linux-gnu

    checking host system type... i686-pc-linux-gnu

    Beginning configuration for bash-4.2-release for i686-pc-linux-gnu

    checking for gcc... gcc

    checking for C compiler default output file name... a.out

    checking whether the C compiler works... Yes

    ......(略去内容)......

    #如果大量的 checking 没问题,则配置环境检测通过。如果读者看到如下的输出内容,说明配置成功

    configure: creating ./config.status

    config.status: creating Makefile

    config.status: creating builtins/Makefile

    config.status: creating lib/readline/Makefile

    config.status: creating lib/glob/Makefile

    config.status: creating lib/intl/Makefile

    config.status: creating lib/malloc/Makefile

    config.status: creating lib/sh/Makefile

    config.status: creating lib/termcap/Makefile

    config.status: creating lib/tilde/Makefile

    config.status: creating doc/Makefile

    config.status: creating support/Makefile

    config.status: creating po/Makefile.in

    config.status: creating examples/loadables/Makefile

    config.status: creating examples/loadables/perl/Makefile

    config.status: creating config.h

    config.status: executing default-1 commands

    config.status: creating po/POTFILES

    config.status: creating po/Makefile

    config.status: executing default commands

    #如果配置成功,会在当前目录中生成Makefile

    $ ll Makefile

    -rw-r--r-- 1 root root 77119 Apr 11 19:49 Makefile

    4) 正式编译

    #编译过程会产生大量输出

    $ make

    rm -f mksyntax

    gcc -DPROGRAM='"bash"' -DCONF_HOSTTYPE='"i686"'

    -DCONF_OSTYPE='"linux-gnu"' -DCONF_MACHTYPE='"i686-pc-linux-gnu"'

    -DCONF_VENDOR='"pc"'

    -DLOCALEDIR='"/usr/local/bash4.2/share/locale"'

    -DPACKAGE='"bash"' -DSHELL -DHAVE_CONFIG_H -I. -I. -I./include

    -I./lib -g -o mksyntax ./mksyntax.c

    ......(略去内容)......

    5) 安装

    有时在安装前也可以进行测试,但是一般情况下这不是必需的。

    #非必要步骤:测试安装

    #[root@localhost bash-4.2]# make test

    #安装

    $ make install

    #安装其实就是将make产生的文件复制到指定的目录中,在这里指定的目录就是之前我们用 --prefix 参数指定的/usr/local,可以在该目录中发现bash4.2目录

    $ ls -ld /usr/local/bash4.2/

    drwxr-xr-x 4 root root 4096 Apr 11 20:08 /usr/local/bash4.2/

    到此为止,最新版本的 bash 就已经安装好了,确切地说是安装到了 /usr/local/bash4.2 中。

    使用新版本的 Bash Shell

    虽然最新版的 bash 已经安装到系统中,但是还需要经过一些设置才能使用。首先需要将最新的 bash 的路径写到 /etc/shells 中,以向系统注册新 Shell 的路径。可以采取直接编辑 /etc/shells 文件的方式,或者采用如下更简单的方式:

    $ echo "/usr/local/bash4.2/bin/bash" >> /etc/shells

    然后使用命令 chsh(change shell 的简写)修改登录 Shell。

    $ chsh

    Changing shell for root.

    New shell [/bin/bash]: /usr/local/bash4.2/bin/bash #输入要修改的shell

    Shell changed. #显示成功修改了shell

    #此处chsh并没有附加参数,所以默认是修改root的shell,如要改变其他用户的登录shell,可以在后面跟上用户名,使用这种方式给用户john更改shell

    $ chsh john

    chsh 命令做的工作就是修改了 /etc/passwd 文件中登录 Shell 的路径,所以如果明白了 chsh 的原理,实际上可以手工编辑 /etc/passwd 文件,将 root 用户的这行改成下面的样子(这又一次印证了 Linux 中一切皆文件的说法):

    $ cat /etc/passwd | grep bash4.2

    root:x:0:0:root:/root:/usr/local/bash4.2/bin/bash

    最后还需要重新登录以获得 Shell,登录后再次验证一下当前的 Shell 版本。

    $ echo $BASH_VERSION

    4.2.0(1)-release

    #请注意,如果这时候你使用下面的命令可能会犯迷糊:为什么版本是3.2.25呢?不是已经是4.2了吗?

    $ bash --version

    GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu)

    Copyright (C) 2005 Free Software Foundation, Inc.

    #通过使用 whereis bash 命令可了解当前运行的 bash 命令真实运行的是/bin/bash,也就是说现在是在版本为 4.2 的 bash 中运行了一个 3.2.25 版本的 bash 命令。如果要想每次运行 bash 的时候使用的是 4.2 的版本,需要修改 PATH 变量的值,读者可以自行完成这个任务

    $ whereis bash

    bash: /bin/bash /usr/local/bash4.2 /usr/share/man/man1/bash.1.gz

    更多相关内容
  • 本文介绍了bash shell命令行参数与命令行选项的操作方法,有关shell 命令行参数的实例教程,有需要的朋友参考下。
  • 如果要学Bash,个人认为这是最好的教程,讲解通俗易懂,还有大量的例子,只要完整学一遍,保证能学会
  • 对于学习bash shell用法和编写简单脚本很有用。 有用的提示:shellcheck扩展在调试之前发现常见的脚本错误非常有用。 用法 选择“调试”->“添加配置”以添加自定义调试配置(下拉菜单,路径输入等)。 选择Debug...
  • Learning the bash Shell Unix SHell Programming 第三版 非扫描高清版 带完整书签 学习Bash编程的最佳法宝
  • 高级Bash Shell脚本编程指南

    热门讨论 2014-07-16 15:34:32
    毫无疑问,UNIX/Linux 最重要的软件之一就是shell,目前最流行的shell 被称为Bash(Bourne AgainShell),几乎所有的Linux 和绝大部分的UNIX 都可以使用Bash。作为系统与用户之间的交互接口,shell几乎是你在UNIX 工作...
  • 毫无疑问,UNIX/Linux最重要的软件之一就是shell,目前最流行的shell被称为Bash(Bourne Again Shell),几乎所有的Linux和绝大部分的UNIX都可以使用Bash。作为系统与用户之间的交互接口,shell几乎是你在UNIX工作平台...
  • bash_shell_mock:用于BASH shellshell脚本模拟实用程序框架
  • 内置命令包含在 bash shell 本身里面。我该如何在 Linux / Apple OS X / *BSD / Unix 类操作系统列出所有的内置 bash 命令,而不用去读大篇的 bash 操作说明页? shell 内置命令就是一个命令或一个函数,从 shell ...
  • bash shell 和 dash shell 的区别,你真的了解吗? 本文将给你解开一些答案!

    最近在工作中遇到一个很奇葩的问题,就是一个嵌入式的SDK编译,它里面执行shell命令的时候,使用的dash shell来解析,而通常我们默认用的是bash shell来解析;我按照bash shell那样照常编写脚本,大部分的脚本是没有问题的,但是偏偏就被我遇到了不一样的地方,以此文记录下。

    先说下bash shell与bash shell的关系。

    什么是bash ?

    Bash(GNU Bourne-Again Shell)是许多Linux平台的内定Shell,事实上,还有许多传统UNIX上用的Shell,像tcsh、csh、ash、bsh、ksh等等。

    GNU/Linux 操作系统中的 /bin/sh 本是 bash (Bourne-Again Shell) 的符号链接,但鉴于 bash 过于复杂,有人把 bash 从 NetBSD 移植到 Linux 并更名为 dash (Debian Almquist Shell),并建议将 /bin/sh 指向它,以获得更快的脚本执行速度。Dash Shell 比 Bash Shell 小的多,符合POSIX标准。

    Debian和Ubuntu中,/bin/sh默认已经指向dash,这是一个不同于bash的shell,它主要是为了执行脚本而出现,而不是交互,它速度更快,但功能相比bash要少很多,语法严格遵守POSIX标准。

    简单来说,就是dash是bash的简化版本,没有支持那么复杂的东西。

    再看下我遇到的问题,为了好做对比,我分别写了1个脚本,分别用bash和dash去解析运行,得出不同的答案。

    脚本内容如下:

    
    result=1234
    
    if [[ "$result" == "1234" ]]; then
            echo "yes"
    else
            echo "no"
    fi
    if [ "$result" == "1234" ]; then
            echo "yes"
    else
            echo "no"
    fi
    if [[ "$result" = "1234" ]]; then
            echo "yes"
    else
            echo "no"
    fi
    if [ "$result" = "1234" ]; then
            echo "yes"
    else
            echo "no"
    fi

    OK,脚本对应的行号如下所示:

    使用/bin/bash运行,一切正常,输出4个yes

    使用/bin/dash运行,只有一个输出正常,3处报错!!!

     为何???

    原来,dash是很奇葩的:

    • if 里面的条件语句只能使用 [ ] 不能使用 [[ ]];
    • 字符串判断,只能使用 = 不能使用 ==;

    word天呐!!就是这么回事。

    我们还可以使用 ls -al /bin/sh查看下系统默认的shell解析器是什么,如下: 

    至于 [ ] 与 [[ ]] 的区别,可以参考这篇文章:Linux Shell 中的 ()、(())、[]、[[]]、{} 怎么用是不是还傻傻分不清?

    == 可用于判断变量是否相等,= 除了可用于判断变量是否相等外,还可以表示赋值。

    = 与 == 在 [ ] 中表示判断(字符串比较)时是等价的。

    今天的总结就介绍到这,有什么问题,欢迎你在评论区告诉我。

    展开全文
  • Bash SHELL 中文文档,最权威的中文文档,这个文档是pdf的,做的很精致, 是官方bash指南的中文版,非扫描版. 使用及其方便,是学习linux bash的必备工具书。
  • bash_shell_scripts 我已经完成了一些bash shell脚本。 并非总是完美的,但很有用。 JB
  • PDF电子书《Bash Shell学习笔记》,和大家分享~~
  • bash shell高级编程

    2015-06-01 22:50:55
    bash shell高级编程
  • Shells编程快速入门(四)之Bash Shell.pdfShells编程快速入门(四)之Bash Shell.pdfShells编程快速入门(四)之Bash Shell.pdfShells编程快速入门(四)之Bash Shell.pdfShells编程快速入门(四)之Bash Shell.pdfShells编程...
  • shell bash脚本With the arrival of Windows 10’s Bash shell, you can now create and run Bash shell scripts on Windows 10. You can also incorporate Bash commands into a Windows batch file or PowerShell ...
    shell bash脚本

    shell bash脚本

    With the arrival of Windows 10’s Bash shell, you can now create and run Bash shell scripts on Windows 10. You can also incorporate Bash commands into a Windows batch file or PowerShell script.

    随着Windows 10 Bash Shell的到来,您现在可以在Windows 10上创建并运行Bash Shell脚本。您还可以将Bash命令合并到Windows批处理文件或PowerShell脚本中。

    Even if you know what you’re doing, this isn’t necessarily as simple as it seems. Windows and UNIX use different end-of-line characters, and the Windows file system is accessible in a different location in the Bash environment.

    即使您知道自己在做什么,也不一定像看起来那样简单。 Windows和UNIX使用不同的行尾字符,并且Windows文件系统可在Bash环境中的其他位置访问。

    如何在Windows 10上编写Bash脚本 (How to Write a Bash Script on Windows 10)

    When writing shell scripts on Windows, bear in mind that Windows and UNIX-like systems like Linux use different “end of line” characters in text files in shell scripts.

    在Windows上编写Shell脚本时,请记住Windows和类似Linux的UNIX系统在Shell脚本的文本文件中使用不同的“行尾”字符。

    In other words, this means that you can’t simply write a shell script in Notepad. Save the file in Notepad and it won’t be interpreted properly by Bash. However, you can use more advanced text editors–for example, Notepad++ allows you to give a file UNIX end-of-line characters by clicking Edit > EOL Conversion > UNIX/OSX Format.

    换句话说,这意味着您不能简单地在记事本中编写Shell脚本。 将文件保存在记事本中,Bash无法正确解释。 但是,您可以使用更高级的文本编辑器-例如, Notepad ++允许您通过单击编辑> EOL转换> UNIX / OSX格式来给文件提供UNIX行尾字符。

    However, you’re better off just writing the shell script in the Bash environment itself. The Ubuntu-based Bash environment comes with both the vi and nano text editors. The vi editor is more powerful, but if you’ve never used it before, you may want to start with nano. It’s easier to use if you’re new.

    但是,最好只在Bash环境本身中编写Shell脚本。 基于Ubuntu的Bash环境随附vinano文本编辑器。 vi编辑器功能更强大,但如果您以前从未使用过它,则可能要从nano开始。 如果您是新手,使用起来会更容易。

    For example, to create a bash script in nano, you’d run the following command in bash:

    例如,要在nano中创建bash脚本,可以在bash中运行以下命令:

    nano ~/myscript.sh
    

    This would open the Nano text editor pointed at a file named “myscript.sh” in your user account’s home directory. (The “~” character represents your home directory, so the full path is /home/username/myscript.sh.)

    这将打开Nano文本编辑器,该编辑器指向用户帐户主目录中名为“ myscript.sh”的文件。 (“〜”字符表示您的主目录,因此完整路径为/home/username/myscript.sh。)

    Start your shell script with the line:

    从以下行开始您的shell脚本:

    #!/bin/bash
    

    Enter the commands you want to run, each one on its own line. The script will run each command in turn. Add a “#” character before a line to treat it as a “comment”, something which helps you and other people understand the script but which isn’t run as a command. For more advanced tricks, consult a more detailed guide to Bash scripts on Linux. The same techniques will work in Bash on Ubuntu on Windows.

    输入要运行的命令,每个命令都单独一行。 该脚本将依次运行每个命令。 在行之前添加“#”字符以将其视为“注释”,这可以帮助您和其他人理解脚本,但不能作为命令运行。 有关更多高级技巧,请查阅有关Linux上Bash脚本的更详细指南 。 相同的技术将在Windows上的Ubuntu的Bash中工作。

    Note that there’s no way to run Windows programs from within the Bash environment. You’re restricted to Linux terminal commands and utilities, just as you would be on a typical Linux system.

    请注意,无法在Bash环境中运行Windows程序。 就像在典型的Linux系统上一样,您只能使用Linux终端命令和实用程序。

    For example, let’s just use a basic “hello world” script as an example here:

    例如,我们在这里仅使用一个基本的“ hello world”脚本作为示例:

    #!/bin/bash
    # set the STRING variable
    STRING="Hello World!"
    # print the contents of the variable on screen
    echo $STRING
    

    If you’re using the Nano text editor, you can save the file by pressing Ctrl+O and then Enter. Close the editor by pressing Ctrl+X.

    如果使用的是Nano文本编辑器,则可以通过按Ctrl + O,然后按Enter来保存文件。 通过按Ctrl + X关闭编辑器。

    使脚本可执行,然后运行 (Make the Script Executable and then Run It)

    You’ll probably want the make the script executable so you can run it more easily. On Linux, that means you need to give the script file the executable permission. To do so, run the following command in the terminal, pointing it at your script:

    您可能需要使脚本可执行,以便您可以更轻松地运行它。 在Linux上,这意味着您需要授予脚本文件可执行权限。 为此,请在终端中运行以下命令,将其指向您的脚本:

    chmod +x ~/myscript.sh
    

    To run the script, you can now just run it in the terminal by typing its path. Whenever you want to launch the script in the future, just open the Bash shell and type the path to the script.

    要运行脚本,您现在可以在终端中通过键入其路径来运行它。 每当您以后想要启动脚本时,只需打开Bash shell并键入脚本的路径即可。

    ~/myscript.sh
    

    (If the script is in the current directory, you can run it with ./myscript.sh)

    (如果脚本位于当前目录中,则可以使用./myscript.sh运行它)

    如何在Bash脚本中使用Windows文件 (How to Work With Windows Files in a Bash Script)

    To access Windows files in the script, you’ll need to specify their path under /mnt/c, not their Windows path. For example, if you wanted to specify the C:\Users\Bob\Downloads\test.txt file, you’d need to specify the /mnt/c/Users/Bob/Downloads/test.txt path. Consult our guide to file locations in Windows 10’s Bash shell for more details.

    要访问脚本中的Windows文件,您需要在/ mnt / c下指定其路径,而不是Windows路径。 例如,如果要指定C:\ Users \ Bob \ Downloads \ test.txt文件,则需要指定/mnt/c/Users/Bob/Downloads/test.txt路径。 有关更多详细信息,请参阅Windows 10 Bash shell中文件位置的指南

    如何将Bash命令合并到批处理或PowerShell脚本中 (How to Incorporate Bash Commands into a Batch or PowerShell Script)

    Lastly, if you have an existing batch file or PowerShell script you want to incorporate commands into, you can run Bash commands directly using the bash -c command.

    最后,如果您想将命令合并到现有的批处理文件或PowerShell脚本中 ,则可以使用bash -c命令直接运行Bash命令。

    For example, to run a Linux command in a Command Prompt or PowerShell window, you can run the following command:

    例如,要在命令提示符或PowerShell窗口中运行Linux命令,可以运行以下命令:

    bash -c "command"
    

    This trick allows you to add Bash commands into batch files or PowerShell scripts. The Bash shell window will appear when a Bash command is running.

    此技巧使您可以将Bash命令添加到批处理文件或PowerShell脚本中。 运行Bash命令时,将显示Bash Shell窗口。

    Update: If you have multiple Linux environments installed, you can use the wslconfig command to choose the default Linux environment used when you run the bash -c command.

    更新 :如果已安装多个Linux环境,则可以使用wslconfig命令选择运行bash -c命令时使用的默认Linux环境



    To create a shortcut to a Bash script from within Windows, just create a shortcut like normal. For the shortcut’s target, use the bash -c command we outlined above and point it at the Bash script you created.

    要在Windows中为Bash脚本创建快捷方式,只需像普通方式那样创建快捷方式。 对于快捷方式的目标,请使用我们上面概述的bash -c命令,并将其指向您创建的Bash脚本。

    For example, you’d point a shortcut at ” bash -c "~/myscript.sh" ” to run the example script above. You can also just run this command from a Command Prompt or PowerShell window, too.

    例如,您可以将快捷方式指向“ bash -c "~/myscript.sh" ”,以运行上面的示例脚本。 您也可以只在命令提示符或PowerShell窗口中运行此命令。

    翻译自: https://www.howtogeek.com/261591/how-to-create-and-run-bash-shell-scripts-on-windows-10/

    shell bash脚本

    展开全文
  • 学习bash-shell-script 学习BASH Shell脚本
  • 基本的bash shell命令

    千次阅读 2017-09-13 22:59:47
    大多数linux发行版的默认都是GUNbash shell,本次将介绍bash shell的一些基本特征,bashshell基本命令来操作linux文件和目录。 1.启动shell Gun bash能提供对linux系统的交互式访问,它是作为普通的程序运行的,...

    大多数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参数。 

    希望对您有所帮助,再见

    展开全文
  • bash shell命令(一)

    千次阅读 2020-03-20 14:15:20
    Shift+Ctrl+N 创建一个新的文件夹,在现有的窗口的新标签中启动一个新的shell会话 Shift+Ctrl+C 将所选的文本复制到GNOME的剪贴板中 Shift+Ctrl+V 将GNOME剪贴板中的文本粘贴到会话中 虚拟机:Ctrl+Alt+Enter 全屏和...
  • Linux Bash Shell入门教程

    万次阅读 多人点赞 2019-05-03 20:03:31
    BASH 的基本语法最简单的例子 —— Hello World!关于输入、输出和错误输出BASH 中对变量的规定(与 C 语言的异同)BASH 中的基本流程控制语法函数的使用2.1     最简单的例子 —— Hello World!...
  • bash shell 详解

    2013-11-16 09:25:06
    里面介绍了bash shell 的操作,令你快速上手bash
  • Bash is the command-line interface for Linux distributions like Ubuntu, CentOS, Debian, Mint, Kali, RedHat, Fedora, etc. Bash provides a lot of different types of commands and tools to manage a Linux ...
  • jm-shell:内容丰富的定制Bash shell
  • bash-powerline-shell:为您的bash shell提供美观,有效和有用的PS1提示
  • bash shell 源代码

    2012-09-19 09:59:24
    主要是一份bash shell 4.2 的源码,共享给大家
  • bash shell for循环1到100

    千次阅读 2021-08-02 14:50:17
    bash shell写程序时,经常会用到for循环,特别是从1到100这种需求,这里记录几种shell中从1到100的循环方法 类似c语言 for ((i=1; i<=100; i ++)) do echo $i done in使用 for i in {1..100} do echo $i ...
  • 本文介绍了如何在Win10上运行Linux Bash。 前段时间笔者使用的Linux云主机到期了,并且也没有续约,所以最近想使用Linux(其实就是用Bash)的时候只能干着急。这两天突然想起以前看过新闻说Windows上也可以运行...
  • 怎样在window下运行linux bash shell脚本

    千次阅读 2020-11-17 22:48:42
    怎样在window下运行linux bash shell
  • 作为一名运维工程师,BashShell脚本编写必不可少。然而,大家会发现专门用来编写BashShell脚本的IDE少之又少。但是,即使这样也阻止不了我们自己通过vim来打造一款属于自己的BashShell脚本开发环境。通过以下命令及...
  • bash shell 中的数组

    千次阅读 2019-09-28 03:58:38
     bash shell 提供了两种一维数组,分别是 index array 和 associative array,常见的翻译是索引数组和关联数组。任何变量都可以用作数组,也就是说如果你使用了数组赋值的语法操作变量(name[subscript]=value),...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 517,167
精华内容 206,866
关键字:

bash shell