Skip to main content

Hoe mappen te maken in Linux met de 'mkdir' opdracht

HDR in Linux, Foto's sorteren in aparte mappen met script, en HDR foto maken (April 2025)

HDR in Linux, Foto's sorteren in aparte mappen met script, en HDR foto maken (April 2025)
Anonim

Deze handleiding zal je laten zien hoe je nieuwe mappen of mappen binnen Linux kunt maken met behulp van de opdrachtregel.

De opdracht die u gebruikt voor het maken van mappen is mkdir. Dit artikel toont je de basismethode voor het maken van mappen in Linux en het behandelen van alle beschikbare switches.

Een nieuwe map maken

De eenvoudigste manier om een ​​nieuwe map aan te maken is als volgt:

mkdir

Als u bijvoorbeeld een map onder de thuismap met de naam test wilt maken, opent u een terminalvenster en zorgt u ervoor dat u zich in uw basismap bevindt (gebruik het cd ~ -commando).

mkdir-test

De machtigingen van de nieuwe map wijzigen

Nadat u een nieuwe map hebt gemaakt, wilt u mogelijk de rechten zo instellen dat alleen een bepaalde gebruiker toegang heeft tot de map, zodat sommige mensen bestanden in de map kunnen bewerken, maar anderen alleen-lezen hebben.

In de laatste sectie heb ik je laten zien hoe je een directory met de naam test kunt maken. Als u de opdracht ls uitvoert, ziet u de machtigingen voor die map:

ls -lt

De kans is groot dat u iets in deze richting zult hebben:

drwxr-xr-x 2 eigenaar groep 4096 9 maart 19:34 test

De bits waarin we geïnteresseerd zijn, zijndrwxr-xr-x eigenaaren groep

De d vertelt ons dat de test een directory is.

De eerste drie tekens na de d zijn de eigenaarsrechten voor de map die wordt opgegeven door de naam van de eigenaar:

  • r staat voor lezen
  • w staat voor schrijven
  • x staat voor execute (wat in dit geval betekent dat je toegang hebt tot de map)

De volgende drie tekens zijn de groepsmachtigingen voor het bestand dat is opgegeven met de groepsnaam. Opnieuw zijn de opties r, w en x. De - betekent dat er een toestemming ontbreekt. In het bovenstaande voorbeeld kan iedereen die tot de groep behoort de map openen en de bestanden lezen, maar kan deze niet naar de map schrijven.

De laatste drie tekens zijn de rechten die alle gebruikers hebben en zoals u in het bovenstaande voorbeeld kunt zien, zijn deze hetzelfde als de groepsrechten.

Als u de machtigingen voor een bestand of map wilt wijzigen, gebruikt u dechmodcommando. Met de opdracht chmod kunt u 3 cijfers opgeven die de machtigingen instellen:

  • lees rechten = 4
  • schrijfrechten = 2
  • machtigingen uitvoeren = 1

Om een ​​mix van permissies te krijgen, voeg je de getallen bij elkaar. Om bijvoorbeeld leesrechten te krijgen en uit te voeren, is het nummer dat je nodig hebt 5, om lees- en schrijfrechten te krijgen is het nummer 6 en om te schrijven en machtigingen uit te voeren is het nummer 3.

Vergeet niet dat u 3 cijfers moet opgeven als onderdeel van de opdracht chmod. Het eerste nummer is voor de eigenaarsrechten, het tweede nummer voor de groepsrechten en het laatste nummer voor alle anderen.

Als u bijvoorbeeld de volledige machtigingen voor de eigenaar wilt krijgen, leest u de machtigingen voor de groep uit en voert u deze uit, en typt u het volgende voor geen andere persoon:

chmod 750 test

Als u de groepsnaam van een map wilt wijzigen, gebruikt u de opdracht chgrp.

Stel u bijvoorbeeld voor dat u een map wilt maken waartoe alle accountants in uw bedrijf toegang hebben.

Maak eerst de groepsaccounts door het volgende te typen:

groepadd-accounts

Als u niet over de juiste machtiging beschikt om een ​​groep te maken, moet u sudo mogelijk gebruiken om extra rechten te verkrijgen of met behulp van de opdracht su overschakelen naar een account met geldige rechten.

Nu kunt u de groep voor een map wijzigen door het volgende te typen:

chgrp-accounts

Bijvoorbeeld:

chgrp-accounts testen

Om iemand in de accountgroep lees-, schrijf- en uitvoerrechten en de eigenaar te geven, maar alleen-lezen voor iedereen, kunt u de volgende opdracht gebruiken:

chmod 770-test

Als u een gebruiker aan de accountgroep wilt toevoegen, wilt u waarschijnlijk de volgende opdracht gebruiken:

usermod -a -G-accounts

Met de opdracht hierboven wordt de accountgroep toegevoegd aan de lijst met secundaire groepen waartoe de gebruiker toegang heeft.

Een map maken en tegelijkertijd machtigingen instellen

U kunt een map maken en de machtigingen voor die map op hetzelfde moment instellen met behulp van de volgende opdracht:

mkdir -m777

Met de opdracht hierboven wordt een map gemaakt waartoe iedereen toegang heeft. Het is zeer zeldzaam dat u iets wilt maken met dit soort machtigingen.

Maak een map en eventuele ouders die nodig zijn

Stel je voor dat je een mappenstructuur wilt maken, maar niet elke afzonderlijke map samen met de weg wilt maken en je een weg in een boom wilt werken.

U kunt bijvoorbeeld als volgt mappen voor uw muziek maken:

  • / Home / muziek / rock / Alice Cooper
  • / Home / muziek / rock / queen
  • / Home / muziek / rap / DrDre
  • / Home / muziek / jazz / louisjordan

Het zou vervelend zijn om de rock-map te maken, dan de alice cooper en queen-map en vervolgens de rap-map en de dr dre-map te maken en vervolgens de jazz-map en vervolgens de map louisjordan.

Door de volgende schakeloptie op te geven, kunt u alle bovenliggende mappen on the fly maken als ze nog niet bestaan.

mkdir -p

Als u bijvoorbeeld een van de bovenstaande mappen wilt maken, probeert u de volgende opdracht:

mkdir -p ~ / music / rock / alicecooper

Bevestiging krijgen dat een directory is aangemaakt

Standaard geeft de opdracht mkdir niet aan of de map die u aan het maken bent, met succes is aangemaakt. Als er geen fouten verschijnen, kunt u ervan uitgaan dat dit het geval is.

Als u meer uitgebreide uitvoer wilt zodat u weet wat er is gemaakt, gebruikt u de volgende schakelaar.

mkdir -v

De uitvoer zal in de lijn liggen vanmkdir: map / pad / naar / mapnaam gemaakt.

"Mkdir" gebruiken in een shellscript

Soms wilt u de opdracht "mkdir" gebruiken als onderdeel van een shellscript. Laten we bijvoorbeeld een script bekijken dat een pad accepteert. Wanneer het script wordt uitgevoerd, wordt de map gemaakt en wordt één tekstbestand met de naam "Hallo" toegevoegd.

#! / bin / bash mkdir $ @ cd $ @ raak hallo aan

De eerste regel moet worden opgenomen in elk script dat u schrijft en wordt gebruikt om aan te geven dat dit inderdaad een BASH-script is.

De opdracht "mkdir" wordt gebruikt om een ​​map te maken. De "$ @" (ook bekend als invoerparameters) aan het einde van de 2e en 3e regel wordt vervangen door de waarde die u opgeeft bij het uitvoeren van het script.

De opdracht "cd" wordt gewijzigd in de map die u opgeeft en tot slot maakt de aanraakopdracht een leeg bestand met de naam "hallo".

Je kunt het script zelf uitproberen. Volg deze instructies om dit te doen:

  1. Open een terminalvenster (druk op Alt en T zou het moeten doen)
  2. invoeren nano createhellodirectory.sh
  3. Typ de bovenstaande opdrachten in de editor
  4. Sla het bestand op door tegelijkertijd op CTRL en O te drukken
  5. Sluit het bestand door tegelijkertijd op CTRL en X te drukken
  6. Wijzig de rechten door te typen chmod + x createhellodirectory.sh
  7. Voer het script uit door te typen ./createhellodirectory.sh test

Wanneer u het script uitvoert, wordt een map met de naam "test" gemaakt en als u naar die map gaat (cd test) en voer een directorylijst uit (ls), je ziet een enkel bestand genaamd "hallo".

Tot zover goed, maar probeer nu stap 7 opnieuw uit te voeren.

  1. Er verschijnt een foutmelding die aangeeft dat de map al bestaat.

Er zijn verschillende dingen die we kunnen doen om het script te verbeteren. Als de map bijvoorbeeld al bestaat, maakt het ons niet uit hoe lang het bestaat.

#! / bin / bash mkdir -p $ @ cd $ @ raak hallo aan

Als u de -p opgeeft als onderdeel van de opdracht mkdir, wordt er geen fout weergegeven als de map al bestaat, maar als deze nog niet bestaat, wordt deze gemaakt.

Zoals het geval is, maakt het aanraakcommando een bestand aan als het niet bestaat, maar als het wel bestaat, wijzigt het gewoon de laatst gebruikte datum en tijd.

Stel je voor dat de aanraakzin is vervangen door een echo-instructie die als volgt tekst naar een bestand schrijft:

#! / bin / bash mkdir -p $ @ cd $ @ echo "hallo" >> hallo

Als u de opdracht "./createhellodirectory.sh test" opnieuw uitvoert, zal het effect hiervan zijn dat het bestand "hallo" in de testdirectory steeds groter wordt met steeds meer regels met het woord "hallo" erin.

Nu, dit kan wel of niet zijn zoals bedoeld, maar laten we voor nu zeggen dat dit niet de gewenste actie is. U kunt als volgt een test schrijven om ervoor te zorgen dat de map niet bestaat voordat u de echo-opdracht uitvoert.

#! / bin / bash mkdir $ @ 2> / dev / null; als $? -eq 0; dan cd $ @ echo "hallo" >> hallo exit fi

Het bovenstaande script is mijn voorkeursmethode voor het maken van mappen. Met de opdracht mkdir wordt de map gemaakt die wordt doorgegeven als een invoerparameter, maar elke foutuitvoer wordt verzonden naar / dev / null (wat in essentie nergens betekent).

De derde regel controleert de uitvoerstatus van de vorige opdracht, die de "mkdir" -instructie is en als deze is geslaagd, worden de instructies uitgevoerd totdat de "fi" -instructie is bereikt.

Dit betekent dat je de map kunt maken en alle dingen kunt doen die je wilt als de opdracht succesvol is. Als u iets anders wilt doen als het commando niet succesvol was, dan kunt u eenvoudig een else-statement als volgt invoeren:

#! / bin / bash mkdir $ @ 2> / dev / null; als $? -eq 0; thencd $ @ echo "hallo" >> helloexitelsecd $ @ echo "hallo"> helloexitfi

In het bovenstaande script als de mkdir-opdracht werkt, verzendt de echo-instructie het woord "hallo" naar het einde van het bestand met de naam "hallo", terwijl als het niet bestaat een nieuw bestand wordt gemaakt met de naam "hallo" met het woord " hallo "erin.

Dit voorbeeld is niet bijzonder praktisch omdat je dezelfde resultaten kunt behalen door simpelweg de echo "hallo"> hallo lijn. Het punt van het voorbeeld is om te laten zien dat je het "mkdir" commando kunt uitvoeren, de foutuitvoer kunt verbergen, de status van het commando kunt controleren om te zien of het succesvol was of niet en voer dan een set commando's uit als het "mkdir" commando was succesvol en een andere reeks commando's als dat niet het geval was.