札记-杂记(2):Linux命令

札记-杂记(2):Linux命令


(1)

ps -p pid -o comm=

输出pid对应的命令。


2.

关于~目录的建立与删除。

直接cd或者rm“~”实际操作的是用户目录,那能否建立一个目录名字叫”~”呢?又如何删除呢?

[test@localhost ~]$ tree
.
`-- a
    `-- b
        `-- c

3 directories, 0 files
[test@localhost ~]$ cd a/b/c
[test@localhost c]$ mkdir ~
mkdir: cannot create directory `/home/test': File exists
[test@localhost c]$ mkdir '~'
[test@localhost c]$ ll
total 4
drwxrwxr-x 2 test test 4096 Jun 26 15:48 ~
[test@localhost c]$ cd ./~
[test@localhost ~]$ pwd
/home/test/a/b/c/~
[test@localhost ~]$ cd -
/home/test/a/b/c
[test@localhost c]$ cd ~
[test@localhost ~]$ pwd
/home/test
[test@localhost ~]$ cd -
/home/test/a/b/c
[test@localhost c]$ rm -rf '~'
[test@localhost c]$ ll
total 0
mkdir '~'
rm -rf '~'

(2)

怎么快速将一个字符串写入到文件中?

你可能会说:

[test1280@localhost ~]$ echo "test1280" > newfile

然而实际上上面的命令多写了一个0x0a字符…

[test1280@localhost ~]$ od -x newfile 
0000000 6574 7473 3231 3038 000a
0000011
[test1280@localhost ~]$ ll newfile
-rw-rw-r-- 1 test1280 test1280 9 07-06 19:49 newfile

看到了吗?ll显示的文件大小是9,但是我们刚刚输入的是8个字符,多余的就是那个可恶的0x0a.

(PS:从od -x的结果也能看出多了个0x0a)

我用vim写试下?

别费劲了,我试验过了,不行,还是会带一个0x0a…

后来综合想了个简单的办法:coding…

#include <stdio.h>

int main(int ac, char *av[])
{
    printf("%s", av[1]);
    return 0;
}

Compile:

[test1280@localhost ~]$ !g
gcc -o main main.c

将“test1281”输入到文件中:

[test1280@localhost ~]$ ./main test1281 > newfile

查看:

[test1280@localhost ~]$ od -x newfile
0000000 6574 7473 3231 3138
0000010
[test1280@localhost ~]$ ll newfile
-rw-rw-r-- 1 test1280 test1280 8 07-06 19:58 newfile

恩,果然是8个字节,没有带可恶的0x0a.

代码我并没有判断av[1]是不是NULL。

主要是利用了重定向输出,省的我们自己open、write等等操作。

代码本身不多,这点很关键,想用的时候很容易就可以写一下啦。

关键是:

1.shell提供的重定向输出;

2.printf输出是“原滋原味”的;


(3)

如何给一个目录族赋予指定权限?

今天在现网上解决一个编译的问题,发现编译时头文件所在的目录当前账户没有权限,由于是/usr/local/include/xxx这样子的目录结构,我需要一点一点给/usr、/usr/local、/usr/local/include、/usr/local/include/xxx来加上对应的权限(chmod a+x …)。

是否可以一条命令搞定,使其拥有同一权限位?

可以加上-R参数:

-R, --recursive
    change files and directories recursively
[ismp@eb29 ~]$ mkdir -p a/b/c/d
[ismp@eb29 ~]$ touch a/b/c/d/myfile
[ismp@eb29 ~]$ ll -d a
drwxrwxr-x 3 ismp ismp 4096 11-08 17:38 a
[ismp@eb29 ~]$ ll -d a/b
drwxrwxr-x 3 ismp ismp 4096 11-08 17:38 a/b
[ismp@eb29 ~]$ ll -d a/b/c/d
drwxrwxr-x 2 ismp ismp 4096 11-08 17:39 a/b/c/d
[ismp@eb29 ~]$ ll -d a/b/c/d/myfile
-rw-rw-r-- 1 ismp ismp 0 11-08 17:39 a/b/c/d/myfile
[ismp@eb29 ~]$ chmod -R a=rwx a
[ismp@eb29 ~]$ ll -d a
drwxrwxrwx 3 ismp ismp 4096 11-08 17:38 a
[ismp@eb29 ~]$ ll -d a/b
drwxrwxrwx 3 ismp ismp 4096 11-08 17:38 a/b
[ismp@eb29 ~]$ ll -d a/b/c/d/myfile
-rwxrwxrwx 1 ismp ismp 0 11-08 17:39 a/b/c/d/myfile

即:chmod -R将一系列的目录以及文件都修改为对应的权限位。

chmod -R ...

猜你喜欢

转载自blog.csdn.net/test1280/article/details/73200824