目录
1 shell
1.1 shell 家族
shell:命令解释器,根据输入的命令执行相应命令。 察看当前系统下有哪些shell:
cat /etc/shells
echo $SHELL
常见shell:
/bin/sh (已经被 /bin/bash 所取代)/bin/bash (就是 Linux 默认的 shell)/bin/ksh (Kornshell 由 AT&T Bell lab. 发展出来的,兼容于 bash)/bin/tcsh (整合 C Shell ,提供更多的功能)/bin/csh (已经被 /bin/tcsh 所取代)/bin/zsh (基于 ksh 发展出来的,功能更强大的 shell)
1.2 bash
1.3 命令和路径补齐
$ source /etc/bash_completion
$ ls De
$ ls Desktop
否则,再敲一次Tab键,将会把所有以De开头的文件或文件夹列在下面供你选择(在这里我们手动创建另外一个以De开头的文件)
$ touch Death$ ls DeDeath Desktop/
1.4 历史记录
history
1.5 主键盘快捷键
2 目录和文件
2.1 类Unix系统目录结构
ubuntu没有盘符这个概念,只有一个根目录/,所有文件都在它下面
/ 根目录bin//系统可执行程序,如命令boot //内核和启动程序,所有和启动相关的文件都保存在这里grub //引导器相关文件dev //设备文件etc//系统软件的启动和配置文件,系统在启动过程中需要读取的文件都在这个目录。如LILO参数、用户账户和密码。home //用户的主目录。下面是自己定义的用户名的文件夹lib//系统程序库文件,这个目录里存放着系统最基本的动态链接共享库,类似于Windows下的system32目录,几乎所有的应用程序都需要用到这些共享库。media //挂载媒体设备,如光驱、U盘等mnt //目录是让用户临时挂载别的文件系统,如挂载Windows下的某个分区,ubuntu默认还是挂载在/media目录。opt //可选的应用软件包(很少使用)proc //这个目录是系统内存的映射,我们可以直接访问这个目录来获取系统信息。也就是说,这个目录的内容不在硬盘上而是在内存里。sbin //管理员系统程序selinuxsrvsys //udev用到的设备目录树,/sys反映你机器当前所接的设备tmp //临时文件夹usr //这是个最庞大的目录,我们要用到的很多应用程序和文件几乎都存放在这个目录下。bin // 应用程序game //游戏程序includelib //应用程序的库文件lib64local //包含用户程序等sbin //管理员应用程序
2.2 用户目录
位于/home/user,称之为用户工作目录或家目录,表示方式:
/home/user~
2.2.1 相对路径和绝对路径
cd /homels /usr
cd ../../ls abc/def
2.3 ls
-a 列出隐藏文件,文件中以“.”开头的均为隐藏文件,如:~/.bashrc-l 列出文件的详细信息-R 连同子目录中的内容一起列出
用ls -l命令显示的信息中,开头是由10个字符构成的字符串,其中第一个字符表示文件类型,它可以是下述类型之一:
- 普通文件d 目录l 符号链接b 块设备文件c 字符设备文件s socket文件,网络套接字p 管道
2.4 cd
change dir 改变当前所在路径
cd ~cd dir1/dir2cd ..
2.5 which
which ls
2.6 pwd
查看当前所在路径
pwd
2.7 mkdir
2.8 rmdir
$ mkdir a$ mkdir a/b$ ls ab$ rmdir a/b$ ls a$ rmdir a$ mkdir a/bmkdir: cannot create directory `a/b': No such file or directory$ mkdir -p a/b$ rmdir -p a/b
2.9 touch
2.10 rm
删除文件:
rm file
删除目录:
rm dir -rf
2.11 mv
重命名:
mv file1 file2
移动文件:
mv file1 ~/
2.12 cp
拷贝文件:
cp file1 file2cp file1 dir/cp file1 ../
拷贝目录:
cp dir1 dir2 -rcp dir1 ~/ -r
2.13 cat
查看文件里内容,输出到终端,如果cat时没跟文件名,则读标准输入,遇到\n后,输出到标准输出,终端下输入Ctrl-d表示结束.
2.14 more
2.15 less
2.16 head
head [OPTION]… FILE…
$ head -5 file1
2.17 tail标题二
$ tail -5 file1
2.18 ln
硬链接是将一个文件名与一个独立的索引节点(inode)相连。这意味着一个文件可以具有多个硬链接,它们在文件系统中的表现形式是完全相同的。当创建硬链接时,任何一个链接的更改都会反映在其他链接上。硬链接可以跨越文件系统边界,但不能链接到目录。
符号链接是一个特殊类型的文件,其中包含指向另一个文件或目录的路径。它类似于Windows系统中的快捷方式。符号链接提供了对原始目标的间接引用,即使目标文件或目录发生变化,链接仍然有效。符号链接可以链接到文件或目录,并可以跨越文件系统边界。
touch helloln hello word_hs
软链接(符号链接):
ln -s hello word_s
2.19 tree
sudo apt-get install tree
![](https://i-blog.csdnimg.cn/blog_migrate/c4b3edf0add3d44f47448aa4f1f732e5.png)
l
2.20 wc
wc -l ./*
![](https://i-blog.csdnimg.cn/blog_migrate/31b4c4185c8f845f505a342d1bb4fe76.png)
2.21 od
od -tcx file1
-t 指定数据的显示格式,主要的参数有:
c ASCII字符或反斜杠序列d[SIZE] 有符号十进制数,每个整数SIZE字节。f[SIZE] 浮点数,每个整数SIZE字节。o[SIZE] 八进制(系统默认值为02),每个整数SIZE字节。u[SIZE] 无符号十进制数,每个整数SIZE字节。x[SIZE] 十六进制数,每个整数SIZE字节。
2.22 du
du -hm /home/itcast/test
以B为单位
du -hb ./*
以K为单位,4k的整数倍
du -hk ./*
总计大小,以M为单位
du -hc ./*
2.23 df
df查看磁盘使用情
df --block-size=GBdf --block-size=MB
3 文件属性和用户用户组
3.1 whoami
查看当前登陆用户
3.2 chmod
* 文字设定法
chmod [who] [+|-|=] [mode] 文件名
操作对象who可是下述字母中的任一个或者它们的组合:
u 表示“用户(user)”,即文件或目录的所有者。g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。o 表示“其他(others)用户”。a 表示“所有(all)用户”。它是系统默认值。
操作符号可以是:
+ 添加某个权限。- 取消某个权限。= 赋予给定权限并取消其他所有权限(如果有的话)。
设置mode所表示的权限可用下述字母的任意组合:
r 可读。w 可写。x 可执行。
*数字设定法
chmod [mode] 文件名 我们必须首先了解用数字表示的属性的含义:0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,
$ chmod a+w file1
设置一个文件允许所有用户可读、可写、不可执行
$ chmod 666 file1user group otherr w x r w x r w x4 2 1 4 2 1 4 2 1563
3.3 chown
$ sudo chown itcast:nogroup file1
注意:
3.4 chgrp
4.查找与检索
4.1 find
根据文件名查找
find pathname -options [-print -exec -ok -name -type...]
$ find . -name 'file*'$ find / -name 'vimrc'$ find ~ -name '*.c'$ find /usr/ -name "*tmp*" -exec ls -l { } \;find ./ -name "*tmp" -ok rm { } \;
4.2 grep
grep [options] PATTERN [FILE...]
-I:不区分大小写(只适用于单字符)。-h:查询多文件时不显示文件名。-l:查询多文件时只输出包含匹配字符的文件名。-n:显示匹配行及行号。-s:不显示不存在或无匹配文本的错误信息。-v:显示不包含匹配文本的所有行。-R: 连同子目录中所有文件一起查找。
$ grep 'printf' /usr/include -R
4.3 xargs
xargs [OPTION] [command]
它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题在使用find命令的-exec选项处理匹配到的文件时,find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。 find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。查找系统中的每一个普通文件,然后使用xargs命令来测试它们分别属于哪类文件:
find . -type f | xargs file
查找usr目录下名字以“tmp”开头的文件,将其详细信息列出。
find /usr -name "tmp*" | ls -lfind /usr -name "tmp*" | xargs ls -lfind /usr -name "tmp*" -print0 | xargs -0 ls -l
find ./ -name "*bin*" | grep "printf"find ./ -name "*bin*" | xargs grep "printf"find ./ -name "*bin*" -print0 | xargs -0 grep "printf"
5. 安装卸载软件
5.1 apt-get
更新源服务器列
sudo vi /etc/apt/sources.list
更新完服务器列表后需要更新下源:
sudo apt-get update 更新源sudo apt-get install package 安装包sudo apt-get remove package 删除包sudo apt-cache search package 搜索软件包sudo apt-cache show package 获取包的相关信息,如说明、大小、版本等sudo apt-get install package --reinstall 重新安装包sudo apt-get -f install 修复安装sudo apt-get remove package --purge 删除包,包括配置文件等sudo apt-get build-dep package 安装相关的编译环境sudo apt-get upgrade 更新已安装的包sudo apt-get dist-upgrade 升级系统sudo apt-cache depends package 了解使用该包依赖那些包sudo apt-cache rdepends package 查看该包被哪些包依赖sudo apt-get source package 下载该包的源代码sudo apt-get clean && sudo apt-get autoclean 清理无用的包sudo apt-get check 检查是否有损坏的依赖
5.2 deb包安装
安装deb软件包命令: sudo dpkg -i xxx.deb删除软件包命令: sudo dpkg -r xxx.deb连同配置文件一起删除命令: sudo dpkg -r --purge xxx.deb查看软件包信息命令: sudo dpkg -info xxx.deb查看文件拷贝详情命令: sudo dpkg -L xxx.deb查看系统中已安装软件包信息命令: sudo dpkg -l重新配置软件包命令: sudo dpkg-reconfigure xxx
5.3 原码安装(redis 的安装就是如此安装的)
1. 解压缩源代码包2. cd dir3. ./configure检测文件是否缺失,创建Makefile,检测编译环境4. make编译源码,生成库和可执行程序5. sudo make install把库和可执行程序,安装到系统路径下6. sudo make distclean删除和卸载软件
6.磁盘管理
6.1 mount
6.1.1 挂接光盘镜像文件
#cp /dev/cdrom /home/sunky/mydisk.iso 或#dd if=/dev/cdrom of=/home/sunky/mydisk.iso
#mkisofs -r -J -V mydisk -o /home/sunky/mydisk.iso /home/sunky/ mydir
mkisofs -r -J -V mydisk -o /home/itcast/mydisk.iso /home/itcast/object/
#mkdir /mnt/vcdrom
注:建立一个目录用来作挂接点(mount point)
#mount -o loop -t iso9660 /home/sunky/mydisk.iso /mnt/vcdrom
注:使用/mnt/vcdrom就可以访问盘镜像文件mydisk.iso里的所有文件了。
6.1.2 挂载U盘
sudo fdisk -l
2.挂载存储设备sdb1到挂载点/mnt目录
sudo mount /dev/sdb1 /mnt -o utf8可以使U盘内的中文正常显示出来。
sudo umount /mnt
6.2 umount
卸载命令
sudo umount 挂在点
6.3 dd
dd if=/dev/cdrom of=cdrom.iso
$ dd if=sfile of=dfile
例3:创建一个100M的空文件
dd if=/dev/zero of=hello.txt bs=100M count=1
$dd if=/dev/zero of=imagefile bs=2048 count=1024
2.使用mke2fs命令将该文件制作成文件系统。制作期间需输入“y”确认。
$mke2fs imagefile
3.制作成功后可以将该文件使用mount命令借助loop挂载到/mnt下
$sudo mount -o loop imagefile /mnt
4.可以查看到lost+found缺省目录
$ls /mnt
5.可以像使用普通磁盘一样,直接在里面创建文件并写入内容。
$sudo vi hello.c
6.lost+found hello.c
$ls /mnt
7.在/mnt内执行mount命令可以查看该“文件系统”的详细信息。
$mount如:/home/itcast/mydisk on /mnt type ext2 (rw)
8.可使用umount命令将该“磁盘”卸载。
$sudo umount /mnt
主要参考B站: 黑马linux系统编程。