《LINUX权威指南》读书笔记003

UNIX基本的命令与知识

//不指定用户登陆
#ssh -p 12333 192.168.0.11
//指定用户登陆
#ssh -l root -p 12333 216.230.230.114
#ssh -p 12333 root@216.230.230.114

//进入某个目录
#cd /home/data

//打印当前目录
#pwd

//列出/home/data下的文件
#ll /home/data
#ls /home/data
#ls -l /home/data

//创建目录
#mkdir newdir
#mkdir /home/data/newdir

//删除目录
#rmdir newdir

//删除data下目录及其文件
#rm -rf /home/data/

//使用编辑器浏览文件
#emacs .bashrc

//只是快速地浏览文件,不编辑
#cat .bashrc

//大文件先显示一屏幕,再使用Enter键继续阅读,还可以使用/keyword搜索
#more bigfile.txt

//类似more还有less命令可以标记文件中的某个特殊位置,过一会再回到那里

//符号链接(Symbolic Link)
#ln -s source_file softlink_file

//目前流行的shell
bash,Bourne Again shell,符合POSIX(Portable Operating System Interface based on unix,以unix为基础的可携带操作系统界面/标准收集)标准,是早期Bourne shell的升级版,是liunx系统上最常用的shell,它是GNU工程的产物。
csh是Berkeley开发的,与Bourne shell大多是兼容的。
还有ksh(Korn shell),它在UNIX系统下可能最普遍;sh(Bourne shell),最原始的shell;tcsh,C shell的加强版;zsh,Z shell,最新的shell,与Bourne shell兼容。

//查看当前使用的shell版本
#echo $SHELL

//改变使用的shell版本
#chsh

//常用按键和用法
Ctrl+U //删除整行
Ctrl+C //停止正在执行的命令
Ctrl+Z //暂停正在执行的命令,按fg继续执行,fg(foreground)

stty erase ^H //stty修复功能键,^H是由退格键产生的ASCII代码
stty -a 显示目前终端的配置

//TAB自动补齐命令和文件名称
#chm //按tab键会自动补齐为chmod
#cd /home/wwwr //按tab键会自动补齐文件夹名称为cd /home/wwwroot
#cd /usr/l //连续按两下tab键,bash将会显示出所有l开头的文件
lib local

//使用上下左右键编辑选用已输入的命令

//如果你是vi的爱好者,可以设定shell使用vi的按键习惯
#export VISUAL=vi
//如果是tcsh,请使用下列命令
#setenv VISUAL vi

//展开文件名
#ls inv?ji.c
显示inv1ji.c inv2ji.c inv3ji.c

#ls inv[13]ji.c
显示inv1ji.c inv3ji.c

#ls inv*ji.c
显示inv1ji.c inv2ji.c inv3ji.c inveji.c

//存储输出结果, >符号后加文件名
#ls /usr/bin > /tmp.log
ls的执行结果会输出到tmp.log里,如果文件存在则被毁掉再把ls输出结果写入文件
csh或tcsh下使用
#set noclobber
bash下使用
#noclobber=1

如果想继续追加输出结果到tmp.log文件,可以使用
#ls /bin >> /tmp.log

//标准输出和错误输出
大部分的UNIX都有两种输出,标准输出(standard output)和标准错误输出(standard error)

如下三种命令都是把错误输出到指定的文件error-msg
#gcc invinitijig.c >& error-msg
#gcc invinitijig.c &> error-msg
#gcc invinitijig.c 2> error-msg
shell很专制地把1指定给标准输出,把2指定给标准错误输出

如果想要抛弃标准输出,使它不出现在屏幕上,解决办法是把它重定向一个叫做/dev/null的特殊文件中。
/dev目录是UNIX系统用以存放指向终端,磁带机和其他设备的特殊文件之处,但是/dev/null是独特的,这是一个会把送入的数据投入黑洞的地方,如:
#gcc invinitijig.c 2> error-msg > /dev/null

//有的时候,你会希望某个程序是以另一个程序的输出为输入,比如sort,笨拙的方法如下
#du > du_output
#sort -n du_output

但是UNIX提供了一个更简洁,更有效的方法使用“管道”(pipe),只要在第一个命令和第二个命令间加一条竖线 (|)
上例子可以用如下替换:
#du | sort -n
-n是按照数字大小排序,-r是按照倒叙排序
#du | sort -rn | more
在第二管道使用more让它一页一页显示(more是最常用的pipe命令)

//何谓命令
UNIX的命令是一个个文件,如ls命令位于bin目录下的一个可执行文件(binary file),因此ls命令也可以使用绝对路径
#/bin/ls

//查看命令预设路径
#echo $PATH

有些命令如cd不是文件形式,而是shell的一部分,它们称之为内置命令

//把命令放到后台执行
#gcc invinitijig.c & //加上&号即可
[1] 23412
这1是工作序号,23412是进程识别码

//使用fg把这些命令带回前台
#fg %1 //%不可少,1是工作序号
#fg 23412 //23412是进程识别码

//终止后台进程
kill %1

//参考手册
#man ls
man手册manual单词缩写,此命令查看ls命令手册

手册里第1章(用户命令),第5个章(文件格式)和第8章(系统管理命令)
对于同一个命令如chmod即是用户命令有属于系统调用,所以使用手册可以
#man 1 chmod

//查找和edit相关的命令
#apropos edit

UNIX的信息来源并非只有man pages一处,GNU工程的info pages就为GNU程序提供相关信息。
#info find

//文件所有权和权限
UNIX下有三种文件权限READ,WRITE,EXECUTE
那么是谁可以拥有这些权限?为了让用户可以一起工作,UNIX有三种不同程度的权限:owner,group,other

//如下图是所有权和权限的列表,最左侧-表示这是一个普通的文本文件,如果是d表示这是一个目录
用户权限

//改变拥有者,所属群组及权限

//安装一个软件后,可能需要修改拥有者与其所属群组为bin:
#chown bin sampsoft
#chgrp bin sampsoft

//给所有用户,群组和其他人添加或删除权限
#chmod +x document
#chmod -x document

//只给用户增加写权限
#chmod u+w document

//给用户和群组增加读写执行权限
#chmod ug+rwx document

//chmod的绝对模型
chmod的绝对模型

//只有用户拥有可读权限
#chmod 400 document

//给用户,组,其他都加读权限
#chmod 444 document

//给用户,组,其他都加读,执行权限,计算法方法:400+100+40+10+4+1=555
#chmod 555 document

//配置文件
这些文件常以rc(resource configuration)结尾,如.bashrc

//重要目录

/home 存放所有用户文件的目录

/boot 系统开机时,内核或其他文件有时候会放在这里

/bin 存放最基本的UNIX命令,如ls
/usr/bin 其他较不常用的命令,其实它和/bin没有多大的区别
/usr/sbin 作为系统管理员用途的命令,s是supervisor的意思

/usr/lib 标准函数库,例如libc.a,这里的usr应该是unix system resource
/usr/lin/X11 X Window系统的分法包(distribution),包括了X客户端使用的函数库(如字型),范例资源文件和其他X软件的重要部分
/usr/include C语言所使用的头文件(include file),例如stdio.h
/usr/src 系统的源代码存放地方

/etc 子系统(subsystem)所用到的文件。所谓的子系统通常与网络或周边设备相关,如NFS,电子邮件系统,网络服务,外挂硬盘等
/etc/skel 启动配置文件的样本,可以利用这些文件为新用户设定登陆环境

/var 用于存放一些用于监控的文件,如日志文件(log file)
/var/spool 用于暂时存放等待打印的文件

//为您服务的程序
很多电脑活动并不是简单的文件或者静态资源,而是必须要和其他执行中的进程进行交互。
如运行FTP,连接到另一个系统上,改系统会执行一个程序接受你的连接,并且解析你所下的命令,改程序叫做ftpd,d是看守程序/伺服机daemon,所谓daemon就是在服务器的后台不断执行并提供某种服务的程序,大部分的看守程序都是用来处理网络上的活动。

看守程序在开机后就已经启动了,在一个网络上的系统,每种服务都有各自的daemon负责,如fingerd处理远程的finger要求,httpd处理http的请求,当然非网络性的服务也有,如lpd

//进程
UNIX的运行时建立在进程(process)的概念上的,进程是一个独立执行的程序,拥有自己的一套资源。如在你登陆之前,你的终端会被getty进程所监控,而在你登陆之后,getty会把终端的控制权交给shell接管(shell其实是另一个进程),然后自我了结

//查看当前用户哪些进程正在执行
#ps
ps命令
ps命令所显示的信息中,第一列是专属于该进程的标识代号(Process ID,PID),如果你有一个失控的进程,且无法使用Ctrl+C或其他方法摆脱他,使用;TTY显示该进程在哪一个终端上执行,STAT标识进程状态,如S(Suspended,搁置的),T(Time Out,超时);TIME表示该进程占了多少CPU时间
#kill PID
即可结束进程

//查看整个系统所有进程,-a表示all processes,-x表示包括那些没有控制终端的进程
#ps -a | more

#ps aux
#ps -aux

郑重声明:

1 本资源来源于互联网,资源的版权归资源原作者所持有,受《中华人民共和国著作权法》等相关法律保护。

2 由于无法和原作者取得联系,所以上传的部分资源无法先通过原作者的同意就分享给大家了,如本资源侵犯了您(原作者)的权益,请联系我们(微信号 xiaohaimei1989),我们会立马删除您的资源,并向您表达诚挚的歉意!

3 本站是一个公益型网站,分享资源的目的在于传播知识,分享知识,收取一点点打赏的辛苦费是用于网站的日常运营开支,并非用于商业用途。

4 本站资源只提供学习和参考研究使用,使用过后请在第一时间内删除。本站不承担资源被单位或个人商用带来的法律责任。

发表评论