学习 shell
文件系统中跳转
pwd — 打印出当前工作目录名
cd — 更改目录
ls — 列出目录内容
ls -l 长格式输出
探究操作系统
file — 确定文件类型
file filename
less/more — 浏览文件内容
less filename
more filename
操作文件和目录
cp — 复制文件和目录
复制单个项目item1到项目item2:cp item1 item2
复制多个项目到同一目录下:cp item… directorymv — 移动/重命名文件和目录
重命名:mv item1 item2
移动:mv item… directorymkdir — 创建目录
mkdir directory…
rm — 删除文件和目录
rm item…
ln — 创建硬链接和符号链接
硬链接是指向文件inode的指针。
符号链接类似二级指针,指向指向文件inode的inode。弥补了硬链接的两个局限性:硬链接不能跨越物理设备, 硬链接不能关联目录。
PS:对于符号链接,执行的大多数文件操作是针对链接的对象,而不是链接本身。但rm 命令删除链接本身,而不是链接的对象。创建硬链接:ln file linkname
创建符号链接:ln -s item linkname
重定向
从 shell 眼中看世界
echo - 显示一行文本
echo 将它的文本参数打印到标准输出中。
字符展开
键盘高级操作技巧
clear - 清空屏幕
history - 显示历史列表内容
权限
id – 显示用户身份号
chmod – 更改文件模式
umask – 设置默认的文件权限
umask 4位八进制数字
初始权限是 — rw- rw- rw-
掩码中出现一个1则屏蔽掉相应权限,比如0002,则结果为 — rw- rw- r–su – 改变用户ID或成为ROOT
su username
su 只取得ROOT的权限
su - 以root身份启动shell,取得ROOT的权限后还执行ROOT的PROFILE来取得ROOT的环境变量sudo – 以另一个用户的身份来执行命令
使用 sudo 命令时,用户本身而不是root密码来认证
如果当前用户无法使用sudo,则在 /etc/sudoers 文件中的 root ALL=(ALL:ALL) ALL 行下面添加一行 username ALL=(ALL) ALLchown – 更改文件Owner
chown ownername item
chgrp – 更改文件的Group
chgrp groupname item
passwd – 更改用户密码
passwd username
adduser – 新建用户
adduesr username
adduser在/home目录下会自动创建同名文件夹useradd – 新建用户
uesradd username
useradd只是创建了一个用户名,并没有在/home目录下创建同名文件夹,也没有创建密码。groupadd – 新建组
groupadd groupname
新建用户到一个组中:
groupadd newgroup
useradd -g newgroup testusr
passwd testusr
进程
ps(Process Status) – 报告当前进程快照
ps -e 展示所有进程
ps aux 显示属于每个用户的进程信息top – 显示任务
动态地显示进程的信息
jobs – 列出活跃的任务
列出从终端中启动的任务
bg – 把一个任务放到后台执行
bg %工作序号(即jobspec)
fg – 把一个任务放到前台执行
fg %工作序号(即jobspec)
kill – 给一个进程发送信号
使用格式:kill [-signal] PID…
kill -l 得到一个完整的信号列表killall – 给多个进程发送信号
killall 命令给匹配特定程序或用户名的多个进程发送信号。
killall [-u user] [-signal] name…shutdown – 关机或重启系统
关机: sudo shutdown -h now
配置文件和 shell 环境
shell 环境
printenv - 打印部分或所有的环境变量
printenv varname
若没有参数制定,则显示所有环境变量set - 设置 shell 选项
当使用不带参数的set命令时,shell 和环境变量都会显示,同时也会显示定义的 shell 函数。
export — 导出环境变量,让随后执行的程序知道。
export PATH
export 命令告诉 shell 让这个 shell 的子进程可以使用 PATH 变量的内容。alias - 创建命令别名
alias ll=’ls -alF’
常见任务和基本工具
软件包管理
两大包管理技术阵营: Debian 的”.deb”,和 redhat 的”.rpm”。
上层包管理工具
apt-get, aptitude, yum
底层包管理工具
dpkg, rpm
存储媒介
mount – 挂载一个文件系统
mount /dev/hdb4 /mnt/disk 挂载设备/dev/hdb4到目录/mnt/disk
不带参数的mount指令查看当前挂载的文件系统列表umount – 卸载一个文件系统
umount /dev/hdb4 卸载设备/dev/hdb4
fsck – 检查和修复文件系统(file system check)
检查设备/dev/sdb4 sudo fsck /dev/sdb4
fdisk – 分区表操作器
操作设备/dev/sdb4 sudo fdisk /dev/sdb4
输入 m显示命令菜单mkfs – 创建文件系统
给设备创建文件系统前,需要使用fdformat命令对设备格式化。
sudo mkfs -t msdos /dev/fd0 给软盘/dev/fd0创建msdos文件系统fdformat – 格式化一张软盘
sudo fdformat /dev/sdb4 格式化设备/dev/sbb4
dd — 把面向块的数据直接写入设备
dd if=/dev/sdb of=/dev/sdc 把/dev/sdb中的所有数据复制到/dev/sdc中
dd if=/dev/sdb of=flash_drive.img 把/dev/sdb中的数据保存为flash_drive.img
dd if=/dev/cdrom of=ubuntu.iso 创建一个 CD-ROM(/dev/cdrom) 的映像拷贝为ubuntu.ios
genisoimage (mkisofs) – 创建一个 ISO 9660的映像文件
genisoimage -o cd-rom.iso -R -J ~/cd-rom-files 将~/cd-rom-files/中的文件创建为cd-rom.iso 映像文件
"-R" 选项添加元数据为 Rock Ridge 扩展,这允许使用长文件名和 POSIX 风格的文件权限
"-J" 选项使 Joliet 扩展生效,这样 Windows 中就支持长文件名了。wodim (cdrecord) – 把数据写入光存储媒介
wodim dev=/dev/cdrw blank=fast 清除一张可重写入的 CD-ROM,参数为设备名称和清空的类型
wodim dev=/dev/cdrw image.iso 写入镜像
md5sum – 计算 MD5检验码
md5sum image.iso
网络系统
ping - 检查网络是否连通
ping 命令发送一个特殊的网络数据包,叫做 ICMP ECHO_REQUEST,到 一台指定的主机。大多数接收这个包的网络设备将会回复它,来允许网络连接验证。
ping www.google.com.hk
traceroute - 显示ip数据报从本地到指定主机的路径
traceroute从源主机向目的主机发送一连串的IP数据报,数据报中封装的是无法交付的UDP用户数据包.通过增加数据报的TTL的方式来得到路径.
traceroute www.baidu.com
对于那些没有提供标识信息的路由器(由于路由器配置,网络拥塞,防火墙等 方面的原因)会显示*号.netstat - 打印Linux网络子系统的信息
netstat -ie 查看系统中的网络接口
netstat -r “显示网络路由表ftp - 因特网文件传输程序
wget - 非交互式网络下载器
wget 不只能下载单个文件,多个文件,甚至整个网站都能下载.
wget http://linuxcommand.org/index.php 下载网站ssh - OpenSSH SSH 客户端(远程登录程序)
查找文件
locate – 通过名字来查找文件
locate 程序快速搜索路径名数据库,并且输出每个与给定字符串相匹配的文件名。
locate bin/zip 输出所有包含字符串”bin/zip”的路径名
locate 数据库由另一个叫做 updatedb 的程序创建,updatedb程序周期性执行。所以数据库不能被持续地更新,从而当使用 locate 时,最新的文件可能不会出现。
用户可以手动执行 sudo updatedb 来更新locate数据库find – 在目录层次结构中搜索文件
xargs – 从标准输入生成和执行命令行
xargs 命令从标准输入接受输入,并把输入转换为一个指定命令的参数列表
find ~ -type f -name ‘foo*’ -print | xargs ls -l find
命令的输出被管道到 xargs 命令,然后xargs 会为 ls 命令构建 参数列表,然后执行 ls 命令。touch – 更改文件时间
touch 命令通常被用来设置或更新文件的访问,更改,和修改时间。然而,如果一个文件名参数是一个 不存在的文件,则会创建一个空文件。
stat – 显示文件或文件系统状态
stat是一款加大马力的 ls 命令版本,它会展示系统对 某个文件及其属性所知道的所有信息。
归档和备份
gzip – 压缩或者展开文件
bzip2 – 块排序文件压缩器
tar – 磁带打包工具
zip – 打包和压缩文件
rsync – 同步远端文件和目录
正则表达式
文本处理
cat – 连接文件并且打印到标准输出
-A 选项用来在文本中显示非打印字符
cat > foo.txt The quicj brown fox jumped over the lazy dog. ^C cat -A foo.txt ^IThe quicj brown fox jumped over the lazy dog.$ ^I 表示tab $ 表示换行
-n 选项用来给文本行添加行号
-s 选项禁止输出多个空白行cat > foo.txt The quick brown fox jumped over the lazy dog. ^C cat -ns foo.txt 1 The quick brown fox 2 3 jumped over the lazy dog.
sort – 给文本行排序
sort 程序对标准输入的内容,或命令行中指定的一个或多个文件进行排序,然后把排序结果发送到标准输出。
sort 选项
uniq – 报告或者省略重复行
当给定一个 排好序的文件(包括标准输出),uniq 会删除任意重复行,并且把结果发送到标准输出。 它常常和 sort 程序一块使用,来清理重复的输出。
uniq选项
cut – 从每行中删除文本区域
cut 程序被用来从文本行中抽取文本,并把其输出到标准输出。它能够接受多个文件参数或者标准输入。
cut程序选项
paste – 合并文件文本行
paste 读取多个文件,然后把每个文件中的字段整合成单个文本流,输入到标准输出。类似于 cut 命令, paste 接受多个文件参数和 / 或标准输入。
join – 基于某个共享字段来联合两个文件的文本行
comm – 逐行比较两个有序的文件
diff – 逐行比较文件
patch – 给原始文件打补丁
tr – 翻译或删除字符
sed – 用于筛选和转换文本的流编辑器
aspell – 交互式拼写检查器
格式化输出
nl – 添加行号
fold – 限制文件列宽
fmt – 一个简单的文本格式转换器
pr – 让文本为打印做好准备
printf – 格式化数据并打印出来
groff – 一个文件格式系统
打印
pr —— 转换需要打印的文本文件
lpr —— 打印文件
lp —— 打印文件(System V)
a2ps —— 为 PostScript 打印机格式化文件
lpstat —— 显示打印机状态信息
lpq —— 显示打印机队列状态
lprm —— 取消打印任务
cancel —— 取消打印任务(System V)
编译程序
- make - 维护程序的工具