UNIX Tutorial One
ls 列出当前目录下的文件
ls -a列出当前目录所有文件,包括隐藏的文件
mkdir unixstuff 创建名为unixstuff的目录
cd unixstuff 改变目录进入unixstuff
cd .当前目录
cd ..父目录
pwd打印绝对路径
cd ~家目录
UNIX Tutorial Two
Cp 复制
mv file1 file2 移动文件或者改变名字
rm 移除文件
rmdir 移除目录
clear 清屏
cat file显示文件内容
less 显示文件内容(q退出,'/'+内容,可以搜索)
head 显示文件头10行
tail显示文件尾10行
grep Science science.txt 在science.txt 中搜索文字,区分大小写,搜索内容
grep -i science science.txt 不区分大小写
grep -i 'spinning top' science.txt 不区分大小写搜索 spinning top
-v 反选
-n显示行号
-c打印匹配的总的行号数
wc -w science.txt计算文本里的字数(不是字节数)
wc -l science.txt 计算文本里的行数
UNIX Tutorial Three
重定向输出(本来是输出到终端,现在输出到文本中)
Cat > list1到list1,会覆盖原来的内容
cat >>list1添加到list1,不会覆盖原来的内容
Ctrl+d to stop
cat list1 list2 > biglist将list1和list2的内容合并到biglist
重定向输入(本来是在键盘输入,现在可以利用一个文件当做输入)
sort < biglist 将biglist打印到屏幕
sort < biglist > slist 最终输出到slist
who查看这个系统上的有哪些用户
pipe管道
管道可以连接两个命令,将前一个命令的输出数据当做到后一个命令的输入
UNIX Tutorial Four
*号,通配符
ls *.txt列出所有txt格式的文件
?号
ls ?llst?代表一个字符
whatis wc显示wc的单行的帮助
man wc显示wc的详细的帮助文档
apropos keyword当你不确定一个命令的名字时,他会打印出所有含有关键字的命令
UNIX Tutorial Five
ros@ros-K45VD:~/桌面$ ls -l
总用量 56
-rw-rw-r-- 1 ros ros 5524 1月 30 08:00 04program_flow .docx
-rw-rw-r-- 1 ros ros 18 1月 30 17:40 1.txt
-rw-rw-r-- 1 ros ros 8 1月 30 15:30 1.txt~
-rw-rw-r-- 1 ros ros 8 1月 30 17:32 a.txt
-rw-rw-r-- 1 ros ros 11 1月 30 17:33 b.txt
-rw-rw-r-- 1 ros ros 2 1月 30 17:46 c.txt
-rw-rw-r-- 1 ros ros 19 1月 30 17:33 c.txt~
-rw-rw-r-- 1 ros ros 400 1月 30 17:25 note.txt
-rw-rw-r-- 1 ros ros 400 1月 30 17:06 note.txt~
-rw-rw-r-- 1 ros ros 18 1月 30 17:29 zhangbo.txt
-rw-rw-r-- 1 ros ros 21 1月 30 17:22 zhangbo.txt~
-rw-rw-r-- 1 ros ros 5277 1月 30 17:56 未命名 1.docx
-rw-rw-r-- 1 ros ros 0 1月 30 08:23 脏angbo ~
列出来的内容分别是:
第一个字符是文档属性,接下来是九个权限,分别是拥有者、同用户用户组、其他用户的读(r)、写(w)、执行(x)的权限,没有权限用'-'代替,再下来是用户名,用户组名,文件大小,创建时间,文件名
改变权限:
chmod 用户+- 文件名
chmod 权限 文件名(r=4,w=2,x=1)
Symbol | Meaning |
u | user(用户) |
g | group(用户组) |
o | other(其他用户) |
a | all(所有用户) |
r | read() |
w | write (and delete) |
x | execute (and access directory) |
+ | add permission |
- | take away permission |
chmod go-rwx biglist 给biglist文件的同用户组用户和其他用户去除读写执行的权限,不影响其他权限
chmod a+rw biglist 给biglist文件的所有用户添加读写权限,不影响其他权限
ps查看进程
命令+ & 让进程在后台运行
Ctrl + z 暂停一个正在运行的进程,然后bg将进程放到后台运行
jobs查看停止或者在后台运行的进程
fg %jobnumber 激活停止的进程
kill %jobnumber用jobnumber杀死进程
kill PID用进程编号杀死进程
kill -9 PID 强制杀死进程
UNIX Tutorial Six
quota 命令显示磁盘使用情况和限额(ubuntu14.04下使用没有反应)
df . 显示文件系统的剩余空间
du 常用来查看哪个文件最大
gzip压缩
gunzip解压
zcat阅读压缩的文件内容,无需解压
find -name "*.txt" -print 查询以.txt为扩展名的文件
find -size +1M -ls 显示大小大于1M的文件
history显示输入的历史命令
!! 重新调用上一个命令
!-3重新调用倒数第三个命令
!grep 重新调用以grep开头的命令
!5 重新调用第五个命令
set history=100 增加记录history命令的缓冲区大小
UNIX Tutorial Seven
7.1 编译 UNIX 软件
对我们所有的用户,在我们的系统中有许多的公用的和商业软件都是可用的。此外,学生还可以在他们的home目录中下载和安装软件,这些软件通常只供他们个人使用。
安装软件的步骤:
1、下载源码压缩包;
2、解压源码;
3、安装可执行程序;
4、设置安装路径。
以上步骤中,最复杂的是编译阶段。
编译源代码:
所有的语言代码必须转换为计算机能够理解的形式。比如C语言会转变为更低级的汇编语言,然后汇编语言再转变为目标语言,这是一种计算机可以直接理解的代码碎片。最后一步是链接目标语言到包含特定内置函数的代码库。最后阶段会产生一个可执行程序。
手动去做这些步骤对于一个新手来说是复杂而且超出他们的能力的。于是为了为为程序员和终端用户简化步骤,开发了许多的实用程序和工具。
Make和Makefile:
Make命令允许程序员处理大的的程序或者程序组。它可以通过跟踪整个程序的哪些部分被改变了帮助开发大型程序,只编译被改变的程序部分。
Make命令从makefile文件中获取一系列的编译规则,makefile和源代码在同样的目录下。Makefile里有各种关于如何编译源码的信息,比如优化等级,在可执行文件中是否包含调试信息。也包含了关于在安装编译完成的二进制代码,手册,数据文件,依赖库文件,配置文件等等。
有些安装包需要你去手动编辑makefile文件以设置最后的安装目录和其他参数。但是,现在发布的许多安装包都带有GUN的通用配置。
配置:
因为UNIX版本过多,很难写出一个程序能在所有的版本上运行。开发人员通常没有机会基础所有版本的系统,和有些系统升级的特色。GUN配置和编译系统简化了以源代码形式发布的程序的编译。所有的程序只需要简单的,标准化的两个过程就可以编译好。程序编译者不需要安装任何特殊的工具去编译程序。
Configure shell脚本文件尝试着去纠正编译时使用的各种依赖系统的变量的值。它也使用这些值在安装包的目录中创建一个makef文件。
最简单的编译步骤是:
1、cd到源码所在的目录
2、./configure去配置你的系统
3、make check对安装包进行自我检查
4、make install去安装程序
5、make clean从源码目录中移除二进制源码和目标文件
配置提供了很多选择,最常用的是—prefix和—exec-prefix可以用来指定安装目录,由—prefix命名的目录会保持为机器的独立文件比如文档,数据和配置文件,由—exec-prefix命令的目录,(通常是--prefix的子目录),会保持为机器的独立文件比如可执行文件。
1>下载源码
mkdir download
2>提取源码
先用gunzip解压为.tar文件gunzip units-1.74.tar.gz ;
抽取tar文件的内容tar -xvf units-1.74.tar ;
3>配置和创建Makefile文件
注意:仔细阅读README和INSTALL文本
我们需要指定安装目录,因为默认的系统区域我们没有写的权限,所以我们需要在家目录新建文件夹mkdir ~/units174
运行configure文件去设置安装路径./configure --prefix=$HOME/units174
$HOME是环境变量,它的值就是你的家目录,echo $HOME可以查看这个值,如果配置正确,会生成一个Makefile文件。
紧着者是运行是make去编译,make check去检查编译是否成功;如果编译没有问题,就可以运行make install安装了。
进入/bin目录运行命令.
4>剥离不需要的代码:
有些代码是程序员用来调试程序的,对用户没有用,可以去掉。到/bin目录执行strip + 文件命令,也可以在安装的时候执行make install-strip。
UNIX Tutorial Eight
运行程序时,变量是shell和程序之间传递信息的一种途径。程序会在环境变量中寻找特定的变量,如果找到了就会使用它储存的值。有些变量是系统设置的,有些是你,有些是shell或者装载其他程序的程序。
标准的UNIX变量被分为两类,环境变量和shell变量,大部分条件下,shell变量只用于少量需要设置短期工作路径的场合,环境变量则有更长远的意义,在登录时设置的变量在整个回话期间都是有效的。通常来说,环境变量是大写的,而shell变量是小写的。
环境变量
查看环境变量echo $环境变量
USER:你的登录名
HOME:你的家目录路径
HOST:你的计算机名
ARCH: 计算机进程的架构
DISPALY: 显示X windows的计算机屏幕名
PRINTER: 发送jobs的默认打印机
PATH :shell可以寻找目录的路径
用setenv来设置环境变量,printenv来打印,unsetenv来移除设置
Shell变量
set用来设置和展现环境变量unset来移除变量
PATH和path之间的区别
除了大小写外,环境变量和shell变量有同样的名字,每次shell变量home,user和term的改变都会使相应的环境变量HOME,USER和TERM变为相同的值,但是,改变环境变量的值不会对相应的shell变量产生影响。
PATH和path都指定的路径去搜索命令,两个命令都代表着相同的目录列表,改变他们当中任意一个都会使另一个发生变化。
使用和设置变量
每次登录系统时,系统都会在你的家目录寻找安装文件,这里面有建立你的工作目录的信息。.login和.cshrc(在ubuntu是.bashrc,以下皆同)文件。
在.cshrc文件中设置shell变量
比如
set history = 200
echo $history
但是这样设置只有暂时的作用,如果要长久生效需要在.cshrc中设置
nedit ~/cshrc
在最后添加 set history = 200
用source .cshrc命令是设置马上生效
检查是否生效echo $history
设置路径
在运行命令时如果提示没有找到命令,可能是你没有把命令的路径添加进path,使得shell找不到命令,这时,要么执行带路径的命令,要么把命令的路径添加进入。
Set path = ($path ~/units174/bin)
要让这个路径永久生效,就要写进.cshrc
set path = ($path ~/units174/bin)