目录
1 shell
1.1 shell 家族
1.2 bash
1.3 命令和路径补齐
1.4 历史记录
1.5 主键盘快捷键
2 目录和文件
2.1 类Unix系统目录结构
2.2 用户目录
2.2.1 相对路径和绝对路径
2.3 ls
2.4 cd
2.5 which
2.6 pwd
2.7 mkdir
2.8 rmdir
2.9 touch
2.10 rm
rm file
2.11 mv
2.12 cp
2.13 cat
2.14 more
2.15 less
2.16 head
2.17 tail标题二
2.18 ln
2.19 tree
2.20 wc
2.21 od
2.22 du
2.23 df
3 文件属性和用户用户组
3.1 whoami
3.2 chmod
3.3 chown
3.4 chgrp
4.查找与检索
4.1 find
4.2 grep
4.3 xargs
5. 安装卸载软件
5.1 apt-get
5.2 deb包安装
5.3 原码安装(redis 的安装就是如此安装的)
6.磁盘管理
6.1 mount
6.1.1 挂接光盘镜像文件
6.1.2 挂载U盘
6.2 umount
6.3 dd
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)
$ source /etc/bash_completion
$ ls De
$ ls Desktop
否则,再敲一次Tab键,将会把所有以De开头的文件或文件夹列在下面供你选择(在这里我们手动创建另外一个以De开头的文件)
$ touch Death$ ls DeDeath Desktop/
history
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 //管理员应用程序
位于/home/user,称之为用户工作目录或家目录,表示方式:
/home/user~
cd /homels /usr
cd ../../ls abc/def
-a 列出隐藏文件,文件中以“.”开头的均为隐藏文件,如:~/.bashrc-l 列出文件的详细信息-R 连同子目录中的内容一起列出
用ls -l命令显示的信息中,开头是由10个字符构成的字符串,其中第一个字符表示文件类型,它可以是下述类型之一:
- 普通文件d 目录l 符号链接b 块设备文件c 字符设备文件s socket文件,网络套接字p 管道
change dir 改变当前所在路径
cd ~cd dir1/dir2cd ..
which ls
查看当前所在路径
pwd
$ 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
删除文件:
rm file
删除目录:
rm dir -rf
重命名:
mv file1 file2
移动文件:
mv file1 ~/
拷贝文件:
cp file1 file2cp file1 dir/cp file1 ../
拷贝目录:
cp dir1 dir2 -rcp dir1 ~/ -r
查看文件里内容,输出到终端,如果cat时没跟文件名,则读标准输入,遇到\n后,输出到标准输出,终端下输入Ctrl-d表示结束.
head [OPTION]… FILE…
$ head -5 file1
$ tail -5 file1
硬链接是将一个文件名与一个独立的索引节点(inode)相连。这意味着一个文件可以具有多个硬链接,它们在文件系统中的表现形式是完全相同的。当创建硬链接时,任何一个链接的更改都会反映在其他链接上。硬链接可以跨越文件系统边界,但不能链接到目录。
符号链接是一个特殊类型的文件,其中包含指向另一个文件或目录的路径。它类似于Windows系统中的快捷方式。符号链接提供了对原始目标的间接引用,即使目标文件或目录发生变化,链接仍然有效。符号链接可以链接到文件或目录,并可以跨越文件系统边界。
touch helloln hello word_hs
软链接(符号链接):
ln -s hello word_s
sudo apt-get install tree
l
wc -l ./*
od -tcx file1
-t 指定数据的显示格式,主要的参数有:
c ASCII字符或反斜杠序列d[SIZE] 有符号十进制数,每个整数SIZE字节。f[SIZE] 浮点数,每个整数SIZE字节。o[SIZE] 八进制(系统默认值为02),每个整数SIZE字节。u[SIZE] 无符号十进制数,每个整数SIZE字节。x[SIZE] 十六进制数,每个整数SIZE字节。
du -hm /home/itcast/test
以B为单位
du -hb ./*
以K为单位,4k的整数倍
du -hk ./*
总计大小,以M为单位
du -hc ./*
df查看磁盘使用情
df --block-size=GBdf --block-size=MB
查看当前登陆用户
* 文字设定法
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
$ sudo chown itcast:nogroup file1
注意:
根据文件名查找
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 { } \;
grep [options] PATTERN [FILE...]
-I:不区分大小写(只适用于单字符)。-h:查询多文件时不显示文件名。-l:查询多文件时只输出包含匹配字符的文件名。-n:显示匹配行及行号。-s:不显示不存在或无匹配文本的错误信息。-v:显示不包含匹配文本的所有行。-R: 连同子目录中所有文件一起查找。
$ grep 'printf' /usr/include -R
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"
更新源服务器列
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 检查是否有损坏的依赖
安装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
1. 解压缩源代码包2. cd dir3. ./configure检测文件是否缺失,创建Makefile,检测编译环境4. make编译源码,生成库和可执行程序5. sudo make install把库和可执行程序,安装到系统路径下6. sudo make distclean删除和卸载软件
#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里的所有文件了。
sudo fdisk -l
2.挂载存储设备sdb1到挂载点/mnt目录
sudo mount /dev/sdb1 /mnt -o utf8可以使U盘内的中文正常显示出来。
sudo umount /mnt
卸载命令
sudo umount 挂在点
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系统编程。