Linux常用命令-待续

文件与目录命令

  • ls 命令 : 查看目录与文件
ls -a  目录名称 //列出全部文件(包括隐藏文件)
ls -l  目录名称 //列出文件(不包括隐藏文件)的属性与权限信息
ls -d  目录名称 //仅列出目录本身,不显示目录中其他文件
//以上命令可组合使用,如下
ls -al  目录名称 //列出所有文件(包括隐藏文件)的属性与权限信息
  • cd 命令:切换当前目录
cd [相对路径或绝对路径] //切换目录
cd /    //切换到系统根目录
cd      //省略路径,切换到用户家目录
cd ../  //切换到当前目录的上层目录
  • pwd命令:显示当前所在目录
pwd     //显示当前目录
  • cp 命令:复制文件或者目录
cp [-adfilprsu]  源文件地址 目标文件地址 //命令格式
cp -i  源文件地址 目标文件地址 //若目标文件已经存在,在覆盖时会先询问操作的进行。
cp -p  源文件地址 目标文件地址 //连同文件的属性一起复制过去,而非使用默认属性(备份常用)
cp -u  源文件地址 目标文件地址 //若目标文件比源文件旧才更新目标文件
cp -r  源文件地址 目标文件地址 //递归持续复制,用于目录的复制行为
cp -a  源文件地址 目标文件地址 //连同文件的属性一起复制过去,而非使用默认属性;若源文件为连接文件属性,则复制连接文件属性而非文件本身;递归持续复制,用于目录的复制行为。
  • rm命令:删除文件或目录
rm [-fir] 文件或目录
rm -f  文件或目录 //忽略不存在的文件,不会报警告
rm -i  文件或目录 //删除前会询问用户是否操作
rm -r  文件或目录 //递归删除
//组合使用
rm -rf 文件或目录 //危险命令,请勿轻易尝试
  • mv命令:移动文件与目录,或更名
//说明:视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。
mv -f 文件或者目录 文件或目录 //如果目标文件已经存在,不会询问直接覆盖
mv -i 文件或者目录 文件或目录 //若目标文件已经存在时,就会询问是否覆盖
mv -u 若目标文件已经存在,且源文件(目录)较新,才会更新。
  • find命令:文件的查找(直接在磁盘中查找)
find命令会直接在磁盘中查找,所以速度相对较慢。
命令格式: find [PATH] [option] [action]
① 与时间有关的参数
共有 -atime, -ctime 与 -mtime ,以 -mtime 说明
   -mtime  n :n 为数字,意义为在 n 天之前的『一天之内』被更动过内容的文件;
   -mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的文件名;
   -mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的文件名。
   -newer file :file 为一个存在的文件,列出比 file 还要新的文件名
② 与文件权限和名称有关的参数
       -name filename : 搜索文件名称为filename的文件。可以模糊搜索,如```find . -name '*.txt'```,搜索所有后缀为.txt的文件。
        -size [+-] SIZE : 搜索比SIZE还要大(+)或小(-)的文件。默认SIZE的单位是b,代表512字节。还有其他单位,c为字节;k为1024字节;M1048576字节,也就是所谓的MB
  • locate命令:文件查找(在文件数据库中查找,数据库中的数据默认每日更新一次,手动更新数据库指令updatedb)
格式: locate [-ir] 关键词
参数:
-i : 忽略大小写的差异。
-r : 后面可接正则表达式的显示方式
  • mkdir命令:目录创建。
mkdir -p newdir/newdir //通过递归方式创建多级目录,只要创建时一次创建多过1个目录时就需要-p参数。
改变文件目录属性与权限
  • chown命令:指定文件目录的拥有着改为指定的用户或组。
chown -R www:www assets  //递归修改assets目录的群组为www群组(第一个www参数),拥有者为www用户(第二个www参数),-R处理指定目录以及其子目录下的所有文件。

chown www:www err.log  //修改err.log的群组为www群组(第一个www参数),拥有者为www用户(第二个www参数).
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中,泛型是一种强类型机制,它可以让你在编译时检查类型错误,从而提高代码的安全性和可读性。在使用泛型时,我们经常会遇到父类和子类的泛型转换问题。 首先,我们需要明确一点:子类泛型不能转换成父类泛型。这是因为Java中的泛型是不协变的。例如,如果有一个类A和它的子类B,那么List<A>和List<B>之间是不存在继承关系的。 下面我们来看一个例子: ```java public class Animal { //... } public class Dog extends Animal { //... } public class Test { public static void main(String[] args) { List<Animal> list1 = new ArrayList<>(); List<Dog> list2 = new ArrayList<>(); list1 = list2; // 编译错误 } } ``` 在这个例子中,我们定义了Animal类和它的子类Dog。然后我们定义了两个List,分别是List<Animal>和List<Dog>。如果将List<Dog>赋值给List<Animal>,会出现编译错误。这是因为List<Animal>和List<Dog>之间不存在继承关系。 那么,如果我们想要让子类泛型转换成父类泛型,应该怎么办呢?这时我们可以使用通配符来解决问题。通配符可以表示任意类型,包括父类和子类。例如,我们可以将List<Dog>赋值给List<? extends Animal>,这样就可以实现子类泛型转换成父类泛型了。 下面我们来看一个使用通配符的例子: ```java public class Animal { //... } public class Dog extends Animal { //... } public class Test { public static void main(String[] args) { List<Animal> list1 = new ArrayList<>(); List<Dog> list2 = new ArrayList<>(); list1 = list2; // 编译错误 List<? extends Animal> list3 = new ArrayList<>(); list3 = list2; // 正确 } } ``` 在这个例子中,我们定义了List<? extends Animal>来表示任意继承自Animal的类型。然后我们将List<Dog>赋值给List<? extends Animal>,这样就可以实现子类泛型转换成父类泛型了。 总结一下,Java中的泛型是不协变的,子类泛型不能转换成父类泛型。如果需要实现子类泛型转换成父类泛型,可以使用通配符来解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值