- 博客(45)
- 收藏
- 关注
原创 shell的内部命令和外部命令
shell命令分成内置命令和外部命令。内置命令(builtin command) 是shell解释程序内建的,有shell直接执行,不需要派生新的进程。有一些内部命令可以用来改变当前的shell环境。常见的内部命令有:.(点命令)、bg、cd、continue、echo、exec、exit、export、fg、jobs、pwd、read、return、set、shift、t
2014-05-21 10:03:01
2285
原创 57 利用sed处理windows和Unix文档中的行结束符
UNIX和DOS/Windows系统的纯文本格式的换行方式是不同的,基于DOS/Windows的文本文件在每一行末尾有一个CR(回车)和LF(换行),而UNIX文本只有一个换行。如果想将一个Unix文本转换为Windows文本,可以使用如下的sed命令行sed -e 's/$/\r/' myunix.txt > mywin.txt在该脚本中,'$'规则表达式将与
2014-05-16 15:41:29
2006
原创 55 gcc编译中出现“游离”错误
exam1204button.c:26:3: 错误: 程序中有游离的‘\200’exam1204button.c:26:3: 错误: 程序中有游离的‘\235’exam1204button.c:26:3: 错误: 程序中有游离的‘\342’exam1204button.c:26:3: 错误: 程序中有游离的‘\200’exam1204button.c:26:3: 错误: 程序中有游
2014-05-15 10:43:05
1184
原创 51 ubuntu下打开#号提示(切换到root)
#号提示是root用户的标志,而ubuntu默认的是普通用户,此时提示是$,并且并不能通过su切换用户命令进行切换,通常来说使用sudo即可完成对应的工作,但是如果在某些情况下希望使用带#的提示符,可以打开一个带超级用户权限的shellalloy@ubuntu:~$ sudo -s[sudo] password for alloy: root@ubuntu:~#
2014-04-29 15:58:56
1170
原创 50 在Ubuntu下挂载exfat格式的移动硬盘/U盘
exfat文件格式是唯一一个在OSX、win7和ubuntu系统下都能使用的文件格式,其能被osx和win7原生支持,并且支持4G以上的文件,但是ubuntu由于版权问题没法直接支持exfat,所以当插入该格式移动硬盘的时候会提示无法挂载,此时可以通过如下方法解决:sudo add-apt-repository ppa:relan/exfat加入新的PPAs
2014-04-28 13:32:02
4475
原创 49 shell中的冒号
1、表示永真,相当于TRUE关键字。colon.sh脚本利用while循环打印1到10的整数,while循环的条件使用了冒号,此时冒号就表示永真,即while循环永远执行下去,while循环体内使用if/then结构判断跳出while循环的条件。 1 #!/bin/bash 2 3 i=0 4 while :
2014-04-27 11:16:17
2465
原创 48 set和env变量的区别
Linux shell的环境变量《37 Linux的环境变量》 http://blog.csdn.net/alloyinrunning/article/details/24455829 分为set和env两种,其中set变量可以通过export工具导入到env中。set:显示设置shell变量,仅仅在本shell中有效env:显示设置用户环境变量,仅仅在当前回话洪总
2014-04-26 20:32:59
1319
原创 37 Linux的环境变量
环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。1、可以使用export来设置环境变量2、可以使用env命令来查看当前的环境变量树莓派的Raspbian环境变量说明如下:alloy@raspberrypi:/home$ envTERM=xtermSHELL=/bin/bashXD
2014-04-25 10:11:38
1681
原创 47 IFS的用途和对应值
IFS是内部分割符(Internal Field Seprator),其用于在shell处理“命令替换”和“参数替换”的时候拆解读入的变量,其默认值是空格(space)、制表符(tab)和换行符(newline),可以通过如下的方式来查看IFS的值。alloy@raspberrypi:~/linuxshell/chapter10$ echo $IFSalloy@ra
2014-04-24 11:33:55
1166
原创 46 关于Linux的I/O重定向
I/O重定向是一个过程,这个过程捕捉一个文件、或命令、或程序、或脚本、甚至代码块(code block)的输出,然后把捕捉到的输出,作为输入发送给另外一个文件、或命令、或程序、或脚本。1、I/O重定向符合包括了基本I/O重定向符号和高级I/O重定向符号两大类。基本I/O重定向符号(需要注意的是可以使用FD文件描述符作为文件名称):cmd1 | cmd2:管道符,将cmd
2014-04-22 08:14:44
1076
原创 45 如何在Linux下查看和切换shell
1、可以使用echo $SHELL来查看当前使用的shellalloy@alloy:~$ echo $SHELL/bin/bashalloy@alloy:~$ ls -al /bin/shlrwxrwxrwx 1 root root 4 3月 15 10:13 /bin/sh -> dash2、通过对/etc/shells的查看可以看到当前系统中安装的
2014-04-20 07:23:53
10053
2
原创 42 Linux bash shell的内部变量
内部变量是指能够对bash Shell脚本行为产生影响的变量,它们对Shell及其子Shell都有效,因此,内部变量属于环境变量的范畴,在《37 Linux的环境变量》中介绍了Linux的部分环境变量,包括PWD、OLDPWD、PATH、SHELL和USER,可以使用export对其进行设置。Linux bash shell的内部变量包括如下,可以使用echo + $内部变量名称 来打
2014-04-18 15:11:09
1537
原创 41 pkg-config和gtk+
通常来说gcc在编译链接linux环境下的c语言代码时会在/lib和/usr/lib中去寻找对应的库文件,如果库文件没有这两个位置的时候则需要将库文件信息添加到库文件搜索路径中,可以通过如下两种方法来设置库文件的搜索路径:1. 在环境变量 LD_LIBRARY_PATH 中指明库的搜索路径。 2. 在 /etc/ld.so.conf 文件中添加库的搜索路径。在gt
2014-04-17 18:00:41
2279
原创 40 在Ubuntu下编写shell脚本流程简单说明
在linux中编写shell脚本的流程的简单说明1、使用vim或者gedit建立一个文件,通常来说会用.sh作为文件后缀2、以 “#!/bin/bash”为第一行语句,其中“#!”被称为“Sha-Bang”符号,是shell脚本的起始符号,用于说明当前的脚本文件用bin/bash来执行3、编写语句,使用#来作为注释的关键字符4、使用chmod
2014-04-15 10:03:29
3927
原创 38 查询Linux的命令执行退出状态
在Linux 系统中,每当命令执行完成后,系统都会返回一个退出状态。该退出状态用一整数值表示,用于判断命令运行正确与否。若退出状态值为 0,表示命令运行成功;而退出状态值不为 0时,则表示命令运行失败。最后一次执行的命令的退出状态值被保存在内置变量“ $?”中,所以可以通过echo语句进行测试命令是否运行成功。 POSIX规定了以下几种退出状态和退出状态的含义。
2014-04-14 10:13:09
5215
1
原创 36 join和paste命令的几点总结
1、join命令只能对排序之后的文件进行操作 2、使用join命令的时候必须使用-t参数 3、join命令对两个文件进行操作时,如果两个文件的域不相同,则只会连接具有相同域的部分,可以用-a1和-a2参数来分别i显示第一个文件和第二个文件中未被连接的部分,如下两个文件(score和otherscore)进行操作,可以看到没有共同域的部分没有被连接
2014-04-13 11:07:16
1134
原创 35 uniq和sort -u的区别
1、uniq必须针对完全相同的行进行判断,而sort -u可以针对域进行判断2、uniq只会处理连续的行,对不连续的行不会进行处理,而sort -u针对全部行进行处理
2014-04-13 09:57:31
1128
原创 34 Linux的sort命令
sort命令对一个文件(文本文件)的内部数据进行排序,其将输入文件看做由多条记录组成的数据流,而记录由可变宽度的字段组成,以换行符为定界符,其将一条记录分成多个域来处理,默认的域分割符为空格(也可以由用户自己通过sort的参数进行指定)。sort的标准调用格式说明如下: sort [OPTION]... [FILE]... sort [O
2014-04-12 13:42:20
1016
原创 32 查看Linux中的的用户组信息
用户组(group)是Linux/Unix下具有相同特征用户(user)的集合体,可以具有一定操作权限;用户可以属于一个或者多个用户组。和用户组相关的配置文件包括:etc/group——这是用户组的配置文件。etc/gshadow——这是用户组的影子文件。可以通过groups命令来查看当前用户的用户组,也可以使用newgrp来切换用户组:alloy@raspbe
2014-04-11 14:07:42
1299
原创 31 什么是脚本语言
脚本语言(Script Language)又被称为扩建的语言或动态语言,是为了缩短传统的编写-编译-链接-运行过程而创建的计算机编程语言,用于控制软件程序,通常使用文本(ACSII)保存,只有在被调用时候进行解释或者编译。脚本语言的命名起源于一个脚本“screenplay”,每次运行都会使对话框逐字重复,早期的脚本语言通常以批处理形式存在,随着CSE技术的发展,现代的脚本语言已经成熟到可以
2014-04-10 15:17:34
1072
原创 30 查看当前Linux系统中安装的shell及其版本
shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器),其接收用户命令,然后调用相应的应用程序。同时shell又是一种程序设计语言,作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。1、可以通过查看/etc/
2014-04-10 08:57:12
11850
原创 28 ubuntu的bits/types.h 等头文件位置
types.h头文件中定义了一些数据类型,通常来说该文件应该是位于usr/include/bits 路径下的,但是ubuntu 12.04lts下却是找不到bits文件夹的,其位置被放到了:x86_64-linux-gnu文件夹下,同理还有一大堆其他头文件(例如网络相关的头文件)alloy@alloy:/usr/include/x86_64-linux-
2014-04-09 10:30:02
6696
原创 27 Linux下的FILE文件类型
FILE文件类型是标准C语言中用于指向文件的一个结构体,其内部结构会因为不同的编译器/操作系统发生不同的变化,对于Linux而言,其在stdio.h中进行定义typedef struct _IO_FILE FILE;其中结构体 _IO_FILE的定义在usr/inlucde/libio.h中struct _IO_FILE {272 int _f
2014-04-08 13:53:31
1318
原创 26 Linux下的ssize_t类型
ssize_t类型通常用于文件操作的write、read函数,用于表示可以被执行read和write操作的数据块的大小,其在头文件unistd.h中的定义如下,被typedef定义为__ssize_t类型220 #ifndef __ssize_t_defined221 typedef __ssize_t ssize_t;222 # define __ssize_t_de
2014-04-08 10:05:43
2895
原创 25 Linux下的off_t类型
off_t类型用于指示文件的偏移量,常就是long类型,其默认为一个32位的整数,在gcc编译中会被编译为long int类型,在64位的Linux系统中则会被编译为long long int,这是一个64位的整数,其定义在unistd.h头文件中可以查看。 242 # ifndef __off_t_defined243 # ifndef __USE_FILE_OFFSET6
2014-04-07 08:50:59
42327
原创 24 Linux C下Open函数打开文件描述符用于标准输入输出
由open函数返回的文件描述符一定是最小的未用描述符数字,这一点被很多应用程序用来在标准输入、标准输出或标准出错上打开一个新的文件。例如,一个应用程序可以先关闭标准输出(通常是文件描述符1),然后打开另一个文件,事先就能了解该文件一定会在文件描述符1上打开。
2014-04-05 23:24:53
2108
原创 22 Linux下查看用户进程的限制
可以使用ulimit命令来查看当前用户进程中的各种限制。alloy@raspberrypi:~/linuxcupdate/chapter5$ ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority
2014-04-05 11:14:26
2994
原创 21 Linux下的C语言集成开发环境汇总介绍
集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。1、Code::Blocks 是一个开放源码的全功能的跨平台C/C++集
2014-04-04 11:39:24
3745
原创 19 gcc的gdb调试选项参数
在使用gcc对C语言代码进行编译生成可执行文件的时候可以使用调试编译参数选项以生成以供调试器使用的调试信息,其包括了-g和-ggdb两种参数,其中每种参数又分别包括了1、2、3三种级别,每种级别下生成的调试信息量不同,其中默认的是级别2。级别1(-g1):不包含局部变量和与行号有关的调试信息,因此只能够用于回溯跟踪和堆栈转储,回溯跟踪指的是监视程序在运行过程中的函数调用历史,堆栈转储则是一
2014-04-03 09:39:08
3902
原创 16 两种include引用头文件的区别
#include "stdio.h"#include 使用尖括号表示在包含文件目录中去查找(包含目录是由系统的环境变量进行设置的,一般为系统头文件的默认存放目录,比如Linux系统在/usr/include目录下),而不在源文件的存放目录中查找;使用双引号则表示首先在当前的源文件目录中查找,若未找到才到包含目录中去查找。所以如果情况允许可以使用""而不是
2014-04-02 09:19:47
1073
原创 17 一个展示gcc编译优化选项-O效果的实例
gcc在编译的时候可以使用-O、-O2和-O3选项(字母O要大写)来对代码进行优化,以下是一个故意创建的代码欧用于配合time命令测试该优化选项的效果,time命令的输出为real、user和sys三项,各个部分说明如下:real:进程总的执行时间, 它和系统负载有关(包括了进程调度,切换的时间),user:被测量的进程中用户指令的执行时间;sys:被测量进程中内核
2014-04-01 13:53:16
1792
原创 15 Linux更改权限解决新建用户不能读写创建文件/文件夹的问题
在linux下新建一个用户之后可能会遇到不能读写、创建文件/文件夹的问题,这通常是由于用户权限不够导致的,此时通常有两种比较简单的解决办法1、在所有的命令之前增加sudo获得root权限2、调用ls -l命令查看工作目录的对应权限:alloy@raspberrypi:~$ ls -ltotal 8drwxrwxrwx 2 root root
2014-04-01 07:41:48
13829
原创 14 在Linux中给新建用户sudo权限
以下操作均在基于Raspberry Pi的Raspbian上完成在Linux的实际使用中常常遇到新建用户不能执行sudo操作的情况,这是因为新的用户么有对应的权限,对应的增加方法如下:1、使用chmod命令对 /etc/sudoers 增加写操作权限,这是必须的,否则即使用sudo + vim对该文件操作也不能保存pi@raspberrypi /etc $ sudo
2014-03-31 09:26:50
1326
原创 13 修改树莓派Raspberry Pi的IP地址为固定IP
在树莓派的实际应用中常常不会使用外接显示器而是ssh登录或者远程桌面对其进行操作,所以此时有一个固定的IP地址是非常重要的,在局域网络设定其IP地址为固定IP的方法如下:1、运行pi@raspberrypi /home $ sudo vim /etc/network/interfaces 命令对interfaces文件进行编辑2、如果是有线网络,将dhcp修改为stat
2014-03-30 22:28:00
11107
1
原创 12 Linux下新建用户和切换当前用户
1、使用 cat /etc/passwd可以查看当前的用户信息2、使用sudo useradd + 用户名 可以新建一个用户pi@raspberrypi /home $ sudo useradd alloypi@raspberrypi /home $ lsalloy pi3、使用sudo passwd + 用户名可以给用户设置密码
2014-03-30 14:56:14
1943
原创 11 在64位的ubuntu下安装32位依赖包
在64位的ubuntu下进行Android和嵌入式gcc编译等场合常常会报错,缺少头文件等,这可能是由于64位的Linux环境缺少32位的依赖包导致的,运行以下命令安装即可,该包比较大,70多M,安装需要200多M。sudo apt-get install ia32-libs
2014-03-30 10:21:53
1333
原创 09 在ubuntu中切换多终端的方法
在实际应用中经常需要同时开启多个终端且在它们之间切换,此时有两种方法:1、直接点击锁定到dock上的终端,即会弹出切换,并且dock上的终端会用箭头会显示当前有几个终端在运行,然后点击其中一个终端即可2、使用sudo apt-get install terminator命令安装工具terminator,然后启动之后在空白处点击右键可以选择水平分割,垂直分割等
2014-03-29 23:38:11
3557
原创 08 在ubuntu中截图的方法
1、使用PrtSc按键,等于全屏截图2、使用shift + PrtSc按键,可以选择区域,需要注意的是方法1和方法2都需要将当前截图文件处理后才能进行下一次截图3、使用自带的截图软件,可以在Dash中使用关键字“图”来搜寻,提供多种选项支持,需要注意的是当截图工具启动之后方法1、2都不工作
2014-03-29 12:50:58
647
原创 07 在ubuntu中查看电脑硬件配置的方法
1、使用sudo lshw命令,缺点是都是文字列表,不够简洁2、安装hwinfo,使用命令sudo apt-get install hwinfo 之后使用hwinfo --short(两个--)则可以看到比较简洁的输出
2014-03-29 09:31:28
1422
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人