查看帮助一是man 命令,二是进入www.gnu.org,找到coreutils的帮助文档(更详细)。
一、Linux命令解释程序
bash是Bourne Again shell的缩写,是一种shell。
命令执行的过程是先到/etc/environment指定的文件夹中找到命令,例如ls,经过bash解释后传送给操作系统(内核)执行。./ls是只在当前目录下寻找。
bash,coreutils在www.gnu.org下载。下载后是个解压包,解压后能看到bash和命令的源代码,配置,安装后可使用最新的可执行文件。
二、Linux命令
-rw-rw-rwx 1 root root 0 Apr 24 07:25 hello -初始linux已经讲过;用户,所属组,其他组对文件的权限;硬链接数,用户名,所属组名;文件大小;最后修改日期;文件名。
man ls(PageOn下一页,PageOff上一页,上下方向键换行,q退出,Home头,END尾,/word搜索功能) ls [OPTION]... [FILE]... []表示可选择,...表示可以放很多类似的项,比如放多个File。
man -a mkdir 得到所有的帮助,帮助分为9类,分别为命令 系统调用,库函数,特殊文件,配置文件,游戏,惯例与协议,系统管理命令(通常需要root权限),内核。
man 2 mkdir 直接得到系统调用的帮助信息,如果man mkdir,那么则要看see also这个选项。
man man 得到man的帮助信息 man bash 得到shell脚本的编写帮助。
su jltxgcy 切换为jltxgcy的用户
ls *.c ls ?.c ls ?????.c 列出带有这种通配符的项。
ls > hello.c(覆盖) 利用输入输出重定向,把ls得到的内容放到hello.c(覆盖)这个文件中。
ls >> hello.c(追加) 利用输入输出重定向,把ls得到的内容放到hello.c(追加)这个文件中。
ls -a 包含隐藏文件 ls -l 详细信息 ls -al==ll 前两者的结合。
ls -h 能够看到以兆为单位的文件 ls -i能够看到索引结点号 ls -R可以看到该目录下所有的信息
前面5个如果加上具体文件名,就是看具体文件的信息
ls -d download/ ls -d */ 注意一定要加上目录信息,才能看到目录信息。
ln hello.c hello1.c 硬链接,hello.c hello1.c的硬链接数都变成了2,他们的索引结点号一样,文件大小一样,内容一样。
在home/jltxgcy/download/eclipse/eclipse.exe ls -d home/jltxgcy/download/ 硬链接为3,/home/jltxgcy/download home/jltxgcy/download/. home/jltxgcy/download/eclipse/..
ln -s hello.c hello1.c 软链接,hello1.c比hello.c的文件大小小,相当于一个快捷方式。软链接的两个文件可以不在一个分区。
cd .. 回到上次目录 cd / 回到根目录 cd ~或者cd 回到主用户名录 cd .当前目录,cd - 回到上次命令所在的目录。
whereis ls 寻找ls命令的位置和帮助文档 whoami 查看当前用户。
which ls 只寻找ls命令的位置 locate iostream 找到了这个C++头文件
alias lm='ls -al' unalias lm
wc hello.c 输入三个分别表示行、字数、字符数
pwd 列出当前所在的目录 。
cat hello.c cat -b hello.c 在屏幕上打印出文本中的内容,输出不包含空行,但有行号
cat -n hello.c 输出有行号,包括空行。
touch hello.c 建立一个文件或者用vi hello.c
file /bin/ls 查看文件的类型。
type echo 能够判断echo是shell内部命令 type ls 能够判断ls是外部命令
type cd cd也是shell内部命令,不需要安装只要bash安装就能使用,而外部命令必须要用coreutils来安装。
man cd 也就没有相应的帮助文档,文档在man bash中,type umask也是内部命令
echo "linux is not unix。"
mkdir download/ 建立目录 rmdir download/ 删除空目录。
cp hello.c hello1.c 现在有两个文件,一个是hello.c,另一个是hello1.c。
cp hello.c ~ 把hello.c移动到主目录。
cp -r download/ ~ 把download文件夹移动到主目录。
mv hello.c hello1.c 现在只有一个文件hello1.c,内容和hellol.c一样。
rm hello.c rm -f hello.c 表示删除只读文件。
rm -rf download/ 删除一个文件夹,递归删除。
chown root:root hello.c 把hello.c的用户名和所属组变成root。
chmod 777 hello.c 把hello.c的权限变成了rwx。
chmod u+r g-w o=rx a+r hello.c u是owner g是group o是other a是all。
grep -Rni hello *
find ./ -name "hello.c" 在当前目录下找hello.c这个文件 。
locate libhello.so 使用前先sudo updatedb(系统管理命令)。
tar -xzvf hello.c.tar.gz 解压缩 如果是hello.c.tar.bz2,则用tar -xjvf hello.c.tar.bz2。
unzip FileName.zip 解压缩zip包
ps -aux | grep "test" 列出所有进程并寻找其中有test的进程。|为管道。
ps -ef | less PageOn下一页,PageOff上一页,上下方向键换行,q退出,Home头,END尾。
more 只能向前看,且只能按Enter键
history 查看最近所有的命令,!n执行第n条命令,!!执行上条命令。
top 动态监测进程的变化。
free 内存使用情况。
clear 清屏 date cal 显示时间日期。
uname -a 输出系统的全部信息,可以用于看你的操作系统是多少位,也能看操作系统的版本号
以下多半是系统管理命令,所以要加上sudo
sudo fdisk -l 查看硬盘分区情况,sda1 sda2 sda5,sd表示scsi型的硬盘,a表示第一块,1表示主分区,2表示扩展分区,5表示扩展分区中的逻辑分区,主分区加上扩展分区最多到4,所以逻辑分区从5开始,另外扩展分区不能使用,必须分为若干逻辑分区。
df -Th 显示当前的分区,文件系统,挂载点。
du -sh 显示当前目录文件的大小。
nautilus ./ 在图形用户界面打开当前目录
readelf -a libc.so.6 | grep -Rni fopen 读x86平台的动态链接库
arm-linux-androideabi-nm -D libffmpeg-7neno.so | grep -Rni init //读arm平台的动态链接库
meld a.c b.c 比较两个文件的不同,如果在svn目录下,可以观看修改 meld a.java
file 可以查看文件类型,比如file xxx.o file xxx.so file /bin/bash,得到的结果分别为可重定位文件,共享目标文件,可执行文件。
三、新建硬盘,建立新的分区,建立文件系统(windows格式化),挂载到目录上
1、在虚拟机上新建SCSI硬盘,sudo fdisk -l 显示/dev/sdb还没有分区
2、sudo fdisk /dev/sdb 按照提示,n新建一个主分区,w写入分区表,sudo fdisk -l 显示了/dev/sdb1的分区
3、sudo mkfs -t ext3 /dev/sdb1 建立文件系统,sudo fdisk -l没有变化,df -Th没有显示
4、sudo mount -t ext3 /dev/sdb1 /mnt/sdb 挂载到目录(如没有要新建目录)上,df -Th已经可以看到了
5、cd /mnt/sdb 就是这块硬盘的内容了
6、sudo umount /mnt/sdb 卸载 df -Th就没有了
四、对于linux的权限的深入理解
cat /etc/passwd 能够执行,第一,jltxgcy作为其他组对cat也有执行权限,第二,jltxgcy作为其他组有读/etc/passwd的权限。
cat /etc/shadow 不能执行因为jltxgcy对/etc/shadow没有读权限。
sudo cat /etc/shadow 这样jltxgcy变成了root,此时才有对/etc/shadow的读权限。
五、linux安装软件包的三种方法
首先介绍下软件包的优先级:
Required,该级别的软件是保证系统正常运行所必须的,如果缺失,系统将损坏
Important,如果缺少该软件包,系统将运行困难
Standard,linux系统的标准件
Optional,该软件包是否安装不影响Linux运行
Extra,该级别可能与高级软件包存在冲突
软件包依赖情况:
Depends,依赖哪些软件包 Recommends,一般用户都会装这些软件包,Suggests,锦上添花,Replaces,覆盖某些软件包,Conflict与某些软件包冲突,
Provides,这些软件已经包括了要装软件包的全部功能
1、下载deb包,deb包的格式为软件包名称_版本号-修订版本_体系架构.deb,例如aptitude_0.6.3-3.2ubuntu1_i386.deb
安装aptitude软件包 dpkg -i aptitude_0.6.3-3.2ubuntu1_i386.deb,移除aptitude软件包 dpkg -P aptitude
查看aptitude软件包的信息包括aptitude软件包的优先级和依赖包等dpkg --info aptitude_0.6.3-3.2ubuntu1_i386.deb
查看aptitude_0.6.3-3.2ubuntu1_i386.deb的内容dpkg --content aptitude_0.6.3-3.2ubuntu1_i386.deb
缺点:不能主动从镜像站点获取软件包,安装软件包时不能自动安装相关依赖包
2、上官网下载源代码,配置./configure,编译make,安装软件包make install,卸载软件包make uninstall
3、apt-get update 从网上的源更新信息下来,更新到本地索引 apt-get check检查当前apt管理里面的依赖包情况
apt-get -f install修复依赖关系 apt-get install <package>安装软件包 apt-get install -d <package>只下载deb包
apt-get remove --purge <package>卸载软件包
apt-cache show <package>显示软件包信息(优先级和依赖包等)
apt-cache policy <package> 显示软件包安装状态
apt-cache depends <package> 显示软件包依赖关系
apt-cache search <package> 搜索某个名称的软件包 apt-cache search ncurses*
apt source镜像站点地址存在哪儿/etc/apt/source.list
apt本地索引存在哪儿/var/lib/apt/list/*
apt下载的deb包存在哪儿/var/cache/apt/achives
如果再镜像站点添加了网址,那么要用apt-get update更新本地索引
此种方法主动从镜像站点获取软件包,安装软件包时自动安装相关依赖包
4、安装rpm包