Shell命令——软件测试工程师面试秘籍(12)

发表于:2021-12-01 09:40

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:G. li    来源:51Testing软件测试网原创

  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软件测试网获得人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号