札记-杂记(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 ...