2.2.3 Shell命令
考点:
·系统信息
·关机操作
·文件、磁盘管理
·用户操作
·软件安装
·备份
·网络
1.与系统信息相关的指令
arch:显示计算机的处理器架构的一种方式。
uname -m:显示计算机的处理器架构的另一种方式。
uname -r:显示正在使用的内核版本。
dmidecode -q:显示硬件系统部件(SMBIOS/DMI)。
hdparm -i /dev/hda:罗列一个磁盘的架构特性。
hdparm -tT /dev/sda:在磁盘上执行测试性读取操作。
cat /proc/cpuinfo:显示CPU的信息。
cat /proc/interrupts:显示中断。
cat /proc/meminfo:校验内存使用情况。?
cat /proc/swaps:显示哪些交换分区被使用。
cat /proc/version:显示内核的版本。
cat /proc/net/dev:显示网络适配器及统计。
cat /proc/mounts:显示已加载的文件系统。
lspci -tv:显示PCI设备。
lsusb -tv:显示USB设备。
date:显示系统日期。
cal 2007:显示2007年的日历表。
date 041217002007.00:设置日期和时间。
clock -w:将时间修改并保存到BIOS。
2.与关机操作相关的指令
shutdown -h now:关闭系统的第1种方式。
init 0:关闭系统的第2种方式。
telinit 0:关闭系统的第3种方式。
shutdown -h hours:minutes &:按预定时间关闭系统。
shutdown -c:取消按预定时间关闭系统。
shutdown -r now:重启的一种方式。
reboot:重启的另一种方式。
logout:注销。
3.与文件、磁盘管理相关的指令
cd /home:进入/ home目录。
cd ..:返回上一级目录。
cd ../..:返回上两级目录。
cd:进入个人的主目录。
cd~user1:进入个人的主目录。
cd -:返回上次所在的目录。
pwd:显示工作路径。
ls:查看目录中的文件。
ls -F:查看目录中的文件。
ls -l:显示文件和目录的详细资料。
ls -a:显示隐藏文件。
ls *[0-9]*:显示包含数字的文件名和目录名。
tree或lstree:显示文件和目录由根目录开始的树形结构。
mkdir dir1:创建一个名为dir1的目录。
mkdir dir1 dir2:同时创建两个目录。
mkdir -p /tmp/dir1/dir2:创建一个目录树。
rm -f file1:删除一个名为file1的文件。
rmdir dir1:删除一个名为dir1的目录。
rm -rf dir1:删除一个名为dir1的目录并同时删除其内容。
rm -rf dir1 dir2:同时删除两个目录及其内容。
mv dir1 new_dir:重命名/移动一个目录。
cp file1 file2:复制一个文件。
cp dir/*:复制一个目录下的所有文件到当前工作目录。
cp -a /tmp/dir1:复制一个目录到当前工作目录。
cp -a dir1 dir2:复制一个目录。
ln -s file1 lnk1:创建一个指向文件或目录的软链接。
ln file1 lnk1:创建一个指向文件或目录的物理链接。
touch -t 0712250000 file1:修改一个文件或目录的时间戳(年月日时分)。
file file1 outputs the mime type of the file as text:查看文件内容。
cat file1:从第一字节开始正向查看一个文件的内容。
tac file1:从最后一行开始反向查看一个文件的内容。
more file1:查看一个长文件的内容。
less file1:类似于more命令,但是它允许在文件中正向操作和反向操作。
head -2 file1:查看一个文件的前两行。
tail -2 file1:查看一个文件的最后两行。
tail -f /var/log/messages:实时查看被添加到一个文件中的内容。
4.与文本处理相关的指令
cat file1 | command( sed, grep, awk, grep, etc...) > result.txt:合并一个文件的详细说明文本,并将简介写入一个新文件中。
cat file1 | command( sed, grep, awk, grep, etc...) >> result.txt:合并一个文件的详细说明文本,并将简介写入一个已有的文件中。
grep Aug /var/log/messages:在文件/var/log/messages中查找关键词Aug。
grep ^Aug /var/log/messages:在文件/var/log/messages中查找以Aug开始的词汇。
grep [0-9] /var/log/messages:选择/var/log/messages文件中所有包含数字的行。
grep Aug -R /var/log/*:在目录/var/log及随后的目录中搜索字符串Aug。
sed 's/stringa1/stringa2/g' example.txt:将example.txt文件中的string1替换成string2。
sed '/^$/d' example.txt:从example.txt文件中删除所有空白行。
sed '/ *#/d; /^$/d' example.txt:从example.txt文件中删除所有注释和空白行。
echo 'esempio' | tr '[:lower:]' '[:upper:]':合并上下单元格的内容。
sed -e '1d' example.txt:从文件example.txt中删除第一行。
sed -n '/stringa1/p':查看只包含词汇string1的行。
sed -e 's/ *$//' example.txt:从文件example.txt中删除每一行最后的空白字符。
sed -e 's/stringa1//g' example.txt:从文件example.txt中删除词汇string1并保留剩余的内容。
sed -n '1,5p;5q' example.txt:在文件example.txt中查看从第1行到第5行的内容。?
sed -n '5p;5q' example.txt:在文件example.txt中查看第5行。
sed -e 's/00*/0/g' example.txt:在文件example.txt中用单个0替换多个0。?
cat -n file1:标识文件的行数。
cat example.txt | awk 'NR%2==1':删除example.txt文件中的所有偶数行。
echo a b c | awk '{print $1}':查看1行的第1列。
echo a b c | awk '{print $1,$3}':查看1行的第1列和第3列。
paste file1 file2:合并两个文件或两栏的内容。
paste -d '+' file1 file2:合并两个文件或两栏的内容,中间用“+”区分。
sort file1 file2:对两个文件的内容排序。
sort file1 file2 | uniq:取出两个文件的并集(重复的行只保留一份)。
sort file1 file2 | uniq -u:删除交集,留下其他的行。
sort file1 file2 | uniq -d:取出两个文件的交集(只留下同时存在于两个文件中的内容)。
comm -1 file1 file2:比较两个文件的内容,只删除file1所包含的内容。
comm -2 file1 file2:比较两个文件的内容,只删除file2所包含的内容。
comm -3 file1 file2:比较两个文件的内容,只删除两个文件共有的部分。
5.与字符设置和文件格式转换相关的指令
dos2unix filedos.txt fileunix.txt:将一个文本文件的格式从MS-DOS格式转换成UNIX格式。
unix2dos fileunix.txt filedos.txt:将一个文本文件的格式从UNIX格式转换成MS-DOS格式。
recode ..HTML < page.txt > page.html:将一个文本文件转换成html格式。
recode -l | more:显示所有允许的转换格式。
6.初始化一个文件系统的指令
mkfs /dev/hda1:在hda1分区创建一个文件系统。
mke2fs /dev/hda1:在hda1分区创建一个Linux ext2文件系统。
mke2fs -j /dev/hda1:在hda1分区创建一个Linux ext3(日志型)文件系统。
mkfs -t vfat 32 -F /dev/hda1:创建一个FAT32文件系统。
fdformat -n /dev/fd0:格式化一张软盘。
mkswap /dev/hda3:创建一个swap文件系统。
iconv -l:列出已知的编码。
find / -name file1:从/开始进入根文件系统并搜索文件和目录。
find / -user user1:搜索属于用户user1的文件和目录。
find /home/user1 -name \*.bin:在目录/ home/user1中搜索扩展名为.bin的文件。
find /usr/bin -type f -atime +100:搜索在过去100天内未使用过的执行文件。
find /usr/bin -type f -mtime -10:搜索在10天内创建或者修改过的文件。
find / -name \*.rpm -exec chmod 755 '{}' \;:搜索以.rpm为扩展名的文件并定义其权限。
find / -xdev -name \*.rpm:搜索以.rpm为扩展名的文件,忽略光驱、键盘等可移动设备。
locate \*.ps:寻找以.ps为扩展名的文件,先执行updatedb命令。
whereis halt:显示二进制文件、源码或man的位置。
which halt:显示二进制文件或可执行文件的完整路径。
df -h:显示已经挂载的分区列表。?
ls -lSr |more:以尺寸大小排列文件和目录。
du -sh dir1:估算目录“dir1”已经使用的磁盘空间。
du -sk * | sort -rn:以容量大小为依据依次显示文件和目录的大小。
rpm -q -a --qf '%10{SIZE}t%{NAME}n' | sort -k1,1n:以大小为依据依次显示已安装的rpm包所使用的空间(Fedora、Red Hat类操作系统)。
dpkg-query -W -f='${Installed-Size;10}t${Package}n' | sort -k1,1n:以大小为依据显示已安装的deb包所使用的空间(Ubuntu、Debian类操作系统)。
chattr +a file1:只允许以追加方式读写文件。
chattr +c file1:允许这个文件能被内核自动压缩/解压。
chattr +d file1:在进行文件系统备份时,Dump程序将忽略这个文件。
chattr +i file1:设置成不可变的文件,不能被删除、修改、重命名或者链接。
chattr +s file1:允许一个文件被安全地删除。
chattr +S file1:一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。?
chattr +u file1:若文件被删除,系统允许你在以后恢复这个被删除的文件。?
lsattr:显示特殊的属性。
bunzip2 file1.bz2:解压一个名为file1.bz2的文件。
bzip2 file1:压缩一个名为file1的文件。?
gunzip file1.gz:解压一个名为file1.gz的文件。
gzip file1:压缩一个名为file1的文件。
gzip -9 file1:最大限度压缩一个名为file1的文件。
rar a file1.rar test_file:创建一个名为file1.rar的包。
rar a file1.rar file1 file2 dir1:同时压缩file1、file2及目录dir1。
rar x file1.rar:压缩rar包。
unrar x file1.rar:解压rar包。
ztar -cvf archive.tar file1:创建一个非压缩的存档文件。
tar -cvf archive.tar file1 file2 dir1:创建一个包含file1、file2及dir1的存档文件。
tar -tf archive.tar:显示一个包中的内容。
tar -xvf archive.tar:释放一个包。
tar -xvf archive.tar -C /tmp:将压缩包释放到/tmp目录下。
tar -cvfj archive.tar.bz2 dir1:创建一个bzip2格式的压缩包。
tar -xvfj archive.tar.bz2:解压一个bzip2格式的压缩包。
tar -cvfz archive.tar.gz dir1:创建一个gzip格式的压缩包。
tar -xvfz archive.tar.gz:解压一个gzip格式的压缩包。
zip file1.zip file1:创建一个zip格式的压缩包。
zip -r file1.zip file1 file2 dir1:将几个文件和目录同时压缩成一个zip格式的压缩包。
unzip file1.zip:解压一个zip格式的压缩包。
7.与用户操作相关的指令
groupadd group_name:创建一个新用户组。
groupdel group_name:删除一个用户组。
groupmod -n new_group_name old_group_name:重命名一个用户组。
useradd -c "Name Surname " -g admin -d /home/user1 -s /bin/bash user1:创建一个属于 admin用户组的用户。?
useradd user1:创建一个新用户。
userdel -r user1:删除一个用户(-r用于排除主目录)。
usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1:修改用户信息。
passwd:修改口令。
passwd user1:修改一个用户的口令(只允许root执行)。
chage -E 2005-12-31 user1:设置用户口令的失效期限。?
pwck:检查/etc/passwd的文件格式和语法修正及存在的用户。
grpck:检查/etc/passwd的文件格式和语法修正及存在的群组。
newgrp group_name:登录一个新的群组以改变新创建文件的预设群组。
ls -lh:显示权限。
ls /tmp | pr -T5 -W$COLUMNS:将终端划分成5栏并显示。
chmod ugo+rwx directory1:设置目录的所有人(u)、群组(g)及其他人(o)的读(r)、写(w)和执行(x)权限。
chmod go-rwx directory1:删除群组(g)与其他人(o)对目录的读、写执行权限。
chown user1 file1:改变一个文件的所有人属性。
chown -R user1 directory1:改变一个目录的所有人属性,同时改变该目录下所有文件的属性。
chgrp group1 file1:改变文件的群组。
chown user1:group1 file1:改变一个文件的所有人和群组属性。
find / -perm -u+s:显示一个系统中所有使用了SUID位的文件。
chmod u+s /bin/file1:设置一个二进制文件的SUID位,执行该文件的用户也被赋予和所有者同样的权限。
chmod u-s /bin/file1:禁用一个二进制文件的SUID位。
chmod g+s /home/public:设置一个目录的SGID位,类似于SUID,但这是针对目录的。
chmod g-s /home/public:禁用一个目录的SGID位。
chmod o+t /home/public:设置一个文件的STIKY位,只允许合法所有人删除文件。
chmod o-t /home/public:禁用一个目录的STIKY位。
8.与软件安装相关的指令
rpm -ivh package.rpm:安装一个RPM包。
rpm -ivh --nodeeps package.rpm:安装一个RPM包而忽略依赖关系警告。
rpm -U package.rpm:更新一个RPM包但不改变其配置文件。
rpm -F package.rpm:更新一个确定已经安装的RPM包。
rpm -e package_name.rpm:删除一个RPM包。
rpm -qa:显示系统中所有已经安装的RPM包。
rpm -qa | grep httpd:显示所有名称中包含httpd字样的RPM包。
rpm -qi package_name:获取一个已安装包的特殊信息。
rpm -qg "System Environment/Daemons":显示一个组件的RPM包。
rpm -ql package_name:显示一个已经安装的RPM包提供的文件列表。
rpm -qc package_name:显示一个已经安装的RPM包提供的配置文件列表。
rpm -q package_name:--whatrequires显示与一个RPM包存在依赖关系的列表。
rpm -q package_name:--whatprovides显示一个RPM包所占的空间大小。
rpm -q package_name --scripts:显示在安装/删除期间所执行的脚本。
rpm -q package_name --changelog:显示一个RPM包的修改历史。
rpm -qf /etc/httpd/conf/httpd.conf:确认所给的文件由哪个RPM包提供。
rpm -qp package.rpm -l:显示由一个尚未安装的RPM包提供的文件列表。
rpm --import /media/cdrom/RPM-GPG-KEY:导入公钥数字证书。
rpm --checksig package.rpm:确认一个RPM包的完整性。
rpm -qa gpg-pubkey:确认已安装的所有RPM包的完整性。
rpm -V package_name:检查文件大小、许可、类型、所有人、群组、MD5值及最后修改时间。
rpm -Va:检查系统中所有已安装的RPM包。
rpm -Vp package.rpm:确认一个RPM包还未安装。
rpm2cpio package.rpm | cpio --extract --make-directories *bin*:从一个RPM包执行可执行文件。
rpm -ivh /usr/src/redhat/RPMS/'arch'/package.rpm:从RPM源码安装一个构建好的包。
rpmbuild --rebuild package_name.src.rpm:从RPM源码构建一个RPM包。
yum install package_name:下载并安装一个RPM包。
yum localinstall package_name.rpm:安装一个RPM包,使用自己的软件仓库处理所有依赖关系。
yum update package_name.rpm:更新当前系统中所有安装的RPM包。
yum update package_name:更新一个RPM包。
yum remove package_name:删除一个RPM包。
yum list:列出当前系统中安装的所有包。
yum search package_name:在RPM仓库中搜寻软件包。
yum clean packages:清理RPM缓存,删除下载的包。
yum clean headers:删除所有头文件。
yum clean all:删除所有缓存的包和头文件。
9.与备份相关的指令
dump -0aj -f /tmp/home0.bak /home:制作一个/home目录的完整备份。
dump -1aj -f /tmp/home0.bak /home:制作一个/home目录的交互式备份。
restore -if /tmp/home0.bak:还原一个交互式备份。
rsync -rogpav --delete /home /tmp:同步两边的目录。
rsync -rogpav -e ssh --delete /home ip_address:/tmp:通过SSH通道同步。
rsync -az -e ssh --delete ip_addr:/home/public /home/local:通过SSH和压缩将一个远程目录同步到本地目录。
rsync -az -e ssh --delete /home/local ip_addr:/home/public:通过SSH和压缩将本地目录同步到远程目录。
dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr 'dd of=hda.gz':通过SSH在远程主机上执行一次备份本地磁盘的操作。
dd if=/dev/sda of=/tmp/file1:备份磁盘内容到一个文件。
tar -Puf backup.tar /home/user:执行一次对/home/user目录的交互式备份操作。
(cd /tmp/local/ && tar c.) | ssh -C user@ip_addr 'cd /home/share/ && tar x -p':通过SSH在远程目录中复制一个目录内容。
( tar c /home ) | ssh -C user@ip_addr 'cd /home/backup-home && tar x -p':通过SSH在远程目录中复制一个本地目录。
tar cf - . | (cd /tmp/backup ; tar xf - ):在本地将一个目录复制到另一个地方,保留原有权限及链接。
find /home/user1 -name '*.txt' | xargs cp -av --target-directory=/home/backup/--parents:从一个目录查找并复制所有以.txt为扩展名的文件到另一个目录。
find /var/log -name '*.log' | tar cv --files-from=- | bzip2 > log.tar.bz2:查找所有以.log为扩展名的文件,并存放在一个bzip包中。
dd if=/dev/hda of=/dev/fd0 bs=512 count=1:备份磁盘开始的512字节大小的主引导记录(Master Boot Record,MBR)到指定文件。
dd if=/dev/fd0 of=/dev/hda bs=512 count=1:从备份文件中恢复MBR内容。
10.与网络相关的指令
ifconfig eth0:显示一个以太网卡的配置。
ifup eth0:启用一个eth0网络设备。
ifdown eth0:禁用一个eth0网络设备。
ifconfig eth0 192.168.1.1 netmask 255.255.255.0:控制IP地址。
ifconfig eth0 promisc:设置eth0成混杂模式以嗅探数据包。
dhclient eth0:以DHCP模式启用eth0。
route -n:显示路由表。
route add -net 0/0 gw IP_Gateway:配置默认网关。
route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1:配置到达192.168.0.0/ 16的静态路由。
route del 0/0 gw IP_gateway:删除静态路由。
echo "1" > /proc/sys/net/ipv4/ip_forward:激活IP路由。
hostname:显示系统的主机名。
2.2.4 Git常用命令
Git常用的命令如下。
git add文件名:添加文件,即把文件添加到仓库中。
git add:添加所有文件。
git status:查看仓库当前的状态或者结果。
git commit -m“备注说明”:提交文件。
git push:推送文件到GitHub上,这是提交代码的最后一步。
git diff 文件名:查看文件被修改过的状态,即该文件修改了什么。
git branch dev:创建dev分支。
git checkout dev:切换分支,把分支切换到dev上。
git branch:查看分支。
git checkout -b dev:创建分支,然后切换到dev分支,即git checkout dev##和git branch##两个命令的合并。
git pull:拉取。
版权声明:51Testing软件测试网获得人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。