Linux GUN命令简介 (linux中GUN命令的含义)

在Linux系统下,GUN命令是非常常用的命令集之一,包含了大量常用的命令,如ls,grep,awk等。本文将对GUN命令集进行简要介绍,让读者对其有一个初步的了解。

1. 终端(Terminal)的使用

为使用GUN命令,需要打开终端界面,它可以在桌面环境下的菜单中找到。可以通过快捷键Ctrl+Alt+T打开终端。

终端界面下的命令输入需要再学习一些基本知识,如:

· 命令必须按回车键执行

· 命令后面可以添加参数和选项

· 命令的参数和选项之间用空格隔开

· 终端下可以使用多个不同的命令行界面和窗口。

2. Linux上常见的GUN命令

下面简要介绍几个常见的GUN命令:

2.1 ls命令

ls命令用于在当前文件夹下列出文件和文件夹的列表。它还可以列出任意文件夹下的文件和文件夹,只要添加路径即可。

示例:

列出当前文件夹下的文件和文件夹:ls

列出指定文件夹下的文件和文件夹:ls /home/user/Documents

2.2 cd命令

cd命令可以用来改变当前目录(工作目录)的位置。例如,如果想进入文件夹Downloads,就必须运行命令cd Downloads。

示例:

进入当前文件夹:cd .

进入上级文件夹:cd ..

进入指定目录:cd /home/user/Downloads

2.3 cp命令

cp命令用于将一个文件或文件夹复制到另一个位置。

示例:

复制文件:cp file.txt /home/user/Documents

复制文件夹:cp -r dir /home/user/Documents

2.4 mv命令

mv命令用于将一个文件或文件夹从当前位置移动到另一个位置。

示例:

移动文件:mv file.txt /home/user/Documents

移动文件夹:mv dir /home/user/Documents

2.5 rm命令

rm命令用于删除一个或多个文件或文件夹。

示例:

删除文件:rm file.txt

删除文件夹:rm -r dir/

2.6 cat命令

cat命令用于显示文件的内容,也可以用来创建新文件。可以使用>>字符来将内容附加到已有文件中,或者使用>字符来创建新文件。

示例:

显示文件内容:cat file.txt

创建新文件:cat > file.txt

附加内容到已有文件中:cat >> file.txt

2.7 grep命令

grep命令可以在文件中查找指定文本。

示例:

查找文件中包含指定文本的行:grep ‘text’ file.txt

查找文件中不包含指定文本的行:grep -v ‘text’ file.txt

2.8 awk命令

awk命令可以根据某些条件处理文本文件的内容。它是一种强大的文本分析工具,支持循环、条件判断和自定义函数等高级功能。

示例:

将文件中的某些信息提取出来进行统计:awk ‘{sum+=$3}END{print sum}’ file.txt

3.

本文对Linux GUN命令集进行了简要介绍,并对常用的命令进行了演示。当然,Linux下的GUN命令集还有很多其他的命令,例如sed、curl、find等,这些命令都有着特定的用途和功能。如果要深入学习Linux操作系统,了解这些命令的使用是非常必要的。

相关问题拓展阅读:

如何为嵌入式开发建立交叉编译环境

下面我们将以建立针对arm的交叉编译开发环境为例来解说整个过程,其他的体系结构与这个相类似,只升纯瞎要作一些对应的改动。我的开发环境是,宿主机 i386-redhat-7.2,目标机 arm。

  这个过程如下

  1.下载源文件、补丁和建立编译的目录

  2.建立内核头文件

  3.建立二进制工具(binutils)

  4.建立初始编译器(bootstrap gcc)

  5.建立c库(glibc)

  6.建立编译器(full gcc)

  下载源文件、补丁和建立编译的目录

  1.选定软件版本号

  选择软件版本号时,先看看glibc源代码中的INSTALL文件。那里列举了该版本的glibc编译时所需的binutils 和gcc的版本号。例如在 glibc-2.2.3/INSTALL 文件中推荐 gcc 用 2.95以上,binutils 用 2.10.1 以上版本。

  我选的各个软件的版本是:

  linux-2.4.21+rmk2

  binutils-2.10.1

  gcc-2.95.3

  glibc-2.2.3

  glibc-linuxthreads-2.2.3

  如果你选的glibc的版本号低于2.2,你还要下载一个叫glibc-crypt的文件,例如glibc-crypt-2.1.tar.gz。 Linux 内核你可以从

www.kernel.org

或它的镜像下载。

  Binutils、gcc和glibc你可以从FSF的FTP站点 或它的镜像去下载。 在编译glibc时,要用到 Linux 内核中的 include 目录的内核头文件。如果你发现有变吵空量没有定义而导致编译失败,你就改变你的内核版本号。例如我开始用linux-2.4.25+vrs2,编译glibc-2.2.3 时报 BUS_ISA 没定义,后来发现在 2.4.23 开始它的名字被改为 CTL_BUS_ISA。如果你没有完全的把握保证你改的内核改完全了,就不要动内核,而是把你的 Linux 内核的版本号降低或升高,来适应 glibc。

  Gcc 的版本号,推荐用 gcc-2.95 以上的。太老的版本编译可能会出问题。Gcc-2.95.3 是一个比较稳定的版本,也是内核开发人员推荐用的一个 gcc 版本。

  如果你发现无法编译过去,有可能是你选用的软件中有的加入了一些新的特性而其他所选软件不支持的原因,就相应降低该软件的版本号。例如我开始用 gcc-3.3.2,发现编译不过,报 as、ld 等版本太老,我就把 gcc 降为 2.95.3。 太新的版本大多没经过大量的测试,建议不要选用。

  回页首

  2.建立工作目录

  首先,我们建立几个用来工作的目录:

  在你的用户目录,我用的是用户liang,因此用户目录为 /home/liang,先建立一个项目目录embedded。

  $pwd

  /home/liang

  $mkdir embedded

  再在这个项目目录 embedded 下建立三个目录 build-tools、kernel 和 tools。

  build-tools-用来存放你下载的 binutils、gcc 和 glibc 的源代码和用来编译这些源代码的目录。

  kernel-用来存放你的内核源代码和内核补丁。

  tools-用来存放编译好的交叉编译工具和库文件。

  $cd embedded

  $mkdir build-tools kernel tools

  执行完后目录结构如下:

  $ls embedded

  build-tools kernel tools

  3.输出和环境变量

  我们输出如下的环境变量方便我们编译。

  $export PRJROOT=/home/liang/embedded

  $export TARGET=arm-linux

  $export PREFIX=$PRJROOT/tools

  $export TARGET_PREFIX=$PREFIX/$TARGET

  $export PATH=$PREFIX/bin:$PATH

  如果你不惯用环境变量的,你可以直接用绝对或相对路径。我如果不用环境变量,一般都用绝对路径,相对路径有时会失败。环裤老境变量也可以定义在.bashrc文件中,这样当你logout或换了控制台时,就不用老是export这些变量了。

  体系结构和你的TAEGET变量的对应如下表

  你可以在通过glibc下的config.sub脚本来知道,你的TARGET变量是否被支持,例如:

  $./config.sub arm-linux

  arm-unknown-linux-gnu

  在我的环境中,config.sub 在 glibc-2.2.3/scripts 目录下。

  网上还有一些 HOWTO 可以参考,ARM 体系结构的《The GNU Toolchain for ARM Target HOWTO》,PowerPC 体系结构的《Linux for PowerPC Embedded Systems HOWTO》等。对TARGET的选取可能有帮助。

  4.建立编译目录

  为了把源码和编译时生成的文件分开,一般的编译工作不在的源码目录中,要另建一个目录来专门用于编译。用以下的命令来建立编译你下载的binutils、gcc和glibc的源代码的目录。

  $cd $PRJROOT/build-tools

  $mkdir build-binutils build-boot-gcc build-gcc build-glibc gcc-patch

  build-binutils-编译binutils的目录

  build-boot-gcc-编译gcc 启动部分的目录

  build-glibc-编译glibc的目录

  build-gcc-编译gcc 全部的目录

  gcc-patch-放gcc的补丁的目录

  gcc-2.95.3 的补丁有 gcc-2.95.3-2.patch、gcc-2.95.3-no-fixinc.patch 和gcc-2.95.3-returntype-fix.patch,可以从

下载到这些补丁。

  再将你下载的 binutils-2.10.1、gcc-2.95.3、glibc-2.2.3 和 glibc-linuxthreads-2.2.3 的源代码放入 build-tools 目录中

  看一下你的 build-tools 目录,有以下内容:

  $ls

  binutils-2.10.1.tar.bz2 build-gccgcc-patch

  build-binutluild-glibcglibc-2.2.3.tar.gz

  build-boot-gccgcc-2.95.3.tar.gzglibc-linuxthreads-2.2.3.tar.gz

  回页首

  建立内核头文件

  把你从

www.kernel.org

下载的内核源代码放入 $PRJROOT /kernel 目录

  进入你的 kernel 目录:

  $cd $PRJROOT /kernel

  解开内核源代码

  $tar -xzvf linux-2.4.21.tar.gz

  或

  $tar -xjvf linux-2.4.21.tar.bz2

  小于 2.4.19 的内核版本解开会生成一个 linux 目录,没带版本号,就将其改名。

  $mv linux linux-2.4.x

  给 Linux 内核打上你的补丁

  $cd linux-2.4.21

  $patch -p1 gcc/cstamp-h.in

  在我们编译并安装 gcc 前,我们先要改一个文件 $PRJROOT/gcc/config/arm/t-linux,把

  TARGET_LIBGCC2-CFLAGS = -fomit-frame-pointer -fPIC

  这一行改为

  TARGET_LIBGCC2-CFLAGS = -fomit-frame-pointer -fPIC -Dinhibit_libc -D__gthr_posix_h

  你如果没定义 -Dinhibit,编译时将会报如下的错误

  ../../gcc-2.95.3/gcc/libgcc2.c:41: stdlib.h: No such file or directory

  ../../gcc-2.95.3/gcc/libgcc2.c:42: unistd.h: No such file or directory

  make: Error 1

  make: Error 2

  make: Error 1

  make: Error 2

  如果没有定义 -D__gthr_posix_h,编译时会报如下的错误

  In file included from gthr-default.h:1,

  from ../../gcc-2.95.3/gcc/gthr.h:98,

  from ../../gcc-2.95.3/gcc/libgcc2.c:3034:

  ../../gcc-2.95.3/gcc/gthr-posix.h:37: pthread.h: No such file or directory

  make: Error 1

  make: Error 2

  make: Error 1

  make: Error 2

  还有一种与-Dinhibit同等效果的方法,那就是在你配置configure时多加一个参数-with-newlib,这个选项不会迫使我们必须使用newlib。我们编译了bootstrap-gcc后,仍然可以选择任何c库。

  接着就是配置boostrap gcc, 后面要用bootstrap gcc 来编译 glibc 库。

  $cd ..; cd build-boot-gcc

  $../gcc-2.95.3/configure –target=$TARGET –prefix=$PREFIX \

  >–without-headers –enable-languages=c –disable-threads

  这条命令中的 -target、–prefix 和配置 binutils 的含义是相同的,–without-headers 就是指不需要头文件,因为是交叉编译工具,不需要本机上的头文件。-enable-languages=c是指我们的 boot-gcc 只支持 c 语言。–disable-threads 是去掉 thread 功能,这个功能需要 glibc 的支持。

  接着我们编译并安装 boot-gcc

  $make all-gcc

  $make install-gcc

  我们来看看 $PREFIX/bin 里面多了哪些东西

  $ls $PREFIX/bin

  你会发现多了 arm-linux-gcc 、arm-linux-unprotoize、cpp 和 gcov 几个文件。

  Gcc-gnu 的 C 语言编译器

  Unprotoize-将 ANSI C 的源码转化为 K&R C 的形式,去掉函数原型中的参数类型。

  Cpp-gnu的 C 的预编译器

  Gcov-gcc 的辅助测试工具,可以用它来分析和优程序。

  使用 gcc3.2 以及 gcc3.2 以上版本时,配置 boot-gcc 不能使用 –without-headers 选项,而需要使用 glibc 的头文件。

  回页首

  建立 c 库(glibc)

  首先解压 glibc-2.2.3.tar.gz 和 glibc-linuxthreads-2.2.3.tar.gz 源代码

  $cd $PRJROOT/build-tools

  $tar -xvzf glibc-2.2.3.tar.gz

  $tar -xzvf glibc-linuxthreads-2.2.3.tar.gz –directory=glibc-2.2.3

  然后进入 build-glibc 目录配置 glibc

  $cd build-glibc

  $CC=arm-linux-gcc ../glibc-2.2.3/configure –host=$TARGET –prefix=”/usr”

  –enable-add-ons –with-headers=$TARGET_PREFIX/include

  CC=arm-linux-gcc 是把 CC 变量设成你刚编译完的boostrap gcc,用它来编译你的glibc。–enable-add-ons是告诉glibc用 linuxthreads 包,在上面我们已经将它放入了 glibc 源码目录中,这个选项等价于 -enable-add-ons=linuxthreads。–with-headers 告诉 glibc 我们的linux 内核头文件的目录位置。

  配置完后就可以编译和安装 glibc

  $make

  $make install_root=$TARGET_PREFIX prefix=”” install

  然后你还要修改 libc.so 文件

  将

  GROUP ( /lib/libc.so.6 /lib/libc_nonshared.a)

  改为

  GROUP ( libc.so.6 libc_nonshared.a)

  这样连接程序 ld 就会在 libc.so 所在的目录查找它需要的库,因为你的机子的/lib目录可能已经装了一个相同名字的库,一个为编译可以在你的宿主机上运行的程序的库,而不是用于交叉编译的。

  回页首

  建立编译器(full gcc)

  在建立boot-gcc 的时候,我们只支持了C。到这里,我们就要建立编译器,来支持C和C++。

  $cd $PRJROOT/build-tools/build-gcc

  $../gcc-2.95.3/configure –target=$TARGET –prefix=$PREFIX –enable-languages=c,c++

  –enable-languages=c,c++ 告诉 full gcc 支持 c 和 c++ 语言。

  然后编译和安装你的 full gcc

  $make all

  $make install

  我们再来看看 $PREFIX/bin 里面多了哪些东西

  $ls $PREFIX/bin

  你会发现多了 arm-linux-g++ 、arm-linux-protoize 和 arm-linux-c++ 几个文件。

  G++-gnu的 c++ 编译器。

  Protoize-与Unprotoize相反,将K&R C的源码转化为ANSI C的形式,函数原型中加入参数类型。

  C++-gnu 的 c++ 编译器。

  到这里你的交叉编译工具就算做完了,简单验证一下你的交叉编译工具。

  用它来编译一个很简单的程序 helloworld.c

  #include

  int main(void)

  {

  printf(“hello world\n”);

  return 0;

  }

  $arm-linux-gcc helloworld.c -o helloworld

  $file helloworld

  helloworld: ELF 32-bit LSB executable, ARM, version 1,

  dynamically linked (uses shared libs), not stripped

  上面的输出说明你编译了一个能在 arm 体系结构下运行的 helloworld,证明你的编译工具做成功了。

linux中GUN命令的含义的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux中GUN命令的含义,Linux GUN命令简介,如何为嵌入式开发建立交叉编译环境的信息别忘了在本站进行查找喔。


数据运维技术 » Linux GUN命令简介 (linux中GUN命令的含义)