Ubuntu基本命令

版权声明:撰写不易,转载请注明原文出处,如有错误,欢迎批评指正。如有版权问题,请联系[email protected] https://blog.csdn.net/qq_42195688/article/details/80579455
# 设置主机名
sudo vi /etc/hosts
127.0.0.1 主机名
sudo hostname 主机名

#####################################
# 题目一、基本命令
###################################

1.pwd  # 查看当前目录的路径
2.cd   # 切换目录 .当前目录 ..上一级目录 ~家目录
3.ls   # 查看指定目录下的所有文件和文件夹信息,常用参数(-l用于长格式查看指定目录下的所有文件和文件夹信息 -ld以长格式显示指定目录的信息)
4.head -n 5 1.txt  # 显示前五行
  tail -n 5 1.txt  # 显示末五行
5.mkdir qiMoTest  # 新建文件夹
6.cp 1.txt test666    # 复制或者备份文件
  cp -r test666 fsm   # 复制或者备份文件夹
7.mv 2.txt fsm  # 移动文件或文件夹
  mv 1.txt hot.txt  # 文件重命名
8.rm hot.txt  # 删除文件
  rm -rf test666  # 递归删除文件夹
  rm test/*       # 删除test所有文件,但不删除目录本身
9.ln -s 1.txt ruan  # 创建软链接
  ln 1.txt ying     # 创建硬链接
10.tar -zcvf test.rar test666  # 压缩文件
   tar -zxvf test.rar  # 解压文件
11.find /etc -name 'f????'  # 查找etc目录下所有以f开头的后面有四个字符的文件或目录
   find /etc -user 'root'  # 查找etc目录下文件所有者为root的文件或文件夹
   find /etc -size +10c   # 超找etc下大小大于10字节的文件或者文件夹
   find test666 -type d  # 查找test666下面的所有文件夹
   find test666 -type f  # 查找test666下面的所有文件
12.grep '老司机' 1.txt  # 使用正则表达式查找文件内容

###################################
# 题目二、vi编辑器
###################################

源程序table99.c
#include <stdio.h>
int main()
{
  int i,j;
  for (i = 1; i <= 9; i++)
  {
    for(j = 1; j <= i; j++)
    {
      printf("%d*%d=%-2d ", j, i, i*j);
    }
    printf("\n");
  }
  return 0;
}

源程序gcd.c(最大公约数与最小公倍数)
#include <stdio.h>

int gcd (int a, int b)
{
  int temp;
  while (b != 0)
  {
    temp = a % b;
    a = b;
    b = temp;
  }
  return a;
}

int main()
{
  int a, b;
  printf("请输入两个正整数,之间用空格隔开,回车即可得到这两个数的最大公约数与最小公倍数:");
  scanf("%d %d", &a, &b);

  if (a < b)
  {
    int temp = a;
    a = b;
    b = temp;
  }

  int sum = gcd(a, b);
  printf("最大公约数为:%d, 最小共倍数为:%d\n", sum, a*b/sum);

  return 0;
}

源程序jt.c(鸡兔同笼)
#include <stdio.h>
int main()
{
  int head,foot,j,t;

  printf("请输入鸡和兔的总头数与总脚数,中间以空格隔开:");
  scanf("%d %d", &head, &foot);
  j = (4 * head - foot) / 2;
  t = head - j;

  printf("鸡有%d只,兔有%d只\n", j, t);

  return 0;
}

# 编译程序
# 必须掌握
gcc table99.c -o table99
# 选择掌握
gcc -E table99.c -o table99.i
gcc -S table99.i -o table99.S
gcc -c table99.S -o table99.o
gcc table99.o -o table99
# 执行程序
./table99

##############################
# 题目三、用户和组管理
##############################

# 新建用户并设置密码添加家目录
sudo useradd -d /home/user01 -m user01
/etc/passwd
/etc/shadow
# 为用户设置密码
sudo passwd user01
# 删除用户
sudo userdel -r user01
# 切换用户
sudo su user01  # 切换用户的时候不切换当前目录
sudo su - user01 # 切换用户的时候同时切换到该目录的家目录

# 新建组
sudo groupadd group01
/etc/group
/etc/gshadow
# 删除组
sudo groupdel group01
# 为组设置密码
sudo gpasswd group01
# 为组添加用户
sudo gpasswd -a user01 group01
# 为组删除用户
sudo gpasswd -d user01 group01

#############################
# 文件权限管理
###############################
# 改变文件权限
u       g            o        a
所有者 所属组用户 其他用户 所有用户
sudo chmod o+w 1.txt  # 参数修改法
sudo chmod 664 1.txt  # 数字修改法
# 改变目录权限(同样也有数字和参数两种方法)
sudo chmod g-w test   # 修改目录本身权限
sudo chmod -R g-w test    #递归修改目录以及目录中所有文件权限

# 文件所有者和所属组的修改、
sudo chown root:root 1.txt  # 只写冒号前面是修改所有者,写冒号以及冒号之后的是修改属组,如果都写是同时修改所有者和属组
如果加上-R参数,则可以递归修改文件夹以内所有文件的所有者和属组,如果不加只修改文件夹本身所属

##############################
# 基本磁盘管理和文件系统管理
##############################

# 查看某磁盘现有分区
sudo fdisk -l /dev/sda
# 给某磁盘分区
sudo fdisk /dev/sda
n   #新建分区
p   #查看分区
w   #保存修改
q   #退出
# 侦测最新分区表,令分区立即生效
sudo partprobe

# 格式化分区并创建文件系统
sudo mkfs -t vfat /dev/sda3
# 创建一个目录作为挂载点,并将分区挂载到该挂载点
sudo mkdir /media/usb
sudo mount /dev/sda3 /media/usb
# 查看当前已经挂载的分区
df    # df -T 显示挂载的文件系统类型
# 在该分区上面创建几个示例文件
sudo touch /media/usb/file1 /media/usb/file2 /media/usb/file3
# 卸载分区(非挂载目录条件下,跟挂载点或者挂载分区)
sudo umount /dev/sda3(或者/media/usb)
# 在系统中创建/program目录
sudo mkdir /program
# 用修改/program目录权限为所有用户均可读写
sudo chmod a+rw /program
# 在program下面创建usb.sh
usb.sh
#! /bin/bash
echo "welcome to use AUTOUSB"
echo "do you want to load usb(y/n)"
read ANSWER
if [ $ANSWER = "y" -o $ANSWER = "Y" ]
then
  sudo mount -t auto /dev/sda3 /media/usb
  echo "do you want to copy files to /root(y/n)?"
  read ANSWER
  while [ $ANSWER = "y" -o $ANSWER = "Y" ]
  do
    ls -a /media/usb
    echo "type the filename you want to copy"
    read FILE
    sudo cp /media/usb/"$FILE" /root
    if [ $? -eq 0 ]
    then
      echo "copy finished"
    else
      echo "copy errored"
    fi
    echo "any other files(y/n)?"
    read ANSWER
  done
  sudo umount /dev/sda3
fi

# 改变usb.sh权限使其可以执行
sudo chmod a+x usb.sh
# 将/program添加到系统的PATH环境变量中,使得可以在任意目录访问到此脚本
sudo vi /etc/profile
内容:
export PATH=$PATH:/program

# 重新加载profile文件
source /etc/profile

然后在任意目录都可以通过usb.sh直接访问该shell脚本

###################################
# NFS服务器配置
####################################

# 检查是否安装了nfs软件包
sudo dpkg -l nfs-kernel-server
# 如果没有安装,则安装
sudo apt-get install nfs-kernel-server
# 配置nfs服务器/etc/exports文件
/tmp 192.168.86.0/24(rw,no_root_squash)  # 读写权限,root用户拥有root权限
/home/nfs 192.168.86.0/24(ro) *(ro,all_squash)  #只读权限,root用户映射为匿名用户
/home/andy 192.168.86.10/24(rw)  # 读写权限
# 重启服务
sudo /etc/init.d/portmap restart
sudo service nfs-kernel-server restart
# 查看服务器上的共享目录
showmount -e 192.168.217.133
# 挂载目录
sudo mkdir testtmp
sudo mount 192.168.86.6:/tmp testtmp

################
# 网络接口配置
#############
# 产看网络接口的配置信息
sudo ifconfig eth0
# 为网络接口设置ip地址,广播地址,子网掩码
sudo ifconfig eth0 192.168.86.6 broadcast 192.168.86.255 netmask 255.255.255.0
# 检测与某个网络是否联通
ping 192.168.86.33
# 通过配置文件设置相应参数
sudo vi /etc/network/interfaces
# 重启网络接口服务
sudo /etc/init.d/networking restart
# 开启与关闭网络接口
sudo ifconfig eth0 up
sudo ifconfig eth0 down
# 开关网卡
ifup eth0
ifdown eth0


####################
#练习用的shell脚本
###################
#!/bin/bash
echo "input a file name:"
read file_name
# 如果该文件是一个字符特殊文件或者是一个块特殊文件
if [ -c $file_name -o -b $file_name ]
then
    cp $file_name /dev
else
echo "$file_name is not a device file"
fi

#!/bin/bash
#求10以内自然数的平均值
num=1
while [ $num -le 10 ]
do
    square=`expr $num \* $num`
    echo $square
    num=`expr $num + 1`
done

#!/bin/bash
echo "please select your operation:"
echo "1 copy"
echo "2 delete"
echo "3 backup"
read op
case $op in
1)
echo "your selection is copy"
;;
2)
echo "your selection is delete"
;;
3)
echo "your selection is backup"
;;
*)
echo "invalide selection"
;;
esac

#!/bin/bash
for DAY in sunday monday tuesday wednesday Thursday Friday Saturday
do
    echo "the day is:$DAY"
done

#!/bin/bash
#if-else语句

if [ -x /bin/ls ]
then
    /bin/ls
else
    pwd
fi

#!/bin/bash
echo "input a file name:"
read file_name
if [ -d $file_name ]
    then
    echo "$file_name is a dir"
elif [ -f $file_name ]
    then
echo "$file_name is a  file"
elif [ -c $file_name -o -b $file_name ]
then
echo "$file_name is a device file"
else
echo "$file_name is an unknown file"
fi



原文链接: https://blog.csdn.net/qq_42195688/article/details/80579455

猜你喜欢

转载自blog.csdn.net/qq_42195688/article/details/80579455