qlearner的个人博客分享 http://blog.sciencenet.cn/u/qlearner

博文

linux小知识点 专帖

已有 3741 次阅读 2012-7-14 18:55 |个人分类:Linux学习|系统分类:科研笔记| 安装

4、一条命令在Ubuntu下安装flash插件,解决上网看视频问题:
$ sudo apt-get install flashplugin-nonfree
或者在adobe公司的网站下载,然后readme提示安装。
5、查看Ubuntu是32位还是64位:uname -m
7、变量在声明时需要给予初值,在使用时需要使用${}。增加变量内容时,用${变量}来累加内容。若该自定义变量需要在其它子进程中执行,则需要以export来使自定义变量变成环境变量。取消变量用unset。调用其它命令提供的信息用$()。
删除变量内容:echo ${variable#要删除的文字}。还可以有##,%,%%。
但这只当时写入内存中,shell重启后即消失。
永久修改自己的PATH环境变量:~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取。PATH=${PATH}:xx,这样就把自己的路径加上了。
还可以将执行文件建立一个软连接到/usr/local/bin。这个文件夹一般存放用户自己安装的软件的执行文件(Linux下的可执行文件就是二进制文件)。且使用绝对路径连接。(-sf)
8、听歌软件用audacious+歌词显示osdlyrics。
教程:http://www.pairsdoll.com/install-audacious-music-palyer-in-ubuntu.html/
9、emacs中实现括号高亮和跳转:在~/.emacs添加 (show-paren-mode t) 即可实现高亮;
此外 C-M-n和 C-M-p 在匹配括号间跳转。
10、linux下简单好用画图软件:KolourPaint。截图软件:Ksnapshot。
11、emacs剪切、复制、粘帖的快捷键:
keyboard: Go to the beginning of the region and hit Ctrl-space. Go to the end, and type Ctrl-w to cut or Meta-w to copy. Go to the destination, and type Ctrl-y to paste.
On pc, Meta replaced by Alt
12、右键终端:sudo apt-get install nautilus-open-terminal。
13、gcc与g++的区别:
(1)编译阶段:两者都可。对于-c文件,gcc当作c程序,g++当作c++程序。
(2)连接阶段:两者也都可。只是因为gcc命令不能自动和C++程序使用的库联接,所以通常使用g++来完成联接。
gcc可以通过-lstdc++来连接C++的函数库。-l是加入某个函数库的意思。后面跟上函数库的名字,然后-L/usr/lib  -L/lib 这是指示到哪个地方寻找哪个函数库,通常存放在上述两个目录下,用户自己定义的则要设置好正确路径。-I/usr/include这是指示头文件的路径。m是libm.so这个函数库的简化。
函数库:类似子程序的角色,可被调用来执行的一段功能函数,在连接阶段调用。
gcc hello.c 直接生成可执行文件a.out,不生成目标文件。
gcc hello.c -lm -L/usr/lib -I/usr/include 在指定路径中寻找并加入libm.so库文件和要用到的头文件。
gcc -c hello.c 自动生成hello.o目标文件,但不会形成可执行文件。
之所以要编译出目标文件,是因为源码可能有若干文件,不能直接进行编译,需要先生成目标文件,再连接成为可执行文件。
gcc -o name hello.c 可以指定可执行文件的名字。
14、寻找文件:(既可以寻找普通文件,也可以寻找命令,linux下一视同仁,都当作文件)
(1)whereis(寻找特定文件)
(2)locate(可以输入文件的部分名称,感觉更好用)
这两个都是基于数据库查找,速度快。而数据库创建默认是每天执行一次,所以可能找不着最新文件,这时可以手动更新数据库——updatedb。
(3)find基于硬盘查找,速度慢,但功能更强大。
寻找文件中的字符串:grep命令
15、对于64位核心的debian系统,ia32-libs提供了运行32位软件的库函数,在安装永中office时用到,但好像32位linuxQQ还是不能用。安装lib-ia32:sudo apt-get install ia32-libs。
16、自己编译openDX源码,其中会遇到一些问题及解决方法:
(1)/usr/include/bits/fcntl2.h:51: 错误: 调用‘__open_missing_mode’,声明有错误属性:open with O_CREAT in second argument needs 3 arguments
网上查了一下,说是gcc-4.3对语法检查严格的结果,找到出错的那一句,在我编译的程序里是这句
int fd = open(fn.c_str(), O_WRONLY | O_CREAT | O_TRUNC);
将之改为
int fd = open(fn.c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0777);
(2)OpenDX 需要一个头文件 sys.h,可做如下链接:(这个是必需的)
ln -s /usr/src/linux(或包含linux的一个长文件名)/include/linux/sys.h /usr/include/linux/
(3)编译一个linux下的c系统,包含词法和语法分析模块,Linux上用bison和flex。
yacc是一个文法分析器的生成器,bison即是yacc的GNU版本.Lex和YACC是用于构造词法分析机和语法解释器的工具,利用Lex和YACC你可以轻松的构造一个语法解释器。
需要安装 sudo apt-get intall bison flex
(4)motif 和openGL支持。
17、自己编译并安装linux下的词典goldendict:
按照网站上的操作方法下载必要dev文件,可能途中会找不到bzlib.h,解决方法:
sudo apt-get install python-dev
sudo apt-get install python-bzutils
sudo apt-get install libbz2-dev
然后下载并安装字典就可以。
18、软件的安装:
安装软件通常有两种方式:一种是通过编译源码,对应tarball包,tarball是一个软件包,里面通常有源代码文件、检测程序文件和简易说明等;一种是直接使用编译好的二进制程序,对应rpm管理、yum在线更新和dpkg管理、apt在线更新机制等,这些软件管理机制需要软件安装的环境必须与打包时的环境需求一致或相当,也要满足软件的依赖属性需求。
makefile的规则:
目标:目标文件1 目标文件2
<tab> gcc -o 想新建的可执行文件 目标文件1 目标文件2
因为重复的文件较多,可以通过变量定义,再通过${变量}或$(变量)来使用。这里makefile的变量的语法与shell script的语法不大一样,两边可以有空格,变量左边不能有<tab>,变量与变量内容也不能有冒号。
还有make独有的一种定义变量的方式,用操作符”:=“。操作符“+=”可以用来追加变量值。
如果大量源文件分布在不同路径中,可以指定路径使make自动寻找。可在makefile中设定VPATH这个特殊变量的值,如果没有指定这个变量,就只会在当前目录下寻找依赖文件和目标文件,如果指定了,那么就会在当前目录下没有找到的情况到指定的路径中去寻找。
makefile是依据目标与后面的依赖文件的更新时间的新旧来判断是否执行后面的命令。
makefile中的目标如果没有文件依赖,那么make就不会自动执行后面的命令,需要显式地明确指出这个目标的名字才能执行。这样的目标一般叫做伪目标,它可以用.PHONY来显式地指出,它不形成实际的文件,只是一个标签形式,比较有代表性地是install和clean,前者是将编译完成的可执行文件与相关配置文件安装到正确路径中,后者是清除目标文件。
一般软件安装在/usr/local下,而源码tarball则解压在/usr/local/src中。如果想要设定特定路径,要在configure那一步设定:./configure --prefix=/path
在/etc/ld.so.conf中保存想要读入告诉缓存的动态函数库所在的目录,然后用ldconfig可执行文件将其中的数据读入缓存。
19、命令的执行顺序:(可用type -a 来查询)
(1)以相对/绝对路径执行
(2)由alias找到执行
(3)由bash内置的(builtin)命令执行
(4)通过$PATH环境变量的顺序找到的第一个命令执行
20、bash的环境配置文件:
(1)login-shell读取的配置文件:/etc/profile(系统整体配置,最好不要修改)、~/.bash_profile或~/.bash_login或~/.profile。最终读取的是~/.bashrc。
可以使用source命令实时读入修改的配置文件。
(2)non-login shell仅会读取~/.bashrc。
21、shell script的良好编写习惯:
(1)script的功能
(2)script的版本信息
(3)script的作者与联络方式
(4)script的版权声明方式
(5)script的历史记录
(6)script内较特殊的命令,使用“绝对路径”的方式执行
(7)script执行时需要的环境变量预先声明与设置
22、script使用直接执行方式或者bash执行时,都是在新的子进程bash中运行的,其中的各项变量或操作不能回传到父进程中,此时可以使用source来执行脚本,这时是在父进程中执行。



https://blog.sciencenet.cn/blog-441611-592122.html

上一篇:材料研究中的一点哲学思考
下一篇:AFEPack 学习注意点

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2022-5-27 10:41

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部